Android 面试提纲 - litonghui/TechBlog GitHub Wiki

很多同学会很纠结,Android 面试到底需要准备一些什么知识,对于一个工作经验两三年的开发来说,建议大家从算法、网络、Java 基础、Android基础这几个方面准备一下。 面试总结

一、 算法(手写代码)

  1. 判断两个链表是否相交,如果相交找到第一个交点
  2. 数组长度为m,找到第n个数,其中n<=m;
  3. 字符串“i am student”变为“student am i”
  4. 链表a-b-c-d-e-f,变为b-a-d-c-f-e
  5. 对于一个二叉树,从根节点依次打印每一层节点
  6. 设计三叉树结构体,找到最长的层级

二、 Android

  1. Service 两种启动方式区别;如何保证service不被系统回收
  2. Broadcast 两种区别,广播设计的优缺点
  3. 从源码角度分析Activity启动流程
  4. Handler 是如何实现进程间Message 通信的
  5. Lruchache 如何做到内存优化,底层实现方式
  6. Bitmap 缓存和压缩,避免内存泄漏
  7. MVP 和 MVVM 设计结构纵向理解和横向对比
  8. View 构建流程,getwidth 和 getmeasure 区别,以及如何获取
  9. RecycleView 和 Listview 区别,优点,如何实现多个item 重用
  10. 插件化理解使用
  11. 渠道打包方法,7.0 版本打包注意问题
  12. RemoteView 使用注意问题
  13. WebView native js 通信,安全问题,启动速度优化
  14. Android 中常用的几种数据存储类型
  15. Fragment 与 Activity 和 其他Fragment 通信
  16. 如何优化App启动速度和内存
  17. Activity 启动方式standard,singletask,singletop,singinstance
  18. 常见设计模式:单例,工厂,建造者设计模式

三、 Java

  1. ArrayList、LinkedList、HashMap、HashTable、ConcurrentHashMap等数据集从源码角度分析,优缺点
  2. 描述内存模型,描述volatile 、synchronize、threadlocal区别,如何保证进程间数据完整性
  3. 垃圾回收机制,回收算法,如何避免内存泄漏
  4. 四种引用类型区别,用法
  5. stringBuffer,stringBuild 区别理解

四、 网络

  1. HTTP 请求Request (方法版本,请求头,请求体)和 Response(状态码,请求结果) 组成
  2. HTTPS 实现方式
  3. HTTP 2.0 新特性
  4. TCP/UDP 区别和三次握手
答案后续更新