前言
一眨眼就已到了八月份月底,相信有许多不满足现状的 Android 开发者;已经备战着金九银十这一面试高潮季的到来;不过,以目前的就业形势来看,今年可能是互联网行情最差的一年;寒冬之下,有许多技术水平处于初中级别的开发者也被其所淘汰;只有高级开发者依然矗立在这寒冬之下,所以唯有让自己的技术强硬起来,才能在这其中占有一席之地
但不管怎么说,既然决定了面试,那么就一定要做好充足的准备;话不多说,接下来开始分享面试所必须的准备工作
简历
简历可以说得上是你给面试官的第一印象,因此一份用心制作的简历,必然会让你在竞争者中独树一帜;还有简历的内容是极为重要的,面试官基本上会根据你简历上所写的项目经验为基准,以此来展开对你所掌握技术知识点进行询问,如果你对项目上所相关的技术点不是特别熟悉的话,那你最后一点会被问到哑口无言
所以,你必须要对简历上所写的项目进行复习,认真阅读自己所参与过项目中的项目代码;归纳出项目所相关的技术点、遇到的问题及其如何解决的,最终项目完成之后达到的效果能否更进一步等等,这样才能完善你简历中项目的技术点
简历投递
简历投递是需要一定的技巧的,盲目的投递并不能让你获得好的面试的机会;我们可以了解到现如今简历投递的主流网站包含:智联招聘、拉钩、BOSS直聘、前程无忧、猎聘同道;其他的简历投递网站基本上也没有什么太大的作用
另外智联招聘可以实行海投方法,只要自己的能力足够,你就可以向对应的公司进行投递;拉钩也可以,但有投递上限,不过你也可以多创建几个拉钩来进行简历投递;BOSS直聘的话,基本上是以聊天为主的,在有公司看了你的简历之后,你就可以主动去沟通了,所以在面试之余也可以进行投递简历和沟通交流
面试题
现如今面试官主要考察的问题大体有如下一些:
Android
- webview加载h5的优化(问得很多)
- 优化相关(包大小、启动优化、卡顿),webp的透明通道如何处理,代码压缩如何处理
- native-jni相关;如何分析native的崩溃堆栈;
- 进程保活
- 插件化原理
- 网络优化
- https,fiddler抓包怎么处理的,为什么fiddler可以篡改https的数据。header中的host作用是什么
- 懂不懂kotlin
- activity的4种启动模式,A启动B时activity的两个acitivity的生命周期的流程是什么
- 如何监听activity是从后台切换到了前台?不是在onResume()中处理push进程的挂掉之后,再次拉起时如何恢复push进程中service的状态
- 两个进程如何使用binder进行双向通信
- 如何监测普通对象是否泄漏,leakcanary在dump时卡顿厉害,这里该如何优化listview和recycleview的差别
- WebSocket、socket、NIO
- 对app架构的理解
- activity的启动流程
- 两个页面的消息同步怎么做?(类似以前评论sdk的在子评论页面点赞时,back回来后需要同步这个点赞状态)
java
- 类加载流程
- 类的唯一标识是什么
- gc流程
- map都有哪些类型,特点是什么,hashmap内部结构
- 动态代理跟静态代理区别,如何代理一个普通对象
算法
- 合并两个有序链表,使得最终有序。
- Map map,按value平方的升序打印key-value。
- 1000万个0~100之间的小数,找top100;如果是保留两位小数,怎么做?
上述的面试题大多面试官基本上都会过一遍,但是只刷这些面试题是远远不够的; 大家也知道关于 面试题的资源在网上其实有很多,但实则大多 杂而不精,并不能给提供一个好的刷题方向
我通过这些年的面试经历以及对网上的面试题进行了收集和整理,最终将其整合了成了一个 PDF 文档; 需要 完整版面试题 PDF 文档 的朋友:现在 私信 发送 “面试” 即可 免费获取;希望大家通过阅读这份面试题文档,能够查漏补缺;在面试中披荆斩棘,获得一个自己心中理想的 offer
面试题资料展示如下:
Android 高级开发面试题目录:
Activity 启动模式
- Activity 的启动流程
- onSaveInstanceState(),onRestoreInstanceState的掉用时机
- activity 的启动模式和使用场景
- onStart 和 onResume、onPause 和 onStop的区别
- Activity 的数据是怎么保存的,进程被 Kill 后,保存的数据怎么恢复的
Service 解析
- service 的生命周期,两种启动方式的区别
- Service 启动流程
- ervice 与 Activity 怎么实现通信
- IntentService 是什么, IntentService 原理,应用场景及其与 Service 的区别
- Service 的 onStartCommand 方法有几种返回值?各代表什么意思?
- bindService 和 startService 混合使用的生命周期以及怎么关闭
完整版面试题 PDF 文档获取方式: 私信发送 “面试” 即可 免费获取
详解 Handler 消息机制
- Handler 的实现原理
- 子线程中能不能直接 new 一个 Handler ,为什么主线程可以
- Handler 导致的内存泄露原因及其解决方案
- 一个线程可以有几个 Handler ,几个 Looper ,几个 MessageQueue 对象
- Handler的post 与 sendMessage 的区别和应用场景
Bitmap 内存问题
- Bitmap 内存占用的计算
- getByteCount() & getAllocationByteCount()的区别
- Bitmap 的压缩方式
- 如何设计一个图片加载库
- 有一张非常大的图片,如何去加载这张大图片
完整版面试题 PDF 文档获取方式: 私信发送 “面试” 即可 免费获取
深入解析 Binder
- 什么是 Binder?
- Binder 的原理
- Binder 框架中 ServiceManager 的作用
- Android 中进程和线程的关系
- 为何需要进行 IPC ,多进程通信可能会出现什么问题
- 为何需要进行 IPC ,进程通信可能会出现什么问题
性能优化系列
篇幅有限,详细内容就不作完全展示了,若需要完整版面试题 PDF 文档: 可以私信发送 ”面试“ 即可 免费获取
希望这份面试题资料能够对想要在金九银十面试季中面试或跳槽的程序员有所帮助
加油!各位 Android 开发者们