背景:
大家好,我是轻舟。
第一篇推文,记录我的面经吧。
《面试准备》
1、算法数据结构的学习,可以看看东哥labuladong: https://space.bilibili.com/14089380
2、Android大牛(个人关注列表)
2022年9月13日-2022年10月12日,刚好面试了一个月,成功上岸。总结面试问题,帮助大家了解当下Android开发岗位的一些技术栈硬性要求,预祝还在面试的各位早日上岸~
以下面试问题不分先后:
1、字节
- handler机制和作用
- JVM内存结构
- 如何处理多线程并发的情况
- 泛型
- final关键字
- 死锁是什么,如何破解
- Android中Handler.post和View.post的区别
- 性能优化
- 组件化(通信)
- 网络库封装
- 之前项目的重点难点是什么
- 算法:合并两个有序数组
2、CVTE
- 介绍之前项目和技术点
- 职业规划、薪资要求
- 屏幕适配
- view绘制流程
- view事件分发流程
- activity生命周期、启动模式
- MVVM
- Lifecycle,LifeData,databinding
- Java线程池
- kotlin协程
3、腾讯音乐(ps:面试官真的超级nice!)
- 两道算法题(从100w数据中找到前100个数用什么查找方式,如何翻转一个单向链表)
- 注入框架butterknife
- Android同名资源id
- 之前的项目架构,新增业务场景怎么做、用户埋点如何保证、用户ID管理
- handler同步屏障,Looper.loop()为什么没阻塞主线程
- recycleview源码有哪些设计模式,和Listview区别
- 线程和进程
- view绘制,invalidate、postInvalidate、requestLayout
- ANR,绘制超时
- 性能优化
4、魅族
- 屏幕适配
- 换肤,白天模式和黑夜模式的切换方案
- framework了解
- java类加载
- 自定义view,属性动画(其他动画,插值器)
- gradle基础,implementation和api
- apk体积优化
- apk签名
- 插件化了解
- viewgroup事件分发处理
5、百度一面
- string、string buffer、string builder之间的区别
- 泛型中那个extension 跟super的用法区别?就是说怎么设置上界下界的意思
- 并发集合有哪些?
- hashmap的实现原理,说详细点
- 序列化,Serializable和parceable区别
- 线程的创建方式
- 线程池的工作原理
- 线程池的参数作用,含义
- wait()和notify()方法的使用,notify 关键字
- 如何保证线程安全?有哪些方式
- Android系统中Service和IntentService的区别
- 动画的类型有哪些,以及他们之间的区别
- Handler的原理
- Andriod的事件分发机制
- 内存泄露的场景以及解决方法
- 做过哪些性能优化?分别介绍下
- 内存方面的优化可以介绍下吗?
6、百度二面
- hashmap的底层原理
- 线程池提问?为什么要设置线程池
- 线程跟进程的区别?
- A跟B在同一个进程里,A能创建B吗
- 网络协议了解么?Https的整个通讯过程讲一下
- Java的设计模式?
- 单独说下单例模式
- 内存泄露的问题处理过吗?你是怎么排查的
- Andriod事件分发机制
- handler机制
- 多个Handler同时发消息,怎么辨别是谁
- 自定义View,View 绘制流程
7、公司A
- kotlin和java,协程
- 应用异常监控排查
- Google play 包体AAB问题
- 仿微信页面开发,怎么做
- MVVM设计模式
- 跨进程通信方式
- 算法题:最长公共前缀
8、公司B
- 插件化方案
- flutter
- fragment懒加载
- 屏幕适配
- activity生命周期,前后台切换、跳转等场景
- webview相关
- 三级缓存
- 从0开始搭建一个app,做地图导航
- 后台应用存活时间
- Java引用有哪些,什么情况会被回收
- Activity启动模式,生命周期及各个周期方法在干什么
- 广播注册,实现原理
- 进程间通信方式,AIDL原理,和socket、共享内存的异同、安全性
- hashmap原理
- 用过哪些Java集合包,看过源码吗
9、公司C
- 屏幕适配,平板、折叠屏等
- 如何防止黑产
- 内购流程怎么做,技术层面
- 自定义view控件
- 动画,插值器
- 设计模式MVVM
- flutter
- 项目组件化开发,组件通信
- 事件分发流程,拦截事件处理
- handler原理
- Git
- kotlin基础,Lifecycle和LifeData
10、公司D
- handler机制
- activity启动模式
- kotlin
- 四大组件通信方式
- ANR情况和处理
- MVVM
- Lifecycle
- Lifedata
- java引用
- 内存泄漏
11、公司E
- http,udp协议
- 三次握手四次挥手
- http1.0,1.1,2.0,3.0区别
- gc回收机制,回收算法
- handler机制,为什么子线程不能处理UI
- oom处理
- java类加载器classloader
- 事件分发机制
- ArrayList扩容机制
- 多线程问题
- 线程阻塞和唤醒
- 死锁和破坏死锁
- view优化
- view刷新机制
12、公司F
- 应用生命周期和activity生命周期
- 组件化开发
- 做一个音乐播放器有哪些方案
- 屏幕适配
- 网络协议
- Google play后台签名问题
- 用户埋点策略