现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能

强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。

简单先说一下,LZ(楼主)坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为LZ不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少),其中成功的有4家,另外两家失败的原因在于:

1、阿里巴巴B2B事业部的面试,两轮技术面试都过了,最后一轮面试是对方的主管,由于听说技术面试过了基本上90%都面试成功了,所以LZ在和主管的交谈中也是毫无顾忌,说得天花乱坠,很多自己介于知道和不知道的东西都直接脱口而出了,结果多次被对方一反问就问得哑口无言。事后想来,模棱两可的答案是面试中最忌讳的,这次的失败也让LZ认真地对待后面的每一次面试

2、另外一家失败的是一家小公司,也就20来个人吧,整个团队是支付宝出来创业的,非常厉害。面试完LZ多方了解了一下,对方认为我基本功什么的都不错,但是实际项目经验还是欠缺一些,因为对方是创业型公司,需要人上手就能干活,因此我在这个时候还不是特别适合他们团队

至于其他成功的四家公司,给LZ的面试评价都挺高的貌似,但LZ也不想记流水账,因此就不一一列举每家公司的面试过程了,下面LZ主要谈谈作为一名工作三年左右的Java程序员应该具备的一些技能以及个人的一些其他感悟。

关于程序员的几个阶段

每个程序员、或者说每个工作者都应该有自己的职业规划,如果看到这里的朋友没有自己的职业规划,希望你可以思考一下自己的将来。

LZ常常思考自己的未来,也从自己的思考中总结出了一些东西,作为第一部分来谈谈。LZ认为一名程序员应该有几个阶段(以下时间都算上实习期):

  • 第一阶段----三年
  • 我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段
  • 第二阶段----五年
  • 五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被更年轻的人给顶替;有些人在三年里,除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物
  • 第三阶段----十年
  • 十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你
  1. 我到底适不适合当一名程序员?
  2. 我到底应不应该一辈子以程序员为职业?
  3. 我对编程到底持有的是一种什么样的态度,是够用就好呢还是不断研究?
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
  1. 明确你的项目到底是做什么的,有哪些功能
  2. 明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用
  3. 明确你的模块在整个项目中所处的位置及作用
  4. 明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
  1. 简历中写的过去工作经历的离职原因
  2. 当前公司薪资待遇
  3. 期望能到怎样的一家公司
  4. 个人未来的发展方向
  • 很多培训公司包括大四的学生找工作都会学习Java,绝大多数是因为易学。Java从C/C++发展而来,感谢前人的智慧,它消除了C/C++中最复杂和让人困惑的语法、它消除了平台的差异性、它不需要用户手动释放内存空间、它避免了Java程序员和本地语言的交互,让程序员只需要专注于语法层面和应用层面
  • Java作为一门面向对象的语言,在企业级开发中体现出了它无与伦比的特性,整个开发流程比较固定化、模块化,需求分析起来也相对容易。我举个自己以前的例子吧,我在大一学习C语言的时候,用C语言写了一个图书管理系统写了2000行+的代码,大四学了C++之后,用面向对象的语言C++取代面向过程的语言C语言重新写了一个功能相似的图书管理系统,只写了1100行的样子,这就是面向对象的优势

2、难精部分

接着咱们聊聊难精的部分。

Java语言的设计者帮助Java程序员做了这么多事情,这有利也有弊。有利的部分前面已经说过了,让Java易学,不过有弊的部分同样明显。假如在应用运行过程中遇到了语法层面和应用层面之外的错误,应当如何处理?比如线上环境出现内存溢出怎么办?GC时间过长怎么办?IO长时间没反应怎么办?方法抛出莫名其妙的异常怎么办?

凡此种种,绝不是一名只会写几个if...else...的Java程序员就可以解决的,这需要大量的经历、大量的实践、大量对Java底层实现细节的研究,而这往往是最难、最考验Java程序员的部分,一些人根本就不想往深去研究,另外一些人研究了一点点就研究不下去了。

Java为什么难精?就是这个原因。除非你水平特别高,否则五年工作经验以下的Java程序员在简历上写"精通Java"绝对是一件非常愚蠢的事情。

本文原创,作者:架构君,其版权均为Java架构师必看所有。如需转载,请注明出处:https://javajgs.com/archives/90

发表评论