共计 5778 个字符,预计需要花费 15 分钟才能阅读完成。
我毕业走出学校已有五年了,真想在回到大学时代,去谈一场轰轰烈烈的恋爱…… 而不会像当初是一个没人疼没人爱的独身狗!
在这个五年的时光里,我始终在 Android 行业摸爬滚打,待过的公司差不多有五六家了,待得最久的一家时长如同是一年多,根本都是中大型的公司。在进入这些公司前,少不了的必定是面试环节,而在这些年内去面试的公司也比拟多。如何要说具体多少家公司的话,说实话我本人也记得不是很分明了。然而近一年中我去面试的公司,我是有所简略的记录。
想在金三银四面试的这个季度,通过这篇文章分享给大家做个参考,失败和胜利的面经案例都有,咱们一起往下看吧。
面试后期筹备
置信大家在面试前都会一个备战的预习期,因为大家都想把 Offer 拿到手,而后本人进行去筛选公司,这个周期的长短不宜过长。其实在这个期间最重要的是,给本人做好一份优质的简历,HR 或者面试官第一眼见的就是你的简历,从简历中进行筛选确定是否告诉你来面试,这个是最要害的一步。二就是对本人简历中所记录熟知的技术点和我的项目进行温习,从网络下来找相干的面试题进行刷。还有就是回忆之前做的我的项目中遇到的一些问题,本人是如何去解决,这个是面试官跟你聊我的项目中可能会问到的。
面试过程(不分工夫先后)
小米 (三面)
一面
两个面试官(一个咱们小组 Android 的 leader,一个是共事),上来先当着他们的面写了一个口试题(都是很根底的题没啥难度,算法题也就是一个 list 的反转,然而小米比拟重视手写代码的一些细节,所以要思考好该判空的判空,还有避免越界啥的问题),而后就开始问,90% 都在问 Java 根底(GC 的机制,GC 算法,内存相干的问的比拟多,多线程线程平安问题是如何产生的,HashMap 的原理)
二面
咱们组的主管(全程聊我的项目,没有问技术相干的了,而后介绍了一下这个部门的工作内容啊之类的)
三面:
原本应该有三面…三面是咱们部门的领导,然而因为一些其余的起因吧,三面就没有面间接过了
感触:
其实自已算是运气好,遇到的问题算是偏容易的,要多看看算法方面的视频
腾讯音乐(5 次技术面)
面试内容:
1.activity 和 service 的生命周期与应用场景
2.thread 和服务的差异,单例的类型,多少种?优缺点说一下死锁的起因, 与场景,单例的应用场景
3. 应用过啥起源框架,有啥特点,为什么,从中学到了什么。
4.kotlin 的特点与 java 的差异,
5. 三种架构的区别 handler 和 view 的原理,
6. 线程池原理与品种
7.javastackoverflow 的起因
8. 性能优化和卡顿优化的理论案例
9. 虚拟机的形成与原理
10. 热修复和插件化的区别与原理
11.rxjava 源码
12. 多线程应该留神的问题
13.databinding 原理
14.binder 原理
15. 网络方面常识
16. 平时解决问题的流程
感触:
把握基础知识很重要,算法也有问到,还有就是开放式问题,他想晓得我怎么解决问题的一个过程,怎么发现和定位,平时学习的办法。
美团
1.java 的话 static 变量各种拜访可见性,final 关键字的作用,封装继承多态开展问,多线程通信,线程池原理,线程同步形式,jvm 内存模型,常见的 gc 算法,类加载过程
2. 网络的话次要是问的 https,http1/2/ 3 的区别个性 Android 问了一些常见的 handler 原理,recycleview 缓存机制,view 事件的散发
3.glide 缓存机制
4. 而后引申如何实现我 LRU。内存泄露和如何预防解决,
5. 算法的话,有 top- k 排序 (堆排序,位图法),旋转输入矩阵,链表逆序,hashmap concurrenthashmap 原理,线程安不平安,它的锁机制等等
华捷艾米 (根底面)
1. 冒泡排序,堆排序算法
2. 均衡二叉树和红黑树的区别
3. 多线程,用过哪些并发 api? 踩过哪些坑?
4.C++ 的 指针和援用的区别
5. 手写对赋值运算符重载
6.GC 会不会把所有线程暂停?
7.GC 不同期间有何区别?
8. 说一下 Handler Looper 的休眠机制
9. 设计一个算法,已知某年某月某日是星期几,求另外年月日对应的星期几。
厦门美图
1. 多线程
2.handler
3. 网络申请
4. 性能优化
5.view 绘制
6.opengl 局部
7.camera 相干
8. 自定义 view
9.asyncTask
10. 图片加载框架原理
汇丰银行
1. 线程池的工作原理 2.synchronized 锁办法和锁静态方法有什么区别
3. 锁的了解,什么是乐观锁,乐观锁,可重入锁。
4.View 的事件散发流程
5.View 的三种测量模式了解,什么时候会产生 Excatly
6.HashMap 的工作原理。
7. 怎么实现多线程下载,断点续传怎么实现。
8.rxjava 的背压理解吗
9.kotlin 的协程,怎么做到和 rxjava 的 zip 操作一样,期待所有后果后再解决。
盒马生鲜
1.bitmap 在内存中的大小计算
2. 零碎级的全局异样如何捕捉打印堆栈?
3.APT 技术原理(这个竟然忘了?)
4. 如何中断一个线程?AsyncTask 如何中断?(加标记位中断)
5.CoordinatorLayout 滑动机制?两个 CoordinatorLayout 嵌套如何通过事件散发传递解决滑动?父 View 中嵌套子 View,疾速滑动 fling 状态,如何解决在父 View 到顶部进行滑动,子 View 持续滑动?
6.Flutter 热重载原理
7. 组件化用了什么技术?实现原理是什么?
8. 如何剖析主线程中的音讯队列耗时状况
9. 绘制优化、APP 启动优化,activity 跳转启动速度优化?(网络申请可不可以放在 setContentView 之前?)
10. 如何实现旋转动画?(帧动画、属性动画、gif、Lottie 动画框架)
11.GC 分代回收介绍?Eden 和 survivor 为什么是 8:1?老年代存活下来的会进入永恒代么?
12. 如何批改 JVM 内存调配?(AS 中在 vmoptions 批改,gradle.properties)13.Android9.0 暗藏的属性办法是咋反射获取的 (原理居多)
小红书
(1)concurrentHashMap 如何加锁的
(2)measure 参数详解,view 设置 wrap 不起作用
(3)Bind service,如何实现保活
(4)两个过程 act,如何放慢启动速度
(5)性能优化(面试官老插嘴,都说不上话)
(6)Eventbus 如何实现线程的切换
(7)jetpack 的 Navigation 的 xml 援用,在什么时候调用的?
(8)Inflater.inflate 如何实现 xml 转 java 的(framework),办法中的各个参数含意。
京东(凉经)
(1)如何设计模块,组件,sdk, 如何思考
(2)说说你我的项目的架构,为何这么设计或这么思考
(3)说说内存透露,越多越好
(4)说说你的技术难点,如何解决,如何思考
(5)apk 平安,你如何思考
(6)act+fragment 的齐全生命周期(不是单个说哦)
(7)京东北辰:recyclerView 源码,必会,包含缓存如何实现,哪几个缓存,运作流程等;各种 notifyXX 的原理,触发哪些重绘;如何实现下半局部 item 不挪动,上半局部的 item 高度变动的实现?
探探 (凉经)
(1)手拖动 View,手松开后实现一个泡泡破裂的动画成果(实质是 view 事件散发机制 + 动画选型,散发机制哪个办法解决什么参数,之后怎么触发动画成果等,问的灰常具体,吐了)
(2)自定义 view 相干,invalidate,postInvalidate,requestLayout,深刻的说说 framework 层的流程原理
(3)kotlin 协程深层原理如何实现的
(4)dcl 是否线程平安?哪一块出问题,为什么 volatile 能实现避免指令重排,指令级别如何实现的,对象的创立过程等(多家都问了,很深刻)
shopee 基金
shopee 一面:
1.java 的四种援用剖析
2.synchronize 和 volatile 各自的机制是怎么的
3.handler 源码原理相干的问题
4. 自定义 view 的绘制,事件散发机制,怎么解决滑动抵触,activity 启动的过程
5.https 单向认证,对称加密和非对称加密,在浏览器输出 url 产生了什么
6.jvm 相干,如 new 一个对象的过程产生了什么,垃圾回收机制
7.. 问了对于线程池的一些问题
8. 跨过程通信有什么计划
9.binder 机制
10.hashmap 源码
11. 用什么计划放大 apk 体积
12.recyclerview 和 listview 比照
13. 做过什么内存优化,性能优化
14.okhttp 源码设计原理
15. 手写一道算法题,对于 DFS+ 回溯算法的
shopee 二面:
1. 问了之前的一些我的项目经验,在团队做了什么,次要负责哪一块,抉择一两块本人认为做得最好的开展讲讲,过程中会打断问问题
2. 有没有做过插件化,做到什么水平,讲讲原理
3. 因为我之前我的项目有用到 mvvm 和 jetpack,问了一些 jetpack 组件相干的源码,和 mvvm 跟 mvp 的比照
4. 又问了 okhttp,缓存拦截器原理是怎么的
5. 我的项目中做过什么性能优化,具体说说
6. 平时我的项目中用到什么设计模式,挑几个罕用讲讲
7. 聊人生聊职业规划
WPS
1. 线程切换 (handler 机制)
2. 多线程,几种锁,有什么区别
3. 如何实现线程排队
4.Https 加密机制
5. 我的项目教训
6.Okhttp 原理 7. 设计一个线上日志收集零碎
8. 我的项目教训
9.Activity 启动流程
10. 性能优化
11.Viewstub 实现原理,本人设计一个相似的
12.Https 如何保障平安的,如何避免中间人攻打,能够伪造证书吗
13.Looper 死循环为什么不会导致主线程卡死
14.epoll 机制是怎么样子的
15. 热修复资源 id 抵触怎么解决
16.AIDL 如何实现的
17.Binder 原理
字节跳动
一面:
1.SharedPreferences 线程平安吗
2.SharedPreferences 多过程调用会有问题吗?如果须要多过程调用,怎么实现
3. 本人在我的项目代码中写一个 java.lang.String 类会有问题吗
4. 内存透露除了用 LeakCanary 还有没有其余方法检测
5. 如何监控线上内存透露
6.native 的内存透露怎么监控
7. 如何监控线上 OOM,如何晓得是哪里造成的 OOM
8.Error 和 Exception 的区别
9. 怎么监控利用中的线程,都是在哪创立的(AOP)
10.post 一个提早 5 秒的音讯,怎么做到 5 秒后才执行的
11. 同步屏障原理
12.ContentProvider 初始化的机会
13. 组件化 - A 组件要调用 B 组件的某个性能,怎么调用(答复了接口下沉,AutoService 等等)
14. 组件化 - 如果不必接口下沉,没有任何依赖,怎么不便的调用(不让用反射,太麻烦)
15.A 过程调用 B 过程的 b 办法(AIDL 实现的,B 过程有个服务),B 过程没有创立的状况下,B 过程中是 b 办法先执行还是 Application 的 onCreate 办法先执行?16. 如果 b 办法很耗时,A 过程会被阻塞住吗
17. 算法:写一个二叉树的层序遍历
18. 数据库的索引原理
19.B+ 树和二叉树的区别,性能比照
20.HashMap 的毛病,怎么解决
21.ArrayMap 的原理,为什么内存耗费低
22.flutter 与其余跨平台计划比照,flutter 为什么好(除了跨平台),跟原生的性能比怎么样
23. 硬件加速的原理
二面:
1. 触摸事件中的 cancel 事件什么时候触发
2.handler 延时音讯怎么实现的
3. 主线程有好多 handler,散发音讯的时候怎么晓得给哪个 handler
4. 主线程每 5 秒钟发一个须要执行 10 秒的音讯到子线程,会产生什么
5. 实现了 AIDL 接口的服务的办法是运行在哪个线程?有多个办法,是不是运行在同一个线程?
6.Binder 通信中,客户端调用服务端是阻塞的吗?怎么做到不阻塞?
7.bitmap 的像素数据在哪里?始终申请 bitmap 会 oom 吗?
8.view 的绘制刷新机制是怎么样的?vsync 信号收回后怎么触发绘制逻辑的?
9. 页面静止的时候,onDraw 会执行吗?vsync 信号会发吗?
10.vsync 信号收回的时候,怎么管制需不需要 onDraw?
11. 用 canvas 怎么绘制一个倒影
12. 对 canvas 做矩阵变换的 matrix 有哪些参数配置
13. 做过哪些性能相干的优化
14. 怎么剖析 anr 问题
15. 如果是死锁导致的 anr,在日志上怎么看
16. 利用启动速度怎么优化
17. 没有内存透露的状况下,利用占用内存比业内其余利用内存要多,怎么剖析优化
18. 布局层级太多怎么优化
19. 页面内有一些不须要每次都显示的 view,怎么优化
20.recyclerview 外面的图片显示速度比较慢,怎么优化
21. 做过的最简单的我的项目
22. 工作几年中本身晋升比拟大的中央
23.JavaScript 中 bind,call,apply 的区别
24.RxJava 中的背压是什么意思
25.flutter 有理解吗
26. 最近有学习什么
27.mvvm 与 mvp 的区别
28. 装璜模式和代理模式的区别
三面:
1. 介绍在上一家公司做的 app,app 的 crash 率是多少
2. 具体介绍最有技术难度的我的项目
3. 利用 crash 的实质起因是什么
4. 重写和重载的区别,利用场景
5.hybrid 开发中遇到了什么问题
6. 线性布局和绝对布局那个性能更优
7.js 和 java 之间传递大对象会怎么样,怎么保障传输性能
8.activity 横竖屏切换会产生什么?怎么防止
其实还有几家小型公司的面试,我就不在此一一的阐明了,因为文章篇幅长度无限,所以就筛选了几个本人感觉面的还不错的公司进行跟大家分享,大家能够参考这些面试题,去进行记录学习,可能对你未来面试是有帮忙的。
举荐分享
之前在做面试筹备的时候,从网上查找收集整理了一些 Android 开发相干的学习文档、面试题、Android 外围笔记等等文档,进行刷题温习 Android 相干的常识,通过这次的面试成果检测,也体验出了后果。这次面试能通过一半起因是本人的技术还过的去,另一半的起因就是排汇了这些学习文档精髓。
所以我想拿进去跟大家进行分享,心愿能帮忙到大家学习晋升,在面试中能顺利通过。 如有须要参考的能够点击这里即可收费获取 !