给扔物线 HenCoder Plus 学员的一次分享文字版
半个月前,和我的终极技术目标扔物线朱凯一拍即合,到了他所开展的 HenCoder Plus 课程给大家分享了 1 个多小时的「模拟面试」心得,也顺便听了几次凯哥的课程,感觉真的挺用心的。自己也希望能一直不忘初心,在技术领域像凯哥一样,认真并且锲而不舍。准备了许久,主要是为了做这一次分享。
自己下来其实看了好几遍自己的录屏,觉得还是有必要做一篇文字版的分享给大家,还要有一位童鞋能够从中得到收获,那也是不枉费我手打了接近 3 万字的分享。很多思想都受着去年 Android 巴士成都交流会另外一位讲师 Even 的影响,所以说,你的圈子,真的会潜移默化地影响你。
下面是正文:
我先自我介绍一下,我叫刘世麟,在网上呢,我的名字是南尘或者说,是南尘2251。
在找工作之前,我们总会经历写简历,准备面试知识,再到面试的过程。但我们总会发现,即使我们准备许久,感觉自我良好。但在面试的时候,却总感觉使出浑身解数也无济于事。实际上,我们的面试是需要实战的,我们刷再多的题,不实战也是无济于事。然而,我们通常面试一次,算上花在路上的时间,我们至少得要好几个小时。最重要的是,这个时间还基本都是花在了工作日上。
此外,我们即使花上几个小时,面完之后却会发现,我们能得到的有价值的东西却需要深挖细掘才能形成精华。我们很难得到面试官对自己真正的反馈,大多数情况下被拒绝的时候面试官给的原因都极其委婉。
为了解决这样尴尬的窘境,我在去年11月在公众号上推出了「模拟面试」这项活动。用工作之余的时间帮助那些真正渴望希望面试却又不希望浪费工作时间的读者。
在为期 4 个多月的活动中,我面试了 118 位读者,其中包括小米、硅谷、美团的一些在职员工。在活动中,我与他们共同成长,一起进步,从自我介绍,到面试过程,再到面试反馈。读者从我这里得到了有价值的评价,我从读者那里得到了非常有价值的数据反馈。
我只是抱着一种尝试的态度,希望小范围进行,但没想到有这种情况的读者极多,我采取的排队机制已经完全不能让读者得到及时反馈了,加上我自己的时间分配问题,我很快就停止了这项活动。
虽然做的时间不长,但却非常有意义,所以,今天,我和凯哥一拍即合,来到了这里,给大家做一下分享。我并不是什么面霸,也不是什么大佬,仅仅是凯哥的迷弟而已。
周三呢,我跟着大家一起听了课,我发现听课的同学不少我认识的哈,还有在我这里进行过模拟面试的人,不得不说呀,做 Android 的人很多,但圈子里面上进的人,转来转去还是这些人。
下面,我给大家简单地分享一下我做这个活动后的一些心得。在分享之前呢,我想先送大家一句话:你能否通过面试往往不是靠技术,但你能否拿高工资绝对是靠技术。我们的求职面试,决定因素确实不是只靠技术,你的简历、面试表现,通通都会影响着你的评级。
几个月的「模拟面试」下来,我发现大家的问题五花八门,总结下来就是这四个问题:
- 不知道怎么写简历
- 不知道怎么做自我介绍
- 不清楚自己的定位(优势)
- 不知道怎么准备面试
我先说一下简历呀。虽然我只面了 118 位读者,但收到的简历却远不止这点,对于明显抱着来尝试浪费其他人时间的,我从来都是直接打回去的。但我面试的人中,简历写的足够让我满意的人,也是凤毛麟角。大多数人的简历都是写的非常的乱,连基本的排版整洁都谈不上。
简历的本质
我经常会收到来自读者的同一个问题,「南尘呀,你能不能给我一个好的简历的模板?」
这个问题让我十分为难,如果我说「其实不存在好与不好的模板,主要看气质」。你可能会很失望,觉得我可能在浪费你的时间。如果我说有,并且挑了一份我认为还不错的模板给你,可能你也会很失望,会怀疑,好的简历模板是这个样子的吗?
这就好比凯哥在上海开发者大会上讲的一样,「图片上传怎么做,你服务器怎么给你要求的你就怎么上传呀」。
实际上我们并没有逗你,要得到一个「好」的简历模板,其实并不困难,而且根本就不需要向别人要。你只需要问一下自己,什么是「好」,并把「好」这个很缥缈的词量化出来,你的简历就是好简历。
不过,在你量化「好」这个词之前,我们需要先解决一个问题:「简历的本质是什么?」
可能每个人的理解并不一定相同,不过这并不是很重要。如果你有不同于我的思考,那也不代表你和我之间有一个人是错的,我们暂时可以这么认为:绚丽或者简约的模板其实都不是简历的本质。
简历的本质只有一个:向别人说明清楚你是谁,你擅长做什么。
你可能会发现,其实这两个问题都是同一个问题:你的定位是怎样的?
问题 1:「你是谁」?
可能你觉得自己很清楚了,你是张三,你是李四。但如果让你用三个词,可以是名动、形容词、动词或者成语都可以,只用三个词来概括一下「你是谁」,你能做到吗?这就是你对自己的定位。
问题 2:「你擅长做什么?」
如果我能说「什么都不擅长就是最好的擅长」,可能大家都会拍手称快吧。正如问很多人你的兴趣是什么一样,有很多人都表示没有什么兴趣。然而,你真的没有擅长的事情吗?可能只是因为你没有发现而已。这是你对自己能力的定位。
如何对自己进行更好的定位
如果你真正把问题定位好了,其实解决问题并不难。然而,难就难在对自己进行定位往往很难做到精准,正如苏轼的名句:「不识庐山真面目,只缘身在此山中」。
即然是定位,那么,我们用生活中的一个例子来说明吧。你的手机上的 GPS 定位是怎么做到「精准」定位的?
不是靠手机自身就行的吧,它需要通过在天上的至少 4 颗卫星才能精确定位自己的空间位置。也就是一个简单的道理:
你要定位自己,是需要别人来做参照物的。
那么如果你是应届毕业生,你需要在简历中和你的参照物(基本上是和你同一届毕业的人)做个对比较。如果你已工作多年,那么和同样工作几年的人或者应届毕业生,你也需要和他们做一个比较。
其实,你也可以从另一个角度理解,要定位自己,也可以参考一下别人眼中的自己是怎么样的,别人往往更能发现你的优点和缺点,而且一般比你自己评估的要准确。
此外,你还可以用事物来做参照。比如为了表达你擅长 Android 视频直播技术,很多人喜欢直接在简历上加上一个「自我评价」,然后写上「我擅长 Android 视频直播技术」,你觉得是个什么效果呢?像不像一个人说他很幽默,但别人和他聊天从来没笑过?
比较好的表达一个人幽默的方法应该是直接说段子,那么表达一个人擅长某个技术的方法呢?「段子」留给大家自己去写吧。
简历的加分项和减分项
在面试后和他们分享,我才知道,他们其实并不是说没有认真去做,而是确实不知道简历上到底应该放哪些东西,或者说编写的顺序是怎样的,大多数人都是直接使用比如拉勾网呀、BOSS 直聘呀,这些招聘网站的模板来编写的。这就会导致,我们的简历上出现了一大堆没有任何价值,别人也不关心的东西。所以,我在这里再次申明呀:千万不要去用招聘网站的模板来做你的简历。
有哪些好一点的简历加分项呢?
- 黄金两页原则:最好简历控制在 A4 两页;
- PDF 原则:简历最好为 PDF,这样可以解决不同系统上打开格式混乱或者乱码的问题;
- 在最顶部写清楚个人信息:比如姓名,电话,年龄,毕业院校/专业,Blog 和 GitHub 比较有内容的也可以直接放在最前面。最好一行两个信息,不要一行只写一个信息,导致右半部全部空白浪费。
不知道怎么写项目经历
从简历上来看,大家还有一个常见的问题是,对于项目经历,写的非常粗糙,大多数人都是写的:「我用了什么第三方库,实现了什么功能。」「我在项目中,使用什么技术,做了什么什么。」甚至是,一个项目下来,三句话就被完全介绍完了。对于这点,我还专门咨询了我们的 HR,他们对于这种技术简历,会怎么处理。我得到的回答是:「除非是非常厉害的公司或者项目,不然都会直接 Pass 的。」
那到底怎么写项目经历呢?在网上,盛传着一种法则:STAR (Situation Task Action Result)法则。
- S(情景):这可以是让你参与这个项目,或者是解决问题的背景;
- T(任务):只需要在简历上写清楚自己的职责;
- A(策略):如何实现,是否遇到困难,如何解决的。
- R(结果):取得的成果,作为程序员,一定用数字说话。
前面说了,在编写项目经历上,大多数人写的真的非常粗糙,基本都是使用了什么技术,什么库。甚至有人仅仅只是用过,也写了一个「精通」,实际上这是非常不好的,即使拿到了面试资格,也很容易在面试中翻车。因为大多数面试官面试的策略都分两步:
- 就你简历上提及的点问问题,了解你对简历上技术的掌握程度;
- 就公司处理好的或者还没有处理的难题,问问你的想法。
所以,简历上出现的内容,一定要是自己能答上的,仅仅是使用过的东西,不要写在最前面。
到底写不写自我评价?
还有一个比较受争议的问题,就是到底写不写自我评价。可能是受招聘网站模板简历的影响,我发现 80% 的面试者都写了这一栏。其实无可厚非,但大多数人直接放在第二个位置,我很好奇这样做的缘由。最重要的是,深入一看,内容居然都是一些乱七八糟,面试官并不关心的内容。
先给大家截取一个反面教材:
- 为人友善,诚实谦虚,勤奋,能吃苦耐劳,有耐心;
- 有团队意识,能和同事和谐相处,虚心接受别人的建议;
- 责任心强,善于沟通,具有良好的团队合作精神;
- 专业扎实,具有较强的钻研精神和学习能力;
- 性格比较乐观外向,喜欢打篮球和羽毛球。
当我看到这个自我评价的时候,就觉得比较冠冕堂皇,可能面试者确实就是这么好的人,但是,从何取证呢?所以建议大家不要在简历中写一堆废话,简历就是求职的敲门砖,不要把没有价值的东西放在上面。
正确的关注点应该是:
- 定位:主攻 Android,不依赖别人,希望全栈;
- 态度:高效完成=>追求完美=>互相提升;
- 困难:Google && Stack Over Flow,阅读文档源码;
- 视野:GitHub? 掘金? 简书? CSDN?
- 优劣势:热爱技术,心态沟通。非科班劣势(算法)
上面并不是模板,只是着重的一些点。好的自我评价应该写清楚自己的定位和方向,以及平时自己的一些生活和习惯。非科班出身的通常会被打上算法不够出众的标签,但我们完全可以从其他方面表现自己的优势。
简历总结
总的来说,简历就是求职的敲门砖。
- 它不需要精美的外表,但求整洁和规范,使用 PDF,控制在两页左右;
- 它不求你样样精通,但求你对上面的内容胸有成竹;
- 只写有价值的内容,不写无意义东西。
- 对于不一样的公司,简历尽量不要只写一个。
- 经历一定要写出亮点,如果你没有亮点,那现在就行动起来去创造一两个亮点,让自己一两年后不再重复这样的烦恼。
面试
说完了简历,我们再来谈谈面试。无数次面试让我深刻的明白一个道理:作为程序员,我们的能力都是建立在技术基础上的,技术不达标,其他的能力会显得很缥缈。但决定我们是否通过面试,除了我们得有足够的技术能力以外,还得有不错的表达和沟通能力。
我进行了 118 次模拟面试,却发现了一个非常尴尬的结论,那就是:没有人会做自我介绍。
基本总结下来大家的自我介绍是这样的:
- 简单介绍下自己的个人基本信息,就已经不知所措;
- 说两三句就终止;
- 把简历上的内容背诵一遍;
重点我「模拟面试」的方式仅仅是通过微信语音,还没有现场的氛围压抑感,我难以想象要是在现场面试他们会发挥成怎样。我一度以为他们是表达能力不行,或者说是怯场紧张,所以我一直在调整面试气氛。但到讲技术的时候,我发现他们的问题并不是出在表达能力。
如何自我介绍
必须要说一下自我介绍啊。任何的面试,都会有自我介绍这个环节,这是大家给面试官的第一印象,真的非常重要。一个好的自我介绍,能改善面试气氛,让自己接下来发挥更好,面试官也面试得更爽。
那我们自我介绍应该说什么呢?我建议大家说自己的亮点闪光点,这些东西最好是简历上亮点的详细介绍,时间控制在一分钟左右,再重复一遍:不要背简历!!!
我先给大家来个范例哈,注意一下,这是没有什么技术闪光点的自我介绍。
面试官您好,我是刘世麟,非常荣幸能参加贵公司的面试,下面我简单介绍一下我的个人情况:我从实习到现在一直在 XX 公司工作,从事 Android 开发,凭借良好的工作能力和沟通能力,连续两年蝉联「优秀员工」称号,在今年初被公司内聘为技术总监助理,协助技术总监开展部门管理和项目推动工作。在工作之外,我喜欢编写技术博客和在 GitHub 上贡献开源代码,目前在 GitHub 上总共拥有 7k 左右的 Star,数篇技术博客也有数十万阅读。我非常地热爱移动开发,早已久仰贵团队对技术的看重,所以希望今天自己面试有好的表现,未来能有幸与您共事。
很简单的一个自我介绍,这些内容在简历上都很少提及,其中,我抓住要点,强调了我自己的工作能力和沟通能力。蝉联优秀员工,被内聘为技术总监助理,都说明了自己在工作中的优异表现。在技术博客和 GitHub 上的表现,说面了我的软实力比较强,非常地热爱学习, 通过数字性的展示,让面试官有了一个比较直观的良好感受。
大家在面试之前都可以在笔记本上面写下来,然后自己对着墙壁,模拟介绍几次,这样下来你在面试中进行自我介绍的时候往往就能够得心应手。
技术面试
在自我介绍之后,一般都会开始进行技术面试,基本上你的技术等级都会在技术面试环节敲定。那面试官如何在短时间内判断你的技术等级呢?
这里先借用凯哥之前在知乎上的一个回答,我觉得非常有意思。
从这里,我想大家已经可以得到结论啦。通常面试官在开始面试的时候,都会针对你的简历对你进行大概的判断。因为每个人的经历不同,擅长的方向也是千差万别,所以都不会紧抓自己擅长的方向问,而会选择对你简历上提及的内容进行挖掘。
比如你说你擅长使用 RecyclerView,那你知道如何处理 RecyclerView 的嵌套滚动么?那你知道如何处理 ViewPager 和 RecyclerView 嵌套的时候出现的焦点问题么?假设检查 RecyclerView 各种设置没问题后,数据却展示不出来,你能猜想哪些原因么?假设只能用一个 RecyclerView,不用分 Type,让你实现一个复杂布局,你能想到一些方法或思路么?
我们经常会在面试前刷很多的面试题,准备很久,但我们真正到面试的时候,却总是被面试官虐的体无完肤。这说明了一个问题,我们平时准备的东西,平时如果没有深入理解的,是很难在面试中正常发挥的,所以,这还需要一个沉淀的过程。所以大家参加 HenCoder Plus 跟着凯哥搞清楚细节,是非常有价值的。
一些的情况说明一个结论:细节 => 技术。
但我想说,应该是 细节 + 深度 => 技术。
前面我们有说到,在简历上我们可以使用 STAR 法则编写我们的履历。实际上,我们在编写简历的时候,就已经可以思考自己面试中可能被问到的问题啦。呈现在简历上的是遵循 STAR 法则的精简版内容,实际上面试中,我们给到的应该是详细版。不过我认为在面试中应该是 START 法则,我在后面加了一个 T,这个 T 是什么呢?Thinking。
不会总结的程序员不是好程序员,大家知道,我在工作之余写了不少 Blog,实际上就是一个总结的过程,我认为这样的方式,让我成长非常迅速。实际上,我们在面试中完全可以展现自己的总结能力,让面试官看到自己的亮点。
我们来看看面试中,我们如何利用好 START 法则。
- S(Situation):在简历上我们呈现的是项目的背景,但在面试中,我们还应该就项目的细节进行更加详细的讲解。
- T(Task):我们在简历上主要是编写自己在该项目中承担的职责,但在面试中,除了说明自己的职责,建议带上团队的整体任务,展现出无论何时,你都很在乎你的团队。
- A(Action):在简历上我们展现的是应对问题采取的策略和具体方法,在面试中,除了进行详细说明以外,还应该说清楚自己和团队成员的分工,一定需要记住的是:不能否认团队的价值。
- R(Result):产生的结果,这一点在面试中和简历上可以基本保持一致。
- T(Thinking):这一个词是我自己添加的,我觉得一个好的介绍还应该举一反三,总结这个事情哪里做的好,哪里做的不好,接下来如何去避免这个问题,以及可以复用在哪些场景。
简历之外的技术面试
除了上面提及的,面试官会对简历上进行深挖细掘以外,通常面试官还会问一些其他的。比如对于中级和初级工程师,一般会问一些 Java 基础和 Android 基础,比如什么 HashMap 的内部结构,Hash 碰撞处理方式呀,还有 JVM 类加载过程呀,垃圾回收算法呀,启动模式呀,Handler 原理呀,Android 的事件分发机制呀,Activity 的生命周期呀等等。这些问题好像网上都已经司空见惯,很多人都选择了直接去背诵面试题答案。
我是非常不赞同背诵答案这种做法的,人的记忆本来就是有限的,你的脑袋就只能装这么多,况且网上的博客基本出处都差不多,很多博客并没有深入到细节里面。现在的面试官也越来越聪明,知道如何辨别面试者是真会还是假会。
比如上面的 Activity 生命周期,可能网上都会写,额是,onCreate() => onStart() => onResume() => onPause() => onStop() => onDestory()。但实际上,背的了这个流程,不一定能灵活应用起来。比如面试官问到,锁屏会依次调用哪些生命周期,面试者不一定知道。有些 Blog 可能写的比较仔细,会给大家列上一个表,展示这些可能的问题,比如 锁屏是 onPause() => onStop(),Activity 从不可见到可见的调用方法是 onStart(),onStop() 是完全不可见的时候调用,所以自然而然调起 Dialog 的时候走的生命周期是 onPause() 而不是 onStop()。甚至有的 Blog 直接教大家背诵。完整生存期是 onCreate() 一直走到 onDestroy(),可见生存期是 onStart() 到 onStop(),前台生存期是 onPause() 到 onPause()。
可能这样的问题早已经被大家司空见惯,但实际上,面试官早就不会这样直接问了。基本采用的方式是给你一个场景,看你能否正确的处理,比如 Activity A启动 Activity B 后,A 真的一定会调用 onStop()
么?毕竟我们平时做需求,也是用自己已有的知识组织起来解决需求的。
如何准备面试
说了这么多面试技巧,那我们还得有个非常重要的过程:准备面试,大多数人会选择去看各种面经,刷各种面试题。虽然这样确实会有一定的作用,但我认为是低效的。首先,大多数的面经,都没有一个深入讲解的答案。第二,刷的题,大多数和求职公司的面试不匹配。目前看来,只有刷算法题在应对算法类面试的时候成功率较高,基本应用类面试,作用都微乎其微。
这就让我们必须谈到了另外一个话题:如何准备面试?
经过我多次试验发现,技术面试的面试官问的知识,80% 会来自于你的简历,所以你至少提前除了准备自我介绍,还应该认真针对简历上的每个技术点,思考一下可能出现的面试题,并想一想如何去应对它。
除了一些特别基础的机制原理问题,比如 Activity 的生命周期呀、Handler 机制等,其他问题都是允许面试者答错的。其实面试官并不会奢望你能够完整无缺地答好每一个知识点,有时候判断一个面试者是否适合面试官所在公司提供的开发岗位,往往看的是面试者在回答问题中体现出来的「编码之外的能力」。所以,不要想着背诵面试题和知识点,那样无疑是低效的,并且这样得来的知识,你以后也基本不可能用到。
此外,针对不一样的工作岗位,准备的面试内容也不应该一样。相较于中小型企业,大厂会问的知识面更广,比如会问不少的算法和计算机网络等基础知识,而一般的中小型企业却对这块不那么看重,他们更期望的是能迅速上手的人。也就是说,他们需求的并不是一个技术多么厉害的人,而是一个合适的人。对于初级和中级工程师,面试官会更看重基础知识,对于高级甚至资深工程师,会对多线程编程,自定义View,架构能力,产品观有更高的要求。
其实「二八原则」在好多地方都发挥着作用,在 Android 开发中,我认为也是一样的。作为一个 Android 开发,你也许只会用到 Android 开发知识的 20%,另外的 80% 你其实学了也不一定会用。
而面试官其实也一样,他有可能也只掌握了 20% 的知识,而且一个面试也不会有足够多的时间给你展示你全部的知识,而往往只会注意开发中最常遇到的 20%。但大体上来说,这 20% 比较重要的知识点,一般都是大家需要重视和答对的。我之前在公众号上写了一个面试专题,现在在公众号底部也还有一个导航。虽然后面夭折了,但写的内容基本都是每一位 Android 开发都需要重视和答对的。
俗话说「英雄不问出处」,前提很明显了你得是「英雄」。如果别人不知道你是「英雄」,那么势必会通过你的学历、公司和项目经验来判断你是否合适。毕业的学校和任职过的公司,包括你跳槽的频繁度等都会对你的评分有一定的影响。
但其实最重要做判断的根据还是你的项目经验。所以对于你从事过的项目及你在这些项目中的职责和作用,你应该有一个清晰的描叙。
对于项目经验丰富但是项目的类型单一的人,如项目中清一色的「资讯」类应用,那么你应该表现你具备独立开发和处理各方面问题的能力,而且最好在平时你就要有意识的避免进入到这种境地当中。对于「一个经验用十年」的人,面试官其实也很难分辨出他在其他的方面是否也能做得一样好,如果你不能在公司层面避免陷入到这种情况,那么你还是应该尝试同一个项目中的不同方面,或者自己做一些和当前公司不相关的项目、开源库等。
但其实有很多人的问题在于,项目经验并不丰富,而且有些人工作了很多年,但有可能其中的几年都在维护一个项目,简历上往往用一句话就把这几年的事情说完了。但我认为,并不是我们在这几年中没有做什么有价值的事,而是我们没有把这些事情记录和总结,并做一个深入的思考和扩展。想想吧,总会有的,把事情想到了还要对这个主题做一下扩展,你总结出来的东西才更有深意。
对于面试者来说,往往觉得面试就是回答对面试官的问题,但从面试官的角度来看,面试其实就是要做一件事情:「如何区分面试者」。简单的说,就是把你和面试官面过的(或即将面试的)的人区分开来,并给你打上几个签标,简单点可以是「不错」、「合适」、「犹豫」、「肯定不行」。复杂点的,可能会把你的某些能力列出来,比如学习能力强、协作能力差,然后再和其他人放在一起综合考虑。每个项目都有不同的特点,所以每次的侧重能力考察也会不一样。
所以,有时候你通过了一家公司的面试,也不需要太得意了,可能并不是你有多厉害,仅仅只是你正好是这个时间段里性价比较高的那个。当然,如果你被淘汰了,也不需要妄自菲薄,也许只是因为在这个时间段有个比你更高性价比的人也来这家公司面试了。
如何准备与 HR 的面试
HR 通常会问你一些离职原因和职业规划,对于离职原因的阐述,我想大家应该都很清楚了,不要否认老东家的价值,不要否认老东家的价值,可以结合现在面试公司来说出自己的展望。比如我之前面试美团的时候,我是这样回答的,因为美团是一个非常重视移动端业务的互联网平台,而我之前公司由于公司战略的变化,现在业务像提供服务转型而弱化了移动端,作为一个深爱着移动互联网的人,我渴望加入美团这样的团队。
而除了说离职原因,我们还极可能遇到的诸如「说说你的优缺点」、「你最擅长什么」、「你在项目提供的最有价值的作用是什么」等等这类问题。这类问题在我前不久的面试中,其实技术面都会提到。其实,反过来看就很简单了,这些问题归根到底就是「你和别人的区别在哪里」。面试官的任务是要把你和别人做区别,你自己也需要把自己和别人做区别,回答「不知道、好像没什么这样的话,其本上会给减分。
我遇到过最难的「吹牛」面试题就是:
说说你和其他程序员相比你更出色的地方,为什么我们要录用你?
这是我遇到过的最难的面试题,哲学家苏格拉底说过:「人最难的就是认识自己」。这句话一点都不假,我们可能经常会惯性地觉得自己比其他程序员厉害,但真要说厉害在哪里,这真难说出来。每个人都有和别人不一样的地方,在面试前一定要想想一些正面的积极的地方,然后自己总结一下,最好给你周围的同事、朋友说一下,看他们是否认同你的看法。最后你会发现给别人说事情时,最好的方式是说一些案例故事,虽然你要说的可能只是一个简单的点(比如你抗压能力强),但你也可以用讲故事的方式讲出来(在某次事件中你在怎样的压力下完成工作的)。
如何准备和 BOSS 的面试
在我进行模拟面试中,我清晰地记得我有一位读者,在一天晚上 11 点过,慌乱地找到我,希望我能给他做一下模拟面试,因为第二天他就要和自己心仪已久公司的 CEO 进行终面。这位小伙伴已经经过了三轮技术面和 HR 面了,而且是自己非常渴望加入的公司,所以也是慌得不行。我强忍睡意,和他进行了模拟面试,额,严格意义上说,这只能算一次交流。
我简单了解了下他的情况,他的音视频开发经验非常丰富,而自己渴望加入的公司也是微视频领域的。所以我认为他没什么好担心的,经过了整整 3 轮的技术面试,说明他的技术实力已经得到了公司的认可,BOSS 面最多只是随便聊聊,谈谈「人生和理想」。
大家切不可小看这个「随便聊聊」,这个「聊聊」可以很容易看出你的思维能力和对事物的看法,而且这些方面是你短期很难改变的特质。
他应聘的职位只是高级开发工程师,并不是管理和技术负责人的角色,对方并不会太在意他的管理能力和领导能力,所以后面的面试大可轻松应对,但还是要简单准备一下,了解下公司情况,态度上不卑不亢。
如何和 HR 谈薪资
中国人都很喜欢打听别人的收入,收入对于我们这个社会传统来说并不算隐私,但是对本公司或者同行业的人我一般都会选择隐瞒。HR 或者公司的制度都会明文规定不许在公司内打听员工的工资和奖金,为什么呢?大家心知肚明,别人比自己低了,别人难过;别人比咱高了,自己得难过吧。人都会认为自己的能力高于平均水平,对公司的贡献肯定比身边的某某多,但一但得知对方的工资比自己高,那就容易打破自己的心理平衡。
身体不平衡容易生病,心理不平衡容易出事。
所以薪资这个东西一直以来都是一个敏感话题。在讲这个之前,我想先提醒大家,选择工作的时候一定不要只看薪资福利,而应该看重更加长远的价值。
前段时间,我也经历了找工作,一共面了 4 个公司吧, 拿到了 3 个 offer,但我最后就选择了薪资最低的公司,尽管薪资第一的公司一年可以多不少收入。直到现在,我一点都不后悔。因为我看中的是同事们的学习能力和提升,现在的公司每隔一周都会又一次技术分享,分享的内容,经常都让我瞠目结舌。
好像扯远啦,我们终究还是绕不开和 HR 谈薪资的过程,我们总是期望着在加入自己心仪公司的前提下,还可以摇到尽可能高的薪资。下面结合我的经验给大家几点建议:
增加自己的筹码
也就是你在技术面试和管理者的面试过程中表现较好,这时候你可以获得较高的评级,这时候 HR 给到你的幅度也会大一些。所以在面试前应该进行充分的准备,如果你是别人犹豫的对象,刚好放你通过,你不来也行的话,HR一般情况下是不会对你让步的。所以总得来说,好像是废话,但就是真理,你还得好好准备提升自己的能力,以便于在面试中获得更好的评价。
在关键位置上有人
这一点非常重要,有自己人在你要面试的公司内部,你可以获知他们很多情况,比如这次招聘是否紧急,什么叫坐地起价,就是别人没有你有。有自己人在你才能知道有没有其他比你合适的候选者,没有的话,你才有资格坐地起价。
如果一个公司找了很久都找不到合适的人,项目已经迫在眉睫,这个时候你出现了。但是你并不知道你是他们千辛万苦找到的,他们不要你就有可能将项目至于风险中可能会有更大的损失,这个时候你是可以要一个比较高的价位的。但没有自己人告诉你这个状态的话,一般你还是会从自身出发,可能觉得自己的表现并不算特别好,会患得患失,脸皮薄的话当然不敢狮子大开口(或者你不明白你为什么在这个时候在这个公司值高价)。
如果没有相关资讯了解对方公司内部对人员的需求情况的话,很多时候你靠的是运气,就是看你前后的面试者(候选人)和你的性价比结果。如果那个时期,只有你一个候选人,那么你的要求不过份,一般都可以满足。当然,HR还是会打击你一下压压价,别人的工作就是要控制人力成本嘛。所以你认为能力不如你的人工资却比你高,一点也不奇怪,你们进入公司的时机不一样。而且就算你认为对方水平不如你的,那只是你个人的看法,他的水平可能真不如你,但在公司的层面,你们可能被划分在同一级别。所以不要太在意,最好就不要去打听。
不要让对方给你定价格
之前不少读者问我,在 HR 问到期望薪资的时候,自己可否反问对方 HR 自己值多少钱。假如我是 HR,我肯定是非常反感这种行为的,我询问我们家 HR 后(平时和 HR 私下关系很好),得到的结果如出一辙。后面我发现网上竟然还有文章说到,可以委婉地把问题抛回给 HR,比如「我相信贵公司会给我一个心仪的价位。」
我个人是非常反对这样的做法的。大多数公司会给到招聘网站上挂的薪资范围,而且普遍会比较接近平均值以下。所以当 HR 问你期望薪资的时候,你除了要预估自己在之前技术面试中的表现,还应该注意一下公司给的薪资范围。一般情况下不要直接给出公司给的最高值(自己能力足够优秀的例外),基本比自己预期高出 15% 较为合适,比如自己心里期望是 18k,实际上自己觉得 16k 也可以加入,这时候可以说自己期望是 20k 如果实在是没有底气,也可以附加一句, 19k 也可以,相信公司不会埋没自己。
你还有什么想问的?
经常遇到这样的面试官,当他吧唧吧唧问完你问题后,突然就停下了,但感觉又意犹未尽,所以往往会把对话的主动权交给你,让你来提问。
我的问题问完了,你有什么要问的吗?
可能这时对于你,“要问”还是“不要问”是个问题。如果要问,那么要问什么样的问题呢?只要你不是太傻太天真,你的内心会坚信面试其实还没结束,并不是什么问题都合适问的,如奖金、加班费这些你特别关心的。
面试官的这个问题,是有意问的一种开放性问题,以此来了解你这个人的关注点;还是仅仅是因为面试确实无问题可问了,但又不想太直接结束面试,所以就顺便问问?
这真的是个问题。
不过我们不一定非要去揣测面试官的用意,我们回到自身的需要。
如果你也没什么问题想问,那么可以委婉的告诉面试官自己没什么问题要问。
如:「通过一些朋友和渠道,其实我对贵公司的一些文化和愿景都还比较了解,所以我暂时也没有什么想问的,我也很希望能加入到这样一个环境中。」
那问什么呢?
如果要问,那问题就多了。
“项目常加班吗?有加班费吗?”
“有出国旅游吗?”
“在这个团队中的个人提升空间怎样?”
......
其实,并不是说上面的这些问题不好,或者不能问。只是,我们问题之前应该思考一下,问什么样的问题即可以了解到想要的信息,又是眼前这个面试官最合适回答的。即我们要让这个问题问出去后的对话能成为有效的沟通,而且这个问题是我们关注的,并且这个问题是对方比较有发言权的。
如关于加班费的问题,其实你问 HR 或者在里面上班的朋友会更清楚些。
技术面试官
在提出问题前,我们要先看一下现在这个面试官是处在公司的什么位置。如果他也是一个开发人员,在对你做技术面试,那不妨聊聊团队的一些技术栈方面的问题。
如:“你们的团队在采用敏捷开发的方式吗?”
然后和面试官聊聊敏捷,分享一些各自的经验,方便双方进一步的了解。
并不是所有的公司都会用敏捷,那我们可以问一些更开放性的问题,如:「在你们的项目中遇到技术障碍了,公司有什么机制去应对吗?」可以就此看看这个公司是否重视技术,有没有一些技术提升和交流的传统。
管理类面试官
如果面试官是管理职位的,那么可以问问团队组成;假设你能加入的话,会分配在哪个team,team中有没有带你的人或让你得到进步的模式;或者了解一下他对团队目前状态的看法,是否有什么变化他想引入团队或组织的。
也就是向管理类面试官提问,你可以问一些对团队现状和未来预期(目标)相关的一些问题,这些问题会让你提前知道,进入这家公司后你应该往哪个方向去努力。
HR
公司文化什么的 HR 一般会主动向你介绍,薪酬和福利不清楚的地方也可以继续沟通。
简单说,问自己需想要得到答案的问题,而且要针对不同的面试官问对方比较“擅长”回答的问题。
管理者:问战略
技术人员:问战术
HR 行政人员:问后勤
离面试不到 24 小时,怎么办?
大多数面试一般都会有 3 天以上的时间让我们准备,不过我们时常还是会遇到临时安排的面试,给你准备的时间不足 24 个小时,让人措手不及,这个时候我们该准备些什么呢?当然,有些同学可能是从有很多天时间拖延到只剩一天,才下定决心要准备一下。
那假如我们就只剩下一天的时间了,怎么办?不少小伙伴呀,会越来越慌,越来越慌,不断地去看一些其他的面试点,生怕哪一个点没有看到。最后呢,在面试的时候,发现自己全都忘光啦,而且在面试的时候,发现自己前面没答好,极容易影响自己后面的发挥,对吧。
其实时间越近啦,反而我们不应该再去看一些新的面试知识,放平心态,不需要准备什么。
不需要准备什么?你可能会说,南尘,你在逗我?怎么可以平静到什么都不去准备呢?
确实还是需要准备一些东西。
那到底准备啥?
自我介绍
第一个是自我介绍,刚刚前面说了我们要怎么自我介绍,到底要说多少句,但我没有说到底该什么时候准备。正常来说,在面试前一天准备这个,是最好的,但不要死记硬背。
项目经验介绍
你比较熟悉的项目是什么?你在工作中遇到的最大困难是什么?以及你最终是如何解决的?这个项目让你得到了什么成长?
自己的定位
一般在面试中,还会问到的优势和劣势,比如说:「你的有点是什么」?「你最擅长的事情是什么」?
不过但凡是你对自己有一个比较清晰的定位,哪怕你这个定位是错的,你也可以以不变应万变,拿出纸和笔记录下你自己的优劣势,并附上相应的案例。
尽可能了解公司
要了解公司什么呢?肯定不是他的什么福利呀什么的,你先得知道对方想要什么样的人,可以先看招聘网上的职位简介。这个一般还是不够准确,如果有条件,可以问问里面工作的人,或者直接问他们 HR,如果录用你的话,会让你做什么。当你清楚了对方想招什么样的人,你会更加清楚自己应该怎么做。
再来应该了解面试公司的产品,猜测他们可能会遇到哪些问题。对方招你去是要实现产品和解决问题的,比如大型的 APP 应用,可能会涉及组件化方案和各种性能问题,而小型的应用可能会更加看重你的快速开发能力。
如果有条件,还可以准备一下 Java 的基础和 Android 的基础,没什么好说的,Android 基础可以直接去看我的面试系列。
不需要准备的。
一些你现在还没有掌握的技术点,准备它们的收益不是很大。既然你还未掌握,现在再看一遍还是难以理解透彻,可能还会出现你认为自己答对了,面试官却认为你南辕北辙的情况。
比如:算法、设计模式、OpenGL 等,这时候看并不利于你记忆和应付面试官可能换一个角度来问你。
这样的题或者说技能,是很重要的,但在 24小 时内你只能接受这个现实。如果你其他都准备好了,也可以从现在开始投入时间在这些方面,但不要想着马上就能用上。
在最后一刻,请再看一遍自己投递给这家公司的简历,如实按简历上的回答,保证你的诚信。如果你的说法和简历上不相符,对你的影响是很大的。
总结
今天大概就讲到这样,我们来做个总结。首先是我们的简历总结。
针对简历
简历上的所有内容都应该是你最有价值的东西。
第一句话非常重要,我在这里再说一遍啊。简历上的所有内容都应该是你最有价值的东西。这上面不应该带任何乱七八糟毫无价值的东西哈,比如你喜欢打游戏,喜欢摄影,这跟我们程序员没什么太大关系哈。
黄金两页,PDF 格式,个人信息一行两个避免留白
我们的简历简历都采用 PDF 格式,防止别人打开出现各种格式问题。页数最好控制在两页,项目个数控制在 3~5 个,项目数目太多的,注意筛选,每个项目宁可写更详细也不要写太多的项目,免除外包项目嫌疑。最开始的个人信息栏最好一行写两个信息,不要一行只写一个,浪费右上角大部分的好展位。
简历上每个栏目的顺序
简历上每个栏目的顺序最好遵循:个人信息 => 工作经历 => 项目经历 => 个人评价。社招的同学也建议自己能有几个练手项目,可以增加校内经历在第二个栏目。
利用好 STAR 法则
在写简历的项目介绍的时候,最好采用 STAR 法则写清楚项目发生背景、自己的职责任务、自己的处理方案和遇到困难如何解决,最后用数字来量化结果。
拒绝太官方的自我评价
自我评价可以写,但不应该太多,一般 4 ~ 5 条适宜,内容不要太官方,最好能体现自己的定位,态度,遇到困难时的方案,自己平时的技术交流平台,以及自己的优劣势。一般自己对自己评价容易太主观,这时候把自己的想法告诉你的朋友,看看他们是否和你的看法一致,一般而言,其他人的看法会更加具有客观性。
不要只准备一份简历
对不同的公司应该准备不一样的简历,实际上每次的修改也不大,但不要一味迎合对方的 JD 要求去改写自己的简历,自己的内容还是应该做到心中有数。
针对面试
提前准备自我介绍
自我介绍是面试的第一个环节,而且在每一轮面试都会存在。针对不一样的面试官,自我介绍应该侧重点不一样,但大体思路一致。不可完全背诵简历上有的内容,也不可随便说几句就完事儿。正确的思路应该是自己的一个全面总结,包含自己的工作中印象深刻的难题解决过程(START 法则),一半表现自己的技术硬实力和工作表现,另一半表现自己的软实力,包括但不限于沟通,学习和其他能力。
针对自我介绍,最好是提前在纸上写下来,并且对着墙多练习几遍。
如何准备技术面试
技术面试一般分两个方向。
第一个方向是简历上的内容,一般会针对简历上提及的内容进行深层次地追问,以确保简历上的内容属实,并且很容易通过细节判断技术深度。所以在写简历的时候,就应该猜测面试官可能面试到的问题。对简历上出现的一些框架,最好针对它的疑问点进行一定的准备。比如你说你擅长使用 RxJava,那你得知道 RxJava 1 和 2 的区别联系吧,给你一个实际场景,你得知道什么时候用 map、flatMap、zip、skipWhile 等这些操作符吧,你还得知道背压吧,以及 RxJava 2 到底是怎么去应对处理的吧?
第二个方向是简历之外的内容提问。这个得先看你面试的职级,比如中级和初级开发,你得明白四大组件的基本生命周期吧,你得明白 Java 的基本基础吧,你得明白基本的自定义 View 吧。对于高级和资深,你得好好准备一下多线程、复杂自定义 View 以及动画,得知道多点触控这些吧。还有一些就是面试官所在的公司迫切希望解决或者是他们之前的问题后面得到解决的内容了。
还有一个是需要看一下你面试的公司,稍大的公司会更加在乎你的基础水平和代码质量,所以会对你的技术深度和技术广度有更高的要去,而小型甚至外包公司会更在乎你的开发速度,和你的抗压能力。
总的来说,准备再多的面试题都不如先把基础问题弄清楚,弄明白,再把你简历上提及的技术点都先想清楚,搞明白再去面试。
如何应对吹牛题
HR 的吹牛题不可避免,而且现在吹牛题除了 HR,甚至还有一些总监、经理等都会问到。基本吹牛题都是什么离职原因呀,职业规划呀,什么你遇到过最大的挑战呀,还有你的优势是什么,为什么我们要录用你呀这类的。这些问题还是应该事先准备的。和自我介绍应该,同样是应该写在笔记本上,然后自己多次揣摩,可能你觉得自己准备很好的东西,你写出来自己都知道了。
还有一个基本不可避免的吹牛题是:「你还有什么想问我的」?这个问题,针对不一样的人问的内容要不一样,对于管理者,可以问公司战略;对于技术人员,可以问公司的项目流程;对于行政 HR 人员,可以问福利和公司文化。如果确实没啥好问的,就委婉地表示自己之前通过其他渠道已经了解了自己想知道的,切忌不要直接说没有。
如何和 HR 谈薪资
和 HR 谈薪资是一个必不可少的过程。如果手里已经有 offer 或者前面感觉自己面试表现不错,建议谈的更加有底气。一般要价比自己期望的高 15%,不要说范围价格,不要说范围价格!虽然我知道你心里比预期低 10% 也可以接受。
手里有多个 Offer 怎么选
面对多个 Offer,大多数都在同一个城市,这时候需要把眼光看的更加长远,一定要把眼光看得更加长远!选择更有发展潜力的公司,而不要一味地追求薪资。这一块我其实深有感触,所以前段时间,我放弃了高我现在薪资一半的公司,选择了现在的公司,其实原因很简单,一面的面试官把我点燃了。
还有一点是,一定要注意距离,最好优先选择距离家近的公司,租房的可以把家搬过去。每天花在地铁上的时间,不如在公司多做点事儿。
对于校招的同学,肯定会有些 Offer 来自不同城市。不考虑到家距离的,建议优先北京、上海、深圳、成都。再是广州、杭州和一些其他城市。
没有技术深度的烦恼
当我们是初级工程师的时候,最希望的就是有丰富的项目经验,好把自己苍白干瘪的简历填的炫丽饱满。然而随着时间的积累,简历上的项目是挺「饱满」的了,但我们只看「外表」的行为造成了自己另一个困境:看似很资深,其实又没有做过什么有难度的事情,工作了十年可能只是 1 年的工作经验用了 9 次。
我之前就面过一位从 09 年开始就做 Android 的人,我算算啊,到现在应该是快干了 10 年了。光项目,简历上都写了 10 多个,整整 4 页的简历。我们抛开简历没有对项目经历进行精挑细选的毛病,我仔细阅读简历之后,发现简历中没有任何深入的地方。虽然写的很有技术,但却只是在使用 API 的程度而已,有些解决问题的方式很有技巧,但还不成体系。
这位读者待过 4 家公司,其中两家都是知名互联网企业。但假设我是公司的面试官,我可能会对他表示遗憾,心疼他没有选择更加深入的研究和拓展。
有知名互联网企业做背书,有将近 10 年的开发经验,但我总感觉还差了点什么。
假如我是公司的 Leader,我会觉得这样的一位面试者,当然会比一般的 Android 求职者技术更好,但性价比确实太低了。
没有技术深度是 Android 程序员的一种常态。因为很多工作,很多人从事的项目并不需要多少技术深度,即使你有深度,你也有可能发现用不上,对于大多数人,合乎理性的做法不是去追求技术深度,而是够用,能满足需求就可以了。
但转到个人的话就不一样了,在技术上你需要够用,但是在某方面上你需要有一定的深度,以突出你自己的学习理解和运用的能力,而且这个能力是要有成功案例来背书。
特别是当你成为一个资深的工程师的时候,很多公司并不希望你还是那样平庸,没有深度。虽然你会纳闷,我就算有深度你们也不一定用得上呀?然而到了这个级别的人需求量并不像初中级开发那么多,公司更理性和稳妥的做法是选择有深度的人,不是吗?
给扔物线 HenCoder Plus 学员的一次分享文字版的更多相关文章
- 推荐扔物线的HenCoder Android 开发进阶系列 后期接着更新
官网地址:http://hencoder.com/ 我来做一次辛勤的搬运工 HenCoder:给高级 Android 工程师的进阶手册 HenCoder Android 开发进阶: 自定义 View ...
- OpenCV各种绘制调用:线,矩形,圆,椭圆,文字
OpenCV提供了各种绘制接口,可以往图片里画各种东西,这种功能可以为以后在图像上标记一些信息方便调试 // drawcall.cpp: 定义控制台应用程序的入口点. // #include &quo ...
- 一堂优秀学员吕智钊分享----HHR计划----直播课第二课
备注:本周四:创业者分享,下周四:投资人分享. 08年开始创业. 最重要的两条复盘思考: 大纲: ---坚持最低成本试错,最快速度学习---- 1,复盘1:创业早期如何快速学习 a,从竞争对手身上学习 ...
- 常用学习&面试资源网站
https://github.com/MZCretin/RollToolsApi 开源通用API https://github.com/SenhLinsh/Android-Hot-Libraries ...
- Android 开发者,如何提升自己的职场竞争力?
前言 该文章是笔者参加 Android 巴士线下交流会成都站 的手写讲稿虚拟场景,所以大家将就看一下. 开始 大家好,我是刘世麟,首先感谢安卓巴士为我们创造了这次奇妙的相遇.现场的氛围也让我十分激动. ...
- 【工作感悟】Android 开发者,如何提升自己的职场竞争力?
前言 该文章是笔者参加 Android 巴士线下交流会成都站 的手写讲稿虚拟场景,所以大家将就看一下. 开始 大家好,我是刘世麟,首先感谢安卓巴士为我们创造了这次奇妙的相遇.现场的氛围也让我十分激动. ...
- Android 开发日常积累
Android 集合 Android 开源项目分类汇总 扔物线的 HenCoder 高级 Android 教程 hencoder HenCoder:给高级 Android 工程师的进阶手册 Andro ...
- Android 程序员不得不收藏的个人博客(持续更新...)
本文已收录我的 Github ,持续更新中 ,欢迎点赞 ! 每周打开一次收藏夹里的个人博客,已经成为了我的人生一大乐趣. 相比各大博客平台,我一直更加偏爱个人博客.在每个人自己的这一亩三分地里,你能看 ...
- 2018安卓巴士开发者大会打造Android技术盛宴
2018安卓巴士开发者大会打造Android技术盛宴2018安卓巴士开发者大会将于8月25日在上海举行,作为中国最具前沿性.专业性的安卓技术会议,将邀请来自爱奇艺.阿里.饿了么等知名企业的一线工程师分 ...
随机推荐
- ASP.NET Core 应用发布与部署指南
一.前言 本篇主要包含哪些内容? 将项目发布到本地目录 将项目传输到服务器并配置启动&开机自动启动 将Nginx作为访问入口,配置反向代理 本篇环境信息 开发环境: 用途 工具&版本 ...
- 产品经理说| AIOps 让告警变得更智能 (下)
AIOps 人工智能和IT运营支撑 Ops 之间的故事,愈演愈烈,已经成为当今运维圈的热门话题,我打算从2篇文档分享我们在 AIOps 上一些探索和实践.(上篇)主要介绍了为什么事件(告警)处理需要 ...
- SpringBoot自定义属性配置以及@ConfigurationProperties注解与@Value注解区别
我们可以在application.properties中配置自定义的属性值,为了获取这些值,我们可以使用spring提供的@value注解,还可以使用springboot提供的@Configurati ...
- Oracle 锁机制探究
以前虽然在网上看到很多关于Oracle锁机制的描述,但总感觉哪里有缺陷不适合自己,因此花了点时间参考官网以及Tom Tyke的<Oracle 9i/10g/11g编程艺术>一书整理了一下O ...
- Python3中操作字符串str必须记住的几个方法
几个Python的字符串常用内建函数 1.方法:Python3 isdigit()方法 描述:Python isdigit() 方法检测字符串是否只由数字组成. 语法:str.isdigit() 参数 ...
- win10优化开机进程
一种比杀毒软件都优化还给力的方法,还在为开机几百个程序启动发愁嘛.一般电脑在重装系统之后的开机进程在50左右,而随着安装程序的增多开机进程将越来越多.下面介绍怎么优化win10进程的方法 之后重启电脑 ...
- eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一)
eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一) 本篇博客主要包含五个内容: 1.CXF换将搭建以及eclipse配置CXF. 2.eclipse创建w ...
- SudokuGame 记软工第二次作业
整体概况 1.描述编写整体程序正确过程(含关键代码) 2.整体心路历程及新知分析 3.效能分析.构建之法及整体耗时时间表 4.一些心得体会 GitHub 链接如下: 1.[基础作业BIN文件(最新版) ...
- eclipse导入maven项目, A resource exists with a different case: '/xxx'.
eclipse 导入maven 项目出现 这是由于你的workspace里有相同的项目, 这时在metadata里可以看到所有的project信息 只需在eclipse的package explore ...
- vue methods 中方法的相互调用
vue在同一个组件内:方法之间经常需要互相调用. methods中的一个方法如何调用methods中的另外一个方法呢? 可以在调用的时候使用 this.$options.methods.test2( ...