java开发程序员新手如何月薪2万
第一个是基础,比如对集合类、外包、IO/NIO、JVM、内存模型、泛型、异常、反射等的深刻理解。最好是阅读源代码,了解底层设计。比如一般面试都会问ConcurrentHashMap、CopyOnWrite、线程池、CAS、AQS、虚拟机优化等知识点,因为这些对于互联网公司来说是绝对重要的。而且大部分人都过不了这一关,还在这上面做文章。说这些没用。为什么要面试?比如在使用线程池的时候,因为使用了无界队列,在远程服务异常情况下,内层暴涨。怎么解决?连线程池都不知道怎么玩?再比如,由于对ThreadLocal的误解,将其用于线程安全控制未能实现真正的线程安全。你怪我吗?所以作为一个有两万的JAVA程序员,这个基础是必须的。
第二,你需要对互联网技术有全面的了解。从底层来说,你至少要对mysql、redis、mongodb、nginx、tomcat、rpc、jms等等有深入的了解。如果你想问你需要知道多少,我可以给你一个大主意。首先,对于MySQL,需要了解常用的参数设置,以及如何选择存储引擎。您还需要了解常见的索引引擎,并知道如何选择它们。知道如何设计表,如何优化sql,如何根据执行计划进行调优。高级你需要做子数据库和子表的设计和优化。一般互联网公司的数据库都是读写分离的,会进行纵横拆分,所以这个体验的成分也在其中。然后redis和mongodb需要了解原理,调整参数,而nginx和tomcat几乎是JAVA互联网必备。其实和阿里选择技术栈有关系。至于rpc,有很多事情要做。你必须对各种网络协议、序列化技术、SOA等有深刻的理解。现在国内广泛使用的rpc框架是dubbo,可以自行搜索。至于jms,你至少要懂原理。一般不是专门开发中间件系统和支撑系统的人,不需要了解太多的细节。activeMQ和kafka是国内企业常用的。你能对我说的,我都深入研究过了。我觉得阿里p6没问题。当然,这取决于你在建筑能力方面的面试表现。
第三是编程能力、编程思路、算法能力、架构能力的考量。首先我觉得2W程序员对算法的要求还是比较低的,最高级的是红黑树,但是排序和查询的基础算法还是不错的。编程思路是必须的。请教各位关于AOP和IOC的问题。你至少清楚。你不说每一种设计模式你都用过,但你也能深刻理解14、15种。我觉得评价编程能力并不容易,但是让一个2000W的用户按姓名和年龄排序还是很容易的。最后是架构的能力。这并不意味着你要设计一个高并发的系统,至少让你做一个秒杀系统,防重复请求的设计可以快速完成而不用。