2018年5月面试Java答案整理
面向对象编程、面向过程编程和面向切向编程的区别
面向过程(OPP):是一种以过程为中心的编程思想。是自顶向下顺序执行,逐步求精,其程序结构是按照功能划分为若干个基本模块,而程序流程在写程序的时候就已经决定了。
面向对象(OOP):是一种以事物为中心的编程思想。是把数据以及对数据的操作放在一起,作为一个相互依存的整体,就是所说的对象。
面向切向(AOP):是一种以功能(业务)为中心的编程思想。所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
例子:从车站打车回家
- 面向过程(OPP):汽车发动是一个事件、汽车到家是一个事件,针对这两个事件,形成两个函数,依次调用。
- 面向对象(OOP):以汽车这个类为对象,这两个事件只是这个类的两个行为。
- 面向切向(AOP):分别对两个事件进行抽象,然后各自封装实现。通过代理类完成类的创建。最后根据需求进行封装。
面向对象的特征:抽象、继承、封装、多态
面向对象的有点:较高的开发效率、代码健壮、可维护性
Java 垃圾回收机制 GC
object 与泛型的区别
- Object范围非常广,而T从一开始就会限定这个类型(包括它可以限定类型为Object)
- Object由于它是所有类的父类,所以会强制类型转换,而T从一开始在编码时(注意是在写代码时)就限定了某种具体类型,所以它不用强制类型转换。
Java 的内存模型
添加多线程的方式,Thread 与 Runable 的区别
添加方式为:继承 Thread 和实现 Runable 接口
- Thread :Thread其实本身就是实现了接口 Runnable的一个类,因此 Thread中的方法和成员变量要比Runnable多,最典型地就是 Thread有start()方法,但是Runnable接口没有start()方法。
- Runable:适合多个相同的程序代码的线程去处理同一个资源;可以避免java中的单继承的限制;增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。