前言
今天突然想聊聊面试了,为什么要聊面试呢?因为最近有很多公众号和简书上的朋友跳槽让我看简历,也有很多朋友跟我吐槽说:面试又被虐了,火箭造的简直惨不忍睹,都有点怀疑自己的能力了。其实,我想说:正常,之所以这么说是很多朋友可能没有认清自己存在的一些问题。哪些问题呢?
两点:
-
**一是,**没有认清自己的技术实力,三天打鱼两天晒网的复习,对提升自己是没有任何一点效率的;
-
**二是,**去面试之前,没有真正了解公司。
其实说实话,我们作为Android程序员,最起码得有 80% 的人都想进入大公司工作,比如:BAT ,小米,滴滴,今日头条,美团,华为等这样的大公司或者移动互联网界的明星企业。
进大公司的好处显而易见,福利好,待遇高,工作稳定,不像很多创业小公司说倒闭就倒闭,尤其是移动互联网进入下半场之后,很多创业公司都相继倒闭,而且Android开发者也越来越饱和,随着Android程序员越来越多,自然就进入了激烈竞争的恶劣环境,优胜劣汰的自然规律是不可逃避,也规避不了的。
注意:
接下来的大厂面试真题,希望可以帮到大家,需要PDF版的可以自行下载:【https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DBRZhpPkt】
猿辅导
1.泛型有什么优点?
2.动态代理有什么作用?
3.拉圾回收的GCRoot是什么?
4.Handler机制了解吗?一个线程有几个Looper?为什么?
5.你了解协程吗?协程有什么作用?可以完全取代rxjava吗?
6.你们用的什么消息通信机制
7.你的项目有什么难点?介绍一下?
8.算法题,二叉树最长结点集合
猿辅导2面
1.你们项目中的难点是什么?
2.编译期注解处理的是字节码还是java文件
3.你在项目中有用到什么设计模式吗?
4.ARouter的原理是怎样的?
5.插件化的原理是怎样的?
6.算法题,K个一组反转链表
7.广播与RxBus的区别,全局广播与局部广播区别
猿辅导3面
1.你们项目中有什么难点?
2.@JavaScriptInterface为什么不通过多个方法来实现?
3.为什么不利用同步方法来做jsBridge交互?同步可以做异步,异步不能做同步
4.网络封装怎么实现?
5.算法题,不同面值的几个硬币,怎么求满足条件的最小值
斗鱼
1.说说HashMap的原理
2.说说Java的内存分区
3.讲讲你对垃圾回收机制的了解,老年代有什么算法?
4.说说你对volatile字段有什么用途?
5.说说事件分发机制,怎么写一个不能滑动的ViewPager
6.说说你对类加载机制的了解?DexClassLoader与PathClassLoader的区别
7.说说插件化的原理,资源的插件化id重复如何解决?
8.mvp与mvvm模式的区别是什么?
9.JetPack组件用过哪些?lifeCycle的原理是什么?如果在onStart里面订阅,会回调onCreate吗?
10.单例模式有什么缺点?
11.说说App的启动过程,在ActivityThread的main方法里面做了什么事,什么时候启动第一个Activity?
12.说说你对Handler机制的了解,同步消息,异步消息等
13.说说你对屏幕刷新机制的了解,双重缓冲,三重缓冲,黄油模型
14.onCreate,onResume,onStart里面,什么地方可以获得宽高
15.为什么view.post可以获得宽高,有看过view.post的源码吗?
16.attachToWindow什么时候调用?
17.DataBinding的原理了解吗?
滴滴一面
1.JVM类加载机制了解吗,类什么时候会被加载?类加载的过程具体生命周期是怎样的?
2.Handler内存泄漏的GCRoot是什么?
3.动画里面用到了什么设计模式?
4.OkHttp里面用到了什么设计模式?
5.OkHttp连接池是怎么实现的?里面怎么处理SSL?
6.泛型为什么要擦除?kotlin的泛型了解吗?泛型的pecs原则
7.同步屏障
8.性能优化做过什么工作?
9.RecyclerView的缓存结构是怎样的?缓存的是什么?cachedView会执行onBindView吗?
10.RecyclerView嵌套RecyclerView,NestScrollView嵌套ScrollView滑动冲突
11.ViewGroup在Action_Move时onIntercept返回true,事件怎么传递
12.Launcher启动图标,有几个进程?
13.JMM可见性,原子性,有序性,synchronized可以保证什么?
14.源码中有哪里用到了AtomicInt
15.AQS了解吗?
16.Activity内LinearLayout红色wrap_content,包含View绿色wrap_content,求界面颜色
17.ViewModel的使用中有什么坑?
18.有用DSL,anko写过布局吗?
19.HashMap查找的时间复杂度是多少?
20.阿里编程规范不建议使用线程池,为什么?
21.四种线程池原理?
22.了解哪些算法?
23.IdleHandler用过吗?
滴滴二面
1.如何封装一个字符串转数字的工具类
2.如何求当前Activity View的深度
3.多进程怎么实现?如果启动一个多进程APP,会有几个进程运行?
4.反射可以反射final修饰的字段吗?
5.Activity与AppCompactActivity区别,Activity会打包到包里面去吗?
6.如何让两个线程循环交替打印
7.怎么中止一个线程,Thread.Interupt一定有效吗?
8.动画连续调用的原理是什么?
9.做过一些SDK的操作吗?
10.协程可以在Java项目中使用吗?
11.SharedPreference原理?读取xml是在哪个线程?
12.了解APK打包的过程吗?
13.class文件的组成?常量池里面有什么内容?
14.自动装箱发生在什么时候?编译期还是运行期
15.bugly日志收集的原理是什么?
16.启动优化做过什么工作?如果首页就要用到的初始化?
17.DataBinding原理
滴滴三面
1.插件化的原理是什么?有没有什么非运行时插件化的解决方案?
2.ARouter的原理是怎样的?注解处理器是处理java还是字节码
3.java和字节码有什么区别?
4.kotlin空安全的原理是什么?
5.性能优化做过什么工作?有用过什么工具?有没有精确测量的工具?
6.kotlinc与javac编译字节码有什么区别?
7.你在团队中是怎样一个角色?
8.你有没有做什么推进项目的工作
9.说说热修复的原理?
题外话
我们见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了7、8年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。
其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。
不断奔跑,你就知道学习的意义所在!
注意:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
以上进阶Android高级工程师系统学习资料可以免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。
如果需要PDF版本可以在群文件夹里,自行领取!
-
或者在群文件夹中里,自行下载直达领取链接:【https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DBRZhpPkt】