程序员面试备考锦囊
Posted 程序员必修课
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员面试备考锦囊相关的知识,希望对你有一定的参考价值。
每一个面试官,每一个HR,每一个Leader,都想要这样一枚程序员:年方二十且精力充沛,名校毕业且基础扎实,有二十年以上的代码经验且视野宽广,有十年以上的工程实战且业务精湛,有五十年以上的人文思考且通情达理,有10岁孩童的好奇,有20岁青年的一往无前,有30岁成人的稳重,有40岁中年的阅历,有50岁壮年的成熟,有60岁老年的从容,且没有秃头。
然而实际面试中,大多数的应聘者都让我们很失望:可能自身技术很优秀,却不知道如何表达;可能算法都懂,但是代码写出来就会有很多破绽;可能工作经验丰富,回答问题却抓不住重点……
技术人如何成为“面霸”、收割Offer?
自身积累当然是根本中的根本,但是面试技巧同样是一门必修课。优秀的面试技巧至少可以提升30%的通过率。回答问题如何不踩雷,徒手撕代码如何完整、规范、鲁棒?我们在这里给大家准备了一份“备考锦囊”,供大家考前翻阅,临阵磨枪。欢迎收藏!(后台回复“锦囊”,下载高清大图)
以上内容大多源自《剑指Offer》,这本书推荐每个技术人面试前都至少看一遍。
我们去掉书中具体的技术考题,只归纳所有面试中通用的细节。面试前十分钟翻出来看一下,以保证自己面试过程不出现原则性错误,笔试代码让考官眼前一亮。(以下内容大约2000字,预计阅读时间:5分钟)
不要长时间呆在很嘈杂的地方;
现场面试:
规划好路线并估算出行时间,不要迟到;
准备好得体的衣服(不是非得正装,干净舒服就好);
注意面试邀请时的流程(如果一天面试好几轮,提前准备好零食饮料);
准备几个问题:每次面试后,面试官都会让应聘者问几个问题,尽量提前准备好。
自我介绍的时候,不用按照简历读,简单介绍自己学习工作经历即可。
应聘者在介绍自己项目的经验时,按照以下流程来讲述会使自己显得思路清晰、表达连贯:
简短的项目背景 → 自己完成的任务 → 为完成任务做了哪些工作&怎么做的 → 自己的贡献
项目背景:简述规模,开发的功能,目标用户等;
完成的任务:注意区分“参与”和“负责”。写了负责的话,面试官会追问框架、核心算法、团队合作等问题,如果只是简单“参与”的话这些问题很难回答上来,会让面试官认为你不诚实,扣印象分;
自己做了哪些:系统设计的介绍架构特点,开发的介绍基于什么工具在哪个平台下的哪些技术,测试的介绍手工还是自动化,白盒还是黑盒;
贡献:最好是能够用数字来说明,开发的可以说完成多少功能,优化的可以说性能提高百分比,维护的介绍修改了多少bug。
应聘者描述自己掌握的技能时,注意区分一下尺度,过度夸大会让面试官扣掉印象分。
“了解”:看过书、上过课、但是没有做过实际项目;
“熟悉”:实际项目中使用了较长时间,查阅文档可独立解决大部分问题,对于应届生的毕业设计所用的技能可以称为“熟悉”了。社招的话,开发过程中用到的技能可称为熟悉;
“精通”:开发过程中同事可以来向我请教这个领域的问题并且有能力解决才可称为精通。
当提及为什么跳槽的时候,千万不要抱怨,不要流露负面情绪。避免例如下面这四种原因:
老板太苛刻
同事太难处
加班太频繁
工资发太少
如果自己不太能回答上来的话,可以参见导图中的几种常见套路。
到了技术面的环节,千万思考清楚了再开始编码,不要一听到题目就开始敲代码!思路不清晰写出的代码通常有错误,而这些错误被面试官发现,应聘者容易慌张,这样越改越乱。
最好的策略是:
通过举例分析、画图等方法,向考官弄清题目要求以及边界条件等;
介绍自己的算法思路,算法的时间、空间复杂度,介绍有哪些特殊情况需要处理;
和面试官多多交流、看看时间、空间复杂度是否还有优化的余地。
以上这些都没有问题了以后,再动手写代码。
写代码的时候要先写单元测试用例,再写解决问题的函数,可以证明自己有专业的开发经验。
代码中会有错误、会遇到问题,熟练的设置断点、单步跟踪、查看内存、分析调用栈,发现问题根源并解决,可以展现扎实的基本功。
按照以上步骤完成手撕代码,会很容易获得Offer。
以下五个要点是程序员的根本实力所在,需要大家平时要多多积累,并非一蹴而就:
扎实的基础:链表、树、栈、队列、哈希表等结构,各种算法,都要熟练;
高质量代码:边界条件、特殊输入细枝末节但是实际上至关重要。 详见代码常见细节详查表;
清晰的思路:谈吐清晰,说话分1、2、3,描述算法以及思路可以画图或者做类比等辅助分析&表述;
优化效率的能力:例如斐波那契数列,很多人喜欢用递归进行。但是这种方法时间复杂度是O(2^n),如果用循环来实现的话,时间复杂度就会讲到O(n),再如有序数组记得二分法查找,需要遍历的时候考虑是否可以用HashMap优化等等;
优秀的综合能力:性格高傲的、没有团队合作意识的、语气恶劣的面试者,没有人会喜欢。考官经常会问最近看什么书,从中学到了哪些新技术,以此来考察应聘者的学习欲望和学习能力。也会出一些新概念问题,比如求第1500个丑数。主要是看应聘者面对新概念的时候提问、思考、再提问的能力。所以日常积累和思考是非常重要的。
考官面试完,经常会问应聘者有没有什么想要问的,而经历了这么久的面试,很多人大脑一片空白,想不出什么问题了。所以建议大家面试前就把相关问题准备好。注意,不要问一些没有意义的问题,比如公司的五年发展战略之类的,除非你是应聘CEO。另外不要问考官薪水,薪水的问题去和HR谈。也不要立即打听面试结果,会让面试官觉得没有自我评估能力。
推荐问一些积极的问题,比如:
新员工如何培训?
岗位的发展空间和晋升路线是什么?
如果我通过了面试,在我来公司之前的这段时间,应该看些什么书来提升我的能力让我更适合这个岗位?
如果沟通表达能力出众,也可以反攻面试官:您对这个岗位的期望是怎样的?这个时候面试官会罗列一些内容,如果你发现有哪些点是刚刚面试中忘记讲的,这个时候就可以进行补救。
以上所述,说到底还是技巧,技巧不能取代实力,但是可以帮助大家更好地表现出自己真正的实力,而不至在面试环节失利。
金三银四招聘旺季,正是大家找工作的黄金季节。最近有面试计划的朋友可以收藏一下这篇文章,面试前翻出来查缺补漏。如果大家觉得这篇文章有用,也欢迎转给身边正在找工作的朋友。
在这里祝每一个找工作的小伙伴都能找到称心如意的公司与职位,也希望每个公司都能招到合适自己的人才!
历史文章推荐:
以上是关于程序员面试备考锦囊的主要内容,如果未能解决你的问题,请参考以下文章