前言
本人2022.12.23通知被优化,2022.12.24完成交接走人,拿了n+1的赔偿,因为当时快过年加上需要沉淀一下就晚一些找工作。
大环境
今年大环境是真不行,以后行不行不知道。已于3月中入职,忙活到现在一直没找出时间写文章,现在也总结一下,为以后找工作做个准备。
技术储备
1.基础
- 必须掌握
- HashMap原理
- 并发
- JVM
- 动态代理
- TCP三次握手四次挥手
- 可选
- 线程
- 线程池
- 加密
2.UI层面
- 必须掌握:
- 自定义View/ViewGroup
- 事件分发原理
- RecycleView缓存机制/原理/源码,
- 可选
- setContentView流程分析
- ViewPager源码解析与性能优化
3.Framework层源码
- 必须掌握:
- Binder
- Handler
- AMS+ATMS
- startActivity启动流程
- 可选
- Activity启动模式
- WMS
- PMS
4.三方库源码
-
必须掌握
- Retrofit
- OkHttp
- RxJava
- Glide
不只是简单的使用还要理解其原理,能掌握源码最好了
5.扩展
- 必须掌握
- 性能调优
- OOM原理
- ARN分析
- Apk瘦身
- 线上Bug检测
- Kotlin 能上手
- 可选
- LeakCanary(内存泄漏监控)原理解析
- 内存优化
- 存储优化(MMKV使用及原理)
- 屏幕适配
- 电量优化
- Flutter/Dart
其他
面试不仅仅是上面这一点内容,需要你特别全能,问的不仅特别广,而且特别深,所以能多掌握就多掌握,因为你不确定面试官会问你哪些内容。
样例
有一家面试官是后端的,只问Java层面的知识点,Android方面就是说场景让你提供解决方案,其实公司Android开发用的语言是Kotlin,就是这么神奇。
Flutter
如果对 Flutter 不熟的可以去学习一波,蛮简单的基本5-10小时就能简单掌握,Dart还是比较好掌握的,毕竟了解Dart/Flutter可以增加面试机会。
经验
面试的时候语言表达还是比较重要,做好充足的准备,珍惜每一次机会,切莫焦虑,加油,你我共勉。
平台
投递平台 BOSS/猎聘,我在BOSS投了一大堆简历,在猎聘就投了几个,结果是在猎聘找到的工作,就是这么神奇。
面试记录
No1. 车企2.03 - 18点
- 启动Activity显示第一帧的时候打印一句话
- MVVM优势和使用
- jactpack 常用那些
- 启动流程 生命周期
- livedata监听
- 扩展函数是怎么实现的
- 协程
- 混淆
- EMS
- HashMap原理
- ClassLoader,热修复
- TCP/UDP区别
- MD5和AES(RSA)
No2. 某体
- 自定义View
- 启动优化
- MVP
- Gilde图片加载
- Socket
- 即时通讯
- 事件打点
- Flutter
- 未来规划
No3. 交易所 16
- 自定义VIew
- 自定义View -layout
- 事件分发
- 滑动冲突
- 启动优化
- 数据安全
- RecycleView
- liveData 不会更新
- livedata注意事项
No4. 某金融公司 -方向海外
- JVM
- Okhttp 5个拦截器
- 启动优化
- 性能优化
- Jetapack
- kotlin apply let run区别
- 模块化和组件化区别
- 装饰者模式和策略模式区别
- 大量字段和数据传输方案
- 谷歌bug紧急修复方案
No5.AI智能
- liveData
- 事件分发
- DOWN拦截后后续还会再触发事件分发吗
- Kotlin扩展函数
- 协程
- Kotlin切换主线程
- 内存优化
- OOM
- 内存检测
- 三方库
- liveData原理
No6.某金融公司 -方向海外
- 海外发行经验
- 线上Bug快速修复
- Activity启动流程
- 性能优化
- 三面成长路线等不涉及技术
No7.某文化
- Java内部类有哪些
- 匿名内部类好处
- 响应式布局和传统布局区别
- 动态代理的使用
- 接口和抽象类的区别
- 单例类
- 性能优化
- 其他,忘记记录了总耗时2小时3轮面试
No8.分享
- compileSDK 和 targetSDKVersion区别
- 说一下今日头条屏幕适配的原理
- 说一下组件化路由表底层怎么做的
- 说一下隐私合规你们改了哪些内容
- 屏幕适配dp和sp有什么区别, dins干什么用的
- 说一下你们公司降级SDK怎么实现的?
- 你们一周发几个版本, 怎么保证一周两个版本不影响客户
- 说一下白屏监测原理
- 说一下RecycleView三级缓存
- 说一下R8和D8的区别
- 说一下如何对不同手机进行等级划分
- 说一下ASM、AspectJ和AST的区别
- 说一下你们项目的参数配置系统设计流程
- 如何自定义一个gradle Plugin