-->

左耳听风_093_92_程序员面试攻略面试前的准备

你好,我是陈浩,我名做耳朵耗子学习了程序员。

练级攻略以后呢,我觉得你应该来学习一下如何面试了。

在我的职业生涯里啊,我应聘过很多的公司,有小公司,有中型公司,有大型公司,国内的公司啊,国外的公司都有。

我有成功获得offer的经历,也有过不少失败的经历。

我从二零零七年做管理以来呢,面试过至少一千多人次的工程师。

这十多年来啊,我发现有些事情没什么变化,我们一代又一代的年轻人啊,在应聘时的表现和我二十年前没什么两样,连简历都没什么改进,更不要说程序员在表达能力方面的长进了。

那如果你只看面试表现的话,感觉世界就像停止了二十年一样。

那我一直在想,为什么应聘与人沟通还有赚钱等这些重要的软技能,学校里不教呢?这么重要的技能居然要你自己去学。

不得不说啊是教育上的一种失败。

另外呢,关于如何应聘的事儿,估计你也看过一些文章了。

那我这里啊只分享一些我的实实在在的经验和相关的技巧,一定和你看过的不太一样,相信一定能帮得到。

你应聘呢是需要准备的那接下来这些点啊,你需要好好的准备一下。

如果你没有准备的话,那么被pass掉的概率啊会非常的大。

那首先你要准备的是简历,简历呢很重要,这是别人了解你的第一个地方,所以简历啊要好好的写。

当然我们知道真正的好简历是要用自己的经历去写的。

比如说有人的简历呢就是一句话啊,我发明了unix,当然并不是所有的人都有这样的经历,但是呢这依然告诉我们自己的经历才是简历最大的亮点。

所以呢你要去那些能让你的简历有更多含金量的公司工作,要做那些能让你的简历更闪亮的工作。

那这个呢就是写眼历的最佳时践啊,就是用自己的经历聊,而不是用文字来写。

但是从另一方面来说呢,简历这个文本啊也是要好好写的。

况且我们不是每个人啊都会有很耀眼的经历,所以呢还是要好好写简历。

那基本上来说呢,简历上的信息不要写太多,信息太多呢相当于没有信息,不要单纯的罗列啊,要突出自己的长处和技能。

那一般来说呢,简历需要包括这么几项内容。

那第一呢就是自我简介,这个自我简介啊是用最简单的话来说明自己的情况啊不要超过两百字。

比如说十年以上的软件开发经验,四年以上的团队leader经验,擅长高可用高性能的分布式架构,多年互联网和金融行业背景任职于某公司的某职位,负责某平台或系统等等。

第二呢是个人信息。

那这里呢有几点需要注意,第一点是基本信息。

电子邮箱呢建议用gmail,千万不要用QQ邮箱,要让人感觉职业化一些。

那第二点呢是个人网站,如果你有个人主页博客github或者stack of floor,请一定要附上。

那这个呢是加分项。

那如果个人主页或者博客有独立域名啊,那更好,这会给人一种你爱动手做事儿的感觉。

那页面呢也要干净有美感,这样呢会让人感觉你有品味。

第三点呢是网站的内容。

一般来说这些下都会被面试官点开浏览。

所以里面的内容啊,你需要小心的组织和呈现啊,千万不要造假。

另外呢除了技术上的一些知识总结,你也可以秀一秀你自己的技术价值观,那这个呢会让你更容易获得面试官的好感。

面试官的好感很重要。

第四是作品展,如果你有一些作品展现会更好。

当然对于前端程序员来说呢,这是比较容易的。

而对于后端程序员来说呢,这会比较难写啊,只能展示一下自己的gay have.那如果你有一些比较不错的证书或奖项,也可以展示一下简历。

要包括的第三项,内容呢是个人技能个人信息的。

下面啊你应该罗列几条个人的技能。

那这些内容呢又能很明显的让对方了解你掌握的技术和熟悉的领域。

第一呢是技术技能战,其中要包括你擅长和会用的编程语言、编程框架,或者一些重要的库,以及熟悉的一些技术软件设计或架构。

第二呢是技术领域,包括前端算法、机器学习、分布式、底层,还有数据库等等。

第三呢是业务领域,一方面是行业领域,比如说金融、电商、电信啊等等。

另一方面呢是业务领域,比如说CRM、支付、物流,还有商品等等。

第四呢是经验和软技能,带过多少人的团队,有多少年的项目管理,经验、学习能力如何,执行力,怎么样设计过什么样的系统。

其实这个呢和用人单位发布的招聘信息里面的职位、技能需求啊很相似。

有时候呢我都在想,明明用人单位的职位需求里已经写成那样了,那为什么应聘人还不照糊涂画瓢呢?所以呢对应于你的简历,如果能和职位需求看齐,有相类似的描述,这样呢可以快速的让人觉得你和要应聘的职位很匹配。

另外呢,你的简历中啊要有工作经历和教育经历。

首先呢列一下你的工作经历。

比如说每份工作完成的主要项目,主要呢要突出项目的难度、规模、挑战,还有职责,还有获得的认可和荣誉。

然后呢,对于工作经历和教育经历啊,主要是对上面的个人技能的印证,不要东拉西扯,要紧紧的围绕你的技能特长和亮点来展开。

那一般来说呢,你简历中的内容啊最好控制在两页a四纸以内,最好呢有中英文版,简历不要是word版呢,最好呢是PDF版。

然后简历的格式和风格呢,请参考另个另一上面的简历的内容呢不要太多,内容太多呢,重点就不明显了。

写简历的目的呢是能呈现自己的特长、亮点和特点。

那只要你能呈现出两到三个亮点和特长,就可以吸引到人了。

简历呢只是一块敲门砖,一些热门的公司和项目啊,能够吸引到很多很多人的简历。

所以呢你要在众多的简历中脱颖而出。

那除了自己的精力和能力有亮点以外呢,你还需要有吸引用人单位的方法。

有很多公司呢都是HR先来删一遍简历。

Hr呢其实并不懂技术,他们只会看你的过往经历和能力是否和职位描述上的匹配。

那如果简历上的经历和技术亮点不足的话,那么你可以在简历的版式和形式的制作上花一些心思。

也可以在简历的自我描述中啊加上一些虚的东西。

比如说工人的态度积极,不分分内和分外的事,只要对公司和个人有利呢都会努力力。

你善勤奋踏实、热爱学习,喜欢做一个全栈工程师,善于发现问题并足以问题啊等等。

表示我虽然现在的经历和技能不足以问你,但是呢我的态度端正潜力巨大,你不能错过。

那一般来说啊你的简历上写什么面试官啊就会问什么。

所以呢不要打自己的脸,精通就是精悉。

熟悉呢就是熟悉,了解就是了解。

然后对于你列出来的这些技术啊,你一定要把它最基本的技术细节给掌握了。

面试官呢一般也会逐步加大问题的难度和深度。

看一看你到底在哪个层次上。

所以呢你还是需要系统的看一看书才能应对面试官的问题。

比如说你写上的java,那么java的基本语法都要了解并发编程NIOJVM等你多少要有点了解。

而spring和netty这些框架也要了解。

那如果你写上了go,那么至少要把官网上的effective go给看了。

那如果你写上了REDIIS,那么除了REDIS的数据结构,REDIS的性能优化高可用配置分布式锁什么的,你多少也要把官网上的那几篇文章读一读。

那如果你写上了面向对象,那么怎么着啊,也得把设计模式中的二十三个模式了解一下。

而如果你写上了分布式架构,那么CAP理论、微服务架构、弹力设计、spring cloud,还有clounative这些架构啊要做到心里有数。

然后呢,如果你要写上网络编程,那么TCPIP的三次握手四次挥手两端的状态变化,你得知道吧? Socket的编程的那几个系统调用,还有select铺一铺,这些异步IO多路复用的东西,你得知道。

总之啊,无论你在简历里写什么技术,那这些技术的基础知识啊,你都得学一下。

本质上来说啊,这就跟考试一样。

你想一想,你是怎么准备期末考试的,是不是得把教科书上所有章节中的关键知识点都过一下。

你不见得要记住所有的知识点,但是百分之八十以上的关键知识点你多少得知道吧?那接着呢我们来谈一谈算法题的准备。

国外的公司呢一般还会面算法题,他们用算法题来过滤到那些非计算机专业出身的人。

那国内的一些公司呢也一样,尤其是一些校招面试啊,也有很多的算法题。

所以呢算法是很重要的,是你需要努力学习和准备的那lead code呢是一个不错的地方。

如果你能完成其中百分之五十的题啊,那么你基本上就可以想面哪里就面哪里了。

那这里呢你要知道一些面试官呢也是新手,他们也是从网上找一些算法题来考你。

所以呢你不用太害怕算法题啊,都是有套路的。

比如说如果是数据排序方面的题呢,那基本上和二十分查找是有关系的那如果是在一个无序数组上的搜索或者统计啊,那基本上来说呢需要动用o一时间复杂度的哈希数据结构,在一堆无序的数据中找套PN的算法。

那基本上来说就是使用最大堆或者最小堆的数据结构。

那如果是穷举答案相关的题呢,那基本上来说啊需要使用深度优先、广度优先或者是回溯等递归的思路。

另外呢动态规划要重点准备一下。

这样的题呢很多,比如说最大和指数组买卖股票、背包问题、爬楼梯,还有改字符啊等等。

文稿中呢有一个top二十的动态规划题的列表啊,你可以看一看最后啊一些经典的数据结构算法,也就看一下,比如说二叉树、链表和数组上的经典算法,ARU算法串数、字符串、子串匹配,还有回稳啊等等。

这些常见的题呢都是经常会被考到的那基本上来说呢,算法题主要是考察应聘者是否是计算机专业出身的,对于基本的数据结构和算法有没有相应的认识?你做的多了就能感觉得到其中的套路和方法。

所以本质上来说啊,你还是要多练多做。

那最后呢我们来说一下工作项目的准备,无论什么公司的面试啊,都会让你说一个你做过的项目,或者说你过去解决过的一个难题。

但是呢我很奇怪这种必问的题,为什么很多应聘者都没有好好准备一下呢?那一般来说啊会有这么几个经典的面试问题。

第一说一个你做过的最自豪的项目,或者说最近做过的一个项目。

第二说一个你解决过的最难的技术问题,或者是最有技术含量的问题。

第三,说一个你最痛苦的项目或者最艰难的项目。

第四呢就是说一个犯过的最大的技术错误或者是引发的技术故障。

那对于这四个问题呢,第一个问题主要是想看看你过去工作中做过的最高级的事儿是什么?还有你的兴趣点和兴奋点是什么。

第二和第三个问题呢,主要是想看看你解决难题的能力,还有面对压力和困难时的心态。

而第四个问题呢,主要是想了解一下你面对错误时的态度,还要了解你是否会对错误有所总结和改进。

而这些问题呢都会伴随着对各种细节的不停追问。

因为这样的问题啊太容易造假了。

所以面试官呢会不停的追问细节就像审问一样,因为一个谎言需要用更多的谎言来掩盖。

如果没有经过高强度和专业的训练的话,最好不要撒谎。

对于业余的不是做特工或者间谍的人来说啊,谎言是经不起追问的那我们怎么准备这样的题呢?我这里啊有几个提示,首先要有框架讲故事呢,需要学会使用star,也就是situation、 task action和result.我来解释一下,situation呢就是在什么样的环境和背景下,task呢是你要干什么样的事儿。

Action是你采取了什么样的行动和努力,result是最终得到了什么样的效果。

那这个呢是整个语言组织的框架,不要冗长啰嗦。

那其次呢要有细节,没有细节的故事呢听起来就很假。

所以其中呢要有很多的细节,因为是技术方面的,所以呢一定要有很多的技术细节。

另外呢就是要有感情,讲这些故事啊,一定要带感情,要让面试官感受到你的热情、骄傲、坚韧和顽强。

一定呢要是真实的啊,只有真实的事儿才会有真实的感情。

最后呢你还要有思考,只有细节和故事还不够,还要有自己的思考和得失总结以及后续的改进。

要做到这些呢是不容易的。

一般来说啊你也是需要训练的。

首先呢你要形成及时总结的习惯,对自己的日常工作和经历做总结,否则呢难免会有书到用时方很少的感觉。

另外呢你还需要训练自己的语言组织能力。

最后呢你还要有对这些事件的思考。

那这个呢需要和其他人进行讨论和总结。

对此啊,如果你想有一个比较好的面试回答效果,这个啊不是你能临时准备出来的,功夫呢都是花在平时的。

而训练这方面的能力最好的方式呢就是在工作中写文档,在工作之余写博客,只有写的多了,写的好了,你这样的能力啊才能训练出来。

好了,我总结一下今天的内容,面试前的准备该怎么做对,面试成功与否至关重要。

在这节课中呢,我分享了自己总结的一些经验和相关的技巧。

首先呢是怎样写简历,我认为呢简历上的信息不要写太多,信息太多呢相当于没有信息,不要单纯的罗列啊,要突出自己的长处和技能,然后呢是技术知识的准备。

我强调,无论你在简历里写什么技术,那这些技术的基础知识啊,你都得学一下。

即便不能记住所有的知识点,但是百分之八十以上的关键知识点,你多少得知道一点吧。

那随后呢是算法题的准备,我这里呢推荐了例code,并给出了好几种经典算法题的解题思路。

最后呢是工作项目的准备。

我给出了几种经典的面试问题和应答思路,并分享了该如何做准备。

我认为呢想有一个比较好的面试回答,效果啊是临时准备不出来的,要将功夫花在平时。

在下节课呢我会介绍面试中的技巧,比如说答不出来的时候该怎么办,如何回答尖锐问题,如何抓住最后的提问机会啊等等,很有实践指导意,敬请期待。