Android技术知识Android开发

Android面试知识点整理——汇总篇

2019-05-02  本文已影响23人  安卓大叔

写在前面

从去年年底开始有了跳槽的心,有意识地开始积累一些面试技巧和知识点,并开始阅读些系统常用类的源码等。今年抓住了金三银四,我整理了Android面试常见的知识点,并一个一个去研究和学习,在四月面了三家大厂拿了两家的offer,一家迟迟没通知,估计被当作备胎了... 面试也算顺利,没主动投过简历,只是挂在Boss直聘上,别人来沟通的。面试也只经历了大概两周的时间,但这都得靠前期的积累和努力,算是得到一个不错的收获了。

整理的知识点来源于自己平时的积累和各位网友的无私分享,我觉得我有必要回馈给大家,希望能帮助到准备找工作的小伙伴~

我整理的知识点略多,并且按类型划分为很多篇章。而这个作为汇总篇是把我整理的所有知识点罗列出来,而且不会给出答案。当然,准备找工作的同学可以把这篇文章作为复习参考资料,自己去补充自己所缺乏的知识点,后面我也会陆续分篇章的把答案补充上~ 事不宜迟,我们来看下Android面试需要掌握的比较常见的知识点有哪些吧!


正文

基础篇

四大组件和Fragment的生命周期;了解Activity每个生命周期的触发和处理

Activity的启动流程

Activity的启动模式和使用场景

Activity和Fragment的异同和关系

IntentService和Service的区别

如果保证Service不会被杀死

BroadcastReceiver的四种类型和特点

Intent传输数据大小限制

View相关
View事件分发机制

View滑动冲突解决

View的滑动

View的绘制流程

View和SurfaceView的区别和使用场景

View的动画类型

Window的类型

ListView和RecyclerView的比较

线程篇

线程相关类(AsyncTask、Handler、HandlerThread、IntentService)源码阅读和原理实现

Handler发生内存泄漏

主线程中的Looper的轮询死循环为什么没有阻塞线程

线程的生命周期

线程池的好处、原理和类型

开启和销毁一个线程的方法

Java内存模型

volatile的意义的使用

ReentrantLock和synchronized的区别

死锁产生的原因和条件

Java锁的类型

synchronized的原理

ReentrantLock实现原理

AtomicInteger实现原理

ReadWriteLock的了解与使用

数据储存篇

Android提供哪些数据持久存储的方法

SQLite的事务处理

SQLite优化处理

SQL注入

使用SharePreferences注意事项

IPC篇

进程和线程的关系

多进程通信存在问题和规避

Android进程间通信的方式和优缺点比较

序列化的方式。Serializable和Parcelable的区别和优缺点

Binder原理、优点

AIDL接口工作原理

性能优化篇

性能优化工具

布局优化

资源优化

代码优化和混淆

内存泄露检测

OOM发生的原因,如果规避

Java篇

equal和==的区别

equa和hashcode的区别和关系

String、StringBuffer和StringBuilder的区别

new String(“abc") 创建几个对象

静态内部类和非静态内部类的区别

抽象类和接口的区别和使用场景

基本类型的装箱和拆箱

常见集合源码阅读

一个对象的创建过程

Java mmap

内存篇

JVM内存如何划分

JVM的堆、虚拟机栈、方法区、计数器概念理解

垃圾回收机制

JVM、Dalvik和ART的区别

ClassLoader的类型和双亲委派机制

设计模式篇

面向对象编程的六大原则

面向对象三大特性和原理

常用的设计模式

单例模式的种类

MVC、MVP和MVVM的区别和比较

实际应用

算法和数据结构篇

数据结构的理解

链表的种类和实现,和数组的区别

队列的概念和实现,优先队列

堆的概念和实现,最大堆和最小堆的概念和使用场景

栈的概念和实现

二叉树概念和实现

红黑树的概念和实现,和二叉树的区别

时间复杂度和空间复杂度,如何计算

八大排序算法

字符串排序算法

刷题

计算机网络篇

五层协议的体系结构和每层的协议

Mac地址和IP地址的区别

HTTP和HTTPS的区别

HTTPS的加密算法

HTTP的方法

GET和POST的区别

HTTP常见状态码和意义

Http报文格式

HTTP缓存

TCP和UDP的区别

TCP三次握手和四次挥手

TCP拥塞控制和流量控制

TCP如何保证传输的可靠性

UDP特性

Socket的了解

DNS却持

HTTP却持


写在最后

可以看到,上面整理的知识点并不算很难的知识,都是中级Android程序员应该掌握的。但是闻道有先后,术业有专攻,所以我们难免有些知识平时工作中少接触而不熟悉,如果刚好又被面试官问到就有点尴尬了,所以准备面试还是需要针对自己的薄弱项进行一些补强,毕竟有备而无患。

另外,我整理的知识点还包含项目篇、问题篇和Framework篇等。而每个人工作内容差异,做的项目都不同,个人没有参考意义,所以这里不表了,但还是建议各位要针对自己的项目整理一下问题,特别是你写在简历上的,一定要做好准备!问题篇就是整理了一些常见的问题,如为什么跳槽,由于这些问题没有标准答案,比较开放,这里也不写了,各位准备准备就行。Framework篇的话,如AMS、PMS、WMS、SM等常见系统服务、APP启动流程等等,由于个人能力有限,还没能去自己研究一下源码,所以这里就不带偏各位了,建议大家去看下老罗的文章,写得有点深,初看可能吃力,但多看几遍,肯定有所收获。

最后欢迎各位点赞和收藏,答案后面陆续放送~

上一篇 下一篇

猜你喜欢

热点阅读