岗位JD 15-30K·15薪
工作职责:
1、根据业务需求,基于安卓平台进行APP架构设计、开发及维护;
2、负责指导、培训初级工程师,和相关技术分享。
任职资格:
1、计算机相关专业,本科以上学历,5年及以上Android开发工作经验;
2、了解Android开发平台、Framework和底层设计原理;
3、对Android的UI、组件、性能优化、内存优化等有深入实践;
4、良好的开发基础,理解常见设计模式,在实际工作中有很好的实践;
5、具备较强的责任感和主动性,良好的沟通能力和团队协作精神。
面试方式
牛客视频面试
PS:牛客面试平台支持在线画思维导图等,可以准备好相关的文档,结合架构图,便于面试官了解
面试时间构成
60分钟左右 = 项目经验相关30分钟 + Android基础20分钟 + 提问5-10分钟
PS:专业知识比较基础,没有在线做算法题目,面试官人很nice
个人项目经验
1. 架构思想
DDD,TDD,Clean架构,分层架构
2. 项目复杂度
Android基础面试题目
插件化相关
1. 插件化的实现方式,ClassLoader原理
解答:核心双亲委托模式
参考:Android插件化学习之路(二)之ClassLoader完全解析
2. 如何加载插件里的资源文件,如:assert目录的文件
解答:
参考:Android 插件化开发(三):资源插件化
Android插件化学习之加载插件资源
3. 如果调用插件里的Activity
参考:滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理
Activity基础
1. 切换横竖屏,activity生命周期,会调用那些方法,数据如何保存
解答:个人理解,可以从Android如何设计回答,要让应用层可以在修改屏幕参数时(还包括修改显示大小,字体大小,暗色模式等),如果恢复界面,如:通过AndroidManifest.xml配置,告知系统Activity是否需要重建,及重新new一个Activity,重新new,则代表会重新走正常打开一个Activity的流程(onCreate ->onStart->onResume),
如果重建,则会旧的Activity会回调onSaveInstanceState,新的Activity则会回调onRestoreInstanceState,
如不重建,则依旧还是同一个Activity,只是会回调onConfigurationChanged,告知业务屏幕参数变化了。
针对数据的保存,也可以使用ViewModel,屏幕参数变化了,ViewModel还有统一对象的,可以作为数据的缓存地带。
触摸事件分发
1. 触摸事件的分发流程
解答:基础技术,这里就不过多赘述
参考:Android事件分发机制,
2. 触发事件如何拦截,如ViewGroup如何拦截事件传递给子View
参考:Android进阶——Android事件分发机制之dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent
其他
1. 如果全局定义控件主题,OPPO如果统一页面风格
解答:主题(theme)配置style,或控件指定style
2. 多线程如何共享内存
解答:全局变量?
面试官:如果确保线程安全?
解答:线程安全的数据结构,加锁,读写锁?
面试官:还有吗?
解答:写入到文件里?(其他没明白,真正要考察什么内容,如果是进程间通信还有点难度)
面试后感:
1. 没问性能相关的,内存优化,功耗;没有问三方SDK的源码分析;
2. 可以多主动一下,引导面试自己擅长的领域;
3. 整体面试难度一般。