Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
安卓大厂面试_android高级面试题,希望能够帮助你!!!。
年年寒冬,年年也挡不住一个安卓程序员追求大厂的决心。想要进入大厂,我们需要掌握哪些知识点呢?这里,行家为大家梳理了一个整体的知识架构。整体包括Java、Android、算法、网络等,希望大家阅读之后,能帮助大家完善与整理自己的知识体系。祝大家早日进入自己理想的公司
注意,整篇文章是知识点的概括,不包含答案,需要大家多看源码,知识只有自己去探索与发现,才会弥足珍贵!
Java基础知识点
Jvm相关
Java内存结构及分区
Java对象的创建、存储及访问
Java判断对象是否存活及垃圾回收算法(GC)
Jvm中的常见的垃圾回收器
Java类加载过程
Java类加载器(双亲委派模型)
集合相关
ArrayList分析
LinkedList分析
HashMap分析
HashTable分析
LinkedHashMap分析
HashSet分析
LinkedHashSet分析
ArrayMap、SparseMap、与HashMap的对比
ConcurrentHashMap分析
并发相关
Java内存模型
volatile原理
Synchronized的原理
AQS原理
Condition原理
ReentrantLock 原理
公平锁与非公平锁
ReentrantReadWriteLock原理
线程相关
线程和进程的区别
线程的启动和终止
线程间通信
等待/通知机制
线程池相关
使用线程池的原因
线程池内部原理
线程池中的几种重要的参数及流程说明
线程池中几种常见的工作队列
几种常见的线程池及使用场景。
IO相关
IO相关面试问题-Socket
IO相关面试问题-BIO/NIO
Android基础知识点
Activity相关
典型状况下的生命周期
异常情况下的生命周期
异常情况下的数据保存
各种情况下跳转到某个Activity时目标Activity及当前Activity的生命周期
Activity的启动模式及应用场景
进程和应用生命周期
Service相关
Service的定义及作用
Service两种启动方式 startService、 bindService 区别及生命周期
Service绑定服务的三种实现方式,扩展Binder类、使用Messenger、使用AIDL
关于启动服务与绑定服务间的转换问题 先绑定服务后启动服务、先启动服务后绑定服务
服务Service与线程Thread的区别
Android 5.0以上的隐式启动问题及其解决方案
如何保证服务不被杀死
IntentService的使用及原理
BroadcastReceiver相关
BroadcastReceiver定义及作用、应用场景
BroadcastReceiver的注册方式,静态方式、动态方式
BroadcastReceiver注册与取消的时机
BroadcastReceiver的不同类型,普通广播,系统广播、有序广播、粘性广播、应用类广播
Fragment相关
Fragment生命周期
Fragment的懒加载
Fragment之间的通信
FragmentPagerAdapter与FragmentStatePagerAdapter的区别
为什么不建议直接通过使用new Fragment的方式传入数据
序列化相关
序列化与反序列化的定义及区别
Serializable中serialVersionUID及transient关键字的作用
序列化:Parcelable和Serializable差异
IPC相关
在Android中什么样的情况下会使用多进程模式,如何开启多进程
Android为什么采用Binder做为IPC机制
IPC常用方式 使用Bundle、使用文件共享、使用Messenger、使用AIDL、使用ContentProvider、使用Socket
AIDL的语义
AIDL如何创建
AIDL生成Java文件详细分析
View事件机制相关
View的坐标体系
View滑动的几种方式,使用ScrollTo/ScrollBy、使用动画、改变布局参数
弹性滑动的原理及实现
View的事件分发机制,点击事件的传递规则,事件分发的源码解读
处理滑动冲突的场景及解决方法
View绘制相关
DecorView、Window、ViewRootImpl等概念
MeasureSpec概念
View的工作流程,measure过程、layout过程、draw过程
自定义View需要注意的事项
Activity、Window、View三者之间的关系
View动画相关
常用动画View动画(补间动画)、属性动画与帧动画
补间动画与属性动画区别
差值器和估值器理解
属性动画的工作原理
Handler相关
Handler机制之ThreadLocal
Handler机制之Looper、Handler、消息队列如何理解
Handler机制之Message的发送与取出
Handler机制之Message及Message的回收机制
Handler机制之循环消息队列的退出
Handler机制之内存泄漏
Handler机制之IdleHandle的理解及使用
AsyncTask相关
AsyncTask的使用和注意事项
AsyncTask几个重要的方法 doInBackgound、onProgressUpdate、onPostExecute等
AsyncTask的工作原理及源码理解
Bitmap压缩机回收相关
Bitmap所占内存
常用压缩图片方式
LruCache原理
DiskLruCache原理
LinkedHashMap原理
ListView与RecyclerView相关
ListView的原理和复用机制
ListView和RecyclerView的区别
数据存储相关
常用数据库框架GreenDao,官方Room
数据库数据迁移问题
GreenDao中一对一,一对多,多对多关系
SharedPreferences使用及源码,commit与apply()方法的区别
Android开源框架知识点
OkHttp相关
OkHttp的优点
OkHttp执行请求的整个流程
OkHttp中的拦截器
OkHttp中的同步请求与异步请求的理解及其源码
OkHttp中涉及到的设计模式
OkHttp底层网络请求实现,socket还是URLConnection
Retrofit相关
Retrofit执行请求的整个流程
Retrofit中ConverterFactory、CallAdapterFactory的理解
Retrofit中CallAdapter的适配器模式
RxJava相关
RxJava常用创建操作符 create、from、just、interval、range等
RxJava常用组合、合并操作符 combineLatest、join、merge、zip等
RxJava错误处理操作符 onErrorReturn、onErrorResumeNext、onExceptionResumeNext等
RxJava过滤操作符 filter、ofType、sample、take等
Rxjava背压相关理解
RxJava实际开发中的使用:网络请求轮询、网络请求嵌套回调、从磁盘 / 内存缓存中 获取缓存数据等
Glide相关
Glide的执行流程
Glide的缓存机制
Glide图片转换
Glide带进度的图片加载功能
Glide内存、磁盘缓存,优先级使用
ButterKnife相关
Java注解相关Annotation
Java注解相关之APT工具
ButterKnife注解框架原理
EventBus相关
EventBus原理,及索引类的使用
Android性能优化
性能优化:布局优化、绘制优化、线程优化等
ANR异常:主线程执行了耗时操作,如BroadcastReceiver(前台广播10s,后台广播为60s)、Service(前台20s,后台200s)没有处理完相关任务等
OOM异常:内存溢出的原因
内存泄漏:内存泄露的几种场景,如单例模式引出的泄露、静态变量导致的泄露、属性动画导致的内存泄露等
Android屏幕适配知识点
今日头条适配方式
宽高限定符适配方式
smallestWidth适配
Android打包知识点
安卓签名的理解
Gradle多渠道打包
Android架构知识点
MVC架构设计模式面试问题讲解
MVP架构设计模式面试问题讲解
MVVM架构设计模式面试问题讲解
Android不同版本特性知识点
推荐阅读: Android不同版本下的特性 广播在7.0、8.0、9.0下的适配 Android 6.0 权限下的适配 Android 7.0 应用共享文件(FileProvider) 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加密算法相关面试问题,签名证书,公钥私钥、数字摘要的理解
设计模式知识点
单例模式
Builder模式
装饰模式
策略模式
模板方法
观察者模式
等.....
算法知识点
常见的八大排序方式
时间复杂度的计算
链表相关算法,链表翻转,链表合并等
二叉树相关算法前序、中序、后序遍历(递归,迭代)
红黑树与BL树
总结
学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持! 最后,祝愿即将跳槽和已经开始求职的大家都能找到一份好的工作.
最后最重要的是
想学习 上行家
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
下一篇