6年菜鸟开发面试字节跳动安卓研发岗,附面试答案
作者:互联网
### 一、图片
```
1、图片库对比
2、LRUCache原理
3、图片加载原理
4、自己去实现图片库,怎么做?
5、Glide源码解析
6、Glide使用什么缓存?
7、Glide内存缓存如何控制大小?
```
![图片](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129044952507.jpg)
# 二、网络和安全机制
```
1.网络框架对比和源码分析
2.自己去设计网络请求框架,怎么做?
3.网络请求缓存处理,okhttp如何处理网络缓存的
4.从网络加载一个10M的图片,说下注意事项
5.TCP的3次握手和四次挥手
6.TCP与UDP的区别
7.TCP与UDP的应用
8.HTTP协议
9.HTTP1.0与2.0的区别
10.HTTP报文结构
11.HTTP与HTTPS的区别以及如何实现安全性
12.如何验证证书的合法性?
13.https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?
14.client如何确定自己发送的消息被server收到?
15.谈谈你对WebSocket的理解
16.WebSocket与socket的区别
17.谈谈你对安卓签名的理解。
18.请解释安卓为啥要加签名机制?
19.视频加密传输
20.App 是如何沙箱化,为什么要这么做?
21.权限管理系统(底层的权限是如何进行 grant 的)?
```
![网络](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129044841104.jpg)
### 三、数据库
```
1.Sqlite升级,增加字段的语句
2.数据库框架对比和源码分析
3.数据库的优化
4.数据库数据迁移问题
```
![数据库](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129045335094.jpg)
### 四、插件化、模块化、组件化、热修复、增量更新、Gradle
```
1.对热修复和插件化的理解
2.插件化原理分析
3.模块化实现(好处,原因)
4.热修复、插件化
5.项目组件化的理解
6.描述清点击 Android Studio 的 build 按钮后发生了什么
```
![](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129046647887.jpg)
### 五、架构设计和设计模式
```
1.谈谈你对Android设计模式的理解
2.MVC MVP MVVM原理和区别
3.你所知道的设计模式有哪些?
4.项目中常用的设计模式
5.手写生产者/消费者模式
6.写出观察者模式的代码
7.适配器模式,装饰者模式,外观模式的异同?
8.用到的一些开源框架,介绍一个看过源码的,内部实现过程。
9.谈谈对RxJava的理解
10.Rxjava发送事件步骤
11.RxJava的作用,与平时使用的异步操作来比的优缺点
12.说说EventBus作用,实现方式,代替EventBus的方式
13.从0设计一款App整体架构,如何去做?
14.说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融,小视频等)
15.谈谈对java状态机理解
16.Fragment如果在Adapter中使用应该如何解耦?
17.Binder机制及底层实现
18.对于应用更新这块是如何做的?(解答:灰度,强制更新,分区域更新)?
19.实现一个Json解析器(可以通过正则提高速度)
20.统计启动时长,标准
```
![](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129047649665.jpg)
### 六、性能优化
```
1.启动 app 黑白屏优化
2.稳定——内存优化
3.流畅——卡顿优化
4.节省——耗电优化
5.安装包——APK 瘦身
6.冷启动与热启动
7.内存泄漏的场景和解决办法
8. Bitmap 优化
9.LRU 的原理
10.webview 优化
11.如何避免 OOM?
...
```
![性能优化](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129048161168.jpg)
### 七、Android Framework
```
1.Android 系统架构
2.View 的事件分发机制?滑动冲突怎么解决?
3.View 的绘制流程?
4.跨进程通信
5.Android 系统启动流程是什么?
6.启动一个程序,可以主界面点击图标进入,也可 以从一个程序中 跳转过去,二者有什么区别?
7.AMS 家族重要术语解释
8.用到的一些开源框架,介绍一个看过源码的,内部实现过程。
...
```
![Android Framework ](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129048752226.jpg)
###
### 推荐学习资料
***
* **脑图**
![360°全方位性能调优](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129049293702.jpg)
![](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129049219477.jpg)
![](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625129049503649.jpg)
**由于文章篇幅问题点击链接查看详细文章以及获取学习笔记:[GitHub](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**
标签:20210701,菜鸟,安卓,面试,https,images,cto,com,s2.51 来源: https://blog.51cto.com/u_15285976/2965311