Android Interview Note

记录自己面试中所遇到的所有知识点,加强基础才是王道!!!

一、 Java

1. Java集合

  • List
    • ArrayList
    • LinkedList
  • Map
    • HashMap
    • HashTable
    • LinkedHashMap
  • Set
    • HashSet
    • TreeSet
  • Queue
    • PriorityQueue
    • ArrayDeque

2. JVM&内存管理

  • Java类加载机制
  • Java内存结构
  • GC算法
  • JVM知识总览

3. 多线程&并发包

  • 并发基础知识

    • 线程的状态转换
    • CPU & 磁盘IO 的调度方式
    • 新建线程的几种方式
    • 死锁的产生条件和解决方法
  • Java并发包(概述)

    • 并发容器
      • ConcurrentMap
      • BlockingQueue
    • 锁(Lock 接口)
      • ReentrantLock
      • ReadLock & WriteLock
      • Volatile作用
    • 线程池
      • Runnable & Callable
      • Future & FutureTask
      • Executor & ExecutorServices 接口
      • Executors
    • JUC深入研究系列(可装逼)
  • 线程和进程的区别

  • 线程 & 进程同步的几种方式

  • 线程中断方法及适用场景

  • Synchronizer & Lock的使用和区别

  • 生产者和消费者问题(队列)

4. 网络编程

  • Tcp 协议
    • tcp协议的那些事(上)
    • tcp协议的那些事(下)
  • Socket 编程
  • Http协议组成及状态码
  • Https & Http 2.0
  • 网络协议的区别及应用(概述)

二、Android

1. UI

  • View
    • LayoutInflater原理分析
    • View 绘制流程分析
    • View视图状态及重绘流程分析
    • 自定义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

三、设计模式

  • 单例模式
  • 观察者模式
  • Builder模式
  • 抽象工厂模式
  • 责任链模式

四、啊哈、算法

  • 排序(概述)
    • 快速排序
    • 归并排序
  • 翻转单链表
  • 回形打印二维数组
  • 合并两条有序链表
  • 查找一个数组中最长递减数组并返回

五、轮子原理

  • OKHttp源码分析(基于Okhttp 3.6)
  • Butterknife原理分析
  • EventBus 源码分析
  • Retrofit源码分析
  • Gilde图片加载框架源码分析
  • RxJava& RxAndroid全家桶

六、场景设计

  • 设计一个高可用的线程池(包含对阻塞态线程的处理)
  • 设计一个图片加载框架(Lru缓存)
  • 怎么统计App网络请求状况 & 流量使用情况

七、大神博客

  • 胡凯——性能优化宝典
  • Gityuan——Android framework层讲解
  • 郭霖——老司机开车

八、工具使用

  • Charles
  • Git使用
  • Markdown语法
  • Gradle高级用法(如: 差异化构建)
  • 手机开发者选项
  • TraceView 方法性能分析
  • MAT & LeakCanary 内存泄漏分析
  • 反编译ApkTools

你可能感兴趣的:(Android Interview Note)