开头
很多人工作了十年,但只是用一年的工作经验做了十年而已。
高级工程师一直是市场所需要的,然而很多初级工程师在进阶高级工程师的过程中一直是一个瓶颈。
移动研发在最近两年可以说越来越趋于稳定,因为越来越多人开始学习Android开发,造成市场参差不齐。正所谓入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,并且对于初级中级高级需要怎么进行成才,很多人都比较迷惑。
做了6年Android开发,你会的还只有初级工程师的技术吗?掌握了高级工程师的技术了吗?
面经分享
阿里一面
1.自我介绍
2.做过哪些项目,用过哪些技术
3.四大组件
4.activity生命周期
5.启动模式
6.线程状态
7.网络协议(每一层、还有TCP和UDP)
8.会不会网络编程
9.handler
10.JVM,内存模型那些
11.GC机制(有哪些方法哪些问题)
12.项目中的数据库
13.HashMap、HashTable、ConcurrentHashMap1
14.反问环节
阿里二面
1.自我介绍
2.TCP和UDP以及应用场景(三次握手四次挥手也是基本上都会问的)
3.算法题:字符串根据字典分割的问题。一开始给的解决方法时间复杂度太高,一直要求优化。
4.介绍做过的项目,沿着项目一直问下去(重点问遇到的问题以及解决的方式)
5.Binder通信机制
6.React Native跟原生开发的优劣
7.View事件分发机制和View绘制原理
8.反问,聊天环节
追问比较多,但没有很难的地方,没有什么我一个字也答不上来的。
阿里三面
1.自我介绍
2.广播和 EventBus 的区别?
3.搭建一个自己的图片加载框架思路,怎么做
4.Bitmap的内存计算方式、高效加载
5.Binder的通信过程?Binder的原理?与其他IPC方式的优缺点?
6.handler 的底层实现原理
7.RxJava各种操作符,设计思想。
8.卡顿优化,原理,操作
9.做过哪些优化?怎么实现,遇到哪些问题,怎么解决
10.提问交流环节
阿里四面
1.看过多少源码
2.网络协议okhttp中的缓存机制,dex加载流程,组件化的原理;
3.MVC MVP MVVM原理和区别
4.如果让你实现一个调试器,你会怎么设计?静态调试?动态调试呢?
5.热修复、插件化、组件化
6.Android Framework源码
7.你都用过哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?
8.kotlin、flutter区别优缺点,掌握多少
9.有什么想要问我的
阿里五面(hr)
1.项目
2.规划
3.马上要项目汇报了,PPT出问题了,你会怎么办
4.薪资
5.提问环节
文末
当你打算跳槽的时候,应该把“跳槽成功后,我能学到什么东西?对我的未来发展有什么好处”放在第一位。这些东西才是真正引导你的关键。在跳槽之前尽量“物尽其用”,把手头上的工作做好,最好是完成了某个项目或是得到提升之后再走。跳槽不是目的,而是为了达到最终职业目标的手段
最后祝大家工作升职加薪,面试拿到心仪Offer.
为此我在文末整理了一些关于移动开发者需要的资料,欢迎大家免费领取
领取方式:点击我的GitHub
[外链图片转存中…(img-hOg95OSZ-1621585268363)]
[外链图片转存中…(img-jh4sUZdh-1621585268365)]