作者:CDFcc7d 最近花了大量的时间复习准备面试。杭州的一二线公司基本上都去面试过了,包括阿里,字节,快手,滴滴,有赞,涂鸦,哈啰(腾讯没有客户端的hc),其中也拿了几个不错的offer。这里就简单分享下面试题吧 注:由于本人之前的职级有点低,所以这次的目标岗位是P6P7岗(虽然最终还是只拿到了P6的岗位)。如果有高P的大佬,那么这里的面试题看看就好,意义不大。滴滴(二面挂) 一面:简单介绍下项目中遇到的难题,怎么解决的?大图加载的优化方案java注解元注解有哪些,有什么区别简要讲解下APT技术ButterKnife为什么在子module要用R2文件,子module为什么不能使用switchcase来对view的id进行区别处理Activity。getWindow什么时候为空Handler发送延迟消息,是否一定会在指定时间以后执行。异步消息怎么判断。消息列表是按什么顺序排列Looper在没有消息时,怎么处理,如何进行线程阻塞 二面:简要介绍下项目中的亮点主线程修改UI为什么会导致崩溃,怎么解决的为什么Android要设计单线程操作UI简单介绍下Activity启动流程Handler机制原理,Looper的阻塞机制内存优化做过哪些,用过哪些工具快手(一面挂) 一面:如何计算bitmap大小,如何检测bitmap是否超过了1M,并打印如何给在ImageView里面展示一个带边框的bitmapHandler机制ANR有哪些,怎么监控LRUCache原理什么情况下会出现ConcurrentModifyException,为什么会出现,怎么解决线程池使用过没,有哪些参数,什么作用HashMap原理SparseArray的原理SparseArray和HashMap的查找和插入时间复杂度是多少Android打包流程,字节码插桩在哪个流程中实现热更新有了解过么,tinker的原理是什么,有什么缺点。有没有其他框架没有这个缺点的,怎么实现的Http1。0,Http1。1,Http2。0的区别keepalive和多路复用有啥区别了解过HttpDNS么,什么作用手写一个生产者和消费者模型阿里(三面挂,问了下评价说是因为年纪和职级,觉得潜力不够就挂掉了) 一面:卡顿检测怎么做的,为什么要这么做,会有兼容问题么如果降低crash率的,有做哪些处理觉得哪些东西做的比较好,说一下jsBridge是怎么实现的,如果客户端向前端发送消息怎么发送。在图片框架选型的时候怎么考虑的,Fresco,Piccaso,Glide之间的优缺点自定义一个从底部滑出的抽屉,该怎么做,需要有哪些考虑的点一个简单的RecyclerView,说一下手势Down,Move,Up的分发。如果TextView上面设置了点击事件,那么分发逻辑是怎么样的项目是怎么进行架构设计的项目是否采用模块化处理,怎么做的,怎么进行交互gitmerge和gitrebase的区别 二面:现在项目的整体设计是怎么样的降低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的区别讲一下LiveDataViewModel怎么实现生命周期,屏幕旋转时,会保存数据么有没有碰到过LiveData接收多次消息的问题,LiveData的postValue和setValue有什么区别,平时怎么使用glide怎么实现生命周期的监听组件化的方案,如何提高编译效率组件通信用的什么有没有写过印象深刻的框架平时周末会遇到线上事故么,怎么处理平时开发过程怎么沟通协调,在里面作为什么角色存在。 三面:讲一下你觉得成长最大的一个项目,为什么组件化考虑的因素有哪些,为什么这么考虑,为什么使用AAR包就会提高编译效率说一个你觉得做的比较好的点。有没有跨端经验有没有推动过项目的一些方案的制作和实施。讲一下怎么做的哈啰出行(过) 一面:讲述一下自己做的最有亮点的项目view的绘制流程View的事件分发流程ViewPager内部嵌套同向RecyclerView,RecyclerView滑动与ViewPager滑动冲突解决方案详细说下Handler机制Handler会存在哪些问题,怎么解决设计模式用过哪些,简要讲述下最熟悉的几个设计模式,怎么设计,为什么这么设计APT怎么实现的,元注解什么作用。IOC怎么实现 二面:讲述一下自己项目亮点讲一下路由框架的架构设计,路由还可以实现哪些功能容灾方案怎么实现,怎么做降级处理,怎么做AbTestAppLink有了解过没Handler的机制,如果取不到消息接下来怎么做。APP启动做过哪些优化,如果启动优化的负责人,你会怎么做Activity的冷启动流程Application由谁创建,Activity由谁创建。ContentProvider的onCreate发生在什么时候热更新的原理,插件化的原理 三面:讲述项目经历讲一下自己觉得做得最好的地方有做过哪些性能优化让你负责埋点功能,你怎么设计实现leakcanary实现原理flutter有了解过么讲当前部门的主要业务涂鸦智能(过) 一面:Activity启动流程Handler机制项目中解决过的难题Http1。0http1。1http2。0的区别Https的请求过程用过抓包工具么,抓包工具为什么可以抓到请求,如何抓到HTTPS请求,怎么实现 二面:讲几个项目中遇到的难题(技术上的难题或者团队协作上面的难题),怎么解决如何进行团队协作讲下项目亮点EventBus的原理,还有哪些可以通信的LiveDataViewModel怎么实现生命周期的EventBus和LiveData的优缺点OKHttp的原理 三面:组件化开发怎么实现路由怎么实现,组件化通信有哪些介绍下opengles开发魔方的流程retrofit实现原理为什么这个时候选择看机会涂鸦对你来说整体印象如何字节跳动(过) 一面:gitcherrypick操作commitid一样么gitmerge和rebase的作用Fragment如何传参的,有没有使用构造函数传参SurfaceView和View绘制上面的差别,可以设置层级么。mediaOverlay什么作用插件化和组件化的差别,插件化的加载过程长图加载解决方案DecodeRegion的底层原理算法:A方法返回0和1的概率是p和1p,设计一个算法让0和1返回的概率各是12opengl顶点着色器,片段着色器classLoader通过什么判断class是否已经加载到内存中内存优化怎么做的滑动冲突怎么解决nestchild和nestparent如何实现手势分发 二面:OpenGLES怎么使用线程启动方式HandlerThread了解过么Synchronized原理,notifywait底层是怎么做的,了解过锁的膨胀么CAS操作如何保证两个线程数据安全Dialog和Activity属于同一个window么,为什么用过哪些设计模式讲讲设计原则,项目里使用情况讲讲现在项目里的网络库,OKHttp有哪些优势(相比较于以前的HttpClient和HttpUrlConnection)EventBus内部使用什么样的数据结构保存,EventBus的优缺点Bitmap内存怎么计算假设一个100100的图片放入xxhdpi的文件夹,在720的手机上面显示,Config是ARGB8888。内存大小多少讲讲为什么使用MVVM,MVP为什么会出现内存泄漏,MVVM为什么不会出现内存泄漏VSync信号什么作用同步多次执行addView,removeView等UI操作为什么不会多次进行View的绘制算法:如果将一串路径反转例如ab。。c。。deedcba 三面:自动登出如何处理的登录之后页面,数据刷新怎么处理TCP和UDP的区别,讲下视频通话中哪些用到了UDP,哪些用到了TCPJava的Thread是JVM创建的还是系统的Thread可以设置大小么JVM的内存回收算法View的onMeasure测量逻辑解决过的难题讲下mvvm的设计,与mvp相比优势是什么,如果用mvp如何防止内存泄露100个人编号为1100,山洞有100盏灯,编号为1100。人依次过山洞,当人经过【灯编号可以整除人编号】的路灯时,按下开关。假设刚开始灯都是灭的,那么100个人出去以后,有多少盏灯是亮着的。给定两个职员,找出最近的公共上级(树的最近公共祖先节点 上面就是一些主要面试中所遇到的题目了,还有一些没有放上来的,以及自己复习刷题中的重难点,都已经记录在了PDF或markdown当中,有需要的朋友们文末自行查阅领取。最后 在这里就还分享一份由大佬亲自收录整理的Android学习PDF架构视频面试文档源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。 当然,你也可以拿去查漏补缺,提升自身的竞争力。 真心希望可以帮助到大家,Android路漫漫,共勉! 如果你有需要的话,只需私信我【进阶】即可获取