BAT大厂Android面试知识点,请客官拿好~~

前言

年年寒冬,年年也挡不住一个安卓程序员追求大厂的决心。想要进入大厂,咱们须要掌握哪些知识点呢?这里,我为你们梳理了一个总体的知识架构。总体包括Java、Android、算法、网络等,而且我也在相应知识点下推荐了与该知识点相关的书籍与博客。但愿你们阅读以后,能帮助你们完善与整理本身的知识体系。祝你们早日进入本身理想的公司~~html

注意,整篇文章是知识点的归纳,不包含答案,须要你们多看源码,知识只有本身去探索与发现,才会弥足珍贵!java

Java基础知识点

Jvm相关

  • Java内存结构及分区
  • Java对象的建立、存储及访问
  • Java判断对象是否存活及垃圾回收算法(GC)
  • Jvm中的常见的垃圾回收器
  • Java类加载过程
  • Java类加载器(双亲委派模型)

推荐阅读:android

  1. 《深刻理解Java虚拟机JVM高级特性及最佳实践》 第二章 Java内存区域与内存溢出异常
  2. 《深刻理解Java虚拟机JVM高级特性及最佳实践》 第三章 垃圾收集器与内存分配策略
  3. 《深刻理解Java虚拟机JVM高级特性及最佳实践》 第六章 类文件结构
  4. 《深刻理解Java虚拟机JVM高级特性及最佳实践》 第七章 虚拟机类加载机制
  5. 《Java虚拟机规范 JAVA SE 8版》

集合相关

  • ArrayList分析
  • LinkedList分析
  • HashMap分析
  • HashTable分析
  • LinkedHashMap分析
  • HashSet分析
  • LinkedHashSet分析
  • ArrayMap、SparseMap、与HashMap的对比
  • ConcurrentHashMap分析

推荐阅读git

  1. 若是你们不嫌弃,能够看看个人-->ArrayList分析
  2. 若是你们不嫌弃,能够看看个人-->LinkedList分析
  3. 若是你们不嫌弃,能够看看个人-->哈希表初识
  4. 彻头彻尾理解 HashTable
  5. 美团技术团队-Java8系列之从新认识HashMap
  6. Map 综述(二):彻头彻尾理解 LinkedHashMap
  7. 《Java并发编程的艺术》第六章6.1节CocurrrentHashMap(基于JDK 1.6,1.7分析的)实现原理及使用
  8. 深刻浅出ConcurrentHashMap1.8

并发相关

  • Java内存模型
  • volatile原理
  • Synchronized的原理
  • AQS原理
  • Condition原理
  • ReentrantLock 原理
  • 公平锁与非公平锁
  • ReentrantReadWriteLock原理

推荐阅读:程序员

  1. 《Java并发编程的艺术》第二章 Java并发机制的底层实现原理
  2. 《Java并发编程的艺术》第三章 内存模型
  3. 《Java并发编程的艺术》第五章 Java中的锁
  4. Java并发编程之Java内存模型
  5. Java并发编程之Java CAS操做
  6. Java并发编程之Volatile
  7. Java并发编程之synchronized
  8. Java并发编程之锁机制之引导篇
  9. Java并发编程之锁机制之Lock接口
  10. Java并发编程之锁机制之AQS(AbstractQueuedSynchronizer)
  11. Java并发编程之锁机制之LockSupport工具
  12. Java并发编程之锁机制之Condition接口
  13. Java并发编程之锁机制之重入锁
  14. Java并发编程之锁机制之读写锁

线程相关

  • 线程的启动和终止
  • 线程间通讯
  • 等待/通知机制

推荐阅读:github

《Java并发编程的艺术》第四章 Java并发编程基础面试

线程池相关

  • 使用线程池的缘由
  • 线程池内部原理
  • 线程池中的几种重要的参数及流程说明
  • 线程池中几种常见的工做队列
  • 几种常见的线程池及使用场景。

推荐阅读: 《Java并发编程的艺术》第九章 Java中的线程池算法

IO相关

  • IO相关面试问题-Socket
  • IO相关面试问题-BIO/NIO

推荐阅读:sql

  1. NIO相关基础篇一
  2. NIO相关基础篇二
  3. NIO相关基础篇三
  4. 《UNIX 网络编程,卷1:套接字联网API 第三版》第六章 I/O复用:select和poll
  5. 《深刻理解Java虚拟机JVM高级特性及最佳实践》 第二章 Java内存区域与内存溢出异常 2.7节 直接内存介绍

Android基础知识点

Activity相关

  • 典型情况下的生命周期
  • 异常状况下的生命周期
  • 异常状况下的数据保存
  • 各类状况下跳转到某个Activity时目标Activity及当前Activity的生命周期
  • Activity的启动模式及应用场景
  • 进程和应用生命周期

推荐阅读:数据库

  1. 《Android开发艺术探索》 第一章 Activity的生命周期和启动模式
  2. 《Android开发艺术探索》 第九章 9.2节Activity的工做过程
  3. Google-进程和应用生命周期
  4. Google-任务和返回栈

Service相关

  • Service的定义及做用
  • Service两种启动方式 startService、 bindService 区别及生命周期
  • Service绑定服务的三种实现方式,扩展Binder类、使用Messenger、使用AIDL
  • 关于启动服务与绑定服务间的转换问题 先绑定服务后启动服务、先启动服务后绑定服务
  • 服务Service与线程Thread的区别
  • Android 5.0以上的隐式启动问题及其解决方案
  • 如何保证服务不被杀死
  • IntentService的使用及原理

推荐阅读:

  1. 《Android开发艺术探索》 第九章 9.3节Service的工做过程
  2. 关于Android Service真正的彻底详解,你须要知道的一切
  3. Android 多线程之IntentService 彻底详解
  4. Android 多线程之HandlerThread 彻底详解

BroadcastReceiver相关

  • BroadcastReceiver定义及做用、应用场景
  • BroadcastReceiver的注册方式,静态方式、动态方式
  • BroadcastReceiver注册与取消的时机
  • BroadcastReceiver的不一样类型,普通广播,系统广播、有序广播、粘性广播、应用类广播

推荐阅读:

  1. 《Android开发艺术探索》 第九章 9.4节BroadcastReceiver 的工做过程
  2. BroadcastReceiver史上最全面解析
  3. 广播在7.0、8.0、9.0下的适配

Fragment相关

  • Fragment生命周期
  • Fragment的懒加载
  • Fragment之间的通讯
  • FragmentPagerAdapter与FragmentStatePagerAdapter的区别
  • 为何不建议直接经过使用new Fragment的方式传入数据

推荐阅读:

  1. Fragment全解析系列(一):那些年踩过的坑
  2. Google-Fragment概览
  3. Google-与其余Fragment通讯

序列化相关

  • 序列化与反序列化的定义及区别
  • Serializable中serialVersionUID及transient关键字的做用
  • 序列化:Parcelable和Serializable差别

推荐阅读:

  1. 序列化与反序列化之Parcelable和Serializable浅析
  2. 《Android开发艺术探索》 第二章 IPC基础概念介绍

IPC相关

  • 在Android中什么样的状况下会使用多进程模式,如何开启多进程
  • Android为何采用Binder作为IPC机制
  • IPC经常使用方式 使用Bundle、使用文件共享、使用Messenger、使用AIDL、使用ContentProvider、使用Socket
  • AIDL的语义
  • AIDL如何建立
  • AIDL生成Java文件详细分析

推荐阅读:

  1. 《Android开发艺术探索》 第二章 IPC机制
  2. 《深如理解LINUX内核 第三版涵盖2.6版》 第三章 进程 3.2节进程描述符
  3. 写给 Android 应用工程师的 Binder 原理剖析
  4. 若是须要深刻了解,推荐GitYuan大大的 Binder 系列文章

View事件机制相关

  • View的坐标体系
  • View滑动的几种方式,使用ScrollTo/ScrollBy、使用动画、改变布局参数
  • 弹性滑动的原理及实现
  • View的事件分发机制,点击事件的传递规则,事件分发的源码解读
  • 处理滑动冲突的场景及解决方法

推荐阅读:

《Android开发艺术探索》 第三章 View的事件体系

View绘制相关

  • DecorView、Window、ViewRootImpl等概念
  • MeasureSpec概念
  • View的工做流程,measure过程、layout过程、draw过程
  • 自定义View须要注意的事项
  • Activity、Window、View三者之间的关系

推荐阅读:

  1. 《Android开发艺术探索》第四章 View的工做原理
  2. 《Android开发艺术探索》第八章 理解Window和WindowManager
  3. Android自定义控件三部曲文章索引

View动画相关

  • 经常使用动画View动画(补间动画)、属性动画与帧动画
  • 补间动画与属性动画区别
  • 差值器和估值器理解
  • 属性动画的工做原理

推荐阅读:

  1. Android自定义控件三部曲文章索引
  2. 《Android开发艺术探索》 第七章 Android动画深刻分析

Handler相关

  • Handler机制之ThreadLocal
  • Handler机制之Looper、Handler、消息队列如何理解
  • Handler机制之Message的发送与取出
  • Handler机制之Message及Message的回收机制
  • Handler机制之循环消息队列的退出
  • Handler机制以内存泄漏
  • Handler机制之IdleHandle的理解及使用

推荐阅读:

  1. 《Android开发艺术探索》第十章 10.2节 Android的消息机制
  2. IdleHandle的奇思妙想----->你知道android的MessageQueue.IdleHandler吗?
  3. Handler面试常问题目----->你真的懂Handler吗?Handler问答
  4. 若是你们不嫌弃,能够看看个人Handler机制总结----->Anroid Handler机制总目录

AsyncTask相关

  • AsyncTask的使用和注意事项
  • AsyncTask几个重要的方法 doInBackgound、onProgressUpdate、onPostExecute等
  • AsyncTask的工做原理及源码理解

推荐阅读:

  1. 《Android开发艺术探索》第十一章 Android的线程和线程池
  2. 《Java并发编程的艺术》第九章 Java中的线程池,第十章 Executor框架

Bitmap压缩回收相关

  • Bitmap所占内存
  • 经常使用压缩图片方式
  • LruCache原理
  • DiskLruCache原理
  • LinkedHashMap原理

推荐阅读:

  1. 图片占内存公式:分辨率 * 每一个像素大小,严谨吗?
  2. 鲁班图片压缩
  3. Map 综述(二):彻头彻尾理解 LinkedHashMap

ListView与RecyclerView相关

  • ListView的原理和复用机制
  • ListView和RecyclerView的区别

推荐阅读:

  1. Android ListView工做原理彻底解析,带你从源码的角度完全理解
  2. 深刻理解Android中的缓存机制(二)RecyclerView跟ListView缓存机制对比

数据存储相关

  • 经常使用数据库框架GreenDao,官方Room
  • 数据库数据迁移问题
  • GreenDao中一对一,一对多,多对多关系
  • SharedPreferences使用及源码,commit与apply()方法的区别

推荐阅读:

  1. 数据库基础1
  2. 数据库基础2
  3. 数据库基础3
  4. GreenDao官方帮助文档
  5. 面试高频题:一眼看穿 SharedPreferences
  6. GreenDao数据库迁移帮助类 MigrationHelper

Android开源框架知识点

OkHttp相关

  • OkHttp的优势
  • OkHttp执行请求的整个流程
  • OkHttp中的拦截器
  • OkHttp中的同步请求与异步请求的理解及其源码
  • OkHttp中涉及到的设计模式
  • OkHttp底层网络请求实现,socket仍是URLConnection

推荐阅读:

拆轮子系列-拆OkHttp

Retrofit相关

  • Retrofit执行请求的整个流程
  • Retrofit中ConverterFactory、CallAdapterFactory的理解
  • Retrofit中CallAdapter的适配器模式

推荐阅读:

拆轮子系列:拆Retrofit

RxJava相关

  • RxJava经常使用建立操做符 create、from、just、interval、range等
  • RxJava经常使用组合、合并操做符 combineLatest、join、merge、zip等
  • RxJava错误处理操做符 onErrorReturn、onErrorResumeNext、onExceptionResumeNext等
  • RxJava过滤操做符 filter、ofType、sample、take等
  • Rxjava背压相关理解
  • RxJava实际开发中的使用:网络请求轮询、网络请求嵌套回调、从磁盘 / 内存缓存中 获取缓存数据等

推荐阅读:

  1. Android Rxjava:这是一篇 清晰 & 易懂的Rxjava 入门教程
  2. 若是你们想直接写Demo,这里我已经写好了一份--->RxJava操做符总结

Glide相关

  • Glide的执行流程
  • Glide的缓存机制
  • Glide图片转换
  • Glide带进度的图片加载功能
  • Glide内存、磁盘缓存,优先级使用

推荐阅读:

  1. Android图片加载框架最全解析(一),Glide的基本用法
  2. Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
  3. Android图片加载框架最全解析(三),深刻探究Glide的缓存机制
  4. Android图片加载框架最全解析(四),玩转Glide的回调与监听
  5. Android图片加载框架最全解析(五),Glide强大的图片变换功能
  6. Android图片加载框架最全解析(六),探究Glide的自定义模块功能

ButterKnife相关

  • Java注解相关Annotation
  • Java注解相关之APT工具
  • ButterKnife注解框架原理

推荐阅读:

  1. Android 注解系列之APT工具(三)
  2. Android 注解系列之Annotation(二)
  3. ButterKnife 原理解析

EventBus相关

  • EventBus原理,及索引类的使用

推荐阅读:

  1. Android 注解系列之APT工具(三)
  2. Android 注解系列之Annotation(二)
  3. 腾讯Bugly干货-老司机教你“飙”EventBus3

Android性能优化

  • 性能优化:布局优化、绘制优化、线程优化等
  • ANR异常:主线程执行了耗时操做,如BroadcastReceiver(前台广播10s,后台广播为60s)、Service(前台20s,后台200s)没有处理完相关任务等
  • OOM异常:内存溢出的缘由
  • 内存泄漏:内存泄露的几种场景,如单例模式引出的泄露、静态变量致使的泄露、属性动画致使的内存泄露等

推荐阅读:

  1. 《Android开发艺术探索》第十五章 Android性能优化
  2. Memory Profiler的使用
  3. LeakCanary库相关介绍

Android屏幕适配知识点

  • 今日头条适配方式
  • 宽高限定符适配方式
  • smallestWidth适配

推荐阅读:

  1. 拉丁吴老师的--Android 目前稳定高效的UI适配方案
  2. 今日头条适配方式
  3. SmallestWidth 限定符适配方案

Android打包知识点

  • 安卓签名的理解
  • Gradle多渠道打包

推荐阅读: 《Android Gradle权威指南》

Android架构知识点

  • MVC架构设计模式面试问题讲解
  • MVP架构设计模式面试问题讲解
  • MVVM架构设计模式面试问题讲解

推荐阅读:

  1. mvp架构设计
  2. mvvm架构设计
  3. googlesamples/android-architecture

Android不一样版本特性知识点

推荐阅读:

  1. Android不一样版本下的特性
  2. 广播在7.0、8.0、9.0下的适配
  3. Android 6.0 权限下的适配
  4. Android 7.0 应用共享文件(FileProvider)
  5. Android 7.0 共享文件的使用方式

网络知识点

  • 计算机网络三种体系架构,OSI体系架构(7层)、TCP/IP体系架构(4层),五层体系架构
  • TCP的链接管理(三报文握手,四报文握手)
  • TCP与UDP的理解与区别
  • Http(HyberText Transfer Protocol)基本概念及报文结构
  • Http常见错误码
  • Http1.0与Http1.1与Http2.0的区别
  • Http中get请求与post请求的区别
  • Http中cookie与session的区别
  • Http与Https的区别
  • Https加密算法相关面试问题,签名证书,公钥私钥、数字摘要的理解

推荐阅读:

  1. 体系架构--->《计算机网络第七版 谢希仁》第一章 1.7.1节到1.7.5节
  2. TCP三报文握手与四报文握手--->《计算机网络第七版 谢希仁》第五章 5.9节 TCP的运输链接管理
  3. TCP与UDP理解--->《计算机网络第七版 谢希仁》 第五章 运输层
  4. 《计算机网络第七版 谢希仁》 第六章 应用层 第七章 网络安全
  5. HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
  6. 清晰的计算机网络基础 学习指南

设计模式知识点

  • 单例模式
  • Builder模式
  • 装饰模式
  • 策略模式
  • 模板方法
  • 观察者模式
  • 等.....

推荐阅读: 《Android源码设计模式解析与实战》

算法知识点

  • 常见的八大排序方式
  • 时间复杂度的计算
  • 链表相关算法,链表翻转,链表合并等
  • 二叉树相关算法前序、中序、后序遍历(递归,迭代)
  • 红黑树与BL树

推荐阅读:

  1. 《Java 数据结构和算法 第二版》
  2. 时间复杂度学习(上)
  3. 时间复杂度学习(下)
  4. 刷题---->LeetCode
相关文章
相关标签/搜索