欢聚时代Android高级工程师面试问题
技术问题如下:
1. 线程同步方式
2. MVP如何分UI模块设计3. MVVM布局复用问题 include
4. 性能优化
5. Activity启动流程源码实现 启动模式 栈管理
6. Context 的种类
7. A 页面用 B页面的Context去startActivity会有什么问题
8. 热修复原理 Tinker源码
9. RN futter性能对比 原理做了哪些优化
10. Handler 原理
11. 各种框架源码 Okhttp Retrofit2 Rxjava Glide
12. http下载文件有什么弊端
13. 自定义注解
14. 自定义View
15. RecycleView和listView对比
16. Bitmap优化
17.项目管理
18.线上Bug如何把控
19.kotlin
首先简单自我介绍,然后开始问问题,面试时长很长很长,差不多一下午了,问的问题都挺有深度的。
复习建议:
1. 主流框架的源码原理是每个公司必问的,所以一定要清楚。
2.android上一些基本的机制也要清楚,建议看《Android开发艺术探索》这本书
3.如果有GitHub会加分
另附上一波其他公司的面试题可供参考:
http和https的区别
介绍下tcp
tcp的拥塞控制,确认重传机制
三次握手的过程,为什么要第三次握手,如果服务端没有收到第三次握手会怎么样
进程间通信有哪些方式
死锁的产生条件,怎么解除
内存的页面置换算法有哪些,说下LRU算法
Java四种引用
HashMap底层是什么样的,扩容机制
手撕代码:二叉树按层遍历
有哪几种自平衡树
排序算法有哪些,时间复杂度,步骤各是什么
activity,fragment,service的生命周期
Android内存管理
Android线程间通信有哪些方式
如何实现服务端推送消息给应用
动画有哪几种
margin和padding的区别
View的绘制原理
ListView如何异步加载图片
加载bitmap如何避免OOM
Android数据持久化有哪些方法
代码混淆的原理
ANR怎么产生,怎么避免
布局优化有哪些方法
内存优化有哪些方法
说下android MVC模式
重载和重写的区别
final,finally,finalize有什么区别
多线程开发会遇到什么问题,怎么解决
GC机制,什么对象放入老年代
进程间通信有哪些方法
Socket是什么,怎么保持连接
死锁产生的原因
进程调度算法
介绍下链表,有什么缺点
排序算法有哪些,快速排序在什么情况下不适用
会写SQL语句吗,怎么多表查询,连接查询的原理
说下数据库的索引,用的什么结构
git commit之后如果还需要修改,怎么合并到同一个commit
用过哪些linux命令
学过哪些脚本语言
怎么优化代码
编程中遇到困难怎么办
怎么学习
平时看哪些论坛