前言
年年寒冬,年年也挡不住一个安卓程序员追求大厂的决心。想要进入大厂,我们需要掌握哪些知识点呢?
这里,给大家分享一下《2022中高级 Android 面试必知百题》为即将到来的 2022 年金三银四的面试做好准备。
Activity
1、什么是 Activity?
2、请描述一下 Activity 生命周期
3、请描述一下Activity的四个状态
4、两个 Activity 之间传递数据,除了 intent,广播接收者,content provider 还有啥?
5、Android 中的 Context, Activity,Appliction 有什么区别?
6、Context 是什么?
7、如何保存 Activity 的状态?
8、横竖屏切换时 Activity 的生命周期
9、两个 Activity 之间跳转时必然会执行的是哪几个方法?
10、如何将一个 Activity 设置成窗口的样式
11、Activity 的四种启动模式,singletop 和 singletask 区别是什么?
12、Activity 的四种启动模式,一般书签的使用模式是 singletop,那为什么不使用 singletask?
13、如何退出 Activity ?如何安全退出已调用多个 Activity 的Application?
14、Activity-Window-View三者的关系
Broadcast Receiver
1.如何注册 BroadcastReceiver
2.Android 引入广播机制的用意
3.两种注册各有什么优缺点
4.广播的类型
5.BrocastReceiver 里能否进行耗时操作
6.描述一下广播 BroadcastReceiver 的理解
7.BrocastReceiver 的生命周期和注意事项
Service
1.Activity 怎么和 Service 绑定,怎么在 Activity 中启动自己对应的Service?
2.描述一下 Service 的生命周期
3.Activity、Intent、Service 是什么关系
4.Service 是否在 main thread 中执行, service 里面是否能执行耗时的操作?
5.Service 和 Activity 在同一个线程吗
6.Service 里面可以弹吐司么?
7.在 service 的生命周期方法 onstartConmand()可不可以执行网络操作?
8.什么是 Service 以及描述下它的生命周期。Service 有哪些启动方法,有什么区别,怎样停用 Service?
9.什么是 IntentService?有何优点?
ContentProvider
1.请介绍下 Android 的数据存储方式
2.如何使用ContentProvider进行批量操作?
3.说说 ContentProvider、ContentResolver、ContentObserver 之间的关系
4.介绍下 ContentProvider 是如何实现数据共享的
5.为什么要用 ContentProvider?它和 sql 的实现上有什么差别?
Intent
1.请描述一下 Intent 和 IntentFilter
2.Intent 传递数据时,可以传递哪些类型数据?
3.Serializable 和 Parcelable 的区别
4.隐式、显式Intent的区别
Listview
1.当 ListView 数据集改变后,如何更新 ListView
2.ListView 如何实现分页加载
3.如何刷新 ListView 中单个 item 的数据,不刷新整个 ListView 的数据?
4.上拉加载和下拉刷新怎么实现?
5.ListView 中如何优化图片?
6.Listview里有Button点不动?
7.ListView 如何提高其效率?
8.ListView 可以显示多种类型的条目吗?
9.ListView 如何定位到指定位置?
10.如何在 ScrollView 中如何嵌入 ListView?
11.ListView 中图片错位的问题是如何产生的?
12.你知道ListView的setEmptyView方法吗?
Fragment
1.如何切换 fragement(不重新实例化)
2.Fragment 的的优点
3.Fragment 如何实现类似 Activity 栈的压栈和出栈效果
4.Fragment 的 replace 和 add 方法的区别
5.Fragment与Activity之间是如何传值的
6.Fragment生命周期
7.ViewPager对Fragment生命周期的影响
Java基础
1.什么是重载,什么是重写,有什么区别?
2.String、StringBuffer 和 StringBuilder 的区别
3.知道的设计模式有哪些
4.TCP/IP 协议簇分哪几层?TCP、IP、XMPP、HTTP、分别属于哪一层?
5.知道的设计模式有哪些
6.继承和实现的区别
7.final,finally,finalize的区别
8.int和Integer的区别
9.Java中==,equal和hashCode的区别
性能优化
1.如何对 Android 应用进行性能分析
2.什么情况下会导致内存泄露
3.内存溢出的几点原因
4.针对 static 的解决方案
5.线程导致内存溢出及解决
6.举例几种OOM 异常情况
7.如何处理图片过大导致 OOM
8.Android 中如何捕获未捕获的异常
9.ANR 是什么?怎样避免和解决 ANR(重要)
10.多线程间通信和多进程之间通信有什么不同,分别怎么实现?
11.Devik 进程,linux 进程,线程的区别
12.Android 线程间通信有哪几种方式
13.如何合理使用内存?
屏幕适配+AIDL
屏幕适配
1.基础概念
2.适配方式
AIDL
1.什么是 AIDL 以及如何使用
2.如何工作?能处理哪些类型的数据?
动画+事件处理
动画
1、Android 中的动画有哪几类
2、动画能组合在一起使用么?
3、插值器的种类有哪些?
4.如何自定义插值器
5.如何修改 Activity 进入和退出动画
事件处理
1、Handler 机制
2、onTouch 和 onTouchEvent 有什么区别
3、子线程中能不能 new handler?为什么?
4、子线程发消息到主线程进行更新 UI,除了 handler 和 AsyncTask,还有什么?
5、为什么系统不建议在子线程访问UI?
经验
1.开发中都使用过哪些框架、平台
2.三级缓存的原理:
3.清除缓存是怎么做的?
4.推送的好处:
5.为什么数据要以 json 形式传输?
6.项目流程
7.自定义view关键词
8.自定义view的实现思路
9.retrofit使用
10.组件化的优势
11.插件化的优势
12.打包原理
13.安装流程
14.如何防止反编译(提高反编译难度)
15.v1,v2签名结果
16.Android与服务器交互的方式中的对称加密和非对称加密是什么?
17.进程保活方案
18.Binder机制的优势
19.URI和URL的区别
20.TLS/SSL握手