【2022裸辞上岸】Android开发岗

172 阅读4分钟

背景:

大家好,我是轻舟。

第一篇推文,记录我的面经吧。

《面试准备》

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后台签名问题
  • 用户埋点策略