前段时间,前同事跳槽,机缘巧合下面了阿里,本来凭着试一试的态度,却不料好事成双,拿到了offer,而且薪资也double了。
同事硕士毕业后工作了4年,之前一直都是在二线“奋战”,身为程序员,一直都为同在杭州的一线大厂有一些想法,这次离职后入职阿里,虽不是像淘宝客户端这种核心部门,但是也算成就了他入职大厂的梦想了。
先上热菜,看看面经
阿里某事业部一面
- Android中的Context了解多少
- Application里面可以弹窗吗
- Activity、Window、View三者的关系
- OkHttp中有哪些设计模式
- Retrofit中有哪些设计模式
- Retrofit.create做了哪些工作
- 自定义一个圆角View
- 协程launch有哪些参数
- 说说by关键字
- 代理和委托的区别
- 双亲委托模式
- 有几种获取view宽高的方式
- view.post为什么可以获取到
- getWidth和getMesureWidth的区别
- 手写遍历二叉树
- 手写双重锁单例
- 手写插入排序
- 手写双数组去重并排序
- 如何判断链表有环
阿里某事业部二面
- 挑一个项目详细说一下,以及相关技术栈
- 介绍一下协程机制
- 说一下Dispatchers,withContext,Scope他们的作用
- 说一下你理解的MVP,MVVM
- Flutter相关
- 性能优化做了哪些工作
- 编译速度怎么提升的
- 内存泄露
- LeakCanary检测原理
- 热修复,Sophix原理,ClassLoader
- Apk打包流程
- 多线程并发,如何保证线程安全
- synchronized修饰方法和修饰代码块有什么区别
阿里某事业部三面
- 做的最有成就感的项目是哪个
- 印象最深刻的项目是哪个
- LiveData底层实现原理
- 启动优化
- 包体积优化
- 自定义View流程
- View异步加载
- 有用过哪些设计模式
- 介绍一下单例,饿汉式,懒汉式,双重锁
- 代理模式和装饰模式的区别
- 策略模式和状态模式的区别
- 说说观察者模式
- 有看过哪些三方库的源码
- Glide四层缓存机制
- AMS了解多少
三轮都是技术面,第二轮的面试官是同事的老学长,也问的不是特别难,最后也挺顺利的。HR面就没啥东西可聊的,基本上就是对此次面试的一个评价、定薪等等一些之内的话题。
面试前的准备
有些朋友恐惧面试,都说面试造火箭,工作拧螺丝,但是仔细想想,如果在面试中考那种人人都会的面试题,如何才能体现出你的不可替代性?
面试前如何调整心跳(三点)
- 准备前,可能有些同学看到面试题已经不自信了,感觉自己一半都答不上来,这是正常的,人的记忆是有限的,慢慢复习就好了,放平心态。
- 面试中,可能有些同学会被问到自闭,其实大可不必,东边不亮西边亮,总有面试官会挖掘出你的亮点。而且面试中除了技术之外,也有很多客观因素,比如面试官的心情、你的状态等等。
- 面试后,好与坏都坦然接受,及时做好复盘,查漏补缺,才能在下一次面试中有更好的发挥,这也是一个愈战愈勇的过程。
面试前的准备
老生常谈的话又要拿出来讲了,其实无非也就是一下几点
- 尽量不要迟到,不管是现场还是视频。
- 如果是现场面试,记得关注当天的天气,提前查一下路线。
- 如果要修改面试时间,提前一天跟HR沟通。
- 如果不去,不要直接放鸽子,跟HR说一声。
- 手机电量保持充足,面前可以临阵磨枪。
- 面试登记,字尽量写的好认一些,个人作为面试官时,不好认的扣分,字如其人,代码同理。
- 不要作假,编造一个谎言往往需要更多的谎言去圆它。
- 大厂一般面试周期较长,注意时间安排。
- 保持自信,保持自信,保持自信。
- ......
复习方法
- 看大V们整理的Android核心知识PDF,先快速过一篇,再重点精读。有些技术面试高频点,可以划重点记笔记,随时可以停下来进入思考状态,也很方便反复阅读,主要是没有干扰。
- 刷面试题,包括思路和代码都要好好看一遍,俗话说三人行必有师焉,吸取别人对解题的解决思路并优化,无偿不是提升自己的一种方式;
- 面试实践,这个很重要,多去试试几家,有参考性的整理遇到的面试题; 纸上得来终觉浅,绝知此事要躬行
这里分享的是美团技术专家首发的一份「Android面试宝典」,从互联网一二线企业收集的Android热门面试知识点,让人看了真的不得不推荐,太完整了!
比如:比如以JVM为例;
- Java 类加载过程?
- 描述一下JVM 加载 Class文件的原理机制?
- Java 内存分配
- GC 是什么? 为什么要有GC?
- 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
- 垃圾回收的优点和原理。并考虑 2 种回收机制
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- Java 中会存在内存泄漏吗,请简单描述
- ......
Android面试笔记(组件+View+线程)
以Android四大组件为例
- 说下Activity的生命周期?
- onStart()和onResume()/onPause()和onStop()的区别?
- Activity A启动另一个Activity B会回调哪些方法?如果Activity B是完全透明呢?如果启动的是一个Dialog呢?
- 谈谈onSaveInstanceState()方法?何时会调用?
- onSaveInstanceState()与onPause()的区别?
- 如何避免配置改变时Activity重建?
- 优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态?
- 说下Activity的四种启动模式?(有时会出个实际问题来分析返回栈中Activity的情况)
- 谈谈singleTop和singleTask的区别以及应用场景
- ......
Android面试笔记(Binder+Handler+Bitmap)
以binder为例
- Binder的定向制导,如何找到目标Binder,唤起进程或者线程
- Binder中的红黑树,为什么会有两棵binder_ref红黑树
- Binder一次拷贝原理
- Binder线程、Binder主线程、Client请求线程的概念与区别
- Binder线程的睡眠与唤醒(请求线程睡在哪个等待队列上,唤醒目标端哪个队列上的线程)
- Binder协议中BC与BR的区别
- Binder在传输数据的时候是如何层层封装的–不同层次使用的数据结构(命令的封装)
- Binder驱动传递数据的释放(释放时机)
- 一个简单的Binder通信C/S模型
- ......
Android面试笔记(RecyclerView+Webview)
以RecyclerView为例
- 请说一下RecyclerView?adapter的作用是什么,几个方法是做什么用的?如何理解adapter订阅者模式?
- RecyclerView绘制原理如何理解?性能优化本质是什么?RecyclerView绘制原理过程大概是怎样的?
- RecyclerView常见的优化有哪些?实际开发中都是怎么做的,优化前后对比性能上有何提升?
- 如何解决RecyclerView嵌套RecyclerView条目自动上滚的Bug?如何解决ScrollView嵌套RecyclerView滑动冲突?
- RecyclerView的Recyler是如何实现ViewHolder的缓存?如何理解RecyclerView三级缓存是如何实现的?
- RecyclerView源码分析
- ......
因图文太多影响朋友们的阅读,整理成PDF部分截图已上传,需要完整Android面试笔记的朋友可以在 文末或者文首领取;
Android面试笔记(架构篇)
Android面试笔记(Jetpack篇)
Android面试笔记(NDK开发篇)
对于程序员来说,要学习的知识内容、技术有太多太多难点,要想不被面试淘汰就 只能提前做好复习规划、认真刷题,在学习中不断提升自己,请记住,从来都是 只是我们去适应环境,而不是环境来适应我们!