写在前边
最近在准备面试,费了很大劲收集整理了面试题,包括Android基础、Android高级、Java、计算机基础、设计模式、以及一些常见的问题。所有题目来源于网络,包含了掘金,简书以及其他平台的文章。面经等等。有大厂也有小公司,有基础也有高级,文章最后附上了链接,希望能帮到有需要的人,做好充足的准备,找到满意的工作。
Android
基础:
1.四大组件及生命周期;
2.安卓子线程是否能更新UI,如果能请说明具体细节。
3.什么是ANR?ANR产生的原因和解决步骤 ?ANR 具体产生的类型有哪些,具体说下其产生的最大超时时间。 如何避免它?
4.activty和Fragmengt之间怎么通信,Fragmengt和Fragmengt怎么通信
5.广播注册一般有几种,各有什么优缺点
6.服务启动一般有几种,服务和activty之间怎么通信,服务和服务之间怎么通信
7.数据库的知识,包括本地数据库优化点。
8.如何针对具体的SQL做优化;mysql的存储引擎有哪些,区别;
9.请描述安卓四大组建之间的关系,并说下安卓MVC的设计模式。
10.ContentProvider的权限管理(读写分离,权限控制-精确到表级,URL控制);
11.Activity的四种启动模式对比;Activity状态保存于恢复;
12.什么是AIDL 以及如何使用;
13.请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系;
14.Fragment生命周期;Fragment状态保存;
15.startActivityForResult是哪个类的方法,在什么情况下使用,如果在Adapter中使用应该如何解耦;
16.AsyncTask原理及不足(AsyncTask 如何使用;);
17.IntentService原理;
18.Activity 怎么和Service 绑定,怎么在Activity 中启动自己对应的Service;
20.请描述一下Service 的生命周期;
21.如何通过广播拦截和abort一条短信;
22.广播是否可以请求网络?广播引起anr的时间限制;
23.事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?
24.说说ContentProvider、ContentResolver、ContentObserver 之间的关系;
25.请介绍下ContentProvider 是如何实现数据共享的;
26.Handler机制及底层实现;
27.Binder机制及底层实现;
28.在manifest 和代码中如何注册和使用BroadcastReceiver;
29.说说Activity、Intent、Service 是什么关系;
30.ApplicationContext和ActivityContext的区别;
31.Serializable 和Parcelable 的区别;
32.请描述一下BroadcastReceiver;
33.OOM的避免异常及解决方法;
34.两个Activity 之间跳转时必然会执行的是哪几个方法?
35.理解Activity,View,Window三者关系
36.四种LaunchMode及其使用场景
37.recycleView与listView的区别
38.什么情况下,Activity的onNewInstent()方法会执行?Activity的启动模式相关。
39.Fragment能否不依赖于Activity存在?简析一下Fragment的栈管理。
40.View的post(Runnable r)方法里,r会带来一个新的线程吗?多线程相关。
41.在非UI线程中使用Handler需要注意哪些问题?
42.Android ListView优化之局部刷新(更新)(非notifyDataSetChanged)
43.EventBus的机制是什么?和Handler的区别怎样?
44.Broadcast Receiver在什么情况下能用得到?
45.请简述一下你对fragment的理解?
46.请简述一下Fragment的生命周期?
47.说说你知道的Android5.0和Android6.0的新功能?
48.RecyclerView 和 ListView 使用对比分析
49.Android的APK瘦身方法你了解多少?
50.android项目目录中res目录和assets目录的区别?
51.你用过Gradle吗?
52.Activity的四种状态是什么,分别对应的Activity的生命周期是什么?
53.请说说你是怎么优化ListView的?
54.android中进程的优先级?
55.Serializable和Parcelable
56.Context相关
57.Jar和Aar的区别
58.什么是三级缓存
59.Android为每个应用程序分配的内存大小是多少
60.更新UI方式
61.Activity启动过程详解
62.SurfaceView和View的最本质的区别
高级
1.安卓事件分发机制,请详细说下整个流程
2.安卓view绘制机制和加载过程,请详细说下整个流程
3.多线程和安全问题(安卓解决线程并发问题)
4.多线程多点下载的过程
5.怎么让自己的进程不被第三方应用杀掉,系统杀掉之后怎么能启动起来。
6.自定义view效率高于xml定义吗?说明理由。
7.activty的加载过程 请详细介绍下(不是生命周