无人理睬时,坚定执着。前路浩浩荡荡,万物皆可期待。
作为一名工作多年的老程序员,我面试过很多Java新人(应届生、工作一年左右的程序员)。
今天我就从我自己面试新人的角度来回答一下,我会把面试的知识点进行拆解,希望你看完之后,能从中找到学习 Java 的重点。
学习是为了找到工作、拿到 offer,这就有一个公式:
offer = 工作需要的技术栈 + 计算机基础知识 + 项目经验 + 加分项
让我们分别看看公式右边的这些方面具体是什么。
1. 工作需要的技术栈
工作需要的技术栈往往和特定语言以及配套的周边工具相关。
对 Java 技术栈来说,又可以分为以下几个方面:
1.1 基本语法
基本语法在面试里不是说会用 for 循环、if else 语句之类去写代码就行,而是利用基本语法去编写更合理、更规范、更可读的代码。
比如,是不是能让变量处于很合适的作用域?String、StringBuffer、StringBuilder 适合的应用场景是不是非常熟悉了?
如果对于 Java 的基础还很薄弱,推荐去看《Effective Java》,以便真的能够写出来好代码。
另外,为了能更加规范的写出高质量工程代码,推荐研究下阿里的《Java开发手册》。
1.2 常用数据结构
如果要想通过面试找到工作,Java 中一些常用数据结构一定要好好掌握。最常用的就是以下几种:
- LinkedList
- ArrayList
- Stack
- ArrayBlockingQueue
- LinkedBlockingQueue
- HashMap
- LinkedHashMap
- TreeMap
- ConcurrentHashMap
- HashSet
- TreeSet
以上列举出来的这些数据结构,不仅要熟练使用它们,更需要理解它们的原理。
知道了原理,才能证明你能灵活且正确的使用这些数据结构。所以,面试中经常会问这些数据结构的原理。
如果对这些结构的原理还不熟悉,这里推荐一本很老但