Skip to content

Latest commit

 

History

History
116 lines (77 loc) · 17.6 KB

面试指导.md

File metadata and controls

116 lines (77 loc) · 17.6 KB

程序员面试时这样介绍自己的项目经验,成功率能达到98.99%

[toc]

假如去面试要问10个问题,那么至少5个问题会根据你所介绍的项目背景来问。

面试时7份靠能力,3份靠技能,而刚开始时的介绍项目又是技能中的重中之重,决定一次面试的成败,那么面试时如果介绍自己的项目呢?

1、在面试前准备项目描述

别害怕,因为面试官什么都不知道,面试官是人,不是神,拿到你的简历的时候,是没法核实你的项目细节的。更何况,你做的项目是以月为单位算的,而面试官最多用30分钟来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官,所以你一点也不用紧张。

如果你的工作经验比面试官还丰富的话,甚至还可以控制整个面试流程。

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

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

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

2、准备项目的各种细节

一般来说,在面试前,大家应当准备项目描述的说辞,自信些,因为这部分你说了算,流利些,因为你经过充分准备后,可以知道你要说些什么。一旦让面试官感觉你都说不上来,那么可信度就很低了。

不少人是拘泥于“项目里做了什么业务,以及代码实现的细节”,这就相当于把后继提问权直接交给面试官。下表列出了一些不好的回答方式。

回答方式 后果
我在xx软件公司做了xx门户网站项目,这个项目做到了xx功能,具体是xx和xx模块,各模块做了xx功能,客户是xx,最后这个项目挣了xx钱 直接打断,因为业务需求我不需要了解,我会直接问他项目里的技术
(需要招聘一个Java后端开发,会Spring MVC)最近一个项目我是用C#(或者其他非Java技术)实现的,实现了...或者我最近做的不是开发,而是测试...或者我最近的项目没有用到Spring MVC 提问,你最近用到SSH技术的项目是什么时候,然后在评语上写:最INxx时间没有接触SSH
在毕业设计的时候(或者在读书的时候,在学习的时候,在xx培训学校,在xx实训课程中),... 直接打断,提问你这个是否是商业项目,如果不是,你有没有其他的商业经验。如果没有商业项目经验,除非是校招,否则直接结束面试
描述项目时,一些关键要素(比如公司、时间、所用技术等)和简历上的不匹配 我们会深究这个不一致的情况,如果简历造假,那么可能直接中断面试,如果真的是笔误,那么就需要提供合理解释

在避免上述不好的回答的同时,大家可以按下表所给出的要素准备项目介绍。如果可以,也请大家准备一下用英语描述。其实刚毕业的学生,或者工作经验较少的人,英语能力都差不多,但你说了,这就是质的进步。

要素 样式
控制在1分钟内,讲出项目基本情况,比如项目名称,背景,给哪个客户做,完成了基本的事情,做了多久,项目规模多大,用到哪些技术,数据库用什么,然后酌情简单说一下模块。重点出图背景,技术,数据库和其他和技术相关的信息。 我在xx公司做了xx外汇保证金交易平台,客户是xx银行,主要完成了挂盘,实盘成交,保证金杠杆成交等功能,数据库Oracle,前台用到JS等技术,后台用到Java的SSH,几个人做了x个月。不需要详细描述各个功能模块,不需要说太多和业务有关但和技术无关的。如果面试官感兴趣,等他问。
要主动说出你做了哪些事情,这部分的描述一定需要和你的技术背景一致 我做了外汇实盘交易系统,挂单成交系统,xxx模块,做了x个月
描述你在项目里的角色 我主要是做了开发,但在开发前,我在项目经理的带领下参与了业务调研,数据库设计等工作,后期我参与了测试和部署工作。
可以描述用到的技术细节,特别是你用到的技术细节,这部分尤其重要,你说出的,一定要知道,因为面试官后面就根据这个问。
你如果做了5个模块,宁可只说你能熟练说上口的2个。
用到了Java里面的集合,JDBC,...等技术,用到了Spring MVC等框架,用技术连接数据库
这部分风险你自己承担,如果可以,不露声色说出一些热门的要素,比如Linux,大数据,大访问压力等。但一旦你说了,面试官就会直接问细节。 这个系统里,部署在Linux上,每天要处理的数据量是xx,要求是在4个小时,1G内存的情况下处理完5千万条数据。平均访客是每分钟xxx。

面试前,你一定要准备,一定要有自信,但也要避免如下的一些情况。

要避免的情况 正确的做法 原因
回答很简单。问什么答什么,往往就用一句话回答 把你知道的都说处理啊,重点突出你知道的思想,框架 问:你SSH用过吗?
答:用过。
问:在什么项目里用到?
答:一个保险项目
问:你做了哪个方面的事情?
答:开发
我直接不问了
说的太流利 适当停顿,边思考边说 让面试官感觉你在背准备的东西,这样后面维内托就很难
项目介绍时什么都说 就说些刚才让准备的一些,而且要有逻辑的说 会让面试官感觉你思路太乱
别太多介绍技术细节,就说你熟悉的技术 技术面点到为止,等面试官问 你说到的所有技术要点,都可能会被深问。面试官一般会有自己的面试节奏,如果你在介绍时就有太多说技术细节,和可能被打断,从而没法说出你准备的亮点。

3、不露痕迹地说出面试官爱听的话

在项目介绍的时候,面试官其实很想要听一些关键点,只要你说出来,而且回答相关问题比较好,这绝对是加分项。

下面列些面试官爱听的关键点和对应的说辞

关键点 说辞
能考虑到代码的扩展性,有参与框架设计的意识 我的项目xx保险项目,用到SSH技术,数据库是Oracle,(这个是铺垫),开发的时候,我会先和项目经理一起设计框架,并参与了框架的构建,连接数据库的时候,我们用到了DAO,这样做的理由是,把SQL语句封装到DAO层,一旦要扩展功能模块,就可以不用做太多的改动。
有调优意识,能通过监控发现问题点,然后解决 在开发阶段,我就注意到内存的性能问题和SQL运行的时间问题,在压力测试阶段,我会通过xx工具来监控内存和数据库,发现待提升的代码点,然后通过查资料来优化。最后等项目上线后,我们会部署监控系统,一旦发现内存和数据库问题,我们会第一时间解决。
动手能力很强,肯干活,会的东西比较多,团队合作精神比较好 在项目里,我不仅要做开发的工作,而且需要自己测试,需要自己根据一些日志的输出到数据库或Java端去debug,当我开好一个模块时,需要自己部署到Linux上测试。
或者,一旦遇到问题,如果是业务方面的,我会及时和项目经理沟通,如果是技术方面的,我会自己查资料,如果是测试方面的,我会及时和测试的人员沟通
责任心比较强,能适应大压力的环境 被问“你如果在项目遇到问题怎么办?”
回答:遇到问题我先查资料,如果还是没有办法解决,不会拖,会及时问相关的人,即使加班,也会在规定的时间内解决
有主见,能不断探索新的知识 在项目里,我会在保证进度的前提下和项目经理说我的想法,提出我的解决方案。在开发过程中,我会先思考一下,用一种比较好的方式,比如效率最高的方法实现。
另外,你要找机会说出:平时我会不断看一些新的技术(比如大数据Hadoop),会不断深入了解一些框架和技术的底层实现。

4、一定要主动,面试官没有义务挖掘你的亮点

面试官往往会这样问:你项目里有什么亮点?或者你作为应聘者,有什么其他加分项能帮你成功应聘到这个岗位。你作为面试者,应当主动说出,而不是等着面试官问,但请注意,说的时候要有技巧,找机会说,通常是找一些开放性的问题说。

比如:在这个项目里用到了什么技术?你除了说一些基本的技术,比如Spring MVC,Hibernate,还有数据库方面的常规技术时,还得说,用到了Java内存管理,这样能减少对虚拟机内存的压力,或者说用到了大数据处理技术等。也就是说,得找一切机会说出你拿得出手的而且当前也非常热门的技术。

或者找个相关的问题做扩展性说明,比如被问到:你有没有用到过一对多和多对多?你除了说基本知识点以外,还可以说,一般我还会根据需求适当地设置cascade和inverse关键字,随后通过一个实际的案例来说明合理设计对你项目的帮助,这样就能延伸性地说明你的技能了。相反如果你不说,面试话一定会认为你只会简单的一对一和一对多操作。

5、面试过程中绝对不要出错

出错会导致你直接出具,所以你在准备过程中需要尤其注意如下的因素。下面列了些会导致你直接出局的错误回答。���

错误类型 导致的后果
前后矛盾,后面的回答无法证明你的项目描述,比如一开始说用到了Spring MVC,后面没法说出最基本的实现,比如不知道Spring有哪些类,或者没法说出项目的细节 我会换衣这个项目的真实性,我就会进一步问:数据库用什么,数据量多少》多少个人做了多少时间,一旦再出现明显漏洞,比如一个小项目用到非常多的时间,那么就不仅仅是技术问题,而是在面试过程中企图“蒙混过关”的性质了
项目里一定会用到的基本概念性问题都回答不上来,Spring的依赖注入概念是什么,怎么用,或者Hibernate的一对多怎么实现 一旦被我发现概念不知道,我就会通过更多问题确认,如果被我确认很弱,就相当严重,因为技术能力差和技术没用过是两个截然不同的状况,技术没用过会导致直接出局。
面试时说出的工作经验和简历上的不一致 我会直接怀疑简历是编的,我会让候选人解释,即使是说简历写错了,我也会问比较深入的问题来核实他的技能和能力
简历上的技能描述和回答出来得明显不一致,比如明明是只会简单的Linux,但是吹的天花乱坠 我会通过一些比较深的问题核实其他技能,找出其他方面吹嘘的水分。
所以建议,你可以适当夸大,但别过分,比如你在项目里没搭建框架,但是平时学习时搭建过,你可以写“xxx项目的框架是你搭建的”,但不能说你是一个架构师,非常了解项目的底层
让面试官感觉你很不稳定,很浮躁,比如说话不庄重,或者面试时打扮非常不正规,就穿背心 即使你技术再好,这个可能导致你直接出局。
我对油嘴滑舌的候选人一般会直接写上不好的评语,这样很难过后面项目经理的面试
我还遇到一个人,简历上工作是半年一换,我问他为什么经常换,他直接说是待遇问题,这个人我直接Fail掉
明书不能加班,不能出差 其实虽然有这一问,但公司未必真的会加班出差。但听到这类回答,说明这个人不能承受压力的工作,护着责任心不强,大多数公司是不会要这种人的

6、一点要学会引导面试官

在做项目介绍的时候,你可以穿插说出一些你的亮点,但请记得,不论在介绍项目还是在回答问题,你当前的职责不是说明亮点而是介绍项目,一旦你详细说,可能会让面试官感觉你跑题了。所以这时你可以一笔带过,比如你可以说,“我们的项目对数据要求比较大,忙的时候平均每小时要处理几十万条数据”,这样就可以把面试官引入“大数据”的方向。

你在面试前可以根据职位的需求,准备好这种“一笔带过”的话。比如这个职位的需求点是Spring MVC框架,大数据高并发,要有数据库调优经验,那么介绍以往项目时,你就最好突出这些方面你的实际技能。

再给大家举个例子,比如Java虚拟机内存管理和数据库优化是绝大多数项目都要遇到的两大问题,大家都可以在叙述项目经验时说,在这个项目里,我们需要考虑内存因素,因为我们的代码只允许在2G内存环境中运行,而且对数据库性能要求比较高,所以我们经常要监控优化内存和数据库里的SQL语句。这样当面试官深入提问时,就能抛出自己准备好的虚拟机内存优化和数据库优化方面的说辞。

实在不行,你也可以说“我除了做开发,也做了了解需求,测试和部署的工作,因为这个项目人手比较少,压力比较大”,这样你也能展示你有过独挡一面的经历。

总结

面试前一定要准备,在讲解项目的过程当中,先讲解项目背景。也就是说为什么要做这个项目,它与公司的业务发展是什么关系?来源于什么诉求?这里如果讲解清楚,不仅能够让面试官容易理解,也很能体现技术视野与业务理解等软实力的。不用把项目当中所有的功能都介绍一遍,完全没有那个必要,迎合面试官的需要,体现自己的特点。

source:程序员面试时这样介绍自己的项目经验,成功率能达到98.99% (toutiao.com)