Java 面试题目总结

来源:互联网 发布:apache 2.0 开源协议 编辑:程序博客网 时间:2024/05/16 02:53

1、面向对象

 (1)什么是面向对象?

面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切事物皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。
作者:潜龙勿用
链接:https://www.zhihu.com/question/31021366/answer/220293611
来源:知乎

 (2)面向对象的特性?

三大特性是:封装,继承,多态  

所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。


所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

 

所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。


2、集合

 (1)hashMap的底层实现?

 (2)hashTable与hashMapde 区别?

3、多线程

 (1)多线程创建方式?

 (2)java线程间的通信方式

4、反射

 (1)什么是反射?

 (2)反射的应用场景?

6、抽象与接口

   (1)区别?

7、多态

 (1)多态的实现方式?

  (2)多态的优点?

9、进程调度方式?

10、java注解的实现方式?

11、线程池

 (1)线程池相关类?

 (2)几种线程池?

12、计算机网络

 (1)七层与四层

  (2)tcp与udp的区别

  (3)tcp3次握手与四次挥手

13、JVM

     (1)内存分布

14、GC原理

      (1)可达性

       (2) java 中可以作为GC Roots 的对象?

          a、虚拟机栈(栈帧中的本地变量)中引用的对象;

          b、本地方法中JNI(即一般说的native方法)引用的对象;

          c、方法区中静态属性和常量引用的对象。

          (以上摘自 《深入理解java虚拟机)

         总的来说是 一段程序的整个运行过程中始终存在的对象。

15、深复制与浅复制

16、 数据库

     (1)隔离级别;

     (2) 关系数据库和非关系数据库

     (3)索引的应用,实现原理

17、数据结构

    (1) B树和B+树及其去区别

    (2)红黑树

    (3)KMP

18、算法

   (1)二叉树的逆置

   (2)二叉树最近公共父节点

    (3) 稳定排序算法

19、计算机网络

    (1) 七层网络模型与四层网络模型

    (2) 三次握手协议与四次挥手协议

    (3)访问www.baidu.com的底部实现过程。