Android开发Android进阶之路

8年Android老司机的面经,教你如何进入阿里、腾讯、华为等大

2020-12-22  本文已影响0人  Android开发架构师

前言

因为离职,前段时间面试了很多公司,其中有让我心血沸腾的经历,也有让我感到失望到无助的经历,我将这些体会都记录下来,细想之后很值得,面了这么多公司,要是最后什么也没有留下来,那就太浪费了。至少对于我来说有些东西在整理总结之后才能得到一个肯定的答案。希望这些能对即将换工作或者打算看看机会的你有一些帮助。文末有面试和必备的技能点总结哦。

为何离职?

先从我的换工作的动机开始说吧。

因寒冬来袭,公司进行了裁员,裁员的时候老大说:『你就留下好好干吧,以后不管公司怎么分股票、期权,肯定少不了你。』我非常信任我的老大,跟着老大一起工作,感觉是一种享受。

但是没想到裁员后,公司内部大动荡,主业务线从客户端A 业务线转移到另外的B 业务线上。我主要负责A客户端的架构,这下可真闲下来了。B 业务线那边的业务量还是很忙的,没时间配合我做一些架构上的事情。于是我每天就看看学习文档,补充点能量。

呆了几天后,就后悔当初没有拿 N+1 走,有一种被老大忽悠的感觉。 因为公司接下来的操作让我很是不爽,先是晚上打车不能超过30,然后福利大减,瞬间没有工作的心情了。再过了一两周后公司宣布新一轮融资成功,可惜只融到了 2千多万美元(按照预期应会更高),然后接着招新人。

我特么无语了,站在公司的角度是没有任何问题的,可以节省开销,也可以容纳新鲜血液。但是我作为一个老员工,心寒,走的员工都拿到了 N+1,我们这些老员工什么也没有得到,反而福利大减,伤人啊! 现在即使我想走,什么也得不到,一种莫名的恼火涌上心头(只怪本人经历尚浅,看不清一些大的趋势,还是老鸟们聪明,拿钱走人,然后换一个新工作,好不自在啊)。

不过理智分析一些这样确实有好处,可以给自己留很多的时间来选择更好的公司。就如此刻的我一样,在公司悠闲的上着班,骑驴找马,遇到合适的,可以立刻走。其实细想一下,如果我当时拿了 N+1 走了后,可能会迫切的需要一份合适的工作,然后迅速入职。至于新公司怎么样,还真不敢确定。

已经动了想走的心,意味着再也不可能在这里很安分的待下去了。

面试分级

于是我决定开始投递简历(世界那么大,我想去外面的世界看看)。这次看机会与往常不同,我决定好好准备一番,然后开始投递简历,主要渠道是 “X钩”,辅助渠道是猎头。

这次看机会我将所有公司分为三类:

  1. A类: BAT公司,非常靠谱,各项待遇都是很优厚的

  2. B类:一些知名的互联网公司(基本都在C轮以上),基本很靠谱,该有的都少不了

  3. C类:就是那些正在招聘的公司,没啥名气,虽然钱多但是事也多。靠不靠谱不知道,只能碰运气

基础知识不可少

以前我基本都是直接去面试,总以为Android工作好几年了,出去面试基本没啥问题,因此带着那份傲娇的自信 总是碰壁,尤其遇到很多基础性的问题,一时真不知道怎么回答?还有一些问题之前都记得很准确,但是在面试官问的时候,就一个大写的懵逼表情。

在我出去面试之前,我已经把 《大话数据结构》 基本看完了(想想我之前的生活,每天早上七点多起床,然后看几页,洗漱完就去公司)。因为有了以前的教训,而且这次我很认真的准备了好久,打算把Java基础巩固下,所以我花了一些时间,自己整理了一份Java基础和Android知识点笔记文档,然后复习了一遍。

面经

面试内容有很多,说起来可能会长篇大论,以下就总结性的说说,不再说明具体细节,只说我们之后在面试的时候应该注意的地方,以及他们对应聘者的要求。

新浪


记得几年前去新浪面试的时候,傻傻的都没准备就去了,结果第一关就挂了。

这次是下午去,外面还飘着毛毛细雨。去了后竟然tmd让我做面试题,哥已经不做面试题很多年。但是想起了之前的经历,还是老老实实写写,据我估计面试的哥们应该会问上面的东西。还好这次做了万全的准备,刷了 N 多面试题,补充了基础的数据结构理论知识。写起来如行云流水,嗖嗖嗖的没几分钟就完了。

第一个面试的哥们看看卷子,没啥意见,然后问最后一道纠错编程题有没有什么问题,我虽然指出了几个错误,但是感觉他还不是特别满意。因此我仔细看了下,原来是一个静态变量引用了 Activity 的上下文,然后指出,他再问了一些偏底层的东西以及性能优化的地方,轻轻松松就过了。

等到第二面的时候,这个人一看就是技术大牛,问了很多 Java 层面的东西,多态,抽象类,多线程,内存管理等等。我感觉回答的不是太好,多态那有点问题,其他的应该还可以。

然后就进入了第三面,第三面的面试官应该是部门负责人,问了工作经历上的事情以及兴趣爱好,之后的发展方向,想做什么层面的。最后很不幸的是在等待第四面的时候,最开始给我题的美眉告诉我时间很晚了,让我先回去,之后等消息。

至少这次来比第一次高级了很多,不至于第一轮就被刷下去。最后分析了下原因,还是薪资要的太高了,尤其是这类公司。

滴滴


一年前去过一次,很可惜在第一轮的时候,因为在某些适配方面回答的不是太好,因此失去了机会。

这次已经准备很多了,进来后还是在去年的位置上坐下等面试官。说实话感觉滴滴成长的很快,办公环境都变得更漂亮了,哈哈哈。

这个面试官一看就是一个技术宅,开始对我各种炮轰。面试题一个接一个的,在我连续回答十来个题后,看见他还在问,记得在提及到 volatile 的作用的时候,我就开始不爽了,这个东西记得之前在源码里面见过,但是具体的一时说不上来,看着他那样子,埋头在纸上给我出题,我就不怎么配合了。面试了那么多家,就你问了 N 多问题,还有完没完了(其实这也算是抗压的一种面试方式)?我直接说不知道,然后他再问了几个基础性的东西,我想都不想直接说不知道,他貌似已经看出来我已经很不爽了,然后说,那你说说你项目中有没有比较 NB 或者比较有亮点的地方。我的回答直接是:没有。然后他也就不怎么问了,说那先这样。我说:好,就这样,我先走了。 然后潇洒的离开滴滴。

现在想想真tmd很2B,应该低调低调再低调。也可能是那天下午太累了,上午面试了两家,而且已经拿到两家的 offer 了,还都不错,在这特么憋屈,才表现的如此差劲。其实对于问题,知道的话就好好说,不知道的话,可以说说思路和想法,然后说说以后会怎么做,利用迂回包抄策略去应答,准没错。至少给面试官知道你还是可以动脑子的人。

在此我真心后悔当时的冲动,向滴滴那位面试官表示歉意。其实不是那样的,我们只需在面试的时候尽力表现自我就可以,以后切莫带着情绪去看待或者回答问题。

对于人生中的很多问题也是这样的,这次栽到坑里去了(用我老大的话来说,你不在这里踩坑,总有一天也会在另外一个地方踩到,到时候的损失就不可估计,趁着年轻多多历练自己),总结之后才能更近一步。

百度


我在等候区等到第一个面试官,然后我们简单聊了下 Android技术,其中有两点有必要提及:

面试官语塞,然后给我说 Dialog 是必须要依附在 Window 上,Toast 其实也是一个 Window。我听着这些话,就想起以前看过的一篇文章上也确实是这么说的。估计该面试官回去要好好补充下一些知识了哦。 然后该面试官让我不能用 Arraylist,用数组 写一个队列。这块刚好我在之前项目中特意用了一下,写的时候,主要有三个方法: put(), get(),peek(). 然后考虑下队列的特性,一端进入,一端出去。我当时遇到了盲点,没怎么写完,最后给面试官说了下思路,大体是对的。但是关于选择位置那块没怎么想好。不过这不阻碍我进入第二轮。

第二轮面试的时候,面试官带了很多纸张,我瞬间压力山大,知道不太妙。不出所料,这个面试官,从动画实现原理,到 handler 实现原理,一步步深入各种原理,当我感觉回答的不错的时候,然后他就顺着我的问题继续深入。我只能说我尽力了,有些东西,平时开发的时候真心不注意,但是就因为没有留意,所以就没法继续回答他的问题。

面试官把我带出大厦的那一刻,我心情很不好,很可惜没进入百度,之后应该需要准备很多东西。我要说,我还会再来的,哈哈哈! 最后也归还身上的一个牌子到前台后,省的被拉入到黑名单(好吓人的样子)。

以后有时间多看看原理性的东西,最好整理一个自己的博客,写上自己的一些看法和感悟,这样记得最深刻。即使几年后也不会遗忘,如果只是看看别人总结的东西,也许有一天你就会模糊。

阿里


第一个面试官来了后问了一些基本问题,很顺利就进入到第二轮面试。

第二轮也基本是技术面试,问了一些 Android 基础和 Java 基础以及内存管理。

第三轮的面试官应是部门负责人,看起来很好说话的,问了一些经历和基本情况后,问我薪资要多少以及之后的发展方向。我说要合适的薪资,之后希望在架构方面发展,但是也可以从业务开始。貌似这里回答的不怎么好。然后让我留了他的联系方式,我知道很有戏哦。

因为我在进入K 公司的时候也是这样的,老大感觉我很不错,于是留了微信后,我基本就顺利入职。回去后的一两天还是很焦虑的,但是我知道大公司都是有流程的,因此我告诉自己不要焦急。过了一两天后他主动加我微信,然后问了些基本情况后,就说他要做最后的总结,让我等着,最迟一周后就有消息。

一周后等到了通知,拿到了offer。

总结:面试必备的技能

这里只简单列举一些东西,可能不是特别全,但是却特别适用,也不一定按照下面的流程,有可能是穿插的,也有可能都有,根据公司的规模以及面试官的心情而定(哈哈哈 ,你们就自求多福吧)。建议大家还是要将下面的东西全部掌握,没事写写代码,练练手,在项目中能用到的地方一定要用,有可能会遇到很多坑,一定要自己想办法填坑,之后回忆起这段经历,肯定可以敢理直气壮的跟别人讨论。如果你说的头头是道,那么对方会先输一层,然后在心里对你佩服。

1、一般情况下第一轮都是基础面试,需要扎实的基础

2、第二轮的时候需要了解更深层次的东西

3、能进入第三轮基本没什么问题,但是要注意以下问题

最后我会提供一些我面试准备阶段复习所用到的一些基础知识点,面试必问的一些基础原理一定得知道,不能含糊,要不然面试过程中必定会露马脚。有需要的小伙伴可以参考一下,GitHub地址:https://github.com/733gh/Android-T3/blob/master/JianShu.md

上一篇下一篇

猜你喜欢

热点阅读