以下是面试中被问到的一些问题
基础:
1.描述一下Activity 生命周期?
2.A Activity 打开 B Activity 时都有哪些生命周期回调?
3.Activity的启动模式分别说一下
4.如何保存Activity的状态或者(Activiy 重启怎么保存数据?)
5.横竖屏切换时Activity的生命周期
6.onStart,onStop和onResume,onPause的区别?
7.横竖屏切换时的生命周期?
8.Android中的Context, Activity,Appliction有什么区别?
9.Context是什么?,一个应用有多少个Context
10.Service是否在main thread中执行, service里面是否能执行耗时的操作?
11.Android应用程序启动过程
12.如何保证Service不被杀死?
13.onActivityResult 在哪两个生命周期之间回调?
14.Fragment的生命周期?
15.Activity和Fragment的区别?
16.简述下Acitivty任务栈和使用方法
17.请描述一下BroadcastReceiver
18.BroadCastReceiver的生命周期
19.什么是Service?Service的生命周期?
20.Service的启动方式?如果启动方式交织在一起的话,会出现什么情况?
21.怎么在Service中创建Dialog对话框
22.Service和Thread的区别?
23.ActivityManagerService了解吗?有什么作用?
24.广播的两种注册方式有什么区别?
25.广播发送和接收的步骤是什么?原理了解吗?
26.ContentProvider 是如何实现数据共享的?
27.activity的startActivity和context的startActivity区别
28.为什么要用ContentProvider?它和sql的实现上有什么差别?
29.ListView如何优化?(复用,滑动流畅等)
30.在什么情况下BroadcastReceiver接收不到广播?
…
Android 中高级
1.TCP的三次握手和四次挥手,为什么不是两次握手?为什么挥手多一次呢?
2.如何对Android应用进行性能分析
3.Devik进程,linux进程,线程的区别
4.android应用对内存是如何限制的?我们应该如何合理使用内存?
5.数字签名的原理
6.Android 源码中常见的设计模式以及自己在开发中常用的设计模式
7.Android与 js 是如何交互的
8.网页中输入url,到渲染整个界面的整个过程,以及中间用了什么协议?
9.说一下handler机制?
10.子线程如何使用 Handler?
11.说一下你对Handler中ThreadLocal的理解?
12.主线程的 Looper 什么时候创建的?ActivityThread 的 main 什么时候调用?
13.Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么
14.如何优化自定义View
15.如何解决View的事件冲突?举个开发中遇到的例子?
16.网络请求缓存处理,okhttp如何处理网络缓存的?
17.WebSocket与socket的区别?
18.handler postDelay这个延迟是怎么实现的?
19.hashcode()和 equals()的作用、区别、联系?
20.Handler、Looper、MessageQueue、Thread关系?
21.Hashmap如何解决散列碰撞(必问)?
22.Hashmap底层为什么是线程不安全的?
23.RecyclerView的ItemView层级过深怎么优化?
24.怎么设计Android线程间通信?
25.Bitmap JPG区别 图像处理:JPG、PNG及BMP的区别?
26.广播(全局 本地区别)
27.onSaveInstanceState onRestoreInstanceState区别,调用时机
28.Serializable与Parcable的区别?
29.是否了解SurfaceView,它是什么?他的继承方式是什么?他与View的区别(从源码角度,如加载,绘制等)。
30.说下冷启动与热启动是什么,区别,如何优化,使用场景等。
面试题集和答案在文末
下面我来结合我的面试经历来谈谈不同公司级别的面试难度。
小公司(0-200人)
一般只要你收到这类型公司的面试邀请,只要你能把自己做过的项目架构,项目重难点说清楚,还有一些Android基础知识稍微扎实一点,然后你稍微准备一两个深一点的技术点,什么GC机制、基本的热修复原理说个10分钟,offer妥妥的,个别公司可能会考一些简单的算法题和智力题,比如冒泡、查找等等。在深圳这类型的公司三年安卓的价位一般在12-15这个区间,个别有钱的可能上限可以到18,一般都是15左右。至于面试题太常规,这里我就不多说了,想要看面试题和详细答案的可以直接看总结部分。
中型公司(200-1000人)
这类公司我面的其实也不是很多,深圳面试那家BL,做外汇金融的(ps:金融业务相关的公司都比较有钱,如果面试过程中面试
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
官表现出对你有兴趣,聊薪资的时候你就可以大胆要)我去面试的时候,公司应该是在扩招阶段,面试的人很多。问的问题比较广泛,Java、Android、算法、框架都有涉及到,虽然问的都比较基础,但是我回答的都会比他问的更深入一点,也许是对我比较有好感,聊了半个多小时后,他叫我稍等一下,然后去叫来了他们的Team Leader。然后问了一些事件分发和绘制流程的细节问题,还问了一些binder的原理性问题,我…基本上能答出来,然后leader就直接问我,期望薪资是多少(一般技术面试官直接问你这个问题了,也就代表这份offer已经稳了)我说:22K。leader笑着说了句:好,说下周会给我答复。
后来也确实收到了答复,但是答复说22k给不了,18k能不能来入职,然后…就没有然后了。
大型公司(5000人以上)
腾讯
一面之后就没有音讯了,所以没有什么发言权…
面试问的跟其他小公司一样从基础问起,但面试官会一步一步往深的问,直到你答不出来为止,然后下一个点 ,框架、原理性问题和性能优化方面的工作经验是比较注重的。也不觉得是自己答的太烂,只能说面试者中优秀的人太多,自己不够亮眼吧
上海哔哩哔哩(B站)
B站一面