分享

知名外企架构师面试官:面试指导总结

fc013 2020-2-7 21:30:55 发表于 职业指导 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 3723


问题导读

1.简历中应包含哪些要素?
2.如何描述公司的工作情况?
3.面试时怎样介绍项目?



1.程序员准备和投递简历的实战技巧
1.1 简历中应包含的要素,一个都别落下

为了让简历更吸引技术面试官或其它相关筛选简历的人,大家在准备简历应当注意“直接”两字:能让筛选人能直接地看出本人的教育背景、工作经历和项目经理,并让他们“直接”感到这份简历能纳入考虑范围。

根据这个原则,大家可以按次序在简历中列出如下表所给出的要素。

简历中应包含的要素 目的
基本信息,比如姓名,性别,年龄,目前所在城市,是否在职,手机和电邮等。 1 让招聘方了解候选人的基本信息。2 以便招聘方通过手机等方式能联系到候选人。
按时间倒叙写教育背景,一般只需要包含高中以上,初中高中等不必写,但需包含专业和学历学位信息。 用专业和学历学位等信息向招聘方证明自己的技术背景。
总结性地列出自己所掌握的技能。比如:1 有3年Java经验,有2年Spring MVC经验。
2有3年Oracle经验,有2年Oracle调优经验。
等等
一般这些总结点是和职务需求是一致的,这样能让招聘方直接地感受到该候选人的匹配度。
在这基础上,可以适当列些能成功帮到自己的总结点。
按倒叙列出工作过的公司,并列出在这些公司里的项目经验,这部分的技能下文会详细描述。 在项目经验描述里,能通过项目用到的技术经验等,具体地给出自己“匹配”该岗位的证明。
可以列出和应聘岗位相关的培训经历和得到过的奖励 这些属于加分项,同等情况下能优先录用
用少量篇幅列出自己的兴趣和自我总结 让招聘公司进一步了解候选人


1.2 该如何描述公司的工作情况

这部分一般是按时间倒叙描述,比如可以按如下的格式写:

2015年11月到2017年10月,在xx公司,职务是Java高级开发。离职理由是想进一步发展。

2012年2月到2015年11月,在xx公司,职务是Java初级开发。离职理由是想进一步发展。

按此格式写之前的公司情况

这部分的内容应当尽量靠前,在罗列公司情况时,请大家注意如下的四个要点。

第一,工作情况可以和项目经验分开写,一般会在后继的项目经验里写具体用到的技术框架以及所做过项目的细节,在这里的工作情况描述里,可以不用过于复杂,让招聘方看到你之前的公司情况即可。

第二,尽量别出现长时间的“空白期”,比如上份工作是2月份结束的,而下份工作是6月开始的。如果出现持续三个月以上的“不在职状态”,需要在简历中说明情况,比如这段时间你是换城市发展了,或辞职复习考研或复习考公务员,总之得找个能说得过去的理由。

第三,在简历上,尽量别让人感觉你每份工作都做不长,但不能以此作假。比如我见过有候选人会合并公司,比如2016年11月到2017年3月在A公司,2017年4月到10月在B公司,他为了不让招聘方感觉他换工作太频繁,在简历上就写2016年11月到2017年10月在B公司工作,而故意合并了A公司的经历。这样的话,如果遇到背景调查,会露馅,即使有些公司不做调查,在劳动手册等材料上也能反应出真实的工作情况,所以这种做法有一定的风险性。

这里推荐的做法是,不要合并公司,但可以写明理由,比如当时小王是被外派公司A以人力派遣的形式外派到B公司,但没过多久A公司因某种原因不再具备人力派遣的资质了,这时小王就不得不终止与A公司的合同转而和B公司签约,这样虽然看上去小王是换了公司,但实际上没有。通过类似的合理解释,招聘方就不再会质疑小王的工作能力和稳定性了。

第四,可以写上合适的离职理由,尤其当你短时间里换工作比较多,可能引起招聘方的质疑的情况里,更该考虑些合适的理由。
合理的离职理由可以是,想为自己提供一个更大的发展空间,或想通过升级来独当一面,以此进一步提升自己的能力,或公司因资金等方面的原因倒闭了。总之,这不是我主观上不稳定,而是由于客观原因导致我不得不换工作。

而可能会导致没面试机会的离职原因是,待遇问题(虽然大家心知肚明,但不能这样写),或无法承受大压力,或同事领导排挤。这类理由往往会暴露出候选人的缺点,所以不建议大家采用。从这意义上来讲,“合同期满”也不是一个好的离职原因,因为如果候选人能力强,那么为什么原公司不和你续约呢?
总之,在描述公司情况时,一旦出现会让招聘方感觉你能力不强或不稳定时,一定得醒目地写上足以信服的理由,这样你的简历才会有机会被继续被读下去,进而你才会有技术面试的机会。

1.3 尽量把学习培训项目和毕业设计项目往商业项目上靠

商业项目是指能挣钱的项目,和它对应的就是些不以挣钱为目的的学习项目或毕业设计项目。正因为客户付了钱,所以商业项目的要求要远远高于学习或毕业设计项目,这也是为什么招聘公司会看重商业项目而会主动过滤学习项目的原因。

比如小张在大三时帮计算机系的王老师所在的ABC软件公司干了半年的活,如果小张在简历上写:“在校期间,从x年x月到x年x月完成了xx系统,用到了xx技术”,那么这多半会被当成类似于课程设计的学习经验,但如果再加上如下关键性的描述:“这个系统是属于xx公司的xx商业项目里的一部分,我和另外三位开发人员做了半年,最终这个系统成功上线并在客户xx公司的环境里投入运营”,那这样小张的商业项目总年限里就能加上这半年时间了。

又如小李在做毕业设计时,花了7个月的时间参与了导师的一个电商商业项目,他主要的工作是设计一个调度算法,但也参与了一些诸如订单管理模块的工作。如果他就平淡地写一句,毕业设计是xx,毕业论文是xx,那么招聘方看过就算了,也不会认为小李在做毕业设计时还有过商业项目经验,这样小李未免有些吃亏。
但如果这样写:“在x年x月到x年x月的7个月里,在毕业设计中,我参与了xx公司的xx电商项目,客户方是x,我参与了订单管理和xx模块,并设计了其中的调度算法,在我的毕业论文里,详细介绍了这种做法”。文字没修改太多,但足以让小李增加7个月的商业项目经验。

我们发现大多数初级程序员的水平其实也差不多,这时就得看谁的商业项目经验丰富了。比如有次我们无法从两位候选人中权衡,因为他们的综合条件和面试情况都差不多,但其中有一位在大三阶段有段为期6个月的商业项目实习经验,另一位没有(也有可能他也有但没当成商业项目来写),这种情况下我们就录用了有实习经验的候选人了。

1.4 描述项目的技巧

我们可以根据职位需求,从如下几个方面来描述项目经验。

第一,简要描述项目的背景,比如时间范围,客户是谁,项目规模有多大。如下是范例。

从x年x月到现在(这个时间范围至少是最近半年),我参与某外汇交易系统,客户是xx银行,这个项目组的构成是,1位项目经理外加10位开发,总共的规模大概在80个人月左右。

第二,大致描述项目的需求和包含哪些模块,然后简要说下你做了哪些模块,同时说下在这个项目用到的开发工具和主要技术点,这部分的描述如下所述。

这个外汇交易系统包括挂盘撮合成交、实盘成交、反洗钱和数据批处理等模块,我主要负责了挂盘撮合成交模块,其中用到了Spring MVC架构,数据库是Oracle,用Mybatis实现的ORM,该系统是运行发布在Weblogic服务器上,我们还用了Nginx来实现负载均衡,用Redis来缓存数据。在这个项目里,我还用到了JS实现了一些前台页面。

第三,这里可以结合职位的需求,描述JD里要求的技术在项目里是如何用的。同样这里也应围绕技术,而别多写业务细节

1.5 在简历中描述项目时可以添加的亮点

我们见过不少简历,在描述项目时,也能像上文一样,能根据招聘职位的具体要求展示出自己的匹配点,这种简历属于“达标”,即可以纳入考虑范围。在这个基础上,如果大家在项目里有下表列出的亮点,一定请写上,这就是大家优于别人的地方。

1. 数据库和JVM调优;
2. 你理解的框架底层代码;
3. 项目里用到的设计模式;
4. 项目管理和部署工具;
5. 结合若干案例,讲述你分析和解决bug的技能;
6. 其它能帮助到你的加分项,比如工期紧,用到新技术等。


1.6 哪些简历可以通过筛选

从面试官角度来看,除了学历等硬件条件外,如果简历满足如下的4点要求,就一般能有面试机会了。

1. 商业项目足量,且其中包含的技能和职位介绍很匹配;
2. 最近用到的技能和职位介绍很匹配;
3. 没有过长职业空白期或不稳定等情况;
4. 一定请记住,公司只能通过简历认识到你,简历上没写清楚等同于你不行。

其实这就是我们写简历的方向,而且,在针对具体公司投递简历时,还可以以此为目标,微调简历。

2.面试时该如何讲解技术项目赢得面试官好感

2.1别害怕,因为面试官什么都不知道

面试官是人,不是神,拿到你的简历的时候,是没法核实你的项目细节的(一般公司会到录用后,用背景调查的方式来核实)。更何况,你做的项目是以月为单位算的,而面试官最多用30分钟来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官,所以你一点也不用紧张。如果你的工作经验比面试官还丰富的话,甚至还可以控制整个面试流程(笔者在面试方面成精后也经常干这种事情,大家一定也能行)。

面试官
对你以前的项目和技能 很了解 只能听你说,只能根据你说的内容做出判断
在面试过程中的职责 在很短的时间内防守成功即可 如果找不出漏洞,就只能算你以前做过
准备时间 面试前你有充足的时间准备 一般在面试前用30分钟阅读你的简历
沟通过程 你可以出错,但别出关键性的错误 不会太为难你,除非你太差
技巧 你有足够的技巧,也可以从网上找到足够多的面试题 其实就问些通用的有规律的问题


既然面试官无法了解你的底细,那么他们怎么来验证你的项目经验和技术?下面总结了一些常用的提问方式。

提问方式 目的
让你描述工作经验和项目(极有可能是最近的),看看你说的是否和简历上一致 看你是否真的做过这些项目
看你简历上项目里用到的技术,比如框架、数据库,然后针对这些技术提些基本问题 还是验证你是否做过项目,同时看你是否了解这些技术,为进一步提问做准备
针对某个项目,不断深入地问一些技术上的问题,或者从不同侧面问一些技术实现,看你前后回答里面是否有矛盾 深入核实你的项目细节
针对某技术,问些项目里一定会遇到的问题,比如候选人说做过数据库,那么就会问索引方面的问题 通过这类问题,核实候选人是否真的有过项目经验(或者还仅仅是学习经验)


2.2面试时的错误表现

在面试过程中,如果候选人出现如下的表现,那么很有可能过不了面试,请大家注意。

1. 面试时介绍的项目时间等情况简历上写的不一致,这就有简历造假的嫌疑;
2. 介绍项目时只介绍业务,忽略技术。因为面试官只关心技术,不关心业务;
3. 对于提到的技术,连最基本的问题也回答不上,这就说明候选人这项技术没掌握;
4. 说得太流利或太磕磕巴巴,这就说明在背词或者是表达有问题。

2.3面试中介绍项目的范例

第一步,介绍项目基本情况。

可以这样说,这个项目是xx产品的xx模块的,有xx和xx模块,我做了xx模块,用了半年,我的组里一共有5个人。这里可以谈下业务,但别深入,因为面试官不熟悉,也不想熟悉候选人的业务,这块时间控制在1分钟之内。

第二步,介绍项目里关键技术和管理方式。

可以这样说,这个项目里,我用到了Spring框架,用到nginx等组件,项目管理用Maven,部署用jenkins,静态扫描用Sonar,任务管理和bug管理用jira,平时采用敏捷的项目迭代方式,每天有站会,大约1月一个迭代版本。这块可以根据自己的情况来介绍,时间也别太长,估计用1分钟也就够了。

第三步,结合业务讲用到的技术,但别展开:

比如有个职位介绍,里面写到需要有数据库优化的经验,那么可以说,项目里xx模块,我用到MyCat作为分库分表,(不展开技术),上线后,数据库能承受住每秒2000个并发请求(说下用好的结果)。

又如一个JD里说要用到微服务技术,那么就可以说,项目里用到了Spring Cloud框架,用到了Ribbon,Eureka等组件,容器是Docker。用好以后,在发布时会发现,各模块之间的调用耦合性大大降低。

2.4介绍项目时的要点归纳

从上述介绍项目的范例中,可以归纳出相关要点如下。

1. 面试前,需要阅读职位介绍,挖掘用过的技能要点,然后尽可能地在介绍项目里提到这些技能关键字;
2. 在介绍项目里,结合业务,提到职位介绍里的技术,因为一旦技术结业业务,就说明你有过相关技术的实践经验,而不是仅仅只会理论;
3. 别过多介绍业务,多抛出职位介绍里的关键字。还是这句话,面试官不关心业务,你提到业务只是以此证明你在实践中用过相关技术而已;
4. 此时还在项目介绍阶段,别过多展开技能,你抛出技能关键字后,面试官自然会问的。而一旦你过多展开技术,那么面试官就有可能感觉到你思路不清晰。





最新经典文章,欢迎关注公众号



---------------------

作者:csdn
来源:csdn
原文:8年经验面试官详解 Java 面试秘诀




已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条