一、开门见山
一般来说,你(求职者)在面试中会花很多时间谈论以前的经历。如果你还没有想出你的最具代表性的经历/案例,那么你现在是时候该做了。下面有张问题 表,虽然很多问题看似比较低级,但相信我,看完这些问题后,你应当反思自己。即便面试时没有碰到类似这张列表上的问题,你在面试也可以用上已准备好的答 案。
1. 说说你自己吧
2. 你的短期目标是什么?你2到5年内的目标是什么?
3. 你的愿景/使命是什么?
4. 你想从这个岗位中学到什么?
5. 你为什么认为自己能胜任这个岗位?
6. 除了这个岗位,你还在找哪些岗位?
7. 你有什么样的管理或领导经验?
8. 你有什么样的团队工作经验?
9. 你最满意/不满意的经历是什么?
10. 你的强项/弱项是什么?
11. 你最擅长处理哪一类的问题?
12. 你是如何减压?如何平衡工作和生活?
13. 如果他人提出的要求有违你的道德准则或商业道德,你怎么处理?
14. 你上次试图向他人出售点子有什么样的结果?
15. 你为什么要应聘我们公司?你对我们公司了解多少?
16. 你认为加入我们公司有什么样的利弊?
17. 你最看重雇主的哪一方面?
18. 你过去遇到的主管有哪些共同点?
19. 如果要在竞争中保持领先,你认为我们公司的员工最需要哪些品质?
20. 你最喜欢/不喜欢什么课程?为什么?
21. 你的兼职/暑假/实习经历中有什么收获?
22. 你有什么样的深造计划?
23. 为什么你的成绩这么低?
24. 你是如何打发空余时间的?
25. 如果我让你的朋友们描述你,你觉得他们会怎么说呢?
26. 什么事最让你沮丧?
27. 你上次在工作中遇到恼火的事是什么时候?结果如何?
28. 你如何提高你的整体效益?
29. 去年你遇到最艰难的决定是什么?为什么它很艰难?
30. 你为什么到现在还没有找到工作?
31. 你在哪些方面没有任何经验?比如:销售、筹款或者簿记。
32. 我们为什么要雇用你?
上面这个列表中的问题需要深思和反省才能回答,所以在下一次面试之前很有必要提前想一想。有些问题可以有相同的答案。如果问题答案需要讲述一段故事/经历,你可以按如下方式来做:
1. 20秒描述情况。“代码出问题了,整个团队必须找出原因。”
2. 30秒描述你做了什么。“我认为是内存溢出,我注意到AbstractMemberCreationFactory本应该只有一个实例,但它有很多实例”。
3. 20秒描述结果。“我用一行代码解决溢出问题,我们的产品如期上线。后来,我都会先测试确保不会再有类似问题”。
在每次面试前,浏览整个列表并大声练习你的回答。这样做让你在面试中更加轻松自如,你就比其他应聘者有更多的优势。比如,当在回答问题时,其他应聘者可能会先看着天花板说“嗯”,然后开始回忆过去5年中发生的一切。而你则可以微笑地看着面试官的眼睛,再陈述你的答案。
二、事先练习最常用的编程算法,以建立自信
钢琴家在达到下一级水平之前,他们必须先学习一套短曲。这些短曲虽然不曾在聚会上弹奏,但他们要练习特定的部分,比如右手小指和切分音。同理,尽管有些算法你或许没有在你的代码中用过,但它们经常在编程面试中出现。比如:
1. 反转单链表;
2. 反转字符串或反转段落中的单词顺序;
3. 利用星号输出画一个任意大小的圆;
4. 整数转换为字符串,数字型的字符串转换为整数;
5. 写一个函数,返回任意整数对应二进制形式中的“1”的个数;
6. 写一个函数,输出字符串中字符的所有排序。(比如:abc acb bac bca cab cba)
一般来说,可以先不考虑算法的运行时间,都是先用最简单有效算法。然后再尽量减少运行时间。能让算法正常跑起来,总比你花大量时间想一步到位要好。(一步到位的想法虽好,但大部分时候都是事倍功半。)
提示:做练习时,别自欺欺人看答案。
我第一次写“反转单链表”算法是利用课间时间。我并不急,从运行时间较长的方案到优化的方案,我用了半个小时。在验证算法正确无误后,我非常高兴!我知道不看答案我也能解决问题了。(建立自信了!)在面试中,当遇到从未见过的问题时,我以前的经验给了我信心。
三、练习解决问题能力
有些应聘者认为能解决脑筋急转弯问题就有良好的编程技能。如果你也这么认为,那你应当培养猜谜这方面的兴趣和技巧。你可以去图书馆或在网上找这方面的书。然后,挑一些有趣的问题,先别看解答。如果半个小时之内还想不出答案的,才可以查阅解答。
第四、展现出真正的热情
另一个技巧就是要把真正的热情展现出来。作为人,我们应该真诚和热情与他人共处工作。另一方面,我们也要有看穿虚假笑脸的能力(没有这种能力,也需要锻炼出来),所以活出真我很重要。
最优秀的面试官会让你讨论一些你非常热衷的事情,即使有些些事和你所应聘的岗位没有直接关系。然而,大多数面试官却没有这么做。虽然如此,你还是应当 好好考虑那些你非常感兴趣的事,并且要抓住机会来和面试官讨论一番。如果面试官允许的话,一定要在面试过程中的前段时间内完成,如果能在第一时间展现出来 更佳。面试开始10分钟后的效果可能就不怎么样了,因为面试官已经给你打分了。
想象一下:你第一天去新岗位工作,转向新的开发平台,遇到一些有趣的新朋友,并且了解了公司的生活。(总之)在公司中会有很多让你兴奋的事,要不然,你为什么去应聘呢?
五、睡眠/休息
如果你缺觉的话,“舌尖现象”则会急剧上升,导致你在面试中就不能很好回忆事情。所以,面试前必须有个良好的睡眠。
第一:德行
对于一个程序员候选人来说的话,如何评判一个候选人的德行呢?
眼神
注意观察候选人眼神是否飘忽不定,是否总是不敢直视你的眼睛,或者回答问题的时候总是往左右两边瞟。一般来说,眼神是一个人性格的直观表现之一。
身体语言
如果候选人坐姿规矩,谈话间体态得体,自然,不紧张,不做作,那么该候选人应该比较有家教,个人习惯很好,性格比较稳定。
沟通
在跟候选人对话时,注意对方的语气语调。如果候选人语速平缓,吐字铿锵,说明此人准备比较充分,不急躁。当遇到一些一时回答不上的问题时,能够保持冷静,集中精神思考,如果实在不会,没有打算糊弄过关或者顾左右而言他,而是直接答复不知道,那么就说明该面试人性格比较沉稳,而且比较诚实,不滑头。甚至你可以故意说错一些细节,看看对方以何种方法给予纠正或者不纠正。
细节
最常见的就是对方电话来了,看对方的反应,一般来说候选人会选择直接挂掉,或者任由电话震动。如果对方当着你的面,直接接起了电话,说明对方在为人处事方面肯能有些欠缺,起码不是很懂礼貌,或者根本不大重视这场面试。另外,一般来说前台会给面试者打一杯水,等到面试结束,或者有需要中途更换面试场所(例如换会议室等等),如果对方随手拿起水杯而不是留在原地,说明该候选人素质比较高的,而且心应该比较细。
第二:技术
技术排第二不是说技术不重要,作为一个程序员岗位,技术当然是非常重要的。
过往经验
可以让候选人介绍最近一个项目,并且描述自己的工作内容。首先看看候选人是否能够说得清楚这个项目,了解了项目之后,可以通过候选人负责的内容进行深入技术提问,但是注意要由浅入深,不要一上来就问一些很难很深的问题。一般来说如果候选人没有撒谎,那么应该来说还是可以回答一些不太难的问题的。
基础知识
基础知识一定要考察候选人的基础知识。很多候选人在说起自己做过的项目的时候眉飞色舞,一套一套的,甚至满嘴都挂着一些热门的词汇,比如大数据,高并发,云计算,等等。但是一问基础知识就傻眼,最简单的值类型引用类型都不知道有什么本质区别。很多候选人都会辩称,自己会编程,能够实现业务逻辑,为什么还要去背那些概念性的东西,殊不知,那些他们认为没有的概念性的东西,正是我们构筑大厦的根基所在。 分类考察在面试候选人的时候,最好是分类进行考察,每个类别准备5个问题左右,并且由浅入深。一般招程序员还是以实际应用为主,而且.net里面已经封装了很多算法,知道如何使用即可,对于原理性(注意,是原理,不是基础)的东西,如果自己能花时间去了解去掌握更好,如果不太了解,但是能够熟练应用封装好的东西就行。