前言

在外包公司干了三年的Android开发,于2021年12月办理实现所有离场手续,办完那一天,我像是终于解脱了,终于放下,也终于释怀。

这三年的工夫,算是给我人生上了一课。

2022励志要进大厂,前面让敌人帮忙内推了腾讯,三面顺利拿下offer,上面给大家分享下我的教训。

闭关刷题

以前在网上找技术博客,不成体系的学习效果真的太低了,常常因为信息过多,还有信息不精确而耽误时间,很容易就分心了。

前面除了跟视频学习,就是始终在刷这套1307页Android 面试全套真题解析。

这份材料是真的帮到了很多,内容全面,覆盖率比拟高,省去了很多工夫和精力。

面试

后面面了贝壳找房和网易,都通过了,尽管最初没有谈好,然而有了一些信念。前面让敌人帮忙内推了腾讯,三面顺利拿下offer,薪资是28K,相比于上一份工作上涨了15K。

这里次要放腾讯面经

一面

0、说说做过的我的项目(差不多包含了自我介绍)
说一下我表白的重点:我做了AndroidQ的适配;我在我的项目中应用了新的技术:LiveData、BiometricPrompt;我应用到了设计模式:工厂、简略工厂、单例;我在一直优化我的代码;我关注Google开发者大会

1、问上一份工作
抓着工作中的技术点问了很多,而后前面问题的差不多都是来自这外面。

2、EventBus和回调的比照。有没有其余方法能够解决类之间的耦合性。
说了LivaData,但其实差不多。老老实实说不晓得了……
当初想了想,这个题目那份材料外面如同也有提到过,然而……我没记住!!!

3、ListView和RecyclerView的比拟,ListView没用了吗?
说了实现成果,代码、缓存方面、ViewHolder的差别,讲了一下RecyclerView在多个Fragment中有雷同Item时的优越性。
ListView这个问题问到我时我差点没笑进去……我看了微信团队对于卡包界面是否要更新为RecyclerView的一篇文章,倡议背诵全文……

4、Service和AsyncTask比照。
因为AsyncTask因为不应用匿名外部类形式很可能呈现内存泄露问题,所以本人不应用,根本都是开线程池。而后面试官问AsyncTask底层,也就说了一下handler+线程池。
当初回忆,有这么几个点:生命周期方面;消息传递方面;底层实现方面。

5、线程通信机制。
handler、信号量、互斥量、临界区治理synchronized之类的、共享变量volatile。

6、Android过程通信机制。
AIDL、Binder、共享文件。
前两个没啥说的了,老专长了。
说一下共享文件,这个我原本感觉很low,然而最近钻研SharedPreference的时候,发现如果APP签名一样的话,能够应用同一个SharedPreference,所以也就说了共享文件。我不是想表白我用共享文件作为过程通信形式,我只是想说我理解SharedPreference。

7、ArrayList和Vector比照……不会Vector,那么ArrayList和LinkedList比照。
底层,数组,链表。扩容问题,我概括了一下所有的汇合类的扩容形式都是装载因子+以后容量+须要扩容容量。
我说线程平安的List有CopyOnWriteArrayList,然而面试官没有往下问。

8、为什么扩容很多状况下都是扩容为两倍?
这个不会,然而说底层代码很多状况下扩容都是移位操作进行的。可能和查问相干?

9、HashMap和HashTable比照,ConcurrentHashMap。
HashTable不是Map,HashTable是Dictionary,而且锁的时候是锁数组,并发的粒度很大。
ConcurrentHashMap用的是分段锁而且有一个:判空+判相等+CAS+synchronized的一个锁的过程,所以很弱小。

10、CAS相干。

11、晓得优先级反转吗?
不晓得……回去钻研去……

12、TCP三次握手四次挥手。
次要思路是通过SACK和全双工来整体解说。

13、代码,如何判断两个链表是否相交 。
我最开始想成了找到第一个相交结点,而后说了思路,面试官说有没有更好的。而后直接判断最初一个结点是否相等。面试官说如果有环呢,那只能用HashSet存一下了。

14、反诘。
问了下面试官是什么事业群。
说是PCG平台,感觉本人应该是被PCG捞起来了。
前面就问了一下公司的一些不疼不痒的问题。

总结
整体答得还能够,就是认为是2点面试,后果3点30才面上,可能是我记错工夫了。状态没有调整到最好。

二面

0、自我介绍。
1、hashCode和equals办法。
2、HashMap,hash抵触解决,红黑树相干。
3、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";

我还是对的。

4、wait、notify。
问是不是只能在有锁的状况下wait和notify。

5、线程间通信形式。
handler那一套。

6、快排原理,最好状况和最坏状况工夫复杂度。
最坏状况逆序n**2,程序状况我的算法还是nlogn,问了优化思路。

7、算法题,

用了贪婪没ac,面试官提醒快排,没想明确……

8、思考题,如果我想将一颗二叉树存入文件,怎么样的格局存储能够使得读取效率最高。
这题是个凋谢讨论题,和面试官始终在探讨怎么做。

【过后认为本人凉了,没想到顺利收到了三面的告诉】

三面

0、自我介绍

1、实习工作深挖

2、RePlugin原理深挖,其余插件化框架比照

3、为什么要抉择RePlugin框架

4、你感觉本人对于Android把握到了什么境地

5、看过什么源码

6、你为什么要看源码

7、你为什么要写博客

8、晓得哪些驰名开源框架

9、什么是过程,过程调度算法

10、什么是线程

11、你感觉什么是JVM

12、有哪些线程同步算法

13、死锁是什么,举个例子

14、Object有哪些办法

15、Java异样有哪些,Error和Exception区别

16、OSI七层模型,TCP、UDP是哪一层,应用层有哪些协定

17、如果要设计一个大量图片下载的办法,如何确定并发量,有哪些指标。

18、APP间传递音讯平安吗?要怎么做能力平安呢?

19、播送怎么分类

20、自定义View重写的要害有哪些,onLayout和onMeasure区别

21、Android有哪些动画,MotionLayout讲一下。MotionLayout应用场景。

22、Activity四种启动模式,SingleTask和SingleTop的应用场景

23、一些Framework层的问题,不太会所以记不得了。
过后珍藏一位B站UP主的视频,有须要能够去看一下

24、你为什么想理解Framework层常识。

25、算法题。

26、你对于咱们的Offer的态度

27、闲聊

以下为小编本人在学习过程中整顿出的一个学习思路及方向,从事互联网开发,最次要的是要学好技术,而学习技术是一条慢长而艰辛的路线,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加须要精确的学习方向达到无效的学习效果。

总结

对于很多Android工程师而言,想要晋升技能,往往是本人摸索成长。而不成体系的学习效果低效漫长且无助。工夫久了,付出微小的工夫老本和致力,没有看到应有的成果,会泄气是再失常不过的。

所以学习肯定要找到最适宜本人的形式,有一个思路办法,不然不止浪费时间,更可能把将来倒退都一起耽搁了。

如果你是卡在短少学习资源的瓶颈上,那么刚刚好我能帮到你。上面分享一份2022最新《Android中高级面试题合集》文档资料内容较多,内容涵盖:数据结构与算法面试题、Java 面试题、Android四大组件、Android 面试题、UI控件篇、网络通信篇、架构设计篇、性能优化篇、源码流程篇...须要的小伙伴【点击这里收费获取】,心愿可能共同进步,独特学习,共勉!

Android根底(2022版,全网首发)

(含:Activity知识点, Fragment知识点, Service知识点, Intent知识点…)

UI控件篇(2022版,全网首发)

(含:屏幕适配,次要控件优化,事件散发与嵌套滚动…)

网络通信篇(2022版,全网首发)

架构设计篇(2022版,全网首发)

(含:MVP架构设计,组件化架构…)

性能优化篇(2022版,全网首发)

(含:启动优化,内存优化,绘制优化,安装包优化…)

源码流程篇(2022版,全网首发)

(含:开源库源码剖析,Glide源码剖析,OkHttp源码剖析,Retrofit源码剖析,RxJava源码剖析…)

新技术篇(2022版,全网首发)

面试篇(2022版,全网首发)

(含:开源文档,面试合集…)

因为篇幅无限,须要完整版2022最新《Android中高级面试题合集》的小伙伴【点击这里收费获取】保障收费分享。