Java工程师职业发展路径(面试宝典分享)

createh52周前 (02-16)技术教程15

编者按:最近在复习Java知识,发现去年找工作时候购买的一个专栏,感觉还是不错,把重点内容梳理了一下,继续开始学习之路,后面将32个知识点逐一分享。来源:拉勾教育,有修改。


工程师发展路径


一般来说,技术人员对职业发展有两个发展方向,一个是技术方向,另外一个是管理方向,这两条路径侧重的能力点不同,需要根据自己的兴趣、能力优势有侧重的进行能力培养,成长路径如下图所示。


在刚入职的 1~3 年内,技术人员的发展路径比较单一,从工程师往高级工程师发展,这个阶段主要目标是积累,夯实后续发展的基础,重点提高自己的工作基础能力,培养技术深度和广度,对不同方向的新技术保持强烈的好奇心和学习心。


在一路打怪升级为高级工程师之后,就会面临发展方向的选择:技术 or 管理。

  1. 如果打算往技术方向深挖,上升通道有:资深工程师、技术专家、高级技术专家、研究员、科学家等。需要你重点培养技术攻坚能力,包括疑难问题的排查、大型项目的功能拆分、技术品牌的塑造等。具体的工作包括:原理、实现、注重架构能力的培养,更深一层还有:大规模、高并发场景,高可用、可扩展措施和方案、业务的抽象、架构能力、分布式服务设计原则的理解等。
  2. 另外一个方向就是管理。管理序列偏重于团队把控,需要让团队形成技术战斗力,利用一切资源推进项目,让团队完成作战目标。另外,做好团队内和跨团队的沟通、协作也是管理工作很重要的一环。

在实际工作中,这两个序列没有特别明显的边界。例如做管理不表示远离架构设计;而技术专家也不是单兵作战,也需要带领团队。这两个方向区分点在于工作内容的侧重点不同:到底是更偏技术架构,还是更偏管理与项目推进。


回到最开始的面试问题,“你的职业规划是什么?”,答案并不是在面试前打个腹稿就完成任务了,而是在你进入职场,准备成为一位工程师时,心里就该有个谱的。


这里给你个面试小诀窍,也许这么回答能加分很多:“从过往的经验来看,我对项目的整体规划、管理推进比较感兴趣,在任务推进、协调沟通方面也有比较突出的表现,所以我的职业规划是成为一名优秀的技术经理,并以管理方向为发展目标。“


常见技术岗位划分


除了有明确的职业规划外,想要往高处走还得了解职级划分与对应的软、硬技能要求。这样你在工作的时候可以有意识得补足欠缺,提高水平。


应聘不同公司、不同级别的岗位时,要重点提升哪方面的技能呢?答案非常简单。


对照下图,简单介绍 BAT 的技术序列的岗位划分、对应的工作年限及职级。

1~3 年的初级工程师,这个级别的岗位在阿里、百度、腾讯等大厂很少进行社招,一般是从校招生内部晋升。


高级工程师一般需要有 2~5 年的工作经验,这个岗位对应百度中的 T4、阿里的 P5,以及腾讯的 T2-2(对应腾讯最新职级体系 T7)。


资深工程师一般要求 3~6 年工作经验,这个岗位一般对应百度中的 T5、阿里的 P6,以及腾讯的 T2-3(对应腾讯最新职级体系 T8)。高级工程师和资深工程师是各个公司中的绝对技术主力,公司非常看重这部分人才的成长和培养。


技术专家、高级技术专家至少需要 5 年以上的互联网从业经验,这里先不多说。大家记住这个表,初级、高级和资深工程师 3 个职位面试具体的考察点后续详细展开。


公司和团队


先来看公司和团队。要有个概念:现在的每一份工作都是为下一份更好的工作蓄势。


大厂比较适合镀金提高身价,核心业务更适合长期稳定发展,进入核心团队在能力、经验上都能获得较大的成长。


如下图所示,第一象限是第一种情况,大公司的核心业务无疑是最好的选择,但也是竞争最激烈的,尽量找和自己能力匹配的,不要和众多高手竞争,耽误宝贵的求职时间和机会。第三象限,小公司的边缘业务,肯定是下下策,备选。

剩下的两种情况:一是大公司的边缘业务,另一个是小公司的核心业务。


这也是最让人头疼的选择,给你个建议:对于工作 1~3 年的小伙伴,我更推荐优先选择核心业务。之前我有提到,职业生涯前期以积累知识、经验为主要任务,核心业务可以给你提供更多的历练场景,无论是应用经验还是架构经验都能获得很好的收获。


常见面试流程


在搞清楚前面几点之后,面试流程也是找工作前必须了解的。我见过一些候选人对面试的要求都不了解,也没有进行对应轮次的面试准备就直接来了,这很可能会浪费一次机会。


对于技术岗,大部分公司的面试流程基本相同,如下图所示,分为 6 个环节。

  • 首先,可能会有一些前置的面试,假如应聘的是异地的职位,可能会先安排电话面试,大概了解候选人的情况和技术水平。还有一些公司会在正式面试前先进行笔试,或者上机编程。因此初次面试前一定要跟面试官沟通是否会先进行电话面试,是否有笔试或上机编程,是否需要自带电脑等细节。


  • 正式面试是从技术一面开始的,可能会有 1~2 位面试官,他们很有可能就是你入职后的同组同事。一面以考察基础能力与实际应用能力为主,时长大概 1 小时左右,是纯技术面试。可能会要求手写一些小算法,例如排序、字符串处理之类的,这方面具体考点大家可以关注后面的算法面试课。


  • 技术二面也是以技术面为主,偏重技术深度的考察,例如项目经历、架构能力、算法等,面试时长 1 小时左右,可能会要求画出项目的架构图,交互流程图等,并对项目存在的问题和改进方案等进行询问。一般技术二面的面试官就是你入职后的直属领导。


  • 一些规模较小的公司,到二面就结束了,而大部分的公司会有技术三面。技术三面一般是半技术面试,会有一些项目经历、架构设计的题目,另外还会涉及职业规划、职业兴趣、技术视野等方面的问题,以架构能力、技术敏感度、发展潜力为主。三面的面试官一般是部门的 leader。还有少部分公司会存在技术四面,例如腾讯在较高级别岗位面试时,会有跨部门的交叉面试,面试内容与三面基本相同。


  • 如果你很幸运通过了前面的几轮技术面试,那么就进入 HR 面试阶段,这个阶段之后基本不会再出现技术面试了,主要沟通个人的发展规划、上家公司的离职原因、价值观和薪资待遇等。如果你对这家公司特别期待,注意不要在这个环节因为纠结 1~2k 的工资而错失机会。工作前期以积累能力为主,3 年后我们再谈待遇。


  • HR 面试后是公司级高管面试,具体轮次看情况,一般一、二 面,非技术面为主,可能会简单询问工作经历、对公司的看法、对行业的看法、未来规划等,只要没有原则性错误,一般都能够通过。


整体总结如下:


面试前询问是否有电话面试、笔试、上机等前置面试;


技术一面、二面关注实际工作能力;


二面、三面偏重架构能力与发展潜力,二面与三面一般决定你的入职职级,一定要好好表现。


面试前准备工作


假设你明天就有个面试,那么,前期的准备工作对面试成败起到决定性的作用。影响面试成功的三大基石是:能力、心态和沟通。


  • 能力。优秀的技术基本功是必要条件,毕竟公司是招你来解决问题的,没有技术能力其他的都无从谈起;


  • 心态。注意平衡心态,过于紧张会导致平时会的内容没有回答上来;


  • 沟通。与面试官交流顺畅,会给你的面试加分;反过来如果沟通不顺畅,就可能变成致命一刀,直接被 Pass。


那么,如何在面试时稳定发挥?


面试考察点是可以在短期内突击的,也是面试前需要重点准备的内容。


  1. 系统地复习基础知识。
  2. 对工作经历进行提炼,对原来负责的项目从架构方面重新审视、梳理、总结。
  3. 对一些典型框架的原理、使用场景及实现方式进行学习、对常考的考点进行专项突击。
  4. 阅读常考考点源码。
  5. 根据面试岗位业务有针对性的准备,比如:面试中间件方向的岗位时,可以突出自己有过存储中间件的开发经历、有过链路协议层设计经历等。


关于心态,面试前多方面搜集面试公司、岗位所属团队、平均福利等资料信息,知己知彼有助于增加自信。提示一下,有些公司喜欢压力面试,特别在面试官层级较高时发生。在不利场景下多给自己心理暗示,控制情绪,也许有意想不到的收获。例如,这个面试官以后可能再也不会遇到,就算失败了也没什么大不了。


沟通方面,给你几点建议。


  1. 提前准备一个简短有特色的自我介绍,主要描述自己的技术特长和职业优势,一定不要聊兴趣爱好、家乡、星座等无关紧要的内容。
  2. 避免冷场,对于回答不上来的问题,可以主动坦白,并提出解题思路,或者询问面试官可不可以换个问题。
  3. 当没有听清,或是不理解问题时不要强行回答,可以跟面试官再次确认问题。
  4. 注意一些细节,例如:你的面试微表情,不要皱眉、控制坐姿和手势、说话语速不要过快或过慢、表达逻辑清晰,观点明确;不要随意打断面试官,谦虚有礼的态度等。


小技巧:注意观察面试官的反应。如果面试官突然在简历上奋笔疾书,说明你提供的信息是有用的,如果他停下来很长时间不写了,你要想想是不是跑题了;如果面试官的表情显示出不耐烦,或者深呼吸,有可能你没有领会面试官的考察意图,可以再次询问。


面试考察点


面试的考察点非常综合,一般分为硬技能和软实力。


硬技能包括:基础知识的掌握、以往的项目经验、对系统架构的设计能力,以及对不同框架、工具的综合应用能力。


软实力一般包括:逻辑思维是否灵活、沟通、表述、协作能力是否优秀、是否有较强的项目管理与推进能力、新技术的学习、总结与思考能力,以及培养潜力这几方面。


前面 BAT 的职级图中提到,不同等级的岗位,能力要求肯定也不同,这里用雷达图来展示,如下图所示。

对于目前的初、中级工程师来说,基本的要求是能完成分配的研发任务,所以面试官更看重基础知识的掌握、逻辑思维是否灵活,有没有培养潜力。其次是项目经验与学习思考能力,而架构能力、管理推进,以及沟通协作等能力,受限于工作年限,并不会对这些方面有较高的要求。


温馨提示,软实力功夫做的好,对于技术工程师的职业生涯来说绝对是加分项,推荐阅读《软件能2:软件开发者职业生涯指南》


硬技能系谱


针对硬技能考察点,提供一份系统化梳理,也是接下来几个课时重点讲解的内容,如下图所示。

  • 基础知识分为计算机基础与 Java 体系两大部分,包括了进程、线程管理;TCP、HTTP 网络协议;数据结构、经典算法;常用设计模式等。面试加分的内容,比如,新技术方面:Java 8~11 新特性,G1、ZGC 垃圾回收算法、最新网络协议 HTTP2、QUIC;知识深度方面:内存屏障、指令重排,JIT 编译器、逃逸分析等。
  • 项目经验部分讲解如何展现自身的项目经验,包括项目的描述、流程图、项目难点、项目问题分析与改进等。
  • 应用知识部分兼顾知识的广度与重点框架的知识深度。包括常用工具、常用框架、缓存、队列及数据库等几个方面。其中工具集以知识广度与实用性为主, 例如 JVM 工具 JFR、tcpdump、Git、vmstat、iostat 等;应用框架以经典架构的常考点为主,包括 Spring、Netty 等主流框架的重点知识。缓存、队列、数据库将以应用场景为主。
  • 架构能力以微服务架构介绍为主,讲解架构理念与应用场景,也包括一些重点机制的实现方式。例如 Docker、K8s 和 Spring Cloud 等。

相关文章

Java就业方向揭秘:你的未来职业选择

在当今这个快速发展的科技时代,Java依然占据着极其重要的地位。如果你正在考虑学习Java或已经掌握了这门语言,肯定会好奇它究竟能带给你哪些就业机会。今天,我们就来聊聊Java的就业方向,帮助你找到未...

java工程师这个职业如何?怎么样才能成为java工程师?

软件开发这个行业的薪资水平还是不错的,在北上广这样的大城市需求量很大,即使在一些小城市也是很好就业的,所以软件开发的前景还是很好的,另外国家正在大力发展互联网行业,所以软件开发前景大好,如果热爱这个行...

从0到1,Java开发者的破局之路_开发 java

软件开发浪潮:新趋势与新挑战在科技飞速发展的当下,软件开发行业正处于一个前所未有的变革时期,各种新技术、新理念不断涌现,深刻地改变着软件开发的方式、应用场景以及未来走向。从智能手机里琳琅满目的 APP...

Java 29岁啦,生日快乐!_29岁生日快乐用英语怎么说

我们先祝Java生日快乐2024年,选Java就业依旧抗打!Java诞生29年,一直与时俱进,如今已经更新至Java 21,生命力非常旺盛!但因为Java开发者越来越多,不少人发出“现在入行Java是...

java程序员可以转行什么_java程序员转c

Java程序员由于具备扎实的编程基础和软件开发经验,可以较为容易地转行到其他技术领域或相关职业。以下是一些Java程序员可以考虑的转行方向:? 前端开发:学习HTML、CSS、JavaScript等技...

Java程序员职业规划如何做?发展方向有哪些?

Java程序员职业规划如何做?程序员一直被贴青春饭的标签,很多人写了3年代码生活工作趋于稳定,每天忙忙碌碌抱怨没有时间提升学习,职业发展遇瓶颈,入行前就应该规划好自己的职业发展发展方向。一、按照Jav...