从春招找实习开始,每次面试在问到Java基础部分的时候,有一些知识点出现的几率很大,所以今天就把这些常问的知识点整理一下,希望对找实习或者找工作的同学们有帮助~
1、面向对象的三大特征?
封装性、继承性、多态性,(再具体说说)
2、Java中的基本数据类型有哪些?
- 数值型——byte(字节型)、short(短整型)、int(整型)、long(长整型)、float(单精度浮点型)、double(双精度浮 点型)、
- 布尔型——boolean(布尔型)、
- 字符型——char(字符型)
(扩展:会问到new对象还有基本数据类型,会在内存区域的哪一块等等)
3、初始化顺序?
对于一个类而言,按照如下顺序执行:
- 执行静态代码块
- 执行构造代码块
- 执行构造函数
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
当涉及到继承时,按照如下顺序执行:
-
执行父类的静态代码块,并初始化父类静态成员变量
-
执行子类的静态代码块,并初始化子类静态成员变量
-
执行父类的构造代码块,执行父类的构造函数,并初始化父类普通成员变量
-
执行子类的构造代码块, 执行子类的构造函数,并初始化子类普通成员变量
4、重载和重写?
Overload是重载的意思,Override是覆盖的意思,也就是重写。
1. 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数、顺序或类型不同)。
2. 重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同。
重写时要注意——
- 子类覆盖父类的方法时,只能比父类抛出更少的异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。
- 子类方法的访问权限只能比父类的更大,不能更小。
- 如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。
注意:如果两个方法的参数列表完全一样,不可以让它们的返回值不同来实现重载!!
5、抽象类和接口的区别?(博主画个图表说明吧,更直观)
6、参数的传递是值传递还是引用传递?
①当基本数据类型作为参数传递时,传递的是实参值的副本,即传递的是值。
不管这个函数中怎么操作这个副本,实参的值是不会被改变的。
②当对象作为参数传递时,实际上传递的是一份“引用的拷贝”。
7、String、 StringBuffer 、StringBuilder 区别?
①String:String 类对象为不可变对象,被 final 修饰,不能被继承。
- 一旦你修改了 String 对象的值,隐性重新创建了一个新的对象,释放原 String 对象。
- 创建String 对象的时候会在字符串常量池中查找是否有该变量——
如果不存在,则在 StringPool 中创建一个,然后返回其地址;
如果存在,则直接返回其地址。
②StringBuffer:字符串变量,相对 StringBuilder 来说是线程安全的。它的大多方法都采用了Synchronized关键字修饰。
- StringBuffer 类对象为可修改对象,可以通过 append()方法来修改值。(在尾部添加)。
- 适用于多线程操作大量数据。
③StringBuilder:字符串变量,线程不安全。
- 在内部,StringBuilder对象被当成一个包含字符序列的可变长数组。
- 大部分情况下,他的效率 比StringBuffer的高。因为它不需要考虑线程安全的问题。
- 适用于单线程操作大量数据。
面试出现频率最高的基础知识点,差不多就是这些了,后续还会继续补充di ~
感觉实习生面试一般不会很深,或者涉及很多巨难巨深的知识,所以基础知识一定要牢固哇,面试加油!