高效全面的准备Android面试
本文旨在为诸君提供面试准备参考,提升面试准备效率。
安卓面试#大厂#腾讯#阿里#百度#字节跳动#小红书#拼多多#百度#网易#小米#京东#微信#面经
编程语言
为什么把Kotlin排前面?腾讯、字节、小红书等头部厂都强制要求转Kotlin,再不转的话不仅无缘大厂,还将被行业淘汰。
Kotlin
以下问题知道吗?
- Kotlin和Java做对比
- latelinit和lazy做对比
- 泛型的协变、逆变、不变
- 协程
关键还是要主动向Kotlin靠拢,日常开发中使用Kotlin。Kotlin学习文档
面试突击
Java
以下问题知道吗?
- Java内存回收算法,如何提高GC效率?
- sleep和wait的区别
- Hashmap实现原理和扩容
- JDK版本特性,项目使用的哪个版本,升级策略?
面试突击
Groovy
以下问题知道吗?
- 多渠道打包
- 字节码操作、插桩
- 如何避免快速点击
面试突击
Android核心知识
- Activity启动
- AMS(WMS、PMS)
- 屏幕渲染
- Handler一、Handler二
- View绘制一、View绘制二、View绘制三
- 事件分发一、事件分发二
- 自定义View一、自定义View二
- 版本特性
- 框架理解(MVC、MVP、MVVM)
- 组件化
- 插件化一、插件化二
- 热修复原理、热修复框架
- 进程通信、Binder原理
- 多线程
- 打包
- 签名
- 反外挂
- 反射
- 注解一、注解二
- Hook一、Hook二
- Jetpack
- 启动优化一、启动优化二、启动优化三、启动优化深入
- 内存优化一、内存优化二、内存优化三、内存优化四
- 网络优化一、网络优化二、网络优化三、网络优化四
- 包体优化一、包体优化二、包体优化三、包体优化四
- 线上监听一、线上监听二、线上监听实践
- Native开发一、Native开发二
- 多媒体
- Android Compose UI
- 数据库SQlite、数据库Room
开源框架
开源框架或开源库在面试中也经常被提及,一般会围绕场景、选型、落地、反思等四个维度展开:
- 场景:遇到什么问题,希望怎么解决?
- 选型:方案很多,如何选择,选择依据?
- 落地:如何使用开源库,有哪些注意事项?
- 反思:实现原理,常见问题?
- 组件化原理、组件化Demo
- ARouter
- Okhttp
- Json方案
- Glide
- MMKV一、MMKV二
- EventBus
- ButterKnife
- LeakCanary
- RecyclerView
- Lottie、Lottie优劣
- Push原理
- LiveData
Coding(算法)
卷,今时今日,大厂面试都会有1-2道算法题,一般放在面试最后,考题难度一般和前面表现呈负相关。没什么捷径,平时多练,考前突击。
行业风向
Flutter
市面上大量岗位熟悉Flutter者优先,更有不少要求专职Flutter。学习Flutter的重要性就不多说了吧
鸿蒙
主流App已经开始适配鸿蒙了,未来会有大量需求,先到先得
全栈
高级工程师当然不能只看碗里,还得往锅里看看,对日常合作伙伴的领域也得有所涉猎。
项目介绍
项目介绍一般分为两个阶段,自我介绍和面试官提问。不同阶段有不同的表达方式和侧重点。
- 自我介绍:干练有重点,尽可能简单准确的描述项目是什么,你都做了什么。着重强调你在项目中的突出贡献点和亮点,引导面试官接下来主动和你展开聊聊。
- 面试提问:当面试官主动和你聊项目时,哈哈,正合你意,主动权就到你手里了。采用STAR原则描述清楚即可...
提前挖掘项目重点、难点,面试过程中把面试官往这个方向上引,掌握主动权,面试会顺利的多。PS:难点和重点看你怎么想,怎么“编”
反问
一般面试官在面试最后阶段会允许你反问,一般准备2个问题,切忌0问题和询问面试结果。不同面试进程可以准备不一样的问题。这里提供几个参考
一面(组员):所面试岗位职责、所属项目信息、团队人员结构
二面(主管):进一步了解岗位职责,可以细到大致工作内容、工作节奏和版本管理
三面(总监):所面项目的发展和规划,整个部门的情况
Hr面(Hrbp):成长通道、企业文化、福利
面试技巧
- 了解各轮面试重点是什么,每轮面试有不同的准备重点,如何干练准确的陈述清楚,如何把握主动性。
- 仔细阅读jd、了解面试项目、深度体验项目产品
- 根据面试阶段,着重准备。一面重专业技能和知识经验,二面重过往经验和项目,三面重软性素质和成长空间,Hr面重人才观、求职动机和岗位匹配度
- 过往经历一定要准备1-2个亮点,面试时可以深入展开来说,如果没有,大概率面试不通过
- 自我介绍时着重强制自己准备的亮点,把面试官往这个亮点上引
- 如果遇到没准备的点,现场分析,切勿慌乱。实在不会和面试官明说,进入下一题
- 细节:自我介绍2-3分钟,脱稿,多和面试官眼神交流,表现大方自信。是面试求职,双向选择,不是乞讨要饭。
offer沟通技巧
辛辛苦苦半个月,终于开奖了。进入谈薪环节,面的好,也要谈的好。
面经
某大厂经历,供君参考
一面(5月7日)
- 自我介绍
- 项目主要开发语言,介绍下协变、逆变、不变
- 实现线程安全方式,原理
- 介绍下okhttp几种拦截器、如何保证几种拦截器都被执行和涉及的设计模式、网络请求最大并发数
- 安卓触摸事件分发机制,onCancel事件什么时候触发
- Handler异步消息
- 如何统计应用启动时间,区分冷热启动,区分线上、线下
- sigill信号在什么情况下会触发
- 项目难点
- 假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?
- 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标,可能有多组。
- 反问
二面(5月10日)
- 自我介绍
- 团队人员结构
- 项目难点
- 有管理经验,如何分配工作,如何打绩效
- https与http的区别,中间人如何修改密钥,对称加密和非对称加密
- 多进程
- 项目编译时间,编译加速,代码量
- 如何修改系统、第三方库源码
- 里氏替换原则
- Flutter使用
- 判断A是否是B的子树
三面(5月16日)
- 自我介绍(中途被打断,要求挑重点说,压力测试?)
- 项目中的难点
- 项目业务介绍,团队人员结构,为什么这么构成,合理嘛
- 有管理经验,如何打绩效,为什么你能拿高绩效;作为管理,做过那些技术规划;一句话介绍团队成员,要淘汰一个人,淘汰哪一个?
- 项目B为什么失败
- 介绍下Flutter,项目中怎么使用的
- 了解鸿蒙
- 换工作原因
- 职业规划
- 反问
hr面(5月16日)
- 自我介绍
- 项目介绍,人员架构,介绍下组员,介绍下领导
- 如何和同事相处
- 换工作原因
- 对面试岗位、面试部门及公司的认识
- 分享一个你牵头完成的案例或最有成就感的案例
- 加班情况,接受加班
- 未来职业规划
- 现职级和薪酬
- Hr主动介绍公司和部门情况、福利、薪资结构
- 反问
定薪(5月23日)
漫长等待... hr告知录取意向,职级,薪酬。问是否满意,预计入职时间。向hr了解更多薪资细节,去年年终情况,工作岗位细节,公司福利等等。答应第二天给hr答复。
谈薪(5月24日)
- 尽可能多的全面打听公司、部门、岗位信息,卷不卷,拿的满等等
- hr报的薪资略低于预期,结合过往经验和面试表现,感觉可以再要点。重新报了个价格给hr,hr答应帮忙申请,申请通过了,沟通入职日期。这么顺利,哎呀,要低了。切忌再次改口要。
offer(5月29日)
收到正式offer,nice,接着奏乐接着舞。