美团架构师谈开发:在小公司的Java程序员能拿30K高薪?( 三 )

其次:掌握的技能树主要包含哪几个方面:

第一个是基础 。 比如对集合类 , 并发包 , IO/NIO , JVM , 内存模型 , 泛型 , 异常 , 反射 , 等有深入了解 , 最好是看过源码了解底层的设计 。 比如一般面试都会问ConcurrentHashMap , CopyOnWrite , 线程池 , CAS , AQS , 虚拟机优化等知识点 , 因为这些对互联网的企业是绝对重要的 。 而且一般人这关都过不了 , 还发闹骚说这些没什么用 , 为什么要面试 。 举一例子 , 在使用线程池时候 , 因为使用了无界队列 , 在远程服务异常情况下导致内层飙升 , 怎么去解决?你要是连线程池都不清楚 , 你怎么去玩?再举一例 , 由于对ThreadLocal理解出错 , 使用它做线程安全的控制 , 导致没能实现真的线程安全 。 所以作为一个拿三万的JAVA程序员这点基础是要有的 。

第二你需要有全面的互联网主流技术相关知识 。 从底层说起 , 你起码得深入了解mysql , redis , mongodb , nginx , tomcat , rpc , jms等方面的知识 。 你要问需要了解到什么程度 , 我可以给你说个大慨 。 首先对于MySQL , 你要知道常见的参数设置 , 存储引擎怎么去选择 , 还需要了解常见的索引引擎 , 知道怎么去选择 。 知道怎么去设计表 , 怎么优化sql , 怎么根据执行计划去调优 。

推荐阅读