备战大厂
战况:
-
滴滴:二面挂
-
快手:一面挂
-
阿里:三轮技术面 + 一轮HR 面
-
有赞:三轮技术面 + 一轮HR 面
-
哈啰出行:三轮技术面 + 一轮HR 面
-
涂鸦智能:三轮技术面 + 一轮HR 面
-
字节跳动:三轮技术面 + 一轮HR 面
关于面试前的准备工作,首先就是先把简历给优化了,毕竟简历算的上是大厂面试的墙门转了。
写一份不被扔垃圾桶的简历
-
简约清晰:技术人的简历可以简约一点,简约不等于简单,你的项目经历和技术深度可以很深,但是体现在简历上一定高度概括,简历上不适合长篇大论的写记叙文,议论文。
-
突出重点:一份简历如果全文都是做了系统,参与了功能,面试官要自己找重点,所以最好简历直接开门见山,我在项目中扮演什么角色,搞了什么大事情,拿到什么结果,最好是带数据作为支撑的,有个词叫可量化,如果就是访问量小但流程复杂度高,你可以总结怎么做模块化开发、流程灵活性配置、效率提升等等,写到JVM 内存调优你可以写新生代/老年代内存回收时间提升了 **ms等等,这都是参考,可以辅助一些图或表在简历中,直观来说一图二表三文字,当然前提是你图表确实有亮点。
-
细节:细节决定成败,有几个细节要关注:1.不要有错别字;2.前后逻辑一致,数据不要自相矛盾;3.简历不要压缩、不要群发、邮件带正文介绍自己;4.排版干净清爽
由于本人之前的职级有点低,所以这次的目标岗位是P6+ ~ P7岗(虽然最终还是只拿到了P6+的岗位)。如果有高P的大佬,那么下面的面试题看看就好,意义不大。
滴滴
一面:
-
简单介绍下项目中遇到的难题,怎么解决的?
-
大图加载的优化方案
-
java注解元注解有哪些,有什么区别
-
简要讲解下APT技术
-
ButterKnife为什么在子module要用R2文件,子module为什么不能使用switch-case来对view的id进行区别处理
-
Activity.getWindow什么时候为空
-
Handler 发送延迟消息,是否一定会在指定时间以后执行。异步消息怎么判断。消息列表是按什么顺序排列
-
Looper在没有消息时,怎么处理,如何进行线程阻塞
二面:
-
简要介绍下项目中的亮点
-
主线程修改UI为什么会导致崩溃,怎么解决的
-
为什么Android要设计单线程操作UI
-
简单介绍下Activity启动流程
-
Handler机制原理, Looper的阻塞机制
-
内存优化做过哪些,用过哪些工具
快手面试
一面:
-
如何计算bitmap大小,如何检测bitmap是否超过了1M,并打印
-
如何给在ImageView里面展示一个带边框的bitmap
-
Handler机制
-
ANR有哪些,怎么监控
-
LRUCache原理
-
什么情况下会出现ConcurrentModifyException,为什么会出现,怎么解决
-
线程池使用过没,有哪些参数,什么作用
-
HashMap原理
-
SparseArray的原理
-
SparseArray和HashMap的查找和插入时间复杂度是多少
-
Android打包流程, 字节码插桩在哪个流程中实现
-
热更新有了解过么,tinker的原理是什么,有什么缺点。 有没有其他框架没有这个缺点的,怎么实现的
-
Http 1.0,Http1.1 ,Http 2.0的区别 keep-alive和多路复用有啥区别
-
了解过HttpDNS么,什么作用
-
手写一个生产者和消费者模型
阿里面试
一面:
-
卡顿检测怎么做的,为什么要这么做,会有兼容问题么
-
如果降低crash率的,有做哪些处理
-
觉得哪些东西做的比较好,说一下
-
jsBridge是怎么实现的,如果客户端向前端发送消息怎么发送。
-
在图片框架选型的时候怎么考虑的,Fresco,Piccaso,Glide之间的优缺点
-
自定义一个从底部滑出的抽屉,该怎么做,需要有哪些考虑的点
-
一个简单的RecyclerView,说一下手势Down,Move,Up的分发。如果TextView上面设置了点击事件,那么分发逻辑是怎么样的
-
项目是怎么进行架构设计的
-
项目是否采用模块化处理,怎么做的,怎么进行交互
-
git-merge和git-rebase的区别
二面:
-
现在项目的整体设计是怎么样的
-
降低crash率做了哪些处理
-
怎么检测线上卡顿问题
-
kotlin相比于java有哪些优势
-
什么时机可以认为页面加载完成
-
内存优化有做过哪些
-
讲下merge和include
-
讲下运营商DNS劫持,又是如何防止DNS劫持
-
怎么使用Fragment的, 是采用一个Activity多个Fragment的形式么
-
有没有使用过一些跨端技术
三面:
-
项目合并做了哪些事情
-
怎么检测线上卡顿
-
怎么检测线上内存泄漏
-
做了哪些性能优化
-
最近研究了哪些新技术,谈谈看法
-
何如学习提高自己的技术
-
说说看自己的优劣势
-
对于现在做的产品有什么看法和见解,怎么看待竞品
有赞面试
一面:
-
组件化的架构怎么设计的
-
组件之间怎么通信,除了EventBus还有其他哪些了解过
-
EventBus是怎么工作的
-
Router框架怎么设计的
-
LiveData为什么具有生命周期感知能力,如何实现的
-
APT怎么实现,如何生成代码文件
-
MVP与MVVM的区别
-
MVP为什么会存在内存泄漏的可能,怎么解决
-
线程池的创建有哪些参数,有什么作用
-
有用过kotlin么?object关键主要应用在哪里? let和run的区别
-
GC有哪些算法,现代虚拟机基本采用什么算法,为什么这么做
-
Activity的启动流程
-
在APP进程还没创建的时候,会做哪些额外操作,app进程是谁创建的
-
View是如何显示出来的
-
如何把像素点显示到屏幕上
-
Glide三级缓存策略有了解过么
-
Glide为什么会感知生命周期
-
做过哪些性能优化
-
最近写的这篇博客写的什么,遇到了什么问题,怎么解决
二面:
-
讲讲项目的组成
-
retrofit2原理
-
用过rxjava2哪些操作符,zip什么作用。
-
热修复的原理
-
APT技术怎么实现,如何理解AOP,有过哪些应用场景
-
MVC,MVP,MVVM的区别
-
讲一下LiveData+ViewModel怎么实现生命周期, 屏幕旋转时,会保存数据么
-
有没有碰到过LiveData接收多次消息的问题,LiveData的postValue和setValue有什么区别,平时怎么使用
-
glide怎么实现生命周期的监听
-
组件化的方案,如何提高编译效率
-
组件通信用的什么
-
有没有写过印象深刻的框架
-
平时周末会遇到线上事故么,怎么处理
-
平时开发过程怎么沟通协调,在里面作为什么角色存在。
三面:
-
讲一下你觉得成长最大的一个项目,为什么
-
组件化考虑的因素有哪些,为什么这么考虑,为什么使用AAR包就会提高编译效率
-
说一个你觉得做的比较好的点。
-
有没有跨端经验
-
有没有推动过项目的一些方案的制作和实施。讲一下怎么做的
哈啰出行
一面:
-
讲述一下自己做的最有亮点的项目
-
view的绘制流程
-
View的事件分发流程
-
ViewPager内部嵌套同向RecyclerView,RecyclerView滑动与ViewPager滑动冲突解决方案
-
详细说下Handler机制
-
Handler会存在哪些问题,怎么解决
-
设计模式用过哪些,简要讲述下最熟悉的几个设计模式,怎么设计,为什么这么设计
-
APT怎么实现的,元注解什么作用。 IOC怎么实现
二面:
-
讲述一下自己项目亮点
-
讲一下路由框架的架构设计,路由还可以实现哪些功能
-
容灾方案怎么实现,怎么做降级处理,怎么做AbTest
-
App Link有了解过没
-
Handler的机制,如果取不到消息接下来怎么做。
-
APP启动做过哪些优化,如果启动优化的负责人,你会怎么做
-
Activity的冷启动流程
-
Application由谁创建,Activity由谁创建。ContentProvider的onCreate发生在什么时候
-
热更新的原理,插件化的原理
三面:
-
讲述项目经历
-
讲一下自己觉得做得最好的地方
-
有做过哪些性能优化
-
让你负责埋点功能,你怎么设计实现
-
leakcanary实现原理
-
flutter有了解过么
-
讲当前部门的主要业务
字节跳动
一面:
-
git cherry-pick 操作commit id一样么
-
git merge和rebase的作用
-
Fragment 如何传参的,有没有使用构造函数传参
-
SurfaceView和View绘制上面的差别,可以设置层级么。 mediaOverlay什么作用
-
插件化和组件化的差别, 插件化的加载过程
-
长图加载解决方案 DecodeRegion的底层原理
-
算法:A方法返回0和1的概率是p和1-p, 设计一个算法让0和1返回的概率各是1/2
-
opengl 顶点着色器, 片段着色器
-
classLoader通过什么判断class是否已经加载到内存中
-
内存优化怎么做的
-
滑动冲突怎么解决 nestchild和nestparent如何实现手势分发
二面:
-
OpenGLES 怎么使用
-
线程启动方式
-
HandlerThread了解过么
-
Synchronized原理,notify wait底层是怎么做的, 了解过锁的膨胀么
-
CAS操作如何保证两个线程数据安全
-
Dialog和Activity属于同一个window么,为什么
-
用过哪些设计模式
-
讲讲设计原则,项目里使用情况
-
讲讲现在项目里的网络库, OKHttp有哪些优势(相比较于以前的HttpClient和HttpUrlConnection)
-
EventBus 内部使用什么样的数据结构保存,EventBus的优缺点
-
Bitmap内存怎么计算 假设一个100*100的图片放入xxhdpi的文件夹,在720的手机上面显示,Config是ARGB8888。 内存大小多少
-
讲讲为什么使用MVVM,MVP为什么会出现内存泄漏, MVVM为什么不会出现内存泄漏
【附】相关架构及资料
往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-urLMxvgY-1714661156601)]
[外链图片转存中…(img-zLn4Sb77-1714661156602)]
往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!