In addition to Java programmers "north of Guangzhou-Shenzhen" elsewhere 30K can get it?

Gold and three silver four interview is over, the recent gathering with friends when asked a question, say how Java programmers monthly salary of 30K, the technical level needed to achieve what extent?

Someone replied that it is only large companies or Internet companies to get the engineer. Maybe yes, small companies or non-Internet companies to get 30K of code is unlikely to be a farmer, it should have been transferred management. As well as regional issues, this is not within the scope of my consideration, because in addition to the north of Guangzhou-Shenzhen Hangzhou and other places difficult to get.

First: 30K respectively corresponding to the level of what is?

30K monthly salary in BAT and other first-tier manufacturers are all too common, usually a senior engineer and senior engineer positions, Ali is about p6 ~ p7, in Baidu is about t5, Tencent is about t2-3, Jingdong is t3- 1, the US group is about p6, the other I do not know.

Second: to master the skill tree which mainly includes several aspects:

The first is the foundation. For example, for collections, and contracting, IO / NIO, JVM, memory model, generics, exceptions, reflection, and so have a good understanding, it is best read source code to understand the underlying design. Such as general interview will ask ConcurrentHashMap, CopyOnWrite, thread pool, CAS, AQS, virtual machine optimization knowledge, because these companies on the Internet is absolutely essential. And most people are not shut it off, but also made downtown Sao say that these useless, why should interview. For an example, when using the thread pool, because of the use unbounded queue, leading to surge in the inner remote abnormalities service, how to solve? Even if you are not sure the thread pool, how do you play? As another example, because of the wrong understanding of ThreadLocal, use it to make thread-safe control, resulting in failed to achieve really thread-safe. So as a JAVA programmer take thirty thousand this point it is to have the foundation.

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

高级的你需要去做分库分表的设计和优化,一般互联网企业的数据库都是读写分离,还会垂直与水平拆分,所以这个也有经验的成分在里面。然后redis,mongodb都是需要了解原理,需要会调整参数的,而nginx和tomcat几乎都是Java互联网方面必配,其实很阿里的技术栈选择有点关系。至于rpc相关的就多的去,必须各种网络协议,序列化技术,SOA等等你要有一个深入的理解。

如果你现在也在学习java,在入门学习java的过程当中缺乏系统的学习教程,或者说缺乏一个交流技术的地方,你可以申请加入我的Java学习交流qun:641121948。里面还有我这几年整理的java学习手册,面试题,开发工具,PDF文档教程,你可以自行去下载。

现在应用比较广的rpc框架,在国内就是dubbo了,可以自行搜索。至于jms相关的起码得了解原理吧,一般情况下不是专门开发中间件系统和支撑系统的不需要了解太多细节,国内企业常用的主要是activeMQ和kafka。你能对我说的都研究的比较深入,阿里p7都不是太大问题的,当然这个还需要看你的架构能力方面的面试表现了。

第三就是编程能力,编程思想,算法能力,架构能力。首先30K程序员对算法的要求我觉得还是比较低,再高级也最多红黑树吧,但是排序和查询的基本算法得会。编程思想是必须的,问你个AOP和IOC你起码的清清楚楚,设计模式不说每种都用过,但也能了解个几种吧。编程能力这个我觉得不好去评价,但是拿一个2000W用户根据姓名年龄排序这种题目也能信手拈来。最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,防重请求的设计能快速搞定而没有坑吧。

Guess you like

Origin www.cnblogs.com/waghl/p/10984115.html