基本情况
先说一下个人基本情况,计算机科学与技术专业。主要学的Android开发,所以投的岗位都是Android开发工程师。投了知乎,内推了阿里蘑菇街腾讯百度网易。腾讯百度都没有收到面试,知乎Skype面试,蘑菇街阿里电话面试,网易现场面。知乎二面被拒,蘑菇街阿里一面被拒,网易三面,然后备胎了,前几天被通知过了,收到了offer。自己整理了一下被问到的问题,现在分享给大家,另外自己整理的一下资料也会发给大家,希望能帮助到各位求职的小伙伴。
面试经历
7月确定想走后开始看各种面经,复习基础知识,月末开始投简历,心里比较中意字节跳动,但深知第一次就面大概率凉凉,就先投了美团、快手。
美团率先约面试,算法题都比较简单,很快做出,但第一次确实很紧张,导致很多基础知识一片凌乱,二面就挂了……
快手可能是投的岗位和能力不大匹配吧,没收到面试通知……
之后就找朋友内推,投了字节跳动,一周后开始电话一面,面完后就那边和朋友玩了两天。结果,过了两天都还没收到回复,以为凉了……
后面,第三天时,二面面试官加了我的微信,开始约二面时间。二面结束后,面试官明确说让我等三面(开心) 。
大约五天后,面试官约了三面。
三面过程很顺利,结束后又过了三天,和HR简单聊了聊,然后说还有一个leader面。
后面逛Boss直聘时有猿辅导要简历,给了过去后也面试了一波,也是白纸写代码,三轮技术和一轮HR,比较稳妥的过了。
期间有一道题很简单但脑子就是蒙了,面试官引导多次无果后换了个题,很快做出来了。(这里给猿辅导面试官们点赞,体验都很棒)
四面过后,HR问我还面谁没,我明确说了在面腾讯还差一轮 ,于是HR说等我面完腾讯再讨论具体待遇,但offer确定了。
字节三面技术题
一面
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:三色球排序
总结
最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上我整理的几十套腾讯、字节跳动,京东,小米,头条、阿里、美团等公司19年的Android面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
详细整理在腾讯文档可以见;
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
roid的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
技术进阶之路很漫长,一起共勉吧~