斗鱼Android开发一面面经
8.15号笔试,昨天下午发邮件通知加群面试,面试方式是使用腾讯会议进行远程面试
问题
- 自我介绍
- 如何选择工作地点?
- 安卓是如何学习的?
- 项目是自己开发的还是小组开发的?
- 项目中用到了哪些库?
- 项目中哪个功能点的实现让你觉得有成就感,怎么实现的?
- 除了Kotlin,其他的热门技术接触过吗?(热修复,插件化,Flutter)
- 安卓中最常见的三大问题?(ANR,OOM和内存泄漏)
- 开启一个耗时任务,可以使用哪些方式?(Service,线程)
- 还有吗?(Android消息处理机制)
- 哪些情况下可能触发OOM?(加载图片等资源过多,内存泄漏累积引起)
- 哪些情况下可能引起内存泄漏?(未完成线程中的强引用,static修饰的变量)
- Java中还有哪些引用?(软、弱、虚)
- 软引用和弱引用有什么区别?(前者只有内存不足时才会被清除,后者只要发生GC就会被清除)
- 使用多线程修改变量时如何解决读脏数据的问题?(volatie,锁)
- volatie具体是如何解决该问题的?(每次修改变量后立刻刷新至主存中,通知其他线程变量复制失效,重新从主存中获取变量)
- Android中的IPC方式有哪些?
- 为什么一个APP会存在多个进程?
- 序列化和包裹化有什么区别?
- 包裹化为什么性能比序列化好?
- 给你一个APP进行优化,你会从哪些方面进行优化?
- 为什么使用ViewStub可以进行优化?
- APP如何瘦身?
- 自定义控件要重写哪些方法?
- 安卓中哪些地方用到了设计模式?使用到的是什么模式?
- 使用过注解吗?
- 如何自定义注解?
- 看过Android的源码吗?
- 如何在链表中判断是否存在环?(快慢指针)
反问
经典问题,下一步如何学习。。