大厂Android面试官亲述:大厂面试背后的真相,如何拿到高薪Offer?

Posted River_ly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大厂Android面试官亲述:大厂面试背后的真相,如何拿到高薪Offer?相关的知识,希望对你有一定的参考价值。

作者:徐宜生

这次来跟大家谈一谈面试。

作为一个面试者,我找过工作,也被别人面试过,作为一个面试官,我也面试过很多人,相信这两年开始,很多人都有这样的抱怨,移动端开发者越来越少,一个职位经常要招半年都找不到一个合适的人选,究其原因,到底是什么呢?

这篇文章,就和大家一起,聊一聊面试,我们先站在面试官的角度上来看看,我们都是怎么面试的。

面试官:双向选择

首先,面试是一个双向的过程,你在面试别人的时候,实际上你也在被别人面试,怎么说呢,一般来说,团队在招人的时候,都会让一些比较资深的成员来作为面试官,面试者在跟面试官交流的时候,实际上就能大概了解到互相的一个技术水平、沟通能力等等,对于面试者来说,面试官的水平,几乎代表着团队的水平,如果在面试者面前丢了人,大概率团队也是比较丢人的,所以,双向选择面前,人人平等。

所以,面试官的自我修养就很重要,这是一个团队的脸面,那么我们团队到底需要招什么样的人呢?

首先,面试官要牢记一个观点,你是招人,不是招神。

是人,就会有缺点,换句话说,真正完美的开发者,也不会来你的团队了。

所以,团队招人之前,需要对团队进行一次审视,我们团队要招的人,究竟是怎样一个人,能力需要多少,是能干活就行,还是需要独当一面,是非常有潜力,还是已经很资深,是对业务开发无所不知,还是对技术有深度钻研,在了解了这些要素之后,再去面试,这个时候,你再看面试者,可能就不是满眼都是缺点了,我们需要的不是完美的求职者,我们需要的是最合适的求职者。

其次,面试官,应该提高提问的水平,因为很有可能你的提问让求职者反向选择了。

第一要素,避免问「八股文」,茴香豆的茴有几种写法。这样的问题没有意义,每个人的知识点都不是完整的,很可能碰到盲区或者遗忘的地方,这些问题应该改成更具有深度的问题,例如,不应该问「单例模式有几种写法」,而应该问:

  • 你一般如何来实现单例?
  • 这样的实现是否考虑了线程安全?
  • 如果一定要用懒汉式单例,那么如何保证线程安全?
  • 我有这样一个使用场景,你要如何设计一个单例模式?

尽量问一些渐进式的问题,诱导面试者一步步思考,很多时候,面试官并不是要一个答案,而是想听听面试者思考的过程。

这里可以看看之前网上流传的一道很火的华为面试题:一头牛重800公斤一座桥承重700公斤问牛怎么过桥?

一看这个问题就很懵逼,什么玩意儿?

冷静的想一想,结果不重要,面试官想要的是你思考的过程,你会怎么回答?

  • 首先,了解下牛过桥的需求具体是什么,过桥是要活牛还是死牛?是要吃牛肉,还是单纯没事闲着蛋疼?
  • 如果可以是死牛或者是要吃牛肉,那就好办了,分解了运过去即可,或者说,能否在桥对面寻找替代牛?
  • 如果是要活牛,那么现在的问题就是800kg和700kg的问题,要么压缩牛,要么加强桥。
  • 所以针对这两个方面,我们可以考虑如何减轻牛的重量,比如来个热气球?让牛减个肥?发明量子传送通道?
  • 而针对桥这个方面,我们可以考虑能否临时对桥进行加固,或者造个新桥?
  • 剩下的内容无非是会议纪要,方案评审,立项,开发,上线,总结。

淦!这不就是我们平时和产品经理的对话?看来这个面试官平时被产品经理折腾的挺惨。

注意面试官言外之意

面试官的问题,通常都是带有很强的目的性的,听懂问题的言外之意,精准的戳中要害,比长篇大论讲一堆不着边际的答案要好的多。

这一点其实很考验面试者的情商,要知道,很多言外之意,它之所以被称之为言外之意,那就是它真的不太能被人听明白,不识庐山真面目,只缘身在此山中,很多时候,面试官觉得他已经把这个问题的言外之意点的很明白了,但是面试者依然一脸茫然不知道是什么意思,这里面可能有面试官的问题,也可能有面试者的问题,总之,这是一个双向选择的过程。

例如下面这个问题——现在有一个功能模块,是之前的同事遗留的陈年老代码,现在有个新的需求要在这个基础上进行开发,讲讲你的开发思路。

这个问题看上去很懵逼,不知道要干啥,但仔细想想,我们能提取出几个关键词:

  • 陈年老代码:不用问,这就是坑,危若累卵的坑。
  • 新需求:可能明天就要上线,很急,在线等。

所以,面试官是不是想看看面试者,怎么处理这种场景的问题呢?

  • 对于这种问题,我一般上来就重构,垃圾老代码,都是一坨屎,老夫写代码,就是一把梭,垃圾统统都要干掉。

面试官碰到这样的回答会怎么想呢?卧 槽,这是要P0事故的节奏啊,老代码虽然老,但是线上跑了N年没出锅啊,为了一个新的需求,直接全部重构,这风险,完全不可控,而且面试者解决问题的思路不清晰,没有轻重缓急,即使技术很牛逼,作为面试官,也要捏一把汗。

  • 首先,我会先把这部分的代码逻辑理清楚。
  • 然后看新需求是否能够在老代码的基础上完成。
  • 如果能完成,那么优先完成需求,然后向团队提出建议,对这块代码进行适当的重构。
  • 如果不能完成,那么需要跟团队Leader讲清楚原因,争取更多的资源来完成这个需求。

正合我意。

面试者碰到没读懂的言外之意,也不要怪面试官,毕竟中文博大精深,面试官很可能是站在自己的立场上来看待问题,所以有些隐晦也是正常的,一个有经验的求职者,这个时候最好的办法就是提问,诱导面试官将问题具体化,让言外之意,不经意间浮出水面。

越是高级别的面试,越是要深思熟虑后再回答,因为面试官越是高级,言外之意,可能也更加意味深长。

确实有运气成分

面试真的也是一个看运气的过程,碰到的面试官话不投机半句多,这是运气,职位空缺半年,急招,所以减低了一些要求,这也是运气,面试的内容正好做过、看过,这也是运气,有时候你面试不过,也许不是你自己的问题,很可能是运气的问题,还是那句话,双向选择。

面试者的实力组成

面试者虽然经常被运气所玩弄,但这是不可避免的事情,我们能做的,就是当运气眷顾你时,完美的把握住这次运气。

打铁还需自身硬,当你足够强大时,全世界都会给你让路(让你去喝毒鸡汤)。

对程序员来说,实力的三大组成部分——经验、技巧和潜力。

经验

我有十年的android开发经验,真的吗?想到一个段子,一个刚毕业2年的程序员,简历上写我有4年开发经验,为啥?因为加班。

这4年,每天你都有提高吗?每天都了解了你不知道的知识点吗?如果不是,那么这加班,又有何用,只是为了生存而加班,经验?不存在的。

你不是有十年经验,而是把一年经验,用了十年而已。

经验并不等价于工作年限,它是你实力的一个投影,多思考,多总结,才能让经验增加,重复的体力劳动,增加的只是你的年限,而不是经验。

技巧

技巧来源于有效的经验,它是你经验的精华,一个面试者的技巧越丰富,越熟练,那么会反过来让他的经验变得更加丰富。

我认为技巧一般分为两个部分——内功和外功。

内功主要是对技巧深度的研究程度,表现在你对一个疑难问题的排查、一个复杂需求的实现,而外功,表现在你技巧的广度,对解决方案提出最优技术选型,架构的设计能力等方面。

潜力

所谓潜力不错,可能是对你能力不足的一个美化修辞,这个一定要注意区分。

真正的潜力,主要体现在5年以内的求职者,再之后的潜力,就转化为经验和技巧了,工作的前几年,经验有限,这时候一个人的学习能力和思维能力,就是他潜力的体现。公司实际上是非常愿意招有潜力的求职者的,一方面可以以很便宜的价格,招到不错的打工人,另一方面,团队可以小小的花力气将他的潜力激发出来,这样相当于获取了一个经验技巧不错的求职者。

那么如何让自己显得有潜力呢?

腹有诗书气自华,潜力主要来源于你的思考力和思维力,这些能力会潜移默化的让你变得有潜力,所以,平时多思考,多阅读,才能不断提高自己的潜力。

在面试过程中,潜力具体表现在下面几点:

  1. 学习能力:要体现出你的学习能力,这件事情虽然不会,但是可以快速学习,借助类似的知识,触类旁通,快速上手。
  2. 逻辑思维能力:做事情安排合理,分析问题有迹可循,解决问题能抓住重点。

为啥要面试

前面说了,面试是一个双向选择的过程,除了面试者本身的这些硬条件外,还有些方面也是面试者需要注意的,这里简单的列举下。

  • 尽可能选择现场面试、视频面试,避免电话面试,面对面的沟通往往是最高效的,不要因为沟通问题导致面试的失败。
  • 注意细节,回答问题的时候,尽可能完善一些,比如边界条件,方案限制,树上的鸟有没有聋 子。
  • 面试者是一个被观察者,你的一举一动,都可能给你带来正面或者负面的影响,所以,如果你很重视这次面试的话,尽量稳重一点。

等等,讲了这么多,回到最初的问题,我们为啥要面试?

废话,当然是为了跳槽,那么为啥要跳槽,干的好好的,为啥要跳呢?

跳槽,无非是两点:

  1. 钱不到位。
  2. 心不到位。

钱不到位很好理解,就像前面那个很有潜力的求职者,进公司培养一段时间后,潜力变成了经验和技巧,但是钱没跟上能力的涨幅,那么这个不到位就很好理解了,所以通过跳槽来寻求这种平衡,就自然而然了。

而心不到位,则是另一种情况,简单的说,就是在公司受委屈了,升职没通过,成果被人抢了,被背黑锅了,被同事、产品、测试、领导怼了…

说了这么多,在你鼓起勇气跟老板谈离职前,一定要先想清楚现在的状况,避免一时冲动,假戏真做了。

工资工作比(时薪)

首先,要认清自己,认清环境。

在当前的社会中,特别是去年整个市场经济都不好,整体大环境处于比较差的局势,这时候冲动离职的结果,很可能就是长时间的空窗期,即使你特别特别想离职,人在屋檐下,有时候不得不低头,学一学司马懿的隐忍精神,都是成年人,当一当缩头乌龟又不会死(当然,这是针对老年人说的,年轻人就是要一把梭,那我也不反对)。

认清自己,是了解你目前的状态:

精神状态——是否能够适应加班,以及何种程度的加班

家庭状态——是否能够工作生活平衡,还是压根不需要平衡,以及通勤时间等等这些因素。

一个不加班月薪2w的工作,和一个加班疯狂月薪4w的工作,我相信每个人的选择都不一样,这就是工资工作比,把这些条件列出来,可以帮你更好的选择是跳槽,还是改变。

跳,必须跳

那么什么时候,可以说是必须跳槽的时候呢?

这个其实没有定论,我总结了一些方面,可能不全,也不一定对,博君一阅耳:

发展受限:特别是在公司职位不高的时候,这是你急速成长的时候,如果因为一些原因导致你在这家公司无法正常成长,那么这个时候,就要考虑跳槽去寻求成长了,不然仅凭一己之力,也是无法翻身了。

工资严重倒挂:工资倒挂其实很正常,因为通胀的原因,每年的新员工工资可能都比上次要高,如果你涨幅跟不上,就会出现倒挂,一旦这样恶性循环下去,钱和心,就都不到位了。

公司的发展受限:比如公司濒临破产,行业竞争力下降,导致业务下滑,这时候,如果你不是公司核心骨干,誓与公司共存亡,那么也可以跳了,毕竟不是核心的你,也无法左右公司的前景。

还有一种情况,比较特殊,那就是兴趣和激情。

如果你对每天的工作完全没有了任何激情,没有了任何兴趣,那也应该考虑是否要跳槽了,换个行业,或者是换个自己真的感兴趣的工作,是需要思考的问题,快乐学习、快乐工作,没有了波澜的生活,你和咸鱼有什么区别,一个理想的工作,就是每天做着自己真正喜欢的事,而且工资还不低。

国企事业单位这种铁饭碗除外,毕竟还要向生活低头。

面试技巧

正视面试官

当你有了足够的能力,面试就自然不慌不乱了,这就跟考试一样,平时学的都掌握了,能力真实有效,上了考场也能游刃有余,特别是面试,比考试更简单,因为面试官也同样在被你面试,而且,面试官的压力也不一定比你小,面试的时候,他也会有很多担心:

  • 这么久没招到人了,活都要没人干了。
  • 是不是我的要求太高了?
  • 这个人要是我过了,结果老板面了很不满意怎么办?
  • 这人到底行不行,别来了让我背锅。
  • 我的问题会不会被他鄙视啊,万一我记错了咋办。
  • 这人太厉害了,万一来了把我挤下去怎么办。

你看,面试官的压力也不比你小多少。

掌握主动权

在面试过程中,一般有三个地方你可以获得主动权,把握好这三个地方,能为你的面试增光添彩。

  • 自我介绍。
  • 提问中反客为主。
  • 最后的面试者提问。

注:这里的反客为主,千万不要没事就反问面试官!!!面试官内心:“那你给我讲怎么做。”

在自我介绍中,一定要自信,不能上来就给面试官一种萎靡的感觉,可以简要的概括下你的工作经历,特别突出的亮点(意思就是让面试官重点关注这里),切忌复读简历上的东西以及与面试无关的废话,自我介绍不用多,这个时间面试官很可能就是来浏览你的简历的,所以,突出亮点,暗示面试官,快问这个吧,这个我牛逼。

如果你有一些特别出彩的地方,能让面试官一下子记住你,那就更好了,因为大部分时候,面试官都不记得你的名字,只记得,那个「写了两本畅销书的」、「那个头条的加班狂」、「那个一身肌肉的程序员」,这些标签,可以让你快速在面试官脑海里留下印象,第一印象建立好了,主动权就慢慢的掌握在自己手里了。

在提问中,面试者不一定是完全的被动者,在碰到一些不能回答的问题时,可以尝试反客为主,当然不是说:「我不知道,要么你来给我讲讲?」这样的话,而是将面试官引导到你的熟悉的场景来,例如:「这个问题我不太清楚,想问下这个问题的场景是什么,这个场景我的解决方案是什么」,这样将面试官引导到自己熟悉的战场,是一种很好的沟通策略。

而最后的面试者提问,是面试中的最后一步,但这最后一步,通常只是一个过场。

所以,这里不要问太尖锐的问题,比如「工资」、「我今天的面试表现」这样的问题。你可以问一些例如「职位的考核标准」、「团队的发展规划」这样的问题,特别是能给出一些对公司项目的建议、工作流程的优化等等,让面试官愉快的结束面试的同时,也让面试官能有一些收获,这样面试官对你的评价,自然会更上一层。

补充一点,回答问题,尽可能给出超出期待的回答,例如「Glide是如何管理内存图片的」,面试官可能只是想问你是否知道LRU算法,但是如果你不仅回答了LRU,还给出了Glide管理内存的整个策略 (不要说太多,点到为止即可) ,这样就超出了面试官的预期,这是很好的加分。

谈薪水

HR可精了。

和HR谈薪水就是一场心理博弈战,打不过打不过。

一般来说,涨幅在你上家工资流水的30%左右,HR一般会使用的套路就是:

  • 画大饼:把未落实到合同的收益也算给你,或者是一些看不见的隐形福利。
  • 算总包:把除工资以外的一些福利收入也算到base中,让你觉得base高了很多。
  • 心理战:我们已经有其他候选人了,我们还有其他的面试者,你的面试情况一般,反正就是各种心理博弈。

咋破?合理的评估自己的面试表现,加上一些心理技巧,以及根据自己对这份工作和公司的取舍。

最后

到这里本文就已经差不多了,希望可以帮助大家在未来的面试中取得不错的成绩

在这里我再分享一份多位大佬亲自收录整理的Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来面试取到一份不错的答卷。

当然,你也可以拿去查漏补缺,提升自身的竞争力。

如果你有需要的话, 点击这里快速免费获取

以上是关于大厂Android面试官亲述:大厂面试背后的真相,如何拿到高薪Offer?的主要内容,如果未能解决你的问题,请参考以下文章

阿里面试官亲述:1000道Java高频面试必考题祝你轻松拿Offer

阿里面试应该注意什么?通过5轮面试的阿里实习生亲述

字节跳动资深面试官亲述:springboot模块化架构

字节跳动资深面试官亲述:java异步回调接口

字节跳动资深面试官亲述:java异步请求嵌套事务

字节跳动面试官亲述:问哪些问题能试出一个测试工程师真正的水平?