耗时三个月,剑指字节,渣本Android生逆袭大厂

先说下楼主的情况吧,毕业之后加入了一个小创业公司,后来因为老板资金不足,项目被迫搁浅,我们项目组集体失业,于是在离职一个月后便着手筹备面试字节的计划,平时除了正常的知识学习之外,还收集了很多前辈的面试经验以及相关的面试题目,都一一进行了解答,相关的复习资料我也进行了精心整理。

于2.28号投递字节(这里感谢内推我的老师,很耐心的给我说明在字节面试所需要注意的问题,还给我进行了相关的面试辅导),3.01号收到了hr的电话约面试时间,因为课程的原因定在了3.14号,是楼主人生中第一次面试大厂,话不多说直接上面经。

 

面试开始

关于上面说的一些面试资料和复习资料我已全部上传到 GitHub 有需要的小伙伴可以自行领取

还有一个我自己建立的Android进阶技术裙,有想要获取资料以及交流技术的小伙伴可以加裙点击直达

一面:

1、自我介绍:

我具体怎么答的略过,总之注意几个点:说简历上没有的、有亮点的、跳槽原因等,从各个点上尽力彰显自己优势、技术特长

2、手写代码:

计算View树上所有view的数量,参数ViewGroup,补全空方法返回view数量→本质就是数据结构多叉树递归层序遍历+Android View基本api调用

3、Android相关:

主线程Looper一直循环查消息为何没卡主线程?RecyclerView相对ListView区别?好像还有Bitmap resize相关,就是设置option,然后decode→这里还有些我基本都是随口答对的,已经忘了2333~

反正都是中级(或稍偏高级)Android工程师必掌握原理机制~

4、项目相关:

用MultiDex解决何事?其根本原因在于?Dex如何优化?主Dex放哪些东西?主Dex和其他Dex调用、关联?Odex优化点在于啥?Dalvik和Art虚拟机区别?多渠道打包如何实现(Flavor、Dimension应用)?从母包生出渠道包实现方法?渠道标识替换原理?

Android打包哪些类型文件不能混淆?

Retrofit主要实现机制?

动态代理静态代理区别?

→上面这坨都是从我做过的项目或用过的开源库引申出的问题,而且挑的都是不太偏业务且技术性强一些的,这其实要求日常在把事儿做成的基础上还得再多看下原理顺带自己动手探索下,明晰人家每一步是怎么互相关联推动直至最终搞定的,而不是加个dependency或copy下别人代码就完事儿嘞~

5、思维、架构:

模块化怎么做的?怎么设计的?接口发现暴露怎么做?基于什么思想?MVC、MVP、MVVM应用和彼此本质区别?

二面

→一面后面的题目因为这不是那种确定性答案的问题,只能多实战+战后总结并深入思考才能出真知啦,。

1.这面上来大概介绍了下自己,然后问了点我用过的东西比如Glide缓存特点?随后:你擅长Android中哪个方向呢?这问题我其实是按Android UI动画方面和移动端后台交互方案制定来预想过的,然鹅说完他挑了Android UI,第一个问题前他说,这个问题我问过很多人没几个能答出来的,你试试?

2.他:你看我这手机上这个launcher里应用抽屉(就是很多ROM都有的把很多APP管理归类的二级菜单功能)他在这ROM前一版是有个毛玻璃效果背景的,从系统ROM角度说下怎么做吧?

3.这100%是我一点没做过的,面试官八成也知道,也是很多人在面试里会遇到的情况,这时候别慌,我们可以从知道的东西里去推,哪怕只把把思路展示出来也OK;比如这个肯定是FrameWork做系统统一渲染那里要做些事,那系统渲染是谁管呢,SurfaceFlinger呀,它怎么工作的呢?它哪一步改动一下是不是可能就达到这效果了呢?这种思考过程是一个高工所要必备的,也是需要日常在面对很多问题时要培养自己去练就的思考方法~

4.后面还有的UI相关的依旧是类似这种的两个大问题:实时的水面倒影效果怎么做?这里面实时更新的UI性能如何保证?→我所处情形和思路同上

5.最后也是模块化、工程架构思想相关更细致的盘问,确实有些我之前没意识的问题被问及不过还是老方案:能想出来的就给方案,不能的就给思考过程。

三面

上来还是互相介绍,然后有个算法题解决个实际问题,

随后还是问问偏思想性的东西工程架构、之前提到的接口暴露又老生常谈,不过之前答的不太好我突然还是用知识迁移想了个好办法解决,对方也听后看似比较满意;

再然后还是擅长方向,

随即问题就是设计个IM客户端以及数据库架构吧,类似微信,偏上层业务部分的会话、联系人、通知、公众号如何存、分几张表,架构每一层都是啥,互相怎么交互工作?

再到后面是偏UI基础的考察:Measure、Layout、draw大流程、绘制顺序,基于这些说下TagLayout(FlowLayout)怎么写? 如何优化自定义View。 Android属性动画实现原理,补间动画实现原理

接着是算法题:俩线程分别持续打印奇数和偶数,实现俩线程的交替打印(从小到大)→计算机操作系统线程相关基本题目,你要觉得难只能说明基础瘸腿,赶紧补吧;操作系统+编译原理也是我面试别人过程中发现的大多数人的弱项

还有是提个公司旗下产品做的不好的点,吐槽一下(有理由根据说服对方即可,最好是人难以意识到的点)。最终基本就是了解公司情况嘞,全聊完他都没商量就直接告知hr来跟我谈了,到这里基本可以知道就是稳了。

HR面:

这面就是偏闲聊了,问问跳槽原因、个人爱好、个人职业规划、目前薪酬、跳槽薪酬要求,福利同步一下。

猜你喜欢

转载自blog.csdn.net/Androidbye/article/details/115188688