带你快速通过字节跳动面试,绝对干货分享

### 背景 面是是上海的Android leader岗位,周日一轮面试,自我感觉答的都还不错。 结果收到邮件面试结束了,说什么"你优秀的学识和能力给我们留下了深刻的印象!经过对你综合情况的仔细评估,并经过与岗位需求进行谨慎匹配和权衡之后, 非常遗憾,我们这次没有和你达成合作。但你的信息已经被录入到公司人才库"。意思就是挂了呗。 ![](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625152575659263.jpg) 后来打电话问hr,没跟我说原因。然后面试过程中,有一点奇怪的地方,面试前面试官跟我说我面的而这个岗位有点奇怪,他也没跟我说哪奇怪。 ### 面试过程 下面是面试官提的一些问题: **面试官:点击一个图标到这个应用启动的全过程(前面是项目经验没啥好说的)。** **回答:** 点击图标后通过startActivity远程调用到ams中,ams中将新启动的activity以activityrecord的结构压入activity栈中,并通过远程binder回调到原进程,使得原进程进入pause状态,原进程pause后通知ams我pause了。ams再根据栈中activity的启动intent中的flag是否含有new_task的标签判断是否需要启动新进程,启动新进程通过startProcessXXX的函数。启动新进程后通过反射调用ActivityThread的main函数,main函数中调用looper.prepar和lopper.loop启动消息队列循环机制。 最后远程告知ams我启动了。ams回调handleLauncherAcitivyt加载activity。在handlerLauncherActivity中会通过反射调用Application的onCreate和activity的onCreate以及通过handleResumeActivity中反射调用activity的onresume。一个应用就此启动。 **面试官:Retrofit原理。** **回答:** 主要是通过动态代理将接口直接转换成代理对象。动态代理和静态代理的区别,动态代理直接在虚拟机层面构建字节码对象。 **面试官:View自定义的流程,实现哪些方法。** **回答:** 实现OnMeasure,onlayout,onDraw。 **继续问“onMeasure中会用哪些方法?”**(我觉得这题可能没大好,我是想回答的详细点的,结果还没打到点他就说好,继续下一题,不知道是认可了还是觉得我答的过于啰嗦,如果觉得太啰嗦可以提出来啊。。。) 我回答onMeasure 中传入两个int数值,这个数值32位,前2位表示模式,后30位表示宽度、高度。这是外表容器给内部view的限制。 一种模式是容器给你多大的值,你就是多大的值(match_parent), 第二种,容易给内部view多大的空间,内部view不用管,是多大就是多大。 第三种,容器给子view多大的空间,和子view自己算出来的占用空间,选择小的那个(wrap_content)。说到这我正打算说onMeasure会调用measureChildwithmargin类的函数,他说好了,然后下一题。 **面试官:怎么设计app的。** **回答:** 基本都用的mvc架构,曾经有个项目使用mvp。还有其它一些整体设计上的问题,很零碎,但都答的差不多。 **面试官:**(最后是算法题,面试官的表述不是很清晰,所以开始没理解他的意思,我归纳一下题目) **有1,3,7三个面值的金钱,现在要取n元。怎么取个数最少。(n是已知数) 意思就是 1 * a+3 * b+7 * c=n 什么情况(a+b+c)最小。** 当然这是我自己归纳出来的,他开始的描述让我想哭。 **回答:** 开始脑子有点没反应过来,把它当逻辑题做了,想了5分钟后才反应过来,这是编程题啊。遍历呀, a的取值范围(0~n)b的取值范围(0~n/3) c的取值范围(0~n/7) 遍历取最小值。当然这种情况效率并不高,我当时也和面试官说了,没太考虑效率,如果需要可以再改。感觉他也认可,思路对就行了。 其它一些零碎的问题没印象了,主要就这些。 **我想大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,比如我这次的挂了的面试,大家可以对比下,发现一些自己回答的话会有哪些问题,这样对自己之后的面试才更有帮助。** # 结尾 - 腾讯T4级别Android架构技术脑图;查漏补缺,体系化深入学习提升 ![img](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625152575997722.jpg) - **一线互联网Android面试题含详解(初级到高级专题)** > 这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率 ![img](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625152577649538.jpg) ##### Android架构师学习门槛,有没有免费学习资料? > 有Android开发3-5年基础,希望突破瓶颈,成为架构师的小伙伴,可以关注我,在我的个人介绍栏目免费获取 **或者点击:[【点击我的GitHub免费领取】](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md )** **《Android学习PDF+架构视频+面试文档+源码笔记》来获取学习资料提升自己去挑战一下BAT面试难关吧** **为什么免费分享?** > 如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,升职加薪。
上一篇:30岁以后搞Android已经没有前途?分享一点面试小经验


下一篇:2021年Android高级面试题,技术实现