我的个人背景非常简单,Android开发经验3年多,学历普通,2本本科毕业。之前在广州工作,今年初被离职出来找工作,年初那段时间Android的面试是真的少,普遍都是挂着招聘,但是没人回你。内推的情况也不太好,直到6月初才好了起来,拿到了几个面试。自己又好好准备了一番,还是凉了。
废话就不多说,接下来凭借记忆给大家讲讲三面时遇到的问题,
一面
1.mmap + native 日志优化?
2.广播和 EventBus 的区别?
3.常用设计模式你了解哪些?
4.跨进程通信有哪些?
5.简单讲讲 binder 驱动吧?
6.跨进程传递大内存数据如何做?
7.说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
8.启动优化怎么优化?
9.你写的 rxpay 和 rxlogin 具体怎么实现的?
10.kotlin + fullter 方面的
二面
1.单例设计模式都写写,静态内部类是怎么保证线程安全的?
2.synchronized 底层实现原理,ReentrantLock 公平锁与非公平锁。
3.主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
4.自定义 view 的一般流程,要注意些什么如何优化,点击事件和长按时间分别是怎么实现的?
5.四种启动模式,在源码分析中的原理是怎样的?
6.讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
7.开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?
8.RxJava 在使用过程中碰到了某些不友好的错误一般怎么解决?发现了内存泄露一般怎么解决分析,有没有
9.碰到过系统服务内存泄露的问题?
10.你们用的 okhttp ?那你有没有做过一些网络优化呢?比如弱网环境。
11.给你个数 1 吧,比如 1000011 里面有几个 1 ?
12.快排了解不?最坏的情况是怎样?如果有大量重复数据怎么优化?
三面
1.讲讲 handler 的底层实现原理?
2.说说你做的日志记录优化?
3.你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端等待服务端处理返回的流程,如果要跨进4.程传递大内存数据你具体会怎么做?简单写一写吧。
5.在公司做过哪些优化?
6.过程中遇到的一些最难解决的问题?
7.提到了动态修复替换加载 so ,那你知道怎么修复 class 吗?怎么修复资源呢?
8.还有什么要问我的?
个人体会
自己答的时候感觉不那么顺,但是今天回过头再来看其实感觉也就一般般吧(估计很多人都是这样想的)。我还是有些紧张了,人太久没有面试。
最后分享一份最近整理的Android中高级最全面试真题,
由于面试内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要2023年Android中高级最全面试真题答案 完整文档的可

目录
第一章 Java方面
●Java基础部分
●Java集合
●Java多线程
●Java虚拟机
第二章 Android方面
●Android四大组件相关
●Android异步任务和消息机制
●Android UI绘制相关
●Android性能调优相关
●Android中的IPC
●Android系统SDK相关
●第三方框架分析
●综合技术
●数据结构方面
●设计模式
●计算机网络方面
●Kotlin方面
第三章 音视频开发高频面试题
●为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
●怎么做到直播秒开优化?
●直方图在图像处理里面最重要的作用是什么?
●数字图像滤波有哪些方法?
●图像可以提取的特征有哪些?
●衡量图像重建好坏的标准有哪些?怎样计算?
第四章 Flutter高频面试题
●Dart部分
●Flutter部分
第五章 算法高频面试题
●如何高效寻找素数
●如何运用二分查找算法
●如何高效解决雨水问题
●如何去除有序数组的重复元素
●如何高效进行模幂运算
●如何寻找最长回文子串
第六章 Andrio Framework方面
●系统启动流程面试题解析
●Binder面试题解析
●Handler面试题解析
●AMS面试题解析
第七章 企业常见174道面试题
●SD卡
●Android的数据存储方式
●Broadcast Receiver
●sp频繁操作会有什么后果?sp能存多少数据?
●dvm与jvm的区别
●ART
●Activity的生命周期
●Application能不能启动Activity
●…