一份适合国内Android开发者的面试题合集, 整理成问答的方式。你可以把它看成一份考纲,适合于已经了解具体知识点想要参考如何表述,或者曾经了解但是时间久远有些遗忘了的情况。
如果你想更加详细的了解某些题目的原理,可以跳转到下面这个工程:
JsonChao/Awesome-Android-Interview
南瓜镇楼!
本工程收集整理了Android面试中常见的面试题,包括以下几个大类
-
技术相关
-
Android相关
- Android基础题
- Android进阶题
- Android中的开源库
- gradle相关
-
Java语言
- Java基础题
- Java并发相关题
- JVM Java虚拟机相关题
-
计算机基础
- 网络相关基础题
- 操作系统相关
-
数据结构与算法
-
-
非技术相关
- 职业规划相关
- 薪资福利相关
- 其它
其中算法题目部分,可以跳转到下面这个地址:
- Activity和Fragment的生命周期
- Activity横竖屏切换的生命周期
- 对话框出现时Activity的生命周期
- 通知栏下滑时Activity的生命周期
- Activity如何保存状态
- Activity的启动模式
- 跨应用启动的Activity,位于哪个栈中?
- Service生命周期
- IntentService的作用
- LocalBroadcast原理
- bundle的数据结构,如何存储,既然有了Intent.putExtra,为什么还要用bundle?
- Serializable和Parcelable区别
- 不同应用可以存在于同一进程吗?
- MeasureSpec的理解
- View的工作流程
- 如何自定义View
- View事件分发机制
- View的滑动冲突处理
- Android中动画的种类
- 来源库Lottie原理
- Window的作用
- Window的创建,更新和删除
- Activity的Window创建过程
- Android中线程间通信
- handler机制, Looper里面消息队列如何实现
- 在Java中,如何保证多线程持有同一变量互相不影响
- Android中进程间通信
- 以AIDL为例,说明客户端和服务端建立远程通信的步骤。
- Android和WebView的JS如何通信
- 介绍一下Dex文件
- SDK如何优化体积
- 从点击桌面应用图标,到最终启动App,中间发生了什么事?
- 大体说清一个应用程序安装到手机上时发生了什么?
- apk文件的组成
- 一个图片在app中调用R.id后是如何找到的
- ANR的现象,原因和分析解决方案
- 内存泄露的原因和分析解决方案
- Bitmap占用内存的大小
- 如何优化Bitmap的加载?
- 如何定位和优化滑动卡顿?
- 如何评估和测量App的性能?
- React Natvie如何封装Android的方法和自定义View?
- LeakCanary的原理
- Lottie的原理
- Java中的强引用,软引用,弱引用,虚引用
- Java中对象的生命周期
- Java的注解
- Java单例的实现
- Java线程的六种状态
- synchronized关键字
- volatile关键字
- 线程池的理解
- Java的等待/通知模型
- Copy-On-Write容器
- 重入锁以及锁的公平性
- 介绍一下Class文件
- Java虚拟机运行时的数据区
- 双亲委派模型
- 判断Java中对象存活的算法
- JVM垃圾回收算法
- 什么时候会使用HashMap?它有什么特点?
- HashMap的工作原理
- get和put的原理, equals()和hashCode()的都有什么作用?
- hash的实现及原因?
- 如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办?
- GET和POST的区别
- Cookie和Session的区别
- Http和Https的区别
- Https的混合加密机制的原理
- TCP和UDP的区别
- TCP建立连接和断开连接的过程
- TCP/IP协议的含义和分层
- 浏览器输入URL后发生了什么
- 如何理解I/O多路复用
- 线程和进程的区别