Android 面试提纲 - litonghui/TechBlog GitHub Wiki
很多同学会很纠结,Android 面试到底需要准备一些什么知识,对于一个工作经验两三年的开发来说,建议大家从算法、网络、Java 基础、Android基础这几个方面准备一下。 面试总结
一、 算法(手写代码)
- 判断两个链表是否相交,如果相交找到第一个交点
- 数组长度为m,找到第n个数,其中n<=m;
- 字符串“i am student”变为“student am i”
- 链表a-b-c-d-e-f,变为b-a-d-c-f-e
- 对于一个二叉树,从根节点依次打印每一层节点
- 设计三叉树结构体,找到最长的层级
二、 Android
- Service 两种启动方式区别;如何保证service不被系统回收
- Broadcast 两种区别,广播设计的优缺点
- 从源码角度分析Activity启动流程
- Handler 是如何实现进程间Message 通信的
- Lruchache 如何做到内存优化,底层实现方式
- Bitmap 缓存和压缩,避免内存泄漏
- MVP 和 MVVM 设计结构纵向理解和横向对比
- View 构建流程,getwidth 和 getmeasure 区别,以及如何获取
- RecycleView 和 Listview 区别,优点,如何实现多个item 重用
- 插件化理解使用
- 渠道打包方法,7.0 版本打包注意问题
- RemoteView 使用注意问题
- WebView native js 通信,安全问题,启动速度优化
- Android 中常用的几种数据存储类型
- Fragment 与 Activity 和 其他Fragment 通信
- 如何优化App启动速度和内存
- Activity 启动方式standard,singletask,singletop,singinstance
- 常见设计模式:单例,工厂,建造者设计模式
三、 Java
- ArrayList、LinkedList、HashMap、HashTable、ConcurrentHashMap等数据集从源码角度分析,优缺点
- 描述内存模型,描述volatile 、synchronize、threadlocal区别,如何保证进程间数据完整性
- 垃圾回收机制,回收算法,如何避免内存泄漏
- 四种引用类型区别,用法
- stringBuffer,stringBuild 区别理解
四、 网络
- HTTP 请求Request (方法版本,请求头,请求体)和 Response(状态码,请求结果) 组成
- HTTPS 实现方式
- HTTP 2.0 新特性
- TCP/UDP 区别和三次握手