2018学习计划(JAVA)

1 JAVA语言高级特性

(1)Java的数据结构相关的类实现原理 LinkedList,ArrayList,HashMap,TreeMap

       比如,面试官先问你HashMap是不是有序的?

  你肯定回答说,不是有序的。那面试官就会继续问你,有没有有顺序的Map实现类?

  你如果这个时候说不知道的话,那这个问题就到此结束了。如果你说有TreeMap和LinkedHashMap。

  那么面试官接下来就可能会问你,TreeMap和LinkedHashMap是如何保证它的顺序的?

(2)Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。与上面一样,咱们也简单的模拟一个并发包的连环炮。

比如面试官可能会先问你,如果想实现所有的线程一起等待某个事件的发生,当某个事件发生时,所有线程一起开始往下执行的话,有什么好的办法吗?

  这个时候你可能会说可以用栅栏(Java的并发包中的CyclicBarrier),那么面试官就会继续问你,你知道它的实现原理吗?

  如果你继续回答的话,面试官可能会继续问你,你还知道其它的实现方式吗?

  如果你还能说出很多种实现方式的话,那么继续问你,你觉得这些方式里哪个方式更好?

  如果你说出来某一个方式比较好的话,面试官依然可以继续问你,那如果让你来写的话,你觉得还有比它更好的实现方式吗?

  如果你这个时候依然可以说出来你自己更好的实现方式,那么面试官肯定还会揪着这个继续问你。

(3)IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。

  IO包和NIO包的内容相对来说不是很多,首先NIO模型要熟悉,特别是其中的selector一定要非常清楚它的职责和实现原理。其实NIO的核心是IO线程池,一定要记住这个关键点。有的时候,面试官可能也会问你IO包的设计模式(装饰器模式),为什么要这样设计?

  有的面试官还会问你有没有更好的设计,这个时候如果你不知道请果断说自己现在的水平有限,想不出来更好的设计,千万不要信口开河,随意YY。


3、额外的加分项

  上面两个阶段基本上是必问的,还有一些加分项。这些加分项中,有些内容面试官也会问你(比如TCP/IP协议、算法),但更多的是会先问你了解不了解,你了解的话再继续聊,不了解的话就直接略过了,不至于因为这种问题而直接把你打入地狱。

  下面LZ列举一下这些加分项,如果可以的话,这些加分项还是要争取一下的。

  1、计算机系统原理。

  2、网络通信协议(TCP/IP,HTTP等)。

  3、数据结构与算法。

  4、著名开源项目的源码。

  5、你自己有很棒的开源项目。

  6、你的个人博客。

  7、待评论区补充。

  这几项当中,对于前1-3项,如果你之前就比较了解,只是由于时间问题忘记了的话,还是可以临时抱佛脚一下的。至于后面4-6项,就需要你日常的积累了,不是一时半会儿能做到的。如果你平日里没有积累,那么后面这三个加分项只能抛弃了。

4、与你职位相关的内容

  其实这最后一项是对前面三项的补充,你应该尽量去主攻和你面试的职位相关的内容。比如你面试一个实时计算的职位,那么你的算法最好要厉害,对于著名的实时计算开源项目要熟悉,最好阅读过源码,而且还要对分布式系统有一定的见解。

  因此,这个第4部分没有具体的内容,只是提醒你,如果你很明确自己的面试职位,最好在面试前准备的时候,尽量朝职位的需求方向靠拢,这样成功的可能性更大。


链接  https://zhuanlan.zhihu.com/p/20838139

你可能感兴趣的:(2018学习计划(JAVA))