每个人都会经历面试,作为一名程序员面试的次数可能还不会太少。这个行业迅猛的发展着,人员的流动性也非常的大。面试对于每一个人来说都是一个机会,一次选择,很多时候会在不经意中————改变一个人的一生。
虽然我们是程序员,做的工作很多时候是专业的、技术性很强的,但是面试除了涉及这些问题外也还是会涉及到其他的内容。大多数时候,面试其实是一个综合性的考察,用人单位希望了解的不光光是一个程序员的技术能力,特别是关键岗位。
面试相关的问题很多,每一个问题背后都是用人单位希望了解面试者特定方面信息的一个沟通基础,同时也是面试者了解用人单位关注点及展示自我的一个好机会。我们就来简单的聊一聊,面试过程中会遇到的各类问题,尽量的能透过这些问题看到一些本质。
面试前
面试前,最重要的事情就是职位的选择。这实际上是一个最重要的选择,绝大多数时候她会把你的未来带到不同的职业旅程中。
这个选择很难做,因为和你的兴趣有很大的关系,和你的能力也有很大的关系,除了这两点最重要的因素以外还和你的年龄、家庭、履历等等都有一定的关联。
这个权衡的过程有时候比较痛苦,我说说我的建议吧。只要你还年轻,或者你认为你还年轻,我建议你还是保持你的梦想,坚持做你感兴趣的工作,不要为五斗米折腰。职位的选择一定要和你的兴趣有极大的关联性,是你未来实现梦想所需要的能力拼图中的一块。
一定要放平心态,面试是双向选择,一定要慎重。每个人的条件不同,选择机会也不一样,但是是否有利于提高自身的能力一定应该是你的第一选择,无论是什么是时候,这都应该是你的核心标准。公司无论大小,无论是否知名,一定要有很好的学习成长环境,这个应该是最重要的。
程序员的衣着,应该是随意而又整洁即可;言谈,应该率真但又不失严谨。第一印象有时很重要!
总要问的问题
- 简单介绍一下你自己吧?
我的简历难到写的不够清楚吗?应该是清楚的,但那是书面沟通。面对面的沟通能够考察的东西更多,所以这个问题的本质是要看你的语言沟通能力、演说能力更重要的是你对自己的认识。如果你对自己认识的足够清楚,你的语言沟通能力和演说能力比较好,那似乎能说明你将来去做需求分析的潜力不错,产品介绍和解决方案可能也能写得了,你的言谈举止可以让人了解到是否有做项目经理的潜力等等。看吧,把自己介绍好很重要,不一定非得是大牛,但是起码能把自己喜欢什么、擅长什么、可以胜任什么、甚至目前主要的不足是什么,说明的清清楚楚。
- 为什么离职?
为什么要离职,这是个很重要的问题。如果是因为团队里不开心,那是为什么不开心,什么样的团队才会开心?如果是失职,那是因为什么原因造成的,造成了什么样的后果,做了什么补救措施?如果是因为兴趣,那现在音频的这个工作是否真有兴趣?什么事情会导致你主动离职?多问自己几个问题,如果是被动离职,最关键的是多找找自身的问题,一定不要让负面的情绪影响你,切忌说其他公司的坏话,当然这不仅是面试的时候应该有的修养。
- 加班有问题吗?
这其实是个态度问题,很多公司需要加班,但也有些公司不需要加班。之所以问这个问题,是希望了解你对这个问题的看法,这是一个效率和工作量都涉及的问题,有些人效率高,有些人效率低,有时可能完全不需要加班,但有时必须要加班,要辩证的看问题。你是否能和公司共进退,这是这个问题的本质,而且完全不加班的公司在中国似乎有问题。
- 出差可以吗?
和上面加班的问题相似,但是对于每个人来说,情况可能不同。但是有些岗位是必须要出差的,这个你在投递简历的时候就要看清楚了。
- 到岗位时间?
这是一个看似普通的问题,但是和用人单位的急迫程度有很大关系,所以必须了解用人单位的要求,然后再结合自己的目前情况,找到双方都合适的时间点。如果是急招的岗位,你去以前就要同时考虑清楚是否可以加班、出差这些问题。
- 薪水要求?
这也是一个必然要问的问题,每个公司的薪酬体系都是有迹可寻的,即使是再小的公司。无论是那类的公司,都会有一个幅度,所以如果你可以了解到市场上的大概行情是最好的,否则你只能在目前的自己的能力基础上,做一个基本的判断,但是应该有一个底线。如果是初次工作,似乎应该更关注是否有更好的学习锻炼机会,这个别太纠缠。
工作经验相关
除非是刚进入社会,否则面试时或多或少都会提到工作经验。特别是有些企业非常喜欢大牌企业出来的人,刚毕业的则是喜欢211,985学校出来的。有这些经历固然好,没有的话只能赖之前没有努力,不过人生真不是完全由这些来决定的,学习一直都是成功者的一种终身能力,只要保持斗志和不断地学习,失去的时日都是能追回来的。
- 有过几年的相关经验?
小白最头痛的问题,其实没什么,没经验很正常。不过如果是刚开始进入职场,面试你的人应该会更关注你现在能做什么,你打算怎么开始。没有工作经验,不代表没有技能,没有想法,但是如果你想做程序员又重来没写过程序,我想很少有公司会要你,建议你还是先业余学着写一段时间再说。小白们其实最好的方式是自己做一个博客,用这个来展示自己是最好的一种方式,现在的开源博客很多,免费的空间和域名也不少,技能介绍自己,也能发表一些文章记录自己的学习过程,还能让用人单位看到你的一些和开发相关的内容,不过记得增加技术含量和增加实际的内容,不一定酷炫,但是一定别太糙了。
对于有经验的人,要介绍清楚项目或者产品的规模,自己负责的内容。另外一定要把自己在那些地方得到了锻炼和提高讲明白,这些亮点要能代表你目前的水平和实力,最好也应该是要有感恩的人和事。
- 做过什么项目或者产品?
如果几年相关经验里你没有特别说明什么产品或是项目,那这个问题可能还是会追问,因为这涉及到你之前的工作范围、工作界面以及你对这些问题的表述和看法。可以了解你参与项目的深度和你的投入情况,了解你能在项目或者产品的工作中对于当前工作状况能掌握到了什么程度,能完成到什么程度的一个简单评估。
- 有什么职业规划?
把这个问题放到职业规划里来,是因为如果你有工作经验的话,能够和你的职业规划进行匹配,看看你自己的执行情况,了解你现在是否是一个有中长远计划的人,然后对你的未来和公司的匹配情况做一个初步的判断。
技术相关
对程序员来说这是最重要的、最重要的、最重要的。俗话说,一俊遮百丑。对于程序员来说,只要你的技术能力强,很多其他的因素都可以忽略不计,只要你的人品没问题就可以。这些都是硬条件,平时是什么样基本就什么样,没什么可讲的。但是可以适当的刷刷题,但是真实水平是最重要的,否则最终也会被淘汰。
基础知识很重要,比如基本算法、面向对象、网络编程、版本控制等等。如果这些内容都不了解,在编程的路上能走多远,真是个问题。罗列一些必须搞清楚的问题:
- 面向对象的相关问题。
- 闭包相关的问题。
- 网络编程相关的问题如socket、http、SSH的概念和用处。
- 操作系统,主要是之前涉及到那些操作系统,熟悉程度。如unix、linux、ios。
- 你是怎么理解MVC、MVVC。
- 进程线程的概念。
- git的使用。
- 测试平时怎么做。
- 文件处理。
- 图形处理。
- 你了解的排序算法。
- ……
- 目前的编程能力,实力的体现,不同的岗位差异很大,有很强的针对性的。
- 你最喜欢的编程语言,用它干过啥。你熟悉几种编程语言?
- 熟悉那些框架?例如python的Django、flask;js的话jQuery、angularjs、react;java的ssh;大数据的话spark、hadoop等等。
- 熟悉那些数据库?Mysql、Oracle还是Nosql?熟悉到什么程度?可编程还是只是放放数据。
- 了解中间件吗?weblogic、WebSphere或者ZeroMQ之类。
- 规定时间内,明确而具体的一个编程任务。
- 用什么编程工具?
- ……
- 学习能力
- 新学习一门语言需要多久啊?
- 可能会被连续追问一个问题,以了解你的思维方式和学习深度。
- 可能会给你一个小时,给你一个本书,然后问你一些问题。
- 可能会给你一些智商测试题,来考察考察。
- 平时怎么学习?学习的时间、学习的方式、是否经常总结?
- ……
生活兴趣相关
- 有啥业余爱好?
这个问题是了解你兴趣的一个通道,同时还是侧面了解你的精神状态的一个渠道,例如你的激情、团队精神。不是说了吗,你如果不喜欢摇滚就算了吧。
- 你住哪儿?怎么住?
了解你的生活状态的问题,可以看到你对生活的基本要求,当然也可以知道你平时上班需要的时间等一些细微的东西。
思想意识相关
- 遇到困难怎么办?
每个人在工作的过程中都会遇到困难,如何面对困难是衡量一个人意志品质的一个关键点。所以面对困难的想法和执行力是很重要的。对于程序员来说,读书学习、问同事包括上司、参加外部培训等等,然后不断的试错,想尽一切办法去解决困难,是必须有的思路,这应该是你的答案。
- 和公司利益发生冲突怎么办?
这个问题是一个每天都在发生的问题,小到中午吃饭的休闲时光如何度过,大到项目或者产品的关键时刻却要离职,再大一些如有些职权的、到有期权和股权。每个人都需要衡量个人的利益与公司的利益,但是只要你希望进入这家公司,你的回答永远应该是以公司的利益为重,当她是你自己的公司,个人的利益可以通过正规的渠道去反馈。当然这并不妨碍你与你的上司和其他同事搞好私人关系,比如过时过节走访走访,经常聚聚等等,虽然面试不应该说这些,但是你应该想明白。
- 和上司发生冲突怎么办?
和上司发生冲突不是经常发生的,但是也是偶尔发生的事情,每个人可能都会遇到。但是这个时候一定要保持冷静,反问自己冲突的原因是什么,是因为公司的利益受损了,还是你个人的利益受损了,还是你碰了上司的蛋糕。如果是公司的利益受损了,你应该明确的指出来,当然前提是你有证据,也要注意方式。如果是你个人的利益受损了,单独的谈话是一种良好的沟通手段,如果胳膊拧不过大腿,又不涉及到品行问题,也许你应该考虑离开了。这应该是你的思考,面试的时候,根据冲突的原因,私下沟通提醒、坚决维护公司利益、尽量避免公开冲突应该是你的原则。
- 过不了试用期怎么办?
试用期过不了,如果你喜欢这家公司和这个岗位。那自然是坚决的去再努力,这里不给机会就换地方继续努力,这里如果还能够给机会,那就再延长试用期。真正进入试用期时,其实是双向选择,也许你根本不喜欢这家公司、或者换了公司也不能改变你不喜欢这个岗位的想法、或者你真努力了也还是搞不定应该去做的事情,那你真应该考虑一下是否要去做这个工作。但是只要你确实努力了,而且有一定进步,我想人人都愿意给你机会。