2018年5月份,北京,在所谓的互联网寒冬里,一个普通二本的学生,在小公司工做一年后,跳槽拿到了百度的offer,月薪从9k变为17k,涨薪幅度接近100%。git
2018年末,上海,一个只有高中学历的同窗,经过培训加入了IT行业,刚开始他的月薪只有6k,一年后,他的月薪变为了16k,涨幅接近167%。github
2019年3月,北京,一个xx科技学院毕业的的普通二本,在小公司跌跌撞撞半年后,今年年初忽然开挂,成功拿到了百度、小米、网易和头条的offer,最终他选择了多金的头条,拿到了近30k的月薪。面试
2020年初,深圳,一个物理专业毕业的研究生,在工做短短两年后,拿到了年薪50万的offer,如今已是高级工程师了。算法
像这样的例子还有不少,没法一一列举,可见,没有名校学历和耀眼的光环,照样能够进入大厂拿高薪,只是不少人没有领悟要领而已。设计模式
其实,对于学历普通也没有耀眼光环的人来讲,进大厂就靠一条,那就是:技术实力。可是不少人在小厂待习惯了,老是用小厂的标准来衡量大厂的要求,多次面试受挫,因而得出了一个结论:面试造飞机,入职拧螺丝钉。数组
但事实上,大厂的平台更大,用户量也更多,天然技术要求也更高,不能彻底用拧螺丝钉来形容。就算大厂作的也是普通的事情,可是不少时候,大厂对稳定性、执行效率和崩溃率的极致追求,都是在小厂没法体会的。缓存
咱们知道,一件看似简单的事情,若是要作到80分,那垂手可得;若是要作到95分以上,那就很是困难了;而若是要作到99分以上,那就难如登天了。在大厂不少时候都要把事情作到95分甚至更高,这种追求极致的过程颇有技术含量,你们好理解吗?安全
如何进入大厂,我总结下来就是:微信
了解个人读者都知道,我待过不少大厂,腾讯百度滴滴我都待过,并且个人技术级别还不低,好几年前我就是技术专家了,我很清楚大厂的用人标准和技术要求。架构
之前在网上找技术博客,不成体系的学习效果然的过低了,常常由于信息过多,还有信息不许确而耽误时间,很容易就分心了。
后面除了跟视频学习,就是一直在刷这套1307页Android 面试全套真题解析。
这份资料是真的帮到了不少,内容全面,覆盖率比较高,省去了不少时间和精力。
前面面了贝壳找房和网易,都经过了,虽然最后没有谈好,可是有了一些信心。后面让朋友帮忙内推了腾讯,三面顺利拿下offer,薪资是28K,相比于上一份工做上涨了15K。
这里主要放腾讯面经
一面
0、说说作过的项目(差很少包括了自我介绍)
说一下我表达的重点:我作了AndroidQ的适配;我在项目中使用了新的技术:LiveData、BiometricPrompt;我使用到了设计模式:工厂、简单工厂、单例;我在不断优化个人代码;我关注Google开发者大会
一、问上一份工做
抓着工做中的技术点问了不少,而后后面问题的差很少都是来自这里面。
二、EventBus和回调的对比。有没有其余办法能够解决类之间的耦合性。
说了LivaData,但其实差很少。老老实实说不知道了……
如今想了想,这个题目那份资料里面好像也有提到过,可是……我没记住!!!
三、ListView和RecyclerView的比较,ListView没用了吗?
说了实现效果,代码、缓存方面、ViewHolder的差别,讲了一下RecyclerView在多个Fragment中有相同Item时的优越性。
ListView这个问题问到我时我差点没笑出来……我看了微信团队对于卡包界面是否要更新为RecyclerView的一篇文章,建议背诵全文……
四、Service和AsyncTask对比。
由于AsyncTask因为不使用匿名内部类方式极可能出现内存泄露问题,因此本身不使用,基本都是开线程池。而后面试官问AsyncTask底层,也就说了一下handler+线程池。
如今回想,有这么几个点:生命周期方面;消息传递方面;底层实现方面。
五、线程通讯机制。
handler、信号量、互斥量、临界区管理synchronized之类的、共享变量volatile。
六、Android进程通讯机制。
AIDL、Binder、共享文件。
前两个没啥说的了,老特长了。
说一下共享文件,这个我原本以为很low,可是最近研究SharedPreference的时候,发现若是APP签名同样的话,可使用同一个SharedPreference,因此也就说了共享文件。我不是想表达我用共享文件做为进程通讯方式,我只是想说我了解SharedPreference。
七、ArrayList和Vector对比……不会Vector,那么ArrayList和LinkedList对比。
底层,数组,链表。扩容问题,我归纳了一下全部的集合类的扩容方式都是装载因子+当前容量+须要扩容容量。
我说线程安全的List有CopyOnWriteArrayList,可是面试官没有往下问。
八、为何扩容不少状况下都是扩容为两倍?
这个不会,可是说底层代码不少状况下扩容都是移位操做进行的。可能和查询相关?
九、HashMap和HashTable对比,ConcurrentHashMap。
HashTable不是Map,HashTable是Dictionary,并且锁的时候是锁数组,并发的粒度很大。
ConcurrentHashMap用的是分段锁并且有一个:判空+判相等+CAS+synchronized的一个锁的过程,因此很强大。
十、CAS相关。
十一、知道优先级反转吗?
不知道……回去研究去……
十二、TCP三次握手四次挥手。
主要思路是经过SACK和全双工来总体讲解。
1三、代码,如何判断两个链表是否相交 。
我最开始想成了找到第一个相交结点,而后说了思路,面试官说有没有更好的。而后直接判断最后一个结点是否相等。面试官说若是有环呢,那只能用HashSet存一下了。
1四、反问。
问了下面试官是什么事业群。
说是PCG平台,感受本身应该是被PCG捞起来了。
后面就问了一下公司的一些不疼不痒的问题。
总结
总体答得还能够,就是觉得是2点面试,结果3点30才面上,多是我记错时间了。状态没有调整到最好。
二面
0、自我介绍。
一、hashCode和equals方法。
二、HashMap,hash冲突解决,红黑树相关。
三、String、StringBuilder。
面试官问String的加法
String a = "a"+"b"+"c"; StringBuilder sb = new StringBuilder(); a = sb.append("a").append("b").append("c").toString();
这二者效率差异,我说没差异啊,第一种String的加法被编译器优化成第二种,他不信我……不过还好,最后达成共识面试官面试完本身去查。
如今复盘以为面试官应该想问的是这种状况:
String a =""; a+="a"; a+="b"; a+="c";
我仍是对的。
四、wait、notify。
问是否是只能在有锁的状况下wait和notify。
[图片上传失败...(image-1692c4-1602502611210)]
五、线程间通讯方式。
handler那一套。
六、快排原理,最好状况和最坏状况时间复杂度。
最坏状况逆序n**2,顺序状况个人算法仍是nlogn,问了优化思路。
七、算法题,
用了贪心没ac,面试官提示快排,没想明白……
八、思考题,若是我想将一颗二叉树存入文件,怎么样的格式存储可使得读取效率最高。
这题是个开放讨论题,和面试官一直在讨论怎么作。
【当时觉得本身凉了,没想到顺利收到了三面的通知】
三面
0、自我介绍
一、实习工做深挖
二、RePlugin原理深挖,其余插件化框架对比
三、为何要选择RePlugin框架
四、你以为本身对于Android掌握到了什么地步
五、看过什么源码
六、你为何要看源码
七、你为何要写博客
八、知道哪些著名开源框架
九、什么是进程,进程调度算法
十、什么是线程
十一、你以为什么是JVM
十二、有哪些线程同步算法
1三、死锁是什么,举个例子
1四、Object有哪些方法
1五、Java异常有哪些,Error和Exception区别
1六、OSI七层模型,TCP、UDP是哪一层,应用层有哪些协议
1七、若是要设计一个大量图片下载的方法,如何肯定并发量,有哪些指标。
1八、APP间传递消息安全吗?要怎么作才能安全呢?
1九、广播怎么分类
20、自定义View重写的关键有哪些,onLayout和onMeasure区别
2一、Android有哪些动画,MotionLayout讲一下。MotionLayout使用场景。
2二、Activity四种启动模式,SingleTask和SingleTop的使用场景
2三、一些Framework层的问题,不太会因此记不得了。
当时收藏一位B站UP主的视频,有须要能够去看一下
2四、你为何想了解Framework层知识。
2五、算法题。
2六、你对于咱们的Offer的态度
2七、闲聊
总而言之,Android开发行业变化太快,做为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提高本身,才能跟紧行业的步伐,才能不被时代所淘汰。
在这里我分享一份本身收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了很多精力),包含知识脉络 + 诸多细节,因为篇幅有限,这里以图片的形式给你们展现一部分。须要的朋友能够私信我【资料】或者 点这里 免费领取
还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助你们学习提高进阶,也节省你们在网上搜索资料的时间来学习,也能够分享给身边好友一块儿学习。 领取地址: Android学习PDF+架构视频+最新面试文档+源码笔记