我是10月份参加字节跳动和华为的面试的,虽然我只拿下了小米的offer,但是我自己也满足了,想把经验分享出来,进而帮助更多跟我一样想进大厂的同行朋友们,希望大家可以拿到理想offer。
自我介绍
我是14年从南京工业大学毕业,直到现在,我已经在Android开发的这条路走了6年。在这6年的时间,我见证了移动互联网的“盛衰交替”,身边的同事都是转行换业,所见的市场行情也是一片萧瑟。
如今,虽然Android已风光不再,但是“它”还是那个Android,还是那个我赖以生存、夜以继日陪伴着我的朋友。所以,我永远不会放弃它。
好了,情感已经抒发的差不多了,我们进入正题;虽然我没有拿到两个offer,但是字节跳动的那场面试我也走到了最后一面,没拿到offer,还是觉得挺可惜的。这场你们就当凉经看好了;
10.06 字节跳动凉经随笔
从8、9月开始,我就没少投递简历,刚开始的时候接到了很多邀我面试的电话。虽然很多,但是有些公司我是实在不想去,薪资太低了。
拒绝以后,在等待中时间很快来到了10月6日,当天下午的2、3点钟,我正温习着面试题的时候,电话咚咚咚的响起,接听过后是个声音很好听的女生,她说她是字节跳动的HR,问我是不是投了我们公司的XXX部门的Android研发岗,我说是。她便问我晚上有时间,约我视频面试。我回答道有的,于是晚上8点钟的时候开始了字节跳动的第一轮技术面试。
这里分享一份我从阿里在职的技术博主那边收藏过来的《Android面试宝典》,里面涵盖了一二线互联网公司的面试真题和面试知识点汇总,需要的朋友可以【加入此处免费打包领取】
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上线后用户使用时卡顿怎么查看是什么原因?
10.24 小米热经随笔
本来字节跳动给我挂了以后,想着回大连的。但是越想越不服气,索性就把简历投了北京的所有互联网大厂。功夫不负有心人,在10月24号这天,我终于等到了小米的面试邀约。在经过四次与面试官的技术交流后,我顺利的拿到小米的offer。
- 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算法)
两次面试总结:小米+字节跳动
人生之事,幸之有三;有失、有舍、有得;
虽然字节跳动面试官在三面时挂掉了我,却不料我却拿到小米的offer,这并不是说字节不好啊,假如字节没有挂掉我,我或许是进了字节。后面就没有小米这摊子事了,所以说有失有得还是挺好的,我也挺满足的。
目前在小米入职也快半个月了,字节跳动的凉经和小米的热经分享出来是为了帮助更多跟我一样想进大厂的同行朋友们,能在面试之前有个参考物。一些不该趟的坑尽量不要趟,最后希望大家可以拿到理想的offer。
总结
开发是面向对象。我们找工作应该更多是面向面试。哪怕进大厂真的只是去宁螺丝,但你要进去得先学会面试的时候造飞机不是么?
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
960页全网最全Android开发笔记 379页的Android进阶知识大全资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图,以上资源均免费分享,以上内容均放在了开源项目:【github】 中已收录,大家可以自行获取(或者关注主页扫描加微信获取)。
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
网友评论