因为疫情原因,公司进行了裁员,裁员的时候老大说:『你就留下好好干吧,以后不管公司怎么分股票、期权,肯定少不了你。』我非常信任我的老大,跟着老大一起工作,感觉是一种享受。
但是没想到裁员后,公司内部大动荡,主业务线从客户端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技术,其中有两点有必要提及:
- 其中一点是:说说 View 的事件分发机制。然后我就说了好多,从 WindowManager->window->Decorview->子 view。最后我说当所有的 view 都不处理事件,事件会最后会传递到 Activity 的 onTouchEvent 上。然后面试官立刻说:『啥?你这是颠覆我的三观啊?』 然后我意识到可能有问题,但是记得 《Android 艺术开发探索》上确实写过到 Activity,但是不是到 onTouchEvent还真没底。面试官很自信的样子,让我颤抖了。但是随着我的坚信,面试官说:『不行,我不能冤枉你是不!』立刻在手边的 MBP 上看了一下,自言自语感叹道:『还真有啊!』 我顿时无语了。
- 另外一点是:问我 Service 上能不能弹出对话框。对于这个问题,我印象最深刻了,记得一年前的时候,在另外一个公司就因为这个问题让我尴尬万分,回去后专门对这块进行补充。我的回答是可以的,但是面试官面带诧异的表情告诉我这是不行的,Dialog 必须要依附于 Window 才能显示出来。然后我的解释会让面试官郁闷一会:我说这个是可以弹出的,我之前也专门试过,不过他弹出是有条件的。 条件是:必须在 Manifest 里面注册系统权限在显示 dialog 的时候必须要加一个 flag. 我的理由是:系统对话框可以在低电量的时候弹出对话框,我们同样也可以采用该方式来实现。
面试官语塞,然后给我说 Dialog 是必须要依附在 Window 上,Toast 其实也是一个 Window。我听着这些话,就想起以前看过的一篇文章上也确实是这么说的。估计该面试官回去要好好补充下一些知识了哦。 然后该面试官让我不能用 Arraylist,用数组 写一个队列。这块刚好我在之前项目中特意用了一下,写的时候,主要有三个方法: put(), get(),peek(). 然后考虑下队列的特性,一端进入,一端出去。我当时遇到了盲点,没怎么写完,最后给面试官说了下思路,大体是对的。但是关于选择位置那块没怎么想好。不过这不阻碍我进入第二轮。
第二轮面试的时候,面试官带了很多纸张,我瞬间压力山大,知道不太妙。不出所料,这个面试官,从动画实现原理,到 handler 实现原理,一步步深入各种原理,当我感觉回答的不错的时候,然后他就顺着我的问题继续深入。我只能说我尽力了,有些东西,平时开发的时候真心不注意,但是就因为没有留意,所以就没法继续回答他的问题。
面试官把我带出大厦的那一刻,我心情很不好,很可惜没进入百度,之后应该需要准备很多东西。我要说,我还会再来的,哈哈哈! 最后也归还身上的一个牌子到前台后,省的被拉入到黑名单(好吓人的样子)。
以后有时间多看看原理性的东西,最好整理一个自己的博客,写上自己的一些看法和感悟,这样记得最深刻。即使几年后也不会遗忘,如果只是看看别人总结的东西,也许有一天你就会模糊。
阿里
第一个面试官来了后问了一些基本问题,很顺利就进入到第二轮面试。
第二轮也基本是技术面试,问了一些 Android 基础和 Java 基础以及内存管理。
第三轮的面试官应是部门负责人,看起来很好说话的,问了一些经历和基本情况后,问我薪资要多少以及之后的发展方向。我说要合适的薪资,之后希望在架构方面发展,但是也可以从业务开始。貌似这里回答的不怎么好。然后让我留了他的联系方式,我知道很有戏哦。
因为我在进入K 公司的时候也是这样的,老大感觉我很不错,于是留了微信后,我基本就顺利入职。回去后的一两天还是很焦虑的,但是我知道大公司都是有流程的,因此我告诉自己不要焦急。过了一两天后他主动加我微信,然后问了些基本情况后,就说他要做最后的总结,让我等着,最迟一周后就有消息。
一周后等到了通知,拿到了offer。
总结:面试必备的技能
这里只简单列举一些东西,可能不是特别全,但是却特别适用,也不一定按照下面的流程,有可能是穿插的,也有可能都有,根据公司的规模以及面试官的心情而定(哈哈哈 ,你们就自求多福吧)。建议大家还是要将下面的东西全部掌握,没事写写代码,练练手,在项目中能用到的地方一定要用,有可能会遇到很多坑,一定要自己想办法填坑,之后回忆起这段经历,肯定可以敢理直气壮的跟别人讨论。如果你说的头头是道,那么对方会先输一层,然后在心里对你佩服。
1、一般情况下第一轮都是基础面试,需要扎实的基础
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
!!**](https://bbs.csdn.net/topics/618165277)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!