无人理睬时,坚定执着。前路浩浩荡荡,万物皆可期待。

作为一名工作多年的老程序员,我面试过很多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

以上列举出来的这些数据结构,不仅要熟练使用它们,更需要理解它们的原理。

知道了原理,才能证明你能灵活且正确的使用这些数据结构。所以,面试中经常会问这些数据结构的原理。

如果对这些结构的原理还不熟悉,这里推荐一本很老但