我是10月份参加字节跳动和华为的面试的,虽然我只拿下了字节的offer,但是我自己也满足了,想把经验分享出来,进而帮助更多跟我一样想进大厂的同行朋友们,希望大家可以拿到理想offer。
自我介绍
我是14年从南京工业大学毕业,直到现在,我已经在Android开发的这条路走了6年。在这6年的时间,我见证了移动互联网的“盛衰交替”,身边的同事都是转行换业,所见的市场行情也是一片萧瑟。
如今,虽然Android已风光不再,但是“它”还是那个Android,还是那个我赖以生存、夜以继日陪伴着我的朋友。所以,我永远不会放弃它。
好了,情感已经抒发的差不多了,我们进入正题;虽然我没有拿到两个offer,但是字节跳动的那场面试我也走到了最后一面,没拿到offer,还是觉得挺可惜的。这场你们就当凉经看好了;
10.06 字节跳动随笔
从8、9月开始,我就没少投递简历,刚开始的时候接到了很多邀我面试的电话。虽然很多,但是有些公司我是实在不想去,薪资太低了。
拒绝以后,在等待中时间很快来到了10月6日,当天下午的2、3点钟,我正温习着面试题的时候,电话咚咚咚的响起,接听过后是个声音很好听的女生,她说她是字节跳动的HR,问我是不是投了我们公司的XXX部门的Android研发岗,我说是。她便问我晚上有时间,约我视频面试。我回答道有的,于是晚上8点钟的时候开始了字节跳动的第一轮技术面试。
10.06 字节跳动一面:技术面(电话面)
- 自我介绍+介绍项目
- Activity生命周期,每个回调方法的作用是什么?
- 事件的分发机制
- 内存泄漏
- 遇到过滑动冲突吗?滑动冲突的解决方法
- 如何进行单元测试,如何保证App稳定 ?
- 说一说Android中如何查看一个对象的回收情况 ?
- Apk的大小如何压缩 ?
- 如何通过Gradle配置多渠道包?
- 插件化、组件化、热修复原理分析
电话一面当时讲了大概一个小时,面试官在匆忙之中结束了面试。在我以为我自己要挂掉了时候,第三天的下午HR约我二面。
10.08 字节跳动二面:技术面(视频面)
- 深挖项目
- Activity 生命周期,A启动B两个状态分别是什么 ,A的onStop一定会执行吗?
- surfaceView 和普通view的区别
- Bitmap高效加载
- 线程之间的通信方式handler
- 内存泄漏
- 为什么handler可以线程切换
- Rxjava map关键字的作用是什么
- 怎么获取view的宽高,如何确定值是准确的,说了view.post()补充viewTreeObserverOnGlobalLayoutListener
- 场景题:头条列表有多个不同的card,使用RecyclerView怎么解耦getViewType,获得不同的card
说了用个管理类映射,面试官说用注解、反射,依赖注入。
二面总体感觉还不错,90%都说到点上了。过了半个小时,HR打电话过来问我考虑来北京工作吗?因为我是辽宁人嘛,之前大学毕业后就在北京待了4年,这两年因为家里催婚的问题,我才回了大连。在考虑很久后我跟说她我两天后,给你消息,结果两天后,我再一次的去了北京。
10.15 字节跳动三面:技术面(现场面)
HR小姐姐跟我说,来了北京以后跟她说,约三面的时间。我是十一号的晚上到的北京,放下东西后睡了一觉,第二天上午跟HR打了电话,约了十五号的面试。
项目深挖
ARouter路由原理
如何管理过多的路由表?
看视频的时候网络请求很慢怎么优化?
说说HTTP3.0有什么改进?
App上线后用户使用时卡顿怎么查看是什么原因?
HR面 30分钟
对面试官的评价
了解字节跳动吗
学习经历,遇到了什么挫折,怎么解决的
对字节跳动有什么建议
你觉得字节跳动存在的问题是什么
挑选工作你看中的是什么
有offer吗?
你对一份工作更看重哪些方面?平台,技术,氛围,城市,还是money?
理想薪资范围;
理想中的工作环境是什么?
谈谈你对跳槽的看法
说说你对行业、技术发展趋势的看法
这次面试依然感受到了字节面试官的耐心温柔与专业,卡住时面试官会引导问题的回答,总体感觉如沐春风,不知不觉就一个半小时了。面到一半面试官说看得出来我准备了很多(内心两行泪)
最后聊了聊部门的工作方向和工作时间安排,面试顺利,加油!
HR面试注意常用技巧,可以提前准备。(给大家整理了一些,需要的可以查看我的【GitHub】)
10.24 华为热经随笔
本来字节跳动给我挂了以后,想着回大连的。但是越想越不服气,**索性就把简历投了北京的所有互联网大厂。功夫不负有心人,在10月24号这天,我终于等到了华为的面试邀约。
android事件分发机制,请详细说下整个流程
android view绘制机制和加载过程,请详细说下整个流程
图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?
A、B、C、D分别是四种Activity的启动模式,那么A->B->C->D->A->B->C->D分别启动,最后的activity栈是怎么样的
Service的生命周期,两种启动方法,有什么区别
Handler、Looper消息队列模型,各部分的作用
Binder原理
描述一次跨进程通讯
Bitmap的处理
手写实现一个网络框架(参考Volley)
插件化框架描述:dynamicLoadApk为例子
热修复原理
Asynctask和线程池,GC相关(怎么判断哪些内存该GC,GC算法)
两次面试总结:华为+字节跳动
人生之事,幸之有三;有失、有舍、有得;
简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。
选定你想去的几家公司后,先去一些小的公司练练,学习下面试技巧,总结下,也算是熟悉下面试氛围, 平时和同事或者产品PK时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!
我的学习进阶之路
书籍
- 中级进阶推荐看一下以下这几本书
1.《Android从入门到精通(附光盘)》 明日科技 编
2.《第一行代码2 Android(第二版)》 郭霖 著
3.《Android开发进阶 从小工到专家 》何红辉 著
4.《Android进阶之光 》刘望舒 著
5.《Android开发艺术探索》 任玉刚 著
6.《Android群英传》 徐宜生 著
7.《疯狂Android讲义 》李刚 著
- Android高级进阶
1.Android 源码设计模式解析与实战 第2版
2.Head First设计模式(中文版)
3.设计模式:可复用面向对象软件的基础
学习思维脑图
大学1-4年 架构师筑基必备
工作1-3年
工作3-5年
工作7-10年
(给大家整理了一些学习面经+Android工程师必备学习知识点,需要的可以查看我的【GitHub】)
尾声
面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。
另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。 现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤......所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音决对是一个加分项!
最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。
希望大家都能找到合适自己满意的工作!fighting!