年末我的Android面试复盘,BAT大厂Android面试真题锦集干货整理

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

9.一道算法题。

字节二轮1.聊简历。

2.性能优化,展开讲了卡顿,内存。

3.数据结构的题,hashCode的扰动算法,涉及到一个数字,31,这个31是怎么来的?

4.类的static属性字段,比如 public static int a = 1,被赋值几次?这个需要对类的加载机制有了解。

5.多个Activity共同bind一个service,一个Activity destory,问service的情况。这里就是问service的生命周期,考察bind跟start的区别。

6.装饰器模式,跟代理模式的区别。考察对常用的设计模式

7.okhttp的缓存逻辑实现。我以为是问的 链接缓存跟io缓存,我回答的是连接池复用跟 okio的io复用。后来提醒是cache,就回答cacheInspector,及其源码实现。

8.sharedPreference的commit ,apply区别。

9.sharedPreference的其性能问题。apply的anr是有一个字段,会block住主线程,需要清理queuedWork队列。

10.sharedPreference线程安全性,还有进程安全性,sharedPreference锁的对象是谁?sharedPreference线程安全,锁的是contentImpl.class

11.synchornized锁对象,汇编实现。volatile的汇编实现。

12.volatile 修饰 boolean能保证原子性么?

13.Android有哪几种动画。

14.设计题,设计一个埋点数据上报库,需要哪几个模块,提供哪样的接口。

15.算法题,生产消费者模型。

16.concurrentHashMap的相关。包括实现原理,put方法,树化,扩容,继承了谁,扩容的时候,其余桶怎么感知。

17.安卓打包签名v1,v2,v3的区别。

字节三轮1.装饰器模式,适配器模式区别。举个Android或java里的应用例子。

2.单例的优缺点。

3.架构有做过么。

4.说一下项目,项目中最能提现你能力的事情。

5.平时怎么学习的。

6.以后的职业规划

7.离职原因

8.插件化,做过插件化么,了解的主流方案?

9.算法题。

因第三轮挂了,捞出来换岗位再战。

字节一轮(这轮面了175分钟,记忆深刻)1.聊聊平时做过的性能优化。

2.界面卡顿从viewStub源码开始谈layoutInflate的整个过程包括xml的解析,如何解析tag,细节到里面哪些特殊tag。

3.xml的解析耗时在哪些方面,反射,读文件,解析。

4.如何优化这个过程:xml在编译期就生成为class文件,那这是gradle编译的哪个阶段做这个事情。

5.checkthread的问题,从window到viewrootimpl的创建,几者之间的关系。

以上这是绘制相关,然后是渲染。

6.矢量图的原理。

7.canvas怎么来的。

8.window跟view的关系。

9.硬件加速原理。

10.双缓冲机制。

11.丢帧的原因。

12.帧数计算。

13.设计如何检测过度绘制的工具,要具体到view。

14.blockcanary原理,目的。

15.listview的滑动优化,比如一个kmoji可以用textview渲染,也可以用imageview渲染,哪个更优。

16.toast为什么不需要权限就可以显示。

17.badwindowtoken的原因。

18.怎么实现悬浮窗。

启动加速1.怎么做app启动加速我的回答说利用intentService,就是异步加载机制。但是还不够。

2.引导我从app启动流程开始讲一遍,看从启动流程上能不能找到方法。

3.zygote的内部实现,zygote.fork有没有了解。

4.zygote跟ams的通信方式用的是什么。

5.整个启动过程中,mHandler做哪些事。

6.设计一个工具,监控启动时间,粒度要求在方法级别。

内存相关1.讲下内存泄露。以handler匿名内部类做例子讲。泄露链是怎样的。

2.looper.prepare干了啥。

3.threadLocalMap的实现。

4.leakcanary原理。

5.为什么要做抖动的检查,有啥用,

6.为什么会出现抖动。

7.线上有泄露,怎么收集,排查,设计方案。

稳定性1.解决线上稳定性bug的方法论。

2.讲个能体现亮点的解决线上bug的案例。

3.给了一个具体案例,让我现场分析原因。主要考察思维方式吧。

4.怎么收集java的crash。

5.怎么收集native的crash。

6.用线程安全的数据结构,concurrentHashMap会出现modifyCountException么?

ANR相关1.常见的anr问题怎么解。

2.不常见的anr,比如 msgQueue.nativePollOnce都很正常,怎么去定位,如果是线上,怎么去收集。

3.anr的原因

4.intentService会anr么,讲内部实现。

保活相关问题1.杀进程机制的源码。

2.进程优先级。

3.怎么提升优先级。

4.常见的保活手段。我这里着重讲了Tim的保活原理。还有第三方库Leonic的原理。

APP瘦身相关1.andRes原理。

2.proguard源码。

3.Facebook 的redex,字节的bytex原理。

4.multidex原理。

5.很多资源包,如何瘦身。

问了一下我自己维护的github库相关问题1.防多开原理

2.检测模拟器原理

3.查root权限,如果是自编的rom怎么处理。

聊了下简历里的经历1.contentProvider的初始化时机。这里主要是问我LeakCanary1.* 跟2.*有啥不同引出的问题。

2.LocalBroadCast 和broadCast的区别。

3.xposed的原理。

4.beforeMethodHooked,xposed内部做了什么事

5.免root hook框架 legend的源码实现。记不太清,好像我说的是native方法指针的变更。

6.一道算法。

更多Android高级工程师进阶学习资料

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

d源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-RWTj4vDj-1713329738745)]

里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-nJ6CVEo4-1713329738745)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值