首先我想明确地说在目前的大环境下,移动互联网确实已经属于寒冬。尤其是Android/IOS开发,虽然说不上夕阳行业,但也离热门IT职业差了十万八千里。从之前大量小创公司因疫情原因倒闭破产,360、滴滴、携程等大厂实施裁员的新闻其实也能略见一二了。至于那些还存活着的小公司,对于移动端开发人员的要求。。。好像跑题了~还是说求职面试吧。
网上Android岗位招聘的需求来看:
要求掌握系统架构及相关技术,熟悉高级UI、framework源码,精通插件化、性能优化、Java开发经验。。。
面试给我的第一感觉就是面试造火箭,薪资低也就就算了,面试要求还贼高。
大厂组件化面试精选合集
一面
1:插件化。启动activity的hook方式。taskAffity。
2:okhttp支持HTTP2?http2的功能有哪些?tcp方面拥塞控制?tsl的握手和具体的非对称加密算法。非对称名称
3:handler的post(Runnable)如何实现的。callback,runnable,msg的执行优先级。阻塞是怎么实现的?为什么不会阻塞主线程?
5:求二叉树中两个节点之间的最大距离。
6:206含义,未修改资源是哪个,302含义,301含义
7:多进程通信问题。binder优势。aidl生成的java类细节。多进程遇到哪些问题?
8:动态代理传入的参数都有哪些?非接口的类能实现动态代理吗?ASM的原理
9:Application和Activity在Context的继承树上有何区别?二者使用上有何不同?
10:任意一颗二叉树,求最大节点距离
二面
1:设计一个日志系统。
2:内存泄露的分类。怎么查看内存泄露的问题
3:touch事件源码问题。
4:组件化的问题。module和app之间的区别。moduler通信是如何实现的。
5:native奔溃的日志采集,怎么处理?
6:注解实现一个提示功能:如果int的值大于了3需要提示。
三面
1:介绍下flutter的启动流程
2:介绍下flutter与weex的区别
3:组件化介绍一下
4:webview中与js通信的手段有哪些?
5:介绍下flutter_boost的原理
四面
1:适配器和装饰模式各自特点和使用场景
2:视频编解码是怎么做的
3:三色球排序
为什么要学组件化
随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多。此过程中,你是否有过以下烦恼?
-
项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍?
-
改了一行代码 或只调了一点UI,就要run整个项目,再忍受一次10分钟?
-
合代码经常发生冲突?很烦?
-
被人偷偷改了自己模块的代码?很不爽?
-
做一个需求,发现还要去改动很多别人模块的代码?
-
别的模块已实现的类似功能,自己要用只能去复制一份代码再改改?
-
“这个不是我负责的,我不管”,代码责任范围不明确?
-
只做了一个模块的功能,但改动点很多,所以要完整回归测试?
-
做了个需求,但不知不觉导致其他模块出现bug?
-
如果有这些烦恼,说明你的项目需要进行 组件化了。
如何高效学习组件化
组件化学习视频
该文章最后有免费分享系列第三方库的学习视频,需要的可以看下这篇文章!