安卓开发不得不会!阿里P8面试官都说太详细了,大牛最佳总结

咸鱼翻身不断上演

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,问了优化思路。

七、算法题,
image

用了贪心没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+架构视频+最新面试文档+源码笔记

相关文章
相关标签/搜索