作为一技术人员,面试前都需要做哪些准备?

作为一技术人员,面试前都需要做哪些准备?
0

原文: 作为一技术人员,面试前都需要做哪些准备?

#TODO: 文章有点泛泛而谈,但不失为一个好的问题,再更。

前言

面试前对目标公司,岗位要求及面试流程有所了解,这样才可以有针对性的突破,我们来看以下几个方面,相信可以帮助大家解决大部分求职迷茫的问题。

第一,常见的技术人员发展路径/和竞争要求。

第二,技术面试一般都有哪些流程?

第三,如何去选择一个高命中率的岗位?

第四,面试前要怎么准备?

第五,面试都有哪些考察点?

常见的技术人员发展路径?

能谈谈你对未来的职业规划吗?相信很多人面试都被问过这个问题,技术岗和其他岗位一样,首先要有自己的职业规划,一般来说,技术人员对职业发展有两个发展方向。

  • 技术方向
  • 管理方向

这两条路径侧重的能力不同!我们需要根据自己的兴趣,能力优势,有侧重的进行能力培养。在刚入职的1-3年里,技术人员的发展路径比较单一,主要是从工程师和高级工程师发展,这个阶段主要目标是积累,夯实后续发展的基础,重点提高自己的工作基础能力,培养技术深度和广度,对不同方向的新技术保持强烈的好奇心和学习心,在一路打怪升级成为高级工程师之后。就会面临发展方向的选择,是走技术方向还是管理方向?

技术方向

  • 技术方向 :资深工程师、技术专家、专家、研究员、科学家等。需要你重点培养技术攻坚能力,或疑难问题的排查,大型项目的品牌的塑造等。具体的工作包括原理实现,注重框架能力的培养,更深一层,还有大规模高并发场景业务的抽象,业务的抽象和架构能力,分布式服务设计原则的理解等。

管理方向

  • 管理方向 : 管理系列偏重于团队把控,需要让团队形成基础战斗力,利用一切资源推进项目,让团队完成作战目标。另外需要做好团队内和跨团队的沟通协作,也是管理工作很重要的一环。在实际工作中这两个方向没有特别明显的边界。例如:做管理不能远离架构设计,而技术专家也不是在单兵作战,也需要带领团队。这两个方向区分点:在于工作内容的侧重点不同,到底是更偏技术架构,还是更偏管理与项目推进?

回到最开始的面试问题, 你的职业规划是什么?

答案并不是在面试前打个突击准备就完成任务,而是你进入职场,准备成为一名工程师,心里就该有个谱了,这里给你个面试小诀窍,也许这么回答,能加分很多。

从过往的经验来看,我对项目的整体规划管理推进比较感兴趣,协调沟通方面也有过比较突出的表现,所以我的职业规划是成为一名优秀的技术经理。对你管理方向和发展目标,面试官可能会对你的相关经历开始询问。除了有明确的职业规划,想要往高处走,还得与对应的软硬技能要求。这样你在工作的时候,就可以有意识的捕捉能力,提高水平。

BTA职位体系

不同公司,不同级别的岗位,要重点提升哪些方面的技能呢?非常简单,我们来看下图。

这张简单介绍一下BAT的技术序列,岗位划分,对应的工作年限及级别,1~3年的初级工程师,这个级别的岗位在阿里,百度,腾讯等大厂,很少进行社招。通常的都是校招进去,进行人才培养。

想了解更详细的岗位等级或薪资结构,可以访问:mp.163.com/v2/article/…

面试岗位选择

换工作的时候,你也许遇到过这种情况,一个公司有好几个技术岗位,要全都投一遍吗?手里有多个offer,该怎么选择,是挑钱多的?还是大平台福利待遇好的?

个人建议:挑选岗位一般从公司规模,业务线或者团队的重要程度,以及个人条件的匹配度,这几个方面来入手,先来看看公司和团队,你要有一个概念,在每一份工作,都是为了下一份更好的做趋势,提高身价,核心业务更适合长期稳定发展,进入核心团队,在能力和经验上都能获得较大的成长。

剩下的两种情况,一个是大公司的边缘业务,一个是小公司的核心业务,这也是最让人头疼的选择,给你个建议,对于工作1~3年的小伙伴,我更推荐优先选择核心业务,之前我有提到职业生涯前期以积累知识经验为主要任务,核心业务可以给你更多历练场景,无论是应用经验还是架构经验,都能有更好的收获。另外一个因素就是个人匹配度,不是每个人天生都能考上北大清华考大学,大家都要估分再报志愿,职场也一个道理,首先对自己的条件有客观的评估,再对号入座,评估范围包括岗位要求,业务方向,还有自身能力,兴趣经验等匹配程度,匹配度越高,面试的成功率就会越高,也更有利于入职后个人的发展,一句话总结就是,优先选择核心业务,以及与自己条件高度匹配的岗位。

在搞清楚前面几点之后,面试流程,也是找到工作前必须了解的。如果对面试的要求都不了解,也没有进行对应的职位匹配就来了。白白浪费一次宝贵的机会。对于技术岗,大部分公司的面试流程基本差不多,总结为如下 6 个环节。

前置面试

首先可能会有一些前置面试,例如应聘的是外地的职位,可能会先安排电话面试,大概了解候选人的情况和技术水平,还有一些公司会在正式面试前先进行笔试。因此,初次面试前一定要跟面试官沟通,是否会先进行电话面试,是否有笔试或上机编程,是否需要自带电脑,正式的面试是从技术面开始的,可能会有1~2位面试官,他们很有可能就是你入职后的同组的同事。

技术一面

技术一面以考查基础能力与实际应用能力为主,时长大概一小时左右,是纯技术面,可能会要求手写一些小算法,比如排序、字符串处理之类的,这方面大家可以平时面试的前稍作准备,也可以关注公众号: Coder编程 ,后续会有相关文章介绍。

技术二面

技术二面,主要也是以技术面为主,偏重对技术深度的考察。例如:可能对你的一些项目经历进行询问,同时可能会要求画出项目的架构图,交互流程图等,并对项目存在的问题和改进方案进行询问。一般技术二面的面试官就是你入职后的直属领导,一些规模较小的公司,技术面到二面就结束了。而大部分公司,技术面一般是半技术面,同时会有一些项目经历,架构设计题目。另外还会涉及到

  • 职业规划
  • 职业兴趣
  • 技术试验
  • 架构能力
  • 技术敏感度
  • 发展潜力

等一些信息进行考察。面试官一般是部门的领导。部分公司会存在其他部门领导,例如腾讯在较高级别岗位面试时,跨部门的交叉面试,面试内容与三面基本相同。

HR面试

如果你很幸运,通过了前面几轮的技术面试,那么就进入到HR面试阶段,这个阶段之后基本不会再出现技术面试。主要沟通个人的发展规划,上家公司的离职原因,价值观和薪资待遇等。如果你对这家公司特别期待,注意不要在这个环节,因为纠结一两千块钱的工资而错失机会。工作前期以积累能力为主,三年后再来谈公司及高管的面试。具体的轮次看情况,一般1~2遍,非技术面为主,可能会简单询问工作经历。对公司的看法,对行业的看法,未来规划.只要没有原则性的错误,一般都能通过。

小结

第一:面试前询问是否有电话面试,笔试,上机的潜质面试,

第二:技术面是一面二面关注实际工作能力,架构能力。在二面与三面的时候一般决定了你的去留。所以一定要好好表现。

面试前的准备工作

假设你明天就有个面试,那么 前期的准备工作 对面试成败起到了决定性的作用。

成功的三大基石

成功的三大基石是 能力心态沟通

  • 能力 :优秀的技术基本功是必要条件。毕竟公司是找你来解决问题的,没有技术能力,其他的都无从谈起。
  • 心态 :注重平衡心态,过于紧张会导致平时会的内容也没有答上来。
  • 沟通 :与面试官顺畅的沟通,开心的交流,会给你的面试加分.反过来了,如果沟通不顺畅,就可能变成致命一刀,直接被pass掉。

如何在面试时稳定发挥?

一:面试考查点是可以在短期内突击的,也是面试前需要重点准备的内容。你需要系统的复习基础知识,对工作经历进行提炼,对原来负责的项目,从架构方面重新审视梳理总结,经典框架的原理,使用场景及实现方式进行学习,对场考的考点进行专项突击,根据面试岗位业务有针对性的准备。比如面试的岗位是可以突出自己,有个存储中间件的开发经历,协议的设计理解等,当然技能方面也还有一些加分项。

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

三:沟通,给以下几点建议:

(1)提前准备一个简短有特色的自我介绍,主要描述自己的技术特长和职业优势,一定不要聊兴趣爱好,老家星座,无关紧要的内容。

(2)避免对于回答不上来的问题,可以主动坦白,并提出解题思路,或者在询问面试官可不可以换一个问题。

(3)当没有听清,或者不理解问题时,不要强行做答,可以跟面试官再次沟通确认问题。

(4)注意细节,例如你面试的微表情,不要皱眉,控制坐姿和手势,说话语速不要过快或过慢,表达逻辑清晰,观点明确,不要随意打断面试官,谦虚有礼的态度等等。还有一个小技巧,是要注意观察面试官的反应。如果面试官突然在简历上奋笔疾书,说明你提供的信息是有用的。如果他停下来很长时间不写了,你要想想是不是跑题了,如果面试官的表情显示出不耐烦或者深呼吸,有可能你没有领会到面试官的考查意图,可以再次询问面试的考察点。

必要的硬技能与软实力

能力非常重要,一般分为硬技能和软实力。

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

软实力 包括逻辑思维是否灵活,沟通表达写作能力是否优秀,是否有较强的项目管理推进能力,新技术的学习总结与思考能力,以及培养潜力这几方面。前面BAT的职位图提到了,不同等级的岗位能力要求。这里我用雷达图来展示,首先,

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

高级工程师,一般需要独立完成功能模块,或者是项目的设计和开发,所以除了初级工程师应该具备的能力外,对项目经验沟通协作,架构能力,学习思考,管理推进,都有了更高的要求,特别是项目经验和学习思考能力

技术专家,具备项目架构,项目经验与协作沟通。与协作沟通能力,能够独立负责一个项目,做好项目架构,完成功能模块的拆解和任务分配,推进团队内外部的事务,协调资源管理进度。带领技术团队完成任务目标。

提示:: 软实力,功夫做得好,对于技术工程师的职业生涯来说,绝对是加分项。

硬技能图谱

对硬技能考查点,我也做了一份系统化梳理,也是非常重要的内容。

基础知识部分

分为 计算机基础Java体系 两大部分,包括了进程线程的管理,TCP/HTTP等网络协议,数据结构,经典算法,常用的设计模式等,另外还会分享一些面试的加分的内容,比如新技术方面,例如,新特性,垃圾回收算法,GC,最新的网络协议HTTP2,最新的网络协议,HTTP2和QS的知识深度方面,包括内存屏障,指令重排序,编译器逃逸分析等等。

项目经验部分

如何展现自身的项目经验。包括项目的描述,项目难点,项目问题分析与改进的部分。需要兼顾知识的广度与重点框架的知识深度。包括常用的工具,常用框架数据库等几个方面。其中工具集,以知识广度与实用性为主。例如工具的的应用,框架以经典架构的常考点为主。包括spring框架的重点,缓存数据库将以应用场景为主。最后架构能力以架构介绍为主,介绍架构理念与应用场景,也包括一些重点机制的实现方式。容器方面的知识,例如docker。