很多同学会问Java面试八股文有必要背吗?
我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计OOD)和BQ轮(Behavioral question,行为面试问题)。
那么为什么国内面试不采取这样的考察方式呢?简单来说,互联网IT行业的求职者太多了,如果考察的是清一溜的算法题和设计题,那么会要求面试官有极高的技术水平,还要花大量的时间成本和精力。
也许现行的八股文面试不是最优的解法,但的确是最符合当前国内IT环境的做法。
所以,我采访了超过20位资深大厂面试官后,一直在尽量精炼准确的整理一套切实可行的八股文,已经有很多小伙伴靠着这份文档拿到了BAT的offer,所以分享出来给大伙看看,有什么不足之处欢迎评论补充。
一、Java基础 44 道
- 解释下什么是面向对象?面向对象和面向过程的区别?
- 面向对象的三大特性?分别解释下?
- JDK、JRE、JVM 三者之间的关系?
- 重载和重写的区别?
- Java 中是否可以重写一个 private 或者 static 方法?
- 构造方法有哪些特性?
- 在 Java 中定义一个不做事且没有参数的构造方法有什么作用?
- Java 中创建对象的几种方式?
- 抽象类和接口有什么区别?
- 静态变量和实例变量的区别?
- 12、short s1 = 1;s1 = s1 + 1;有什么错?那么 short s1 = 1; s1 += 1;呢?有没有错误?
- Integer 和 int 的区别?
- 装箱和拆箱的区别
- switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?
- 16、final、finally、finalize 的区别
- == 和 equals 的区别?
- 两个对象的 hashCode() 相同,则 equals() 也一定为 true 吗?
- 为什么重写 equals() 就一定要重写 hashCode() 方法?
- & 和 && 的区别?
- Java 中的参数传递时传值呢?还是传引用?
- Java 中的 Math.round(-1.5) 等于多少?
- 如何实现对象的克隆?
- 深克隆和浅克隆的区别?
- 什么是 Java 的序列化,如何实现 Java 的序列化?
- 什么情况下需要序列化?
- Java 的泛型是如何工作的 ? 什么是类型擦除 ?
- 什么是泛型中的限定通配符和非限定通配符 ?
- List 和 List 之间有什么区别 ?
- Java 中的反射是什么意思?有哪些应用场景?
- 反射的优缺点?
- Java 中的动态代理是什么?有哪些应用?
- 怎么实现动态代理?
- static 关键字的作用?
- super 关键字的作用?
- 字节和字符的区别?
- String 为什么要设计为不可变类?
- String、StringBuilder、StringBuffer 的区别?
- String 字符串修改实现的原理?
- String str = "i" 与 String str = new String("i") 一样吗?
- String 类的常用方法都有那些?
- final 修饰 StringBuffer 后还可以 append 吗?
- Java 中的 IO 流的分类?说出几个你熟悉的实现类?
- 字节流和字符流有什么区别?
-
BIO、NIO、AIO 有什么区别?
二、Java异常 9 道
- finally 块中的代码什么时候被执行?
- finally 是不是一定会被执行到?
- try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
- try-catch-finally 中那个部分可以省略?
- Error 和 Excepti