记录自己面试中所遇到的所有知识点,加强基础才是王道!!!
一、 Java
1. Java集合
- List
- ArrayList
- LinkedList
- Map
- HashMap
- HashTable
- LinkedHashMap
- Set
- HashSet
- TreeSet
- Queue
- PriorityQueue
- ArrayDeque
2. JVM&内存管理
3. 多线程&并发包
-
并发基础知识
- 线程的状态转换
- CPU & 磁盘IO 的调度方式
- 新建线程的几种方式
- 死锁的产生条件和解决方法
-
- 并发容器
- ConcurrentMap
- BlockingQueue
- 锁(Lock 接口)
- ReentrantLock
- ReadLock & WriteLock
- Volatile作用
- 线程池
- Runnable & Callable
- Future & FutureTask
- Executor & ExecutorServices 接口
- Executors
- JUC深入研究系列(可装逼)
- 并发容器
线程和进程的区别
线程 & 进程同步的几种方式
线程中断方法及适用场景
Synchronizer & Lock的使用和区别
生产者和消费者问题(队列)
4. 网络编程
- Tcp 协议
- Socket 编程
- Http协议组成及状态码
- Https & Http 2.0
- 网络协议的区别及应用(概述)
二、Android
1. UI
- View
- 属性动画 & 动画插值器
- RecycleView & ListView
- Scroller 完全解析
2. 常用类源码分析
- Android 事件传递机制
- AsyncTask源码分析 (缺点)
- Handler 机制分析
- Binder
- AIDL原理 & 生成的java 都做了些什么
- Android打包过程
-
Android 显示原理
- Vsync信号量 & 视图缓冲显示机制
- Choreographer 源码分析
- 如何准确评测Android应用的流畅度?
3. 常用技能
- 性能优化
- 内存泄露优化
- 界面卡顿优化
- 网络请求优化(接口合并等需要后台支持)
- 电量 & 流量消耗优化
- 打点统计 & 崩溃检测
- 友盟统计
- 自己后台(怎么上报)
- Bugly & Fabric (怎么还原错误栈)
- Bitmap 占用内存计算 & 优化
- 滑动嵌套解决方案
4. 项目架构 & 解决方案
- MVP & MVVM 的优缺点(怎么解决P层的生命周期问题)
- 组件化(解决相互依赖)
- 新建项目怎么选择轮子(技术栈)
- ANR 问题怎么分析
5. 高级技术(了解)
- 插件化
- 热更新
- 加固 & 反编译
- NDK
三、设计模式
四、啊哈、算法
五、轮子原理
- OKHttp源码分析(基于Okhttp 3.6)
- Butterknife原理分析
- EventBus 源码分析
- Retrofit源码分析
- Gilde图片加载框架源码分析
- RxJava& RxAndroid全家桶
六、场景设计
- 设计一个高可用的线程池(包含对阻塞态线程的处理)
- 设计一个图片加载框架(Lru缓存)
- 怎么统计App网络请求状况 & 流量使用情况
七、大神博客
八、工具使用
- Charles
- Git使用
- Markdown语法
- Gradle高级用法(如: 差异化构建)
- 手机开发者选项
- TraceView 方法性能分析
- MAT & LeakCanary 内存泄漏分析
- 反编译ApkTools