程序员面试之技巧篇

目录

技巧一、如何和回答面试官问题

技巧二、如何回答技术性的问题

技巧三、如何回答快速估算类问题

技巧四、如何回答算法设计问题

技巧五、在被企业拒绝后是否可以再申请

技巧六、如何应对自己不会回答的问题

技巧七、什么是职场暗语


程序员面试之技巧篇_第1张图片

 

技巧一、如何和回答面试官问题

  1. 面对面试官各类问题,如何才能条理清晰回答呢?
  2. 如何才能让自己的回答不至于装上枪口呢?
  3. 如何让自己的回答令面试官满意呢?

 

首先我们面对面试第一面对的就是心态题,大多的时候都是自我恐慌。这种情况下其实完全没有必要,因为你恐慌可能面试官也恐慌,因为面试你的人不一定是技术人员,技术人员也未必有你强,牛人太多了,搞不好就碰到那个牛人就把面试官自己绕进去了,自己犯错的话他也很尴尬。所以重点来了,大家都怕犯错,但你犯的错还少吗?犯错也照样过来了不是吗?

1.回答问题务必谨慎,通过问题的回答表现出自己自信从容的一面。

2.回答问题不要什么都说,要适当留有悬念(人一般都有猎奇的心理)。

3.回答问题最好使用的就是三段式/star法则(包括场景/任务、行动、结果)。

栗子来了:

面试官: "你在项目中起到什么作用 " ?

错误回答:我在团队中的工作起到决定性作用,工作很难,框架什么的都是我做的(体现居功自傲,没说到重点)

正确回答:我完成了文件系统的构建工作,这个工作被认为是整个项目中最具有挑战性的一部分内容,因为它几乎无法重用以前的框架,需要重新设计。这个回答在于我做了什么,工作的重要性在哪,需要回答为什么重要,这样有理有据更能体现自我价值。

回答问题不清晰会给面试官你做的项目价值不高,思维逻辑能力不强,大多会ps掉。

栗子来:

面试官:你在项目中遇到最大的挑战是什么?

回答:

第一步,分析场景说明任务:在我参与的一个xxx项目中,我们团队一共四个人,除了我以外的其他三个人中没有两个能力很强,人也比较好相处,但有一个去不好相处,每次讨论问题时,他都不太爱说话,跟他配合的任务也很难完成。

第二步,分析行动:为了和他更好的配合,我私下里找他单独谈了一谈,于是我周末时约了他一起吃饭,顺便讨论了一下项目,我询问了一些项目中的问题,通过他的回答,我发现他并不懒,也不是故意拖着任务不做,只是对项目不太了解,缺乏经验,缺乏自信,不敢去问而已,所以越来越孤立,不愿意和我们讨论问题。为了解决这个问题我尝试着把问题细化,回答他不清除的问题,找一些朋友同行解决技术问题。

第三步,分析结果:他的技术越来越厉害了,也能按时与我配合互动,很有效率保证了我和我们团队的工作效率和质量。我技术不是团队里最强的,但是,我会更有效的沟通,借助人力,慢慢地帮助他人,间接帮助自己。

                                     程序员面试之技巧篇_第2张图片

技巧二、如何回答技术性的问题

回答技术性问题一般采用6个步骤分析解决:

1.勇于提问        2.高效设计          3.伪代码先行       4.控制节奏       5.编码规范       6.精心测试       

1.勇于提问     

回答问题不是考试那样单一方面回答,面试的过程是一个互动过程。面试官问我设计一个高效的排序算法,这个时候我基本没有头绪,你让我设计一个算法,我啥也不知道啊,你也不告诉我排序对象是链表还是数组?数据类型是整型、浮点型、字符型还是结构体类型?数据基本有序还是杂乱无序?数据量有多大,1000以内还是百万以上?我们应该全都问清楚了,解决方案就出来了。

  2.高效设计   

打动面试官基本功是必须的,仅此而已显然不够,要想达到优秀水平,还需要考虑更多内容!

排序为例:时间是否高效?空间是否高效?数据量不大时也许没有问题,如果是海量数据呢?是否考虑了相关环节,如数据的“增删改查”?是否考虑了代码的可扩展性、安全性、完整性以及鲁棒性。

  3.伪代码先行     

有时候实际代码会比较复杂,上手就写很有可能会漏洞百出、条理混乱,所以求职者可以首先征求面试官的同意,在编写实际代码前,写一个伪代码或者画好流程图,这样做往往会让思路更加清晰明了。

 4.控制节奏   

主要是设计题,控制好时间就好,不要太快,有充裕时间多检测一下,太慢给面试官留下能力不行的印象。

 5.编码规范

回答技术性问题时,多数都是纸上写代码,离开了编译器的帮助,求职者要想让面试官对自己的代码一看即懂,除了字迹要工整外,最好是能够严格遵循编码规范:函数变量命名、换行缩进、语句嵌套和代码布局等。

 6.精心测试       

可以了解一些基本的测试,单元测试,功能测试

 

技巧三、如何回答快速估算类问题

 例如,面试官可能会问这样一个问题:“请估算一下一家商场在促销时一天的营业额?

求职者又不是统计局官员,如何能够得出一个准确的数据呢?

求职者又不是商场负责人,如何能够得出一个准确的数据呢?

即使求职者是商场的负责人,也不可能弄得清清楚楚明明白白吧?

 

遇到此类问题分析出一个概数就行了,不一定要精准数据。那么我们可以尝试从以下思路入手:从商场规模、商铺规模入手,通过每平方米的租金、估算出商城的日租金,再根据商铺的成本构成,得到全商场日均交易额,在考虑促销时的销售额与平时销售额的倍数关系,乘以倍数,就得出促销时一天的营业额。

1)以一家较大规模商场为例,商场一般按6层计算,每层长约100m,宽约100m,合计60000m2的面积。

2)商铺规模占商场规模的一半左右,合计30000m2。

3)商铺租金约为40元/m2,估算出年租金为40×30000×365元=4.38亿元。

4)对商户而言,租金一般占销售额20%,则年销售额为4.38亿元×5=21.9亿元。计算平均日销售额为21.9亿元/365=600万元。

5)促销时的日销售额一般是平时的10倍,所以约为600万元×10=6000万元。

 

技巧四、如何回答算法设计问题

解答算法类设计问题,需要扎实的基本功底和良好的运用能力,这个需要大量的练习,当然也需要配合解题思路,因此提供几个解题思路方法.

1.递归法

为了降低问题的复杂度,很多时候都会讲简单的问题逐层分解,最后归结为一个简单的问题,就是递归。这个方法首先要能够解决最近本的情况,然后依次为基础,解决接下来的问题。

比如:在求全排列的时候,我有时候感觉无从下手,但耐心仔细推敲,会发现后一种排列组合往往是前一种排列组合的基础上进行的重新排列。只要知道了前一种排列组合的各个类组合情况,只需将最后一个元素插入到前面各个组合的排列里面就实现了目标:即衔接去字符串str[1.....n ]中的最后一个字母,生成所有str[1....n-1] 的全排,然后再将最后一个字母插入到每一个可插入的位置。

 

2.归纳法

这个方法通过写出问题的一些特定例子,分析总结其中的规律,核心就是归纳总结。

咱就拿兔子这个经典案例打比方:

农夫有一对兔子饲养在围墙中,如果它们每个月生一对兔子,且新生的兔子在第二个月后也是每个月生一对兔子,问一年后围墙中共有多少对兔子。

使用归纳法解答此题,首先想到的就是第一个月有多少对兔子。第一个月最初的一对兔子生下一对兔子,此时围墙内共有两对兔子。第二个月仍是最初的一对兔子生下一对兔子,共有3对兔子。到第三个月除最初的兔子又新生一对兔子外,第一个月生的兔子也开始生兔子,因此共五对兔子,我们可以看出从第二个月开始每一个月兔子的总数都是前两个月兔子总数之和,tu+1=tu+tu-1.

第一个月是2对、=1对+新生1对

第二个月是3对  = 1月2对+新生1对

第三个月是5对 = 2月3对+老tu新生1对+1月新生长大后新生1对

这个方法比较抽象,只是一种猜测,还需要进行证明。

 public static void main(String[] args) {
        for (int i=1;i<=12;i++){
            System.out.println("兔子第"+i+"个月的总数为:"+f(i));

        }

    }
    public static int f(int x){
        if(x==1 || x==2){
            return x+1;
        }else{
            return f(x-1)+f(x-2);
        }
    }

 

3.简化发

这个方法首先将问题简单化,如改变数据类型,空间大小,然后尝试着简化后的问题解决,一旦有了一个算法或思路可以解决这个问题,再将问题还原,尝试着用此类方法解决原有问题。

如:在大数据中,提取日志数据中某网站访问次数最多的Ip。由于数据量巨大,直接排序显然是不可行,但是数据规模不大时,采用直接排序是一种好的解决方法,那么如何将问题规模缩小呢?这时可以使用hash法,hash往往可以缩小问题规模,然后在简化过的数据里使用常规排序算法即可找出问题的答案。

4.分治法

任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。而分治法正是充分考虑到这一内容,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治法一般包含以下三个步骤:

1)将问题的实例划分为几个较小的实例,最好具有相等的规模。

2)对这些较小的实例求解,而最常见的方法一般是递归。

3)如果有必要,合并这些较小问题的解,以得到原始问题的解。

分治法是程序员面试常考的算法之一,一般适用于二分查找、大整数相乘、求最大子数组和、找出伪币、金块问题、矩阵乘法、残缺棋盘、归并排序、快速排序、距离最近的点对、导线与开关等。

5.轮询法

在设计每道面试、笔试题时,往往会有一个载体,这个载体便是数据结构,如数组、链表、二叉树或图等,当载体确定后,可用的算法自然而然地就会显现出来。可问题是很多时候并不确定这个载体是什么,当无法确定这个载体时,一般也就很难想到合适的方法了。

           常规考的数据结构预算法知识点

数据结构 算法
链表 广度(深度)优先搜索
数组 递归
二叉树 二分查找
排序(归并、快速排序)
树的插入、删除、查找、遍历等
图论
队列 hash法
向量 分治法
hash表 动态规则

 

技巧五、在被企业拒绝后是否可以再申请

很多企业为了能够在一年一度的招聘季节中,提前将优秀的程序员锁定到自己的麾下,往往会先下手为强。他们通常采取的措施有两种:一是招聘实习生;二是多轮招聘。很多人可能会担心,万一面试时发挥不好,没被企业选中,会不会被企业接入黑名单,从此与这家企业无缘了。 一般而言,企业是不会“记仇”的,尤其是知名的大企业,对此都会有明确的表示。如果在企业的实习生招聘或在企业以前的招聘中未被录取,一般是不会被拉入企业的“黑名单”。在下一次招聘中,和其他求职者,具有相同的竞争机会(有些企业可能会要求求职者等待半年到一年时间才能应聘该企业,但上一次求职的不好表现不会被计入此次招聘中)。

录取被拒绝了,也许是在考验,也许是在等待,也许真的是拒绝。但无论出于什么原因,此时此刻都不要对自己丧失信心。所以,即使被企业拒绝了也不是什么大事,以后还是有机会的,有志者自有千计万计,无志者只感千难万难,关键是看求职者愿意成为什么样的人。

 

技巧六、如何应对自己不会回答的问题

在面试过程中并不是都能回答出来,计算机技术博大精深,很少有人能对计算机各个分支学科了如指掌,面试过程中遇到自己不会回答的问题时,错误的做法是保持沉默或者支支吾吾、不懂装懂,硬着头皮胡乱说一通,这样会使面试气氛很尴尬,很难再往下继续进行。 其实面试遇到不会的问题是一件很正常的事情,没有人是万事通,即使对自己的专业有相当的研究与认识,也可能会在面试中遇到感觉没有任何印象、不知道如何回答的问题。

在面试中遇到实在不懂或不会回答的问题,正确的做法是本着实事求是的原则,态度诚恳,告诉面试官不知道答案。例如,“对不起,不好意思,这个问题我回答不出来,我能向您请教吗?”

征求面试官的意见时可以说说自己的个人想法,如果面试官同意听了,就将自己的想法说出来,回答时要谦逊有礼,切不可说起没完。然后应该虚心地向面试官请教,表现出强烈的学习欲望。

所以,遇到自己不会的问题时,正确的做法是,“知之为知之,不知为不知”,不懂就是不懂,不会就是不会,一定要实事求是,坦然面对。最后也能给面试官留下诚实、坦率的好印象。

这句问了你就得了,没问就失去了。

                                     程序员面试之技巧篇_第3张图片

技巧七、什么是职场暗语

为什么我最后还是落选?为什么HR会问我一些与专业、能力无关的奇怪问题?感觉我回答的还行,为什么最后还是被拒绝了?

等等这些都是暗语我们没有理解。

 

以下是一些常见的面试暗语,求职者一定要弄清楚其中蕴含的深意,不然可能“躺着也中枪”,最后只能铩羽而归。

(1)请把简历先放在这,有消息我们会通知你的

面试官说出这句话,则表明他对你已经“兴趣不大”,为什么一定要等到有消息了再通知呢?难道现在不可以吗?所以,作为求职者,此时一定不要自作聪明、一厢情愿地等待着他们有消息通知,因为他们一般不会有消息了。

(2)我不是人力资源的,你别拘束,咱们就当是聊天,随便聊聊

一般来说,能当面试官的人都是久经沙场的老将,都不太好对付。表面上彬彬有礼,看上去很和气的样子,说起话来可能偶尔还带点小结巴,但没准儿巴不得下个套把面试者套进去。所以,作为求职者,千万不能被眼前的这种“假象”所迷惑,而应该时刻保持高度警觉,面试官不经意间问出来的问题,看似随意,很可能是他最想知道的。所以千万不要把面试过程当作聊天,当作朋友之间的侃大山,不要把面试官提出的问题当作是普通问题,而应该对每一个问题都仔细思考,认真回答,切忌不经过大脑的随意接话和回答。

(3)是否可以谈谈你的要求和打算

面试官在翻阅了求职者的简历后,说出这句话,很有可能是对求职者有兴趣,此时求职者应该尽量全方位地表现个人水平与才能,但也不能引起对方的反感。

(4)面试时只是“例行公事”式的问答

如果面试时只是“例行公事”式的问答,没有什么激情或者主观性的赞许,此时希望就很渺茫了。但如果面试官对你的专长问得很细,而且表现出一种极大的关注与热情,那么此时希望会很大。作为求职者,一定要抓住机会,将自己最好的一面展示在面试官面前。

(5)你好,请坐

简单的一句话,从面试官口中说出来其含义就大不同了。一般而言,面试官说出此话,求职者回答“你好”或“您好”不重要,重要的是求职者是否“礼貌回应”和“坐不坐”。有的求职者的回应是“你好”或“您好”后直接落座,也有求职者回答“你好,谢谢”或“您好,谢谢”后落座,还有求职者一声不吭就坐下去,极个别求职者回答“谢谢”但不坐下来。前两种方法都可接受,后两者都不可接受。通过问候语,可以体现一个人的基本修养,直接影响在面试官心目中的第一印象。

(6)面试官向求职者探过身去

在面试的过程中,面试官会有一些肢体语言,了解这些肢体语言对于了解面试官的心理情况以及面试的进展情况非常重要。例如,当面试官向求职者探过身去时,一般表明面试官对求职者很感兴趣;当面试官打呵欠或者目光呆滞、游移不定,甚至打开手机看时间或打电话、接电话时,一般表明面试官此时有了厌烦的情绪;而当面试官收拾文件或从椅子上站起来,一般表明此时面试官打算结束面试。针对面试官的肢体语言,求职者也应该迎合他们:当面试官很感兴趣时,应该继续陈述自己的观点;当面试官厌烦时,此时最好停下来,询问面试官是否愿意再继续听下去;当面试官打算结束面试,领会其用意,并准备好收场白,尽快地结束面试。

(7)你从哪里知道我们的招聘信息的

面试官提出这种问题,一方面是在评估招聘渠道的有效性,另一方面是想知道求职者是否有熟人介绍。一般而言,熟人介绍总体上会有加分,但是也不全是如此。如果是一个在单位里表现不佳或者其推荐的历史记录不良的熟人介绍,则会起到相反的效果,而大多数面试官主要是为了评估自己企业发布招聘广告的有效性。

(8)你念书的时间还是比较富足的

表面上看,这是对他人的高学历表示赞赏,但同时也是一语双关,如果“高学历”的同时还搭配上一个“高年龄”,就一定要提防面试官的质疑:比如有些人因为上学晚或者工作了以后再回校读的研究生,毕业年龄明显高出平均年龄。此时一定要向面试官解释清楚,否则面试官如果自己揣摩,往往会向不利于求职者的方向思考。例如,求职者年龄大的原因是高考复读过、考研用了两年甚至更长时间或者是先工作后读研等,如果面试官有了这种想法,最终的求职结果也就很难说了。

(9)你有男/女朋友吗?对异地恋爱怎么看待

一般而言,面试官都会询问求职者的婚恋状况,一方面是对求职者个人问题的关心,另一方面,对于女性而言,绝大多数面试官不是看中求职者的美貌性感、温柔贤惠,很有可能是在试探求职者是否近期要结婚生子,将会给企业带来什么程度的负担。“能不能接受异地恋”,很有可能是考察求职者是否能够安心在一个地方工作,或者是暗示该岗位可能需要长期出差,试探求职者如何在感情和工作上做出抉择。与此类似的问题还有:如果求职者已婚,面试官会问是否生育,如果已育可能还会问小孩谁带。所以,如果面试官有这一层面的意思,尽量要当场表态,避免将来的麻烦。

(10)你还应聘过其他什么企业

面试官提出这种问题是在考核求职者的职业生涯规划,同时评估下被其他企业录用或淘汰的可能性。当面试官对求职者提出此种问题,表明面试官对求职者是基本肯定的,只是还不能下决定是否最终录用。如果求职者还应聘过其他企业,请最好选择相关联的岗位或行业回答。一般而言,如果应聘过其他企业,一定要说自己拿到了其他企业的录用通知,如果其他的行业影响力高于现在面试的企业,无疑可以加大求职者自身的筹码,有时甚至可以因此拿到该企业的顶级录用通知,如果行业影响力低于现在面试的企业,如果回答没有拿到录用通知,则会给面试官一种误导:连这家企业都没有给录用通知,我们如果给录用通知了,岂不是说明不如这家企业。

(11)这是我的名片,你随时可以联系我

在面试结束时,面试官起身将求职者送到门口,并主动与求职者握手,提供给求职者名片或者自己的个人电话,希望日后多加联系。此时,求职者一定要明白,面试官已经对自己非常肯定了,这是被录用的信息,因为很少有面试官会放下身段,对一个已经没有录用可能的求职者还如此“厚爱”。很多面试官在整个面试过程中会一直塑造出一种即将录用求职者的假象。例如,“你如果来到我们公司,有可能会比较忙”等模棱两可的表述,但如果面试官亲手将名片呈交,言谈中也流露出兴奋、积极的意向和表情,一般是表明了一种接纳求职者的态度。

(12)你担任职务很多,时间安排得过来吗

对于有些职位,如销售岗位等,学校的积极分子往往更具优势,但在应聘研发类岗位时,却并不一定占优势。面试官提出此类问题,其实就是对一些在学校当“领导”的学生的一种反感,大量的社交活动很有可能占据学业时间,从而导致专业基础不牢固等。所以,针对上述问题,求职者在回答时,一定要告诉面试官,自己参与组织的“课外活动”并没有影响到自己的专业技能。

(13)面试结束后,面试官说“我们有消息会通知你的”

一般而言,面试官让求职者等通知,有多种可能性:①无录取意向;②面试官不是负责人,还需要请示领导;③公司对求职者不是特别满意,希望再多面试一些人,如果有比求职者更好的就不用求职者了,没有的话会录取;④公司需要对面试过并留下来的人进行重新选择,可能会安排二次面试。所以,当面试官说这话时,表明此时成功的可能性不大,至少这一次不能给予肯定的回复,相反如果对方热情地和求职者握手言别,再加一句“欢迎你应聘本公司”,此时一般就有录用的可能了。

(14)我们会在几天后联系你

一般而言,面试官说出这句话,表明了面试官对求职者还是很感兴趣的,尤其是当面试官仔细询问求职者所能接受的薪资情况等相关情况后,否则他们会尽快结束面谈,而不是多此一举。

(15)面试官认为该结束面试时的暗语

一般而言,求职者自我介绍之后,面试官会相应地提出各类问题,然后转向谈工作。面试官先会把工作内容和职责介绍一番,接着让求职者谈谈今后工作的打算和设想,然后双方会谈及福利待遇问题,这些都是高潮话题,谈完之后求职者就应该主动做出告辞的姿态,不要盲目拖延时间。 面试官认为该结束面试时,往往会说以下暗示的话语来提醒求职者:

1)我很感激你对我们公司这项工作的关注。

2)真难为你了,跑了这么多路,多谢了。

3)谢谢你对我们招聘工作的关心,我们一旦做出决定就会立即通知你。

4)你的情况我们已经了解。你知道,在做出最后决定之前我们还要面试几位申请人。 此时,求职者应该主动站起身来,露出微笑,和面试官握手告辞,并且谢谢他,然后有礼貌地退出面试室。适时离场还包括不要在面试官结束谈话之前表现出浮躁不安、急欲离去或另去赴约的样子,过早地想离场会使面试官认为求职者应聘没有诚意或做事情没有耐心。

(16)如果让你调到其他岗位,你愿意吗

有些企业招收岗位和人员较多,在面试中,当听到面试官说出此话时,言外之意是该岗位也许已经“人满为患”或“名花有主”了,但企业对求职者兴趣不减,还是很希望求职者能成为企业的一员。面对这种提问,求职者应该迅速做出反应,如果认为对方是个不错的企业,求职者对新的岗位又有一定的把握,也可以先进单位再选岗位;如果对方企业情况一般,新岗位又不太适合自己,最好当面回答不行。

(17)你能来实习吗

对于实习这种敏感的问题,面试官一般是不会轻易提及的,除非是确实对求职者很感兴趣,相中求职者了。当求职者遇到这种情况时,一定要清楚面试官的意图,他希望求职者能够表态,如果确实可以去实习,一定及时地在面试官面前表达出来,这无疑可以给予自己更多的机会。

(18)你什么时候能到岗

当面试官问及到岗的时间时,表明面试官已经同意给录用通知了,此时只是为了确定求职者是否能够及时到岗并开始工作。如果确有难题千万不要遮遮掩掩,含糊其辞,说清楚情况,诚实守信。 针对面试中存在的这种暗语,求职者在面试过程中,一定不要“很傻很天真”,要多留心,多推敲面试官的深意,仔细想想其中的“潜台词”,从而将面试官的那点“小伎俩”看透。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(程序员面试之技巧篇)