专科毕业,网易被裁,怒刷底层原理,转拿字节offer,24K+

本人专科院校毕业,因实习表现突出留在了网易,总的算下来也有6年的Android开发经验了,但是去年因为结构优化的原因,公司裁员,而我很不幸成为了被裁的一员。

我被工作了多年的公司辞退了

说实话,我到现在也没搞明白自己为什么会被裁?难道是因为人到中年了。

难道是因为我的专科学历?不应该啊,这都工作多少年了,还回头看我的学历?

虽然心底还是不服气,但是我也懒得继续纠缠,闹到法庭也没必要,不然怕是最后一点体面也无法保留。不管怎么样,我最后还是选择了拿补偿走人。

所幸,大厂还是有些良心的,补偿的额度还挺高,我也乐得清闲,趁这段难得清闲的日子好好准备下一份工作吧。

专科毕业,网易被裁,怒刷底层原理,转拿字节offer,24K+_第1张图片

现在面试题都这么难的吗?

被裁后,我先是去了试了一下水,去试了一下腾讯面试,但是却被面试官怼的体无完肤,直接被out了。下面是我的面试经历。

那天我特意理了个发,刮了下胡子,穿上了我在去年双十一抢到的匡威,连袜子都是崭新的NB。

鉴于邮件对考查内容写的一清二楚,我一看那些要点和要求都是工作中接触过的也就没有引起重视。所以一面,我并没有做太强的心理建设。

但是事实证明我还是太年轻了,我和面试官的初次见面以我的无知和自信开始,以我的局促和落寞结束。

一开始,是自我介绍,公司职能,项目简介……到这里一切都很正常,但是,后面他根据我的简历深挖的时候就越来越不对劲了。面试官问的题目居然和我理解的完全不一样,和平时工作中接触到的也完全不一样,只能怪我对 Framework那些底层理解的不够透彻。

为了不显的太low,我假装不经意提了提自己在GitHub上有自己的开源框架和那两百颗星星,但是他并不care。

我的花样耍完了,就到了他肆意挥舞小皮鞭的环节。没错,他又在继续深挖我的底层:“我看你简历上的这个项目你貌似是主力,你这个项目的底层是怎么实现的?”

看来我如果还没求饶,他就不打算放过我。

…(这里省略一些不清楚、不知道、忘记了之类的词藻,保留一丝尊严。)

接下来是关于Binder哲学三连“是什么?为什么?怎么用?”

我把肚子里仅有的关于Binder的一滴墨水分成了三滴挤出来,仍然没有让他满意。

此时此刻,除了低头委屈说不会,内心的我已经意识到了现在的面试问题的严重性,平常听说面试你只要一喊不行,对方就会体贴地换一个方向继续深入,这次我都快被搞哭了,他居然换了个姿势继续往深怼,这谁顶得住啊……

到了这一步我是完全的凉了。本来是仗着自己有点工作经验,以前的平台也还不错,就想出来碰碰运气,结果这回事死耗子没碰着,还给我差点丢了一条命。

往后又问了一些数据结构的问题,我隐约记得是毕加索还是毕加树来着,不好意思跑错片场了。

总之,场面再度十分尴尬。

专科毕业,网易被裁,怒刷底层原理,转拿字节offer,24K+_第2张图片

面试小结

其实面试官的套路大多如此,每个技术都尽可能的深入,深到你不会为止,并不是非得要把你折磨的不能自理,而是为了考察你的技术水平到底如何。

但是事到如今我的大脑已经无法给自己完成心理建设了,摧枯拉朽般智商情商性商逆商全线崩盘。

值得庆幸的是,我居然急中生智,鬼使神差地用了十种及以上不同的方式表达了我不会,每种方式都尴尬而不委婉,并且还不重样。

好歹面试一波儿不能让人家觉得我一无是处,多少还算有点文笔…

其实我平时稍微多看哪怕一眼资料,多刷一道题目也不至于是这样尴尬的局面。

我要逆袭

大家看到这里是不是已经在心里嘲笑我一百遍以上了,如果是这样,那我本次写文又有什么意义?找虐?我自然是要逆袭的。

机缘巧合,我在腾讯课堂上面看见了一个活动,说是大佬免费的面试指导(嗯,反正是免费,我就去试了一试)。

然后我的简历被当做反面教材嘲笑了(说出来都是泪),通过交流,老师也发现了我的底层原理短板,给了我一份手册《Android Framework 精编内核解析》,让我好好学一下,现在是免费活动赠送的。

我一看,哟,4.63MB,分量还挺足,先回去复习一下吧。

复习一个月后,经过师兄的内推,我幸运的得到了字节跳动的面试机会,最终历经5面斩获了字节跳动(抖音Android岗)offer,不得不感叹一下自己还是被幸运女神眷顾的。

专科毕业,网易被裁,怒刷底层原理,转拿字节offer,24K+_第3张图片

下面简单分享一下我这次5面字节跳动的一个真题情况,希望能够对大家有所帮助。

一面

1:插件化。启动activity的hook方式。taskAffity。
2:okhttp支持HTTP2?http2的功能有哪些?tcp方面拥塞控制?tsl的握手和具体的非对称加密算法。非对称名称
3:handler的post(Runnable)如何实现的。callback,runnable,msg的执行优先级。阻塞是怎么实现的?为什么不会阻塞主线程?
5:求二叉树中两个节点之间的最大距离。
6:206含义,未修改资源是哪个,302含义,301含义
7:多进程通信问题。binder优势。aidl生成的java类细节。多进程遇到哪些问题?
8:动态代理传入的参数都有哪些?非接口的类能实现动态代理吗?ASM的原理
9:Application和Activity在Context的继承树上有何区别?二者使用上有何不同?
10:任意一颗二叉树,求最大节点距离

二面

1:设计一个日志系统。
2:内存泄露的分类。怎么查看内存泄露的问题
3:touch事件源码问题。
4:组件化的问题。module和app之间的区别。moduler通信是如何实现的。
5:native奔溃的日志采集,怎么处理?
6:注解实现一个提示功能:如果int的值大于了3需要提示。

三面

1:介绍下flutter的启动流程
2:介绍下flutter与weex的区别
3:组件化介绍一下
4:webview中与js通信的手段有哪些?
5:介绍下flutter_boost的原理

四面

1:适配器和装饰模式各自特点和使用场景
2:视频编解码是怎么做的
3:三色球排序

HR面

这面基本上就是闲聊,问了下我有么有其他的面试什么的,聊了下薪资待遇。然后我问了一些他们公司的加班情况什么的,期间HR问了下我的抗压能力和作息规律,我表示我是夜猫子,我们交谈的很愉快,双方都很满意。

专科毕业,网易被裁,怒刷底层原理,转拿字节offer,24K+_第4张图片

面试指南——经(教)验(训)分享

我看见网上已经有很多分享成功的经验的文章了,这里就分享一下失败的教训吧。

腾讯那次面试我已经被折磨的身心俱疲了,面试持续了将近四十分钟,嘴开始打漂,情绪紧张思维也难以集中,回答中开始大量出现我感觉、我猜、可能、应该是等高危词汇。回答的中间穿插着我不自信的连接词“嗯~啊~哼~哦~”

这次作为loser再说说在求职前期准备过程中暴露出的问题,望大家引以为戒。

1、尽量早早做好准备

面试不应该是准备好了才去,而是时刻都准备好了。如果非要说从什么时候开始准备离职跳槽,我的建议是半年。

别像我一样,面试了才开始看算法和数据结构。

2、先找小公司面几次进入状态,再投大公司一举拿下。

我蠢到一开始就动用了我所有的人脉,投了bat及其他二线大厂所有的内推。

算上字节跳动已经是我黄掉的第三个响当当大厂了,踩着大厂当垫脚石攒面试经,除了觉得自己蠢,我还觉得自己真特么牛逼。

3、你的简历,就是复习大纲

总有人拿网上找到的拿了bat offer的人提供的复习大纲复习,结果发现并没啥卵用。

我这次字节的面试,他提出的所有的问题全部是基于我简历中的技能清单。

我认为很多人但凡能做到简历中技能清单描述的样子,就已经算了不起了。

如果简历中感觉无料可写?我推荐一个好办法:

听说过名字,就写了解;

跟着帖子写过demo,就写熟悉;

项目当中用过,就写熟练掌握;

项目当中经常用,就写精通;

我就是这么写的,结果很显然,出来混,总是要还的,敢装逼,就活该被人凌辱。

4、警惕舒适区

“如果程序员对职场感到迷茫,对眼下的舒适感到不安,我建议他出去面试,不见得要走,但是你要出去,听听市场对自己的评价。”

这句话是在一个求职公众号里看到的,我觉得不光程序员,任何职场人都该深以为然。

我对职场虽不迷茫,但是面试一波儿就发现,我在毫无意识的情况下,在工作三年这个节点成长上已经被人甩下一大截,更要命的是对基础知识的掌握程度完全比不上应届毕业的实习生。

往后日子里赶紧老老实实看书,踏踏实实做事儿,早日兑现自己曾经吹过的牛逼。

最后

文中我提到的那次免费活动 获得的《葵花宝典》PDF文档,免费分享给大家,希望能帮助到你面试前的复习,并找到一个好的工作,相对来说也节省了你在网上搜索资料的时间来学习!!!

下面是这份资料的细节部分展示,手把手,保姆式教学,教你透彻理解这两个知识点,教你吊打面试官。

需要份资料的可以点击下面的蓝色字体免费获取

(一)Handler原理

1.Handler Looper Message 关系是什么?

  • 分析 Handler
  • 发送消息
  • ……

2.Messagequeue 的数据结构是什么?为什么要用这个数 据结构?

  • 为什么要用 Message Queue
  • Messagequeue 的数据结构是什么?
  • ……

3.如何在子线程中创建 Handler?

  • ……

4.Handler post 方法原理

  • 源码分析
  • 整理
  • ……

5.Android 消息机制的原理及源码解析

  • 消息机制概述
  • 消息机制的源码解析
  • ……

6.Handler 都没搞懂,拿什么去跳槽啊?

  • 重识 Handler
  • Handler 原理解析
  • Handler 的延伸
  • ……

7.Android Handler 消息机制中的迷惑行为

  • 带有消息队列线程概述
  • 带有消息队列线程的具体实现
  • ……

需要份资料的可以点击下面的蓝色字体免费获取

(二)Binder原理

1.学习Binder前必须要了解的知识点

  • Linux中的IPC机制种类
  • Android中的IPC机制
  • Linux的IPC通信原理
  • Binder的通信原理
  • 为什么要使用Binder
  • 为什么要学习Binder?

2.ServiceManager中的Binder机制

  • 基于Binder通信的C/S架构
  • MediaServer的main函数
  • 每个进程唯一的ProcessState
  • ServiceManager中的Binder机制
  • ……

3.系统服务的注册过程

  • 从调用链角度说明MediaPlayerService是如何注册的
  • 从进程角度说明MediaPlayerService是如何注册的
  • ……

4.ServiceManager的启动过程

  • ServiceManager的入口函数
  • ……

5.系统服务的获取过程

  • 客户端MediaPlayerService请求获取服务
  • ……

6.……(省略)

需要份资料的可以点击下面的蓝色字体免费获取

最后的最后

啃透这份154页的PDF,底层原理不用愁,帮你提高自己在人才市场的竞争力,吊打面试官!而且,不仅仅是应对面试,Android开发想要进阶学习,想要更大的发展空间就必须深挖底层原理,仅仅停留在表面,前路是很难走的。

最后,祝大家拿下心仪的offer,工作一帆风顺!

你可能感兴趣的:(编程语言,android,面试,移动开发,程序人生)