编辑 | JZ
专栏 | 九章算法
很多人一到求职面试季会不知所措,不知道要怎么做才能获得心仪的offer。
今天,通过《程序员面试指南》来告诉你:程序员要如何准备面试?
1.简历书写
简历书写的原则是:
- 单页原则
- 使用PDF格式
- 将简历命名为:名字_学校_职位_简历
- 两栏式的格式布局,左边的部分是时间,右边的部分是经历。然后纵向按照教育经历、经验之类的罗列开。注意对齐。
- 实习经历>项目经历>获奖情况
- 写经历的时候必须按照时间的倒序进行排列。一般来说刚毕业的把学校排最前,已经工作的把工作经历排在最前。
- 重点展现技术相关内容,无关内容删掉
- 写到简历上的项目要非常熟悉,并且写明你做了什么?怎么做的?你的贡献是什么?
- 谨慎使用“精通”、“掌握”这些词
程序员简历模板可以关注“九章算法”微信公众号,后台回复“简历”获取。
2.Coding - 算法与数据结构
如果你做过各大IT公司面试真题,你会发现:在程序员技术面试中70%以上的题目都与算法和数据结构有关,面试中经常会考到下列知识点:
算法部分
二分搜索 Binary Search
分治 Divide Conquer
宽度优先搜索 Breadth First Search
深度优先搜索 Depth First Search
回溯法 Backtracking
双指针 Two Pointers
动态规划 Dynamic Programming
扫描线 Scan-line algorithm
快排 Quick Sort
数据结构部分
栈 Stack
队列 Queue
链表 Linked List
数组 Array
哈希表 Hash Table
二叉树 Binary Tree
堆 Heap
并查集 Union Find
字典树 Trie
以上这些知识点看起来很简单,但是当你真正开始学习的时候,你就会发现每个知识点中包含着很多复杂的内容。
如果你想在在面试前快速高效地学习算法和数据结构,刷题将成为你的不二选择。
你需要做的是把 Lintcode 上至少70%的题目刷两遍,对比着 Lintcode参考答案查询 上的最优解,总结经验,做到60%的题目bug free。面试前两周需要有针对性地刷题,把 Lintcode阶梯训练 上的精选题目刷一遍,尤其是要刷 IT企业技术面试仿真模拟试题 ,从中摸索出IT企业的面试套路。
3. 系统设计面试
3.1.什么情况下,会遇到系统设计面试呢?
1. new grads 的项目经验和系统设计经验面试,占整个面试评估的比例约为大概是10-30%,可能是项目问题/算法问题的follow up,最经常出现在加面环节。有的公司会考核系统设计,有的公司则不会,需要根据具体公司的面经来定。Amazon、Uber的new grads面试会面到系统设计,Facebook、Google的new grads面试考到系统设计的概率不是很高,主要是算法为主。建议new grads在算法准备已经比较充分、或者时间比较宽裕的情况下,着手进行系统设计知识的补充,可展示自己在工业实践上的知识积累,为面试加分。
2. Experienced 求职者,基本上80%以上的概率会遇到系统设计面试。建议Experienced 求职者 一定要准备系统设计面试内容。
3.2.推荐一些系统设计的经典文章:
《系统设计面些啥?Palantir 面官教你如何准备系统设计面试》
《Facebook HR 内部邮件, System Design 面试内容揭秘》
4.了解公司和行业动向
3.1.了解公司
包括以下几个方面:
- 企业文化。你需要看这个公司的氛围是不是适合你的发展。
- 薪资待遇。这是最最实际的部分,可能也是应届生选择工作时考虑最多的部分,不要仅仅局限在薪资上,可以看看公司整个福利体系,比如保险、假期、股票等等。
- 晋升机制。公司是否重视人才?是否重视对人才的发展和培养?是否容易晋升?...你需要选择的是一个可以给你上升空间的公司,会对你的成绩和努力给予肯定的公司,只有这样才能有不断向前的动力。
- 工作环境。一个好的工作环境对于员工来说绝对是一种福利。公司加不加班?公司的办公室怎么样?公司的食堂怎么样?公司的同事怎么样?
你可以关注“九章算法”微信公众号,后台回复“企业文化”、“薪资”、“晋升”、“干货”等关键词提取难相关企业介绍文章。
3.2.了解行业动向
包括以下几个方面:
- 行业最新新闻。尤其是与你面试的岗位和公司相关的新闻,一定要了解一下。
- 行业最新技术。可以适当关注一下行业的最新技术,对于一些感兴趣的技术可以深入研究一下。
- 行业最新趋势。最近哪个比较火?哪个之后可能会火?哪个已经过时了?...请带着自己的思考去关注这些内容
5.面试沟通
5.1.充满热情
态度决定一切。HR通常认为,热情的员工会在工作中体会到快乐,从而更加努力的工作,所以公司往往希望聘用那些对公司充满热情、与公司有共同使命感的面试者。
- 如果你是一个内向的人,可以参考文章:内向的人在面试时如何表现自己?
- 如果你是一个外向的人,那就表达出你的热情,去感染面试官
5.2.事先准备好一些回答
很多问题的回答是可以实现准备好的。
- 技术类问题:在面试前搜集公司的面经,了解这家公司常考的面试题,整理成一个表格,概念型的题目可以背下来,应用型的题目可以自己动手操作一遍。
- 非技术类问题:像是behavior question、薪资博弈、企业文化等,都可以在《硅谷精英工程师面试指导大全》中找到解答,对于这些解答你需要烂熟于心,避过那些坑、为面试加分。
5.3.多加练习
熟能生巧,当你把面试过程练习过一遍、甚至好几遍的时候,你会发现,当你遇到类似的问题的时候,可以很快地形成思路、获得解答,大大提高了面试的通过率。最好的方式是与家人或者朋友进行角色扮演,模拟面试的全过程,并且用视频记录下来,以便稍后回顾。通过这种方式,可以帮你改正一些不良习惯,同时可以加深对面试过程的理解。
6.仪容仪表
6.1.服装
程序员的面试着装并没有具体的规定,你应聘的公司和职位决定了你需要怎么穿。建议在前往面试之前先打听下你面试公司一般的着装,然后根据其具体的着装进行调整,尽量做到符合公司气质且干净整洁。可以先用熨斗进行平整,显得更加有精神。
6.2.个人卫生
面试的时候一定要注意个人卫生。面试前需要精心洗漱一番,打理好发型、整理好衣服,最好可以喷一点除臭剂,避免因为出汗等原因发出一些让人不喜的气味。千万不要在面试前吃带气味的食物,可以在面试前嚼一粒口香糖。
6.3.仪容仪表
面试之前,需要花点时间来梳理自己。对于女性来说,需要给自己化个妆、给头发做个造型、适当佩戴一些饰品;对于男性来说,需要修理头发和胡须。另外,还需要修剪你的指甲,检查你的牙齿,不要忽视面试前的细节,每一点都可能会影响你的整体形象。
6.4.行为举止
- 握手:握手时两人之间保持一步的距离,双足立正,上身微微前倾,伸右手,四指并齐,稍加力度微微抖动三至四次,眼睛需要与对方对视。
- 眼神交流:当你与面试官交流时,需要看着对方,每过5秒钟,可以转移一下视线或者点一下头,适当的说:“是的”,“对”,“恩”等等。这样面试官就会感到你对他的尊重,会给面试官留下好的印象。
- 微笑:面试中需要保持微笑,微笑体现出你的礼貌,也能够向面试官传达出你对他讲的内容很有兴趣的信息。
- 姿势:俗话说“站有站姿,坐有坐姿”,在面试的时候也要以此作为要求,姿势要自然、不做作,但是不可以随意,站的时候不要哈腰,坐的时候不要抖腿,坚持用良好的姿势完成面试的整个过程。
6.5.拒绝非主流
纹身、穿孔、非主流的头型等可以产生负面的印象。为了安全起见,尝试覆盖或避免在面试中将这些非主流的东西展示出来。
7.结束面试
面试结束之后,总结并且记录被问到的问题,以便下一次电话面试或者现场面试的练习。同时还要分析自己的回答,发现自己在面试中暴露出来的短板,有助于下次改进。
最后,不要忘记给面试官发一条短信或者邮件表达自己的感谢之情、对工作的热爱之情,并重申自己能够胜任工作。感谢信怎么写可以参考:面试完后,感谢信该怎么写?
8.写在最后
通过面试有一定的技巧可以借鉴,但是作为一名程序员,专业技能知识永远是放在第一位的,切不可本末倒置。
最后祝大家都能顺利通过面试,获得心仪的工作。
欢迎关注我的微信公众号:九章算法(ninechapter)。
精英程序员交流社区,定期发布面试题、面试技巧、求职信息等。