- 事件分发机制
- AMS、WMS
- Handler 机制
- JMM
- 锁机制
- AQS
- 内存优化怎么优化
- 项目中遇到的最大的问题是什么?怎么解决的
- 如果遇到项目进度无法推进,你怎么做的
- 你对近五年的规划
##某课
- Handler postDelay() 然后finish当前Activity会怎么样?
- View 绘制流程
- invalidate()、postInvalidate()、requestLayout()
- Tinker 为什么需要重启
- volatile、synchronized
- Java内存模型
这是我迄今体验最差的面试没有之一,面试官特别装逼,一直问我 API 细节,方法里有什么代码。最后面试官竟然 JVM 运行时内存区域和 JMM 都分不清,我实在忍不住了反问了一句:公司难道是在招 API 工程师吗?
##诸葛找房
- 事件分发机制
- HTTP 响应吗
- Handler 机制
- 手写排序算法
- 常用设计模式
##异乡好居
- http https
- js webview交互
- handler为什么不卡死
- App启动流程
- 自定义view过程
- 动画原理
- 事件分发机制
- 混淆怎么处理
- 设计模式
- 对跨平台技术的了解
##FineChart
- HTTP、HTTPS区别
- HTTP报文
- 手写反转链表
- 手写单例模式
- volatile关键字原理
- 事件分发机制
- App启动流程
- 项目天气曲线实现原理
- 第三方开源库实现原理
- 线程池原理
- wait()、sleep()区别
- 项目中最大的困难是什么?怎么解决的?
- 常用集合类实现原理
- ConcurrentHashMap原理
##阿里体育
####电面
- List、Map、Set 哪个能存null,哪个能重复?
- 补间动画与属性动画的区别
- Handler 机制
####一面
- 怎么实现View悬停?
- TCP怎么做长连接?
- 网络优化
- 热修复原理
- Instant Run原理
- 视频做过吗?
- 相机做过吗?
- LinkedHashMap、HashMap实现原理,区别是什么?
####二面
- Android与iOS相比有什么差别
- Android与iOS系统内存管理机制了解吗?
- 常见算法了解哪些,时间复杂度是什么?
- 项目中遇到的困难是什么?怎么解决的?
- 你最大的优势是什么?
- 对于其他同事,为什么你觉得你这个优势最突出?
不得不承认阿里实力还是很强的,也可能我投的岗位期望 P8 以上水平的缘故,被虐的很惨。突然感觉这几年都荒废了,选择大于努力,一定要选择好的方向,比如我选择小程序就是一个错误。
##多点科技
####一面
- HashMap、ArrayMap
- Handler、IdleHandler、postDelay
- View 绘制原理
- 事件分发机制
- 如果子View已经处理了事件,父View怎么拦截子View事件
- Binder机制
- 线程池原理
- 垃圾回收机制
- 类加载机制
####二面
- OkHttp、Retrofit、Glide、ButterKnife、EventBus、RxJava
- Jetpack、LiveData、ViewModel
- ArrayList、LinkedList
- Material Design
- Java并发编程(JMM)
- MVP、MVVM区别
####HR面
- 期望什么样的领导?
- 期望加入什么样的公司?
- 拿到几个Offer了?
- 期望薪资?
####董事之一
- 介绍了下公司的发展前景,公司的优势
- 对未来工作的期望?
- 聊了将近一个小时…
##美餐网
- 怎么判断二叉搜索树是否合法,白板手写出解法
- 给出一个业务场景怎么处理
你没有看错,就只有两道面试题,白板手写代码,这是我遇到的最奇葩的公司了,最后还说我代码写的不讲究(这 tm 是面试吧,我已经说了由于篇幅有限,一些细节就忽略了),太浪费时间了。
##360
####一面
- 线程状态转换图
- Activity生命周期,一个Activity启动另外一个Activity生命周期函数调用
- Activity启动模式,onNewIntent() 调用时机
- 动画有哪些,实现原理
- setContentView()后面的流程
- Handler机制,Looper与ANR
- 过度重绘、UI卡顿
- WindowManager.addView(),View.getParent()是谁?
- JMM理解
- Lock机制
####二面
- 内存泄露、内存溢出
- 类加载机制、双亲委派模型
- CAS
- 有多个线程1、2、3、4,1、2、3 并行完后与 4 串行,至少 3 种方式实现
- 网络参考模型
- HTTP、HTTPS传输过程
- TCP三次握手、四次挥手
- 用过哪些设计模式
- 根据简历多渠道包怎么构建的
- 反射原理
####三面
- 一般都是根据简历问
- 对大前端技术的了解
- 类加载机制
- 对JDK各版本差异的了解
- Android系统启动流程
- AMS、WMS
- 对Framework层源码的了解,为什么这么设计,优缺点
##关于准备
每个人应聘的职位级别不一样,需要准备的范围也有所不同。我应聘的是高级职位,主要准备了以下几点:
####Java 基础
一般都会问 Java 虚拟机相关知识:类加载机制、双亲委派模型、垃圾回收机制、运行时内存区域、注解、泛型、反射等等。强烈建议精读一下《深入理解 Java 虚拟机》这本书。
Java 并发编程也是高级必问知识:Thread生命周期、JMM、volatile、synchronizied、final、JUC、Lock、线程池等等。推荐看一下《Java 并发编程的艺术》。
####Android 基础
这部分内容比较多,还是需要平时多积累,养成看源码的习惯。
现在一般都不仅仅问原理是什么了,比如 View 绘制原理会问 requestLayout() 和 invalidate() 什么区别?什么情况下 requestLayout() 会执行 onDraw() 方法?
Handler 机制大家都会说,网上找找都能找到,现在会问一个线程几个 Looper,几个 Handler?Looper 中的死循环为什么不会卡死主线程?IdleHandler 的原理?发送延时消息怎么处理的?
如果你能从 Handler 答出 epoll 机制,接下来会问 epoll 机制的原理,有没有看过源码?
高级岗位 Framework 层原理肯定逃不过的,系统启动流程、Binder、AMS、WMS 都是最基础的,最好有一个自己深入研究的方向,比如 SurfaceFlinger。
进阶一定要看刚哥的《Android 开发艺术探索》必备,Framework 部分《Android 内核剖析》、《Android 源码情景解析》、《深入理解 Android》系列等都是很不错的书籍。
####网络基础
面试中一般会问 HTTP 的三次握手、四次挥手过程,以及为什么?HTTPS 的通讯过程?等等。
网络是个大方向,对于 Android 工程师来说,常见的概念必须要了解的,当然深入研究一下也是很不错的加分项。就像直播,网络优化等方面都离不开网络知识。
推荐看一下《图解 HTTP》、《图解 TCP/IP》,向深入研究可以看《TCP/IP 详解》、《UNIX 网络编程》。
####数据结构与算法
数据结构计算机专业的一般都是必修课,网上资料很多这里放上我收集到的一些资料,文末自取。
面试中数据结构一般会问 Java 集合类:ArrayList、HashMap、ConcurrentHashMap 等等,常见的高频算法题一定要准备下。
算法可以看看《算法》、《算法导论》、覃超的《算法面试通关 40 讲》、刷下 LeetCode。
####设计模式与架构
设计模式一般会问你在项目中常用的设计模式有那些?等你说完之后会问你怎么用的,什么场景用的?它的优缺点是什么?遵循了什么原则?违背了什么原则?…
架构 MVC、MVP、MVVM 烂大街的问题,一般会问它们的优缺点各是什么?
##总结
虽然后面还有好几家面试,也有像豹厂这样的很不错的公司。但不得不承认一天面两家,一周面 10 多家实在太累了。
在收到大数字公司的 Offer 后就没有再面了,加上 HR 将近五轮的面试聊得过程都很愉快,大数字公司也是我比较理想的公司。
题外话
不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊
这里我为大家准备了一些我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~
欢迎评论区讨论。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
准备了一些我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~
[外链图片转存中…(img-3b3zNIvf-1715144238311)]
欢迎评论区讨论。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!