1. 算法基础
    写java的基本上都是做应用系统的,用到算法的机会几乎没有,所以一般不会考。但是如果工作年限比较长,保不齐面试官怀疑你的编程能力,故意要考考,所以快排、堆排、逆转链表、遍历二叉树之类的基础还是复习复习吧。
    如果面的是bat核心部门,担心碰见装逼人士的话,也可以提前复习下《编程之美》之类的。
  2. java基础
    hashmap面试官最喜欢考,一定要搞明白原理。
    treemap知道就可以,应该没人闲的蛋疼考红黑树。
    threadlocal面试官也喜欢考,要搞明白原理
    反射、动态代理、ioc、aop复习下吧,几乎必考
    nio、aio几乎都会问,抽空写写例程,知道netty mina
    class loader: 知道双亲委派,如果知道tomcat、jetty class loader异同更佳
  3. gc
    gc很多面试官都喜欢考
    面试前背熟各种gc算法的区别,理解原理。
    G1很多面试官自己都不明白,没时间就不用管。
  4. 高并发
    传统IT一般接触不到高并发,不过没关系按下面说的做,应付面试问题不大
    把java.util.concurrent下面所有的包和类通读一遍,理解原理、记住核心代码、写例程,网上有很多concurrent相关类原理解析的文章,对着文章看源代码理解起来问题不大。
    有些类代码很复杂比如aqs,看不明白就算了,也不用太花功夫,记住原理即可,因为大部分面试官也不明白。
    一定要写例程,例程最好跟你的业务能扯上一点点关系,这样面试的时候就是你实际项目里面的代码了。
    面试官喜欢考的类有:ConcurrentHashMap、读写锁、Condition、线程池、Barrier、CountDownLatch、Callable、BlockingQueue
  5. hdfs和mr
    传统IT一般也接触不到,如果不想准备就算了,如果想准备的话,就在自己的开发机上撘3个linux虚机, 按照网上的教程自己一步一步撘一个hadoop环境出来,然后找几个实际业务中生成出来的log,写几个mr程序处理一下。
    面试的时候就可以很谦虚的说,实际项目里面用过,但是用的不多
  6. application server
    websphere、weblogic、jboss之类的就不用准备了,应该没人问你这些啦。
    有时间的话,看看tomcat和jetty的源代码,重点看线程模型和io,这将是一个很好的加分项
  7. 数据库
    oracle、sybase、db2不会有人关心了,如果之前没用过mysql的话,找本介绍innodb原理的书好好通读一遍吧。
    理解myisam和innodb的区别
    理解关系型数据库索引的原理,理解一些简单的索引优化的原则。
    面试官很喜欢给出一堆where子句,考索引、复合索引什么情况下起作用
  8. 缓存
    一致性哈希很多面试官喜欢考,提前准备下吧。
  9. ssh框架
    这些没搞过就没搞过吧,这种框架层面的东西,对于一个有经验的java码农,学起来也就是分分钟的事情。
    不过你也可以说这些我没用过,但是我知道原理,然后说一堆动态代理、cglib的原理出来,也是加分。

希望这些对传统IT想转互联网的朋友有帮助。

原文作者:lgonnet@newsmth.net