开工作经验,项目经验,学历背景,单从技术点分析,哪些方面可以判断一个java程序员的技术扎实程度,怎样才能知道他值多少月薪?凭啥人家月薪30000,你月薪3000?
月薪30K的Java程序员
怎样判断一个程序员的技术是否扎实?
除了项目实战外,在面试等情况下,最好能给被考核人一台可以上Google的电脑,然后给其一段自己的空间和时间,比如一个人在小会议室里10-20分钟。
然后,另接一台显示器,同步观察他在电脑上是怎么做的。由此可以看出他解决问题的方法、思路。当然,另接显示器这事儿,得提前知会对方。
或者,如果为了省时间,拿出写好的线程不安全的程序,让其说出为啥会有这样奇怪的现象。
以此类推,可以让写证明List里存储的是引用还是对象实体的程序,写证明弱引用强引用区别的程序,写证明某种设计模式效果的程序......
这方法,不仅可以检查基础知识,还可以检查思维能力。如果对知识理解得不够透彻,这种证明程序其实是挺难写的。这方法更有威力的地方在于,你可以不是很懂Java,仍然可以大致衡量出对方的水平。
比如,你看不懂对方的程序,你完全可以作为一个学生去请教。真正对概念理解透彻的人,是懂得如何用浅显易懂的方式把一个知识讲明白的,他能把飘在空中的概念一路清清楚楚地给你讲到落在你的脚边,让你觉得唾手可得。能把概念讲到这种程度的人,通常在相关领域不是一般的高手。
如果是做相对低层的技术优化,那侧重点在于对性能、被Java封装的底层技术的细节、OS、Network等基础知识的掌握程度。掌握得越细致,越好。
操作系统层面:进程与线程,进程如何创建,线程如何创建。内存与换页的概念,进程通信,锁等等。
网络通信层面:7/5层模型,ip分片重组,ip路由,tcp握手,udp的重组,网络风暴的原因等等。
编程语言层面:面向对象,重载与重写,多态。对象创建模式,继承和组合, 语言的特点等等。
数据结构与算法:数组链表,Map应用场景。基本的排序算法,算法分析等等。
数据库层面:索引,SQL,事务隔离级别等等。
数据方面:二进制运算,各类型占用的字节数,各类型数字的最大值,最小值等等。
月薪3K的Java程序员
要求不高,月薪3K-5K水平的Java程序员大多为实习生岗薪资。那么这个岗位的程序员应具备哪些知识、能力?总结知乎大牛评论得出以下几点:
1.Java所有关键字知道意思,除了synchronized和volatile以外,都应当会应用。
2.熟悉各种包装类,8种基本数据的包装类和String,都会应用。
3.熟悉面向对象,毕竟Java是最标准的面向对象语言。
4.熟悉Spring框架下如何写业务代码,会写简单的sql(会写子查询会用join),完全不需要你自己能手搭一个出来。
5.会用Eclipse,如果会用Idea更好。
当然,一般的实习工作用到这些知识没毛病,但也不能不提防部分公司面试的时候要造航母,也就是说看你想进什么样的公司、想在哪个区域发展了。
说到底,这些技能偏实用,算是硬实力的一种,去做Java类实习应该会上手很快,但一个应届毕业生最大的优势在于自身的可塑性,知识完备的应届毕业生远比会用框架的应届生值得培养。
互联网是一个朝阳行业,岗位薪酬差距较大无可厚非,但人活一生总得有个盼头吧,没有谁会跟钱过不去。
想要在短时间内从小白逆袭到大神,除了有基础,关键还是看自己对IT能持续的保持兴趣,不断学习。师傅领进门,修行在个人,说的就是这个道理吧。