真的强!借助阿里技术博主分享的 Android 面试笔记,我拿到了字节跳动的 offer
线程间 操作 List
App 启动流程,从点击桌面开始
动态加载
类加载器
OSGI
Https 请求慢的解决办法,DNS,携带数据,直接访问 IP
GC 回收策略
画出 Android 的大体架构图
描述清点击 Android Studio 的 build 按钮后发生了什么
大体说清一个应用程序安装到手机上时发生了什么;
对 Dalvik、ART 虚拟机有基本的了解;
Android 上的 Inter-Process-Communication 跨进程通信时如何工作的;
App 是如何沙箱化,为什么要这么做;
权限管理系统(底层的权限是如何进行 grant 的)
进程和 Application 的生命周期;
系统启动流程 Zygote 进程 –> SystemServer 进程 –> 各种系统服务 –> 应用进程
recycleview listview 的区别,性能
排序,快速排序的实现
树:B+树的介绍
图:有向无环图的解释
TCP/UDP 的区别
synchronized 与 Lock 的区别
volatile
Java 线程池
Java 中对象的生命周期
类加载机制
双亲委派模型
Android 事件分发机制
MVP 模式
RxJava
抽象类和接口的区别
集合 Set 实现 Hash 怎么防止碰撞
JVM 内存区域 开线程影响哪块内存
垃圾收集机制 对象创建,新生代与老年代
二叉树 深度遍历与广度遍历
B 树、B+树
消息机制
进程调度
进程与线程
死锁
进程状态
JVM 内存模型
并发集合了解哪些
ConCurrentHashMap 实现
CAS 介绍
开启线程的三种方式,run()和 start()方法区别
线程池
常用数据结构简介
判断环(猜测应该是链表环)
排序,堆排序实现
链表反转
[](
)字节跳动
synchronized 用法
volatile 用法
动态权限适配方案,权限组的概念
网络请求缓存处理,okhttp 如何处理网络缓存的
图片加载库相关,bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM
进程保活
listview 图片加载错乱的原理和解决方案
https 相关,如何验证证书的合法性,https 中哪里用了对称加密,哪里用了非对称加密,对加密算法(如 RSA)等是否有了解
[](
)美团
MVC、MVP、MVVM
广播(动态注册和静态注册区别,有序广播和标准广播)
service 生命周期
handler 实现机制(很多细节需要关注:如线程如何建立和退出消息循环等等)
多线程(关于 AsyncTask 缺陷引发的思考)
数据库数据迁移问题
设计模式相关(例如 Android 中哪里使用了观察者模式,单例模式相关)
x 个苹果,一天只能吃一个、两个、或者三个,问多少天可以吃完
TCP 与 UDP 区别与应用(三次握手和四次挥手)涉及到部分细节(如 client 如何确定自己发送的消息被 server 收到) HTTP 相关 提到过 Websocket 问了 WebSocket 相关以及与 socket 的区别
是否熟悉 Android jni 开发,jni 如何调用 java 层代码
进程间通信的方式
java 注解
计算一个 view 的嵌套层级
项目组件化的理解
多线程断点续传原理
Android 系统为什么会设计 ContentProvider,进程共享和线程安全问题
jvm 相关
Android 相关优化(如内存优化、网络优化、布局优化、电量优化、业务优化)
EventBus 实现原理
[](
)网易
static synchronized 方法的多线程访问和作用,同一个类里面两个 synchronized 方法,两个线程同时访问的问题
内部类和静态内部类和匿名内部类,以及项目中的应用
handler 发消息给子线程,looper 怎么启动
View 事件传递
activity 栈
封装 view 的时候怎么知道 view 的大小
arraylist 和 linkedlist 的区别,以及应用场景
怎么启动 service,service 和 activity 怎么进行数据交互
下拉状态栏是不是影响 activity 的生命周期,如果在 onStop 的时候做了网络请求,onResume 的时候怎么恢复
view 渲染
[](
)拼多多
数据结构中堆的概念,堆排序
死锁的概念,怎么避免死锁
ReentrantLock 、synchronized 和 volatile(n 面)
HashMap
singleTask 启动模式
用到的一些开源框架,介绍一个看过源码的,内部实现过程。
消息机制实现
ReentrantLock 的内部实现
App 启动崩溃异常捕捉
事件传递机制的介绍
ListView 的优化
二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径
模式 MVP,MVC 介绍
断点续传的实现
集合的接口和具体实现类,介绍
TreeMap 具体实现
synchronized 与 ReentrantLock
手写生产者/消费者模式
逻辑地址与物理地址,为什么使用逻辑地址
一个无序,不重复数组,输出 N 个元素,使得 N 个元素的和相加为 M,给出时间复杂度、空间复杂度。手写算法
.Android 进程分类
前台切换到后台,然后再回到前台,Activity 生命周期回调方法。弹出 Dialog,生命值周期回调方法。
Activity 的启动模式
[](
)京东
RxJava 的功能与原理实现
RecycleView 的使用,原理,RecycleView 优化
ANR 的原因
四大组件
Service 的开启方式
Activity 与 Service 通信的方式
Activity 之间的通信方式
HashMap 的实现,与 HashSet 的区别
JVM 内存模型,内存区域
Java 中同步使用的关键字,死锁
MVP 模式
Java 设计模式,观察者模式
Activity 与 Fragment 之间生命周期比较
广播的使用场景
Bitmap 使用时候注意什么?
Oom 是否可以 try catch ?
内存泄露如何产生?
适配器模式,装饰者模式,外观模式的异同?
ANR 如何产生?
String buffer 与 string builder 的区别?
如何保证线程安全?
java 四中引用
Jni 用过么?
多进程场景遇见过么?
关于 handler,在任何地方 new handler 都是什么线程下
sqlite 升级,增加字段的语句
bitmap recycler 相关
强引用置为 null,会不会被回收?
glide 使用什么缓存?
Glide 内存缓存如何控制大小?
如何保证多线程读写文件的安全?
[](
)字节跳动面试分享(三轮压力面)
下面的面试题我把答案整理在了文档内了,答案和解析都是面试后续进行整理和总结的,包括个人见解和思考,不完全正确,具有一定参考价值,**如果需要答案分享的可以直接去我 [CodeChina 地址:https://codechina.csdn.net/u012165769/Android-T3](
) 访问查阅。**
[](
)一面
介绍项目,讲述一下项目之中遇到过的难点,你是如何解决的?
Activity 的生命周期和启动模式
什么是内存泄漏,Android 里有哪些内存泄漏的场景,原因是什么
JVM 的 GC 过程,GC 的算法都有哪些
进程和线程的概念,Android 里怎样实现多线程?(Thread Handler AsyncTask IntentService 等等)
Handler 的原理和使用
Handler 是怎么和线程绑定的(Looper),为什么 Looper.loop()要设计成死循环
Android View 绘制流程,当一个 TextView 的实例调用 setText()方法后执行了什么?
热修复的原理,你都了解过哪几种热修复框架
OkHttp 的原理
[](
)二面
Android 线程池设计原理
Android 如何实现多进程,应用场景是什么
Android 的 IPC 机制(Binder)
Binder 的大体设计模式
RemoteViews 实现和使用场景
RecyclerView 绘制步骤和复用机制
EventBus 源码和设计模式
怎么解决用户高频点击打开新 Activity 导致的多实例问题(Activity 启动模式)
怎么判断两个无环单链表是否相交
评论