Android 开发 3 年,九月份面试 12 家大厂跳槽成功,我有一些面试经验想分享给你们
建议按知识点分类,这样比较方便重复练习与知识点掌握。
在知识点刷过一遍后,也可以按照公司分类或者 LeetCode 热题 100 刷,一般公司出算法题也是有题库的
下面推荐几个题库供大家使用:
按知识点分类
按公司分类
热题 100
面经
--
接下来就是各公司的面经了,分享出来供大家参考。
尚德公司面试
java 有什么特性,继承有什么用处,多态有什么用处
反射是什么,在哪里用到,怎么利用反射创建一个对象
代理模式与装饰模式的区别,手写一个静态代理,一个动态代理
对象加载的过程,属性先加载还是方法先加载
垃圾回收机制与 jvm 结构
自定义 View,事件分发机制讲一讲
http 与 https 有什么区别
Activity 启动模式,以及各启动模式生命周期问题
静态方法,静态对象为什么不能继承
Activity 怎么启动 Service,Activity 与 Service 交互,Service 与 Thread 的区别
介绍一下 android 动画
Launcher 启动 App 的流程,中间有几种跨进程通信(socket)
Handler 通信,Binder 通信
你碰到过什么内存泄漏,怎么处理
RXJava 怎么切换线程
Fragment hide show 生命周期
平常有用到什么锁,synchronized 底层原理是什么
Vivo 公司
简单描述下 Handler,Handler 是怎么切换线程的,Handler 同步屏障
Glide 的缓存,有用过 Glide 的什么深入的 API,自定义 model 是在 Glide 的什么阶段
讲讲 mvc,mvp 模式,presenter 内存泄漏的问题
ANR 了解过吗?有没有实际的 ANR 定位问题的经历
性能优化你做过哪些?
有什么实际解决 UI 卡顿优化的经历
有做过什么 Bitmap 优化的实际经验
项目搭建过程中有什么经验,有用到什么 gradle 脚本,分包有做什么操作
组件化有详细了解过吗?ARouter 详细原理
讲一下事件分发机制,RecyclerView 是怎么处理内部 ViewClick 冲突的
mainfest 中配置 LargeHeap,真的能分配到大内存吗?
B 站
一个大致有序的数组如何排序,最快时间复杂度
如果叫你实现,你会怎样实现一个多主题的效果
如何自定义实现一个 FlexLayout
tinker 的原理是什么,还用过什么热修复框架,robust 的原理是什么?
说说你对注解的了解,是怎么解析的
synchronized 是公平锁还是非公平锁,ReteranLock 是公平锁吗?是怎么实现的
泛型是怎么解析的,比如在 retrofit 中的泛型是怎么解析的
mvp 与 mvvm 的区别,mvvm 怎么更新 UI,databinding 用得多吗,databinding 的原理?
kotlin ?的原理
在项目中有直接使用 tcp,socket 来发送消息吗
如何在网络框架里直接避免内存泄漏,不需要在 presenter 中释放订阅
生命周期都是通过什么调用的?有用过 AIDL 吗?
讲一下 RecyclerView 的缓存机制,滑动 10 个,再滑回去,会有几个执行 onBindView
如何实现 RecyclerView 的局部更新,用过 payload 吗,notifyItemChange 方法中的参数?
讲讲 LinkedHashMap 的数据结构
put post 有什么区别
A Activity 打开 B Activity 的生命周期变化,会有什么方法打断吗?
Fragment hide show 生命周期变化
Fragment replace 生命周期变化
B 站二面
为什么考虑换工作
屏幕适配做过什么工作?
你们网络框架用的什么?为什么?
如果让你来开发 B 站的一个页面,哪一个页面可以很快入手
性能优化你做过什么工作?
h5 与 native 通信你做过什么工作?
插件化的主要优点和缺点是什么?
你觉得 B 站目前的 APP 有什么问题?
如果产品要求你开发一个音频播放功能,你会怎么着手?预计会有什么坑?
ViewPager 切换 Fragment 什么最耗时?
线程间同步的方法
锁之间的区别
B 站三面
介绍一下你自已和项目
说说为什么考虑离职
说说对你们原来公司的印象
为什么想来 B 站?你在 B 站上常常在看什么?
期望薪资是多少?
你对搬到上海有什么想法?
腾讯
介绍一下你们项目的架构
Rxjava 是怎么实现线程切换的
Rxjava 自定义操作符
ARouter 的原理
ARouter 怎么实现接口调用
ARouter 怎么实现页面拦截
MVP 怎么处理内存泄漏
OkHttp 怎么实现连接池
如果让你来实现一个网络框架,你会考虑什么
你做过什么性能优化的工作
热修复的原理,资源的热修复的原理,会不会有资源冲突的问题
ViewPager 中嵌套 ViewPager 怎么处理滑动冲突
android 源码中有哪些设计模式
说说 binder 机制的原理
腾讯二面
为什么考虑换一份工作?
在你们公司这几年感觉怎么样?
技术选型上,为什么这么考虑?从开发效率,产品性能,产品质量,产品体验等方面考虑
你们的产品为什么被砍掉,从哪方面考虑
在这几年里,你有做过什么觉得最有价值的工作
你还有什么要问我的吗?目前有几个 offer,倾向性是怎样的?
网易云音乐
ViewPager2 原理
LifeCycle 的原理是怎样的?
ViewModel 为什么在旋转屏幕后不会丢失状态
Drawable 与 View 有什么区别,Drawable 有哪些子类
属性动画更新时会回调 onDraw 吗?
OkHttp 网络拦截器,应用拦截器?OKHttp 有哪些拦截器,分别起什么作用
自定义实现一个九宫格如何实现
PathClassLoader 与 DexClassLoader 有什么区别
这些年有做一些什么比较难的工作?
编译时注解与运行时注解,为什么 retrofit 要使用运行时注解?什么时候用运行时注解?
kotlin lazy 使用,lazy viewmodel
有没有看一下 Google 官方的 ViewModel demo
ViewModel 在 Activity 初始化与在 Fragment 中初始化,有什么区别?
kotlin 与 Java 互相调用有什么问题?
retrofit 怎么做 post 请求
界面优化的一些方法,ConstraintLayout 实现三等分,ConstraintLayout 动画.
CoordinatorLayout 自定义 behavior,可以拦截什么?
网易云音乐二面
你们的项目中做过什么比较难的工作?
视频播放,一个 player 怎么实现预加载,避免 loading
webView 加载本地图片,如何从安全方面考虑
http1.0,http1.1,http1.2 有什么区别
https 与 http 有什么区别
有用过什么加密算法?AES,RAS 什么原理?
android 跨进程通信了解吗?共享内存用过吗?binder 怎么验证 pid?binder 驱动了解吗?
SharedParence 可以跨进程通信吗?如何改造成可以跨进程通信的.commit 和 apply 的区别.
Seriazable 与 Parceable 的区别
Bundle 是什么数据结构?利用什么传递数据
Jvm 的内存结构,Jvm 的垃圾回收,方法区有什么东西?
h5 与 native 交互,webView.loadUrl 与 webView.evaluateUrl 区别
网易云音乐三面
有没有做过什么 WebView 秒开的一些优化
你们的项目中有什么难点?
native 如何对 h5 进行鉴权,让某些页面可以调,某些页面不能调
有看过哪些框架的源码吗?
viewModel 是怎么实现双向数据绑定的?
viewModel 怎么实现自动处理生命周期?
图片加载优化有什么经验吗?
viewpager 切换掉帧有什么处理经验?
一个 wrap_content 的 ImageView,加载远程图片,传什么参数裁剪比较好?
两个 getDrawable 取得的对象,有什么区别?
补间动画与属性动画的区别,哪个效率更高?
jsBridge 实现方式
平常是怎么了解一些新知识与业界动态的,最近有什么印象深刻的文章
平常抓包用什么工具?
Mvp 与 Mvvm 有什么区别?
跟谁学
项目中的 Webview 与 native 通信
项目中对 WebView 的功能进行了怎样的增强
synchronized 跟 ReentranLock 有什么区别?
synchronized 与 ReentranLock 发生异常的场景.
算法,删除数组中的重复元素
手写双检查单例模式,各个步骤有什么区别
Activity 生命周期
快手
string,equals,==有什么区别
AsyncTask 内存泄露
dispatchTouchEvent,onInterceptEvent,onTouchEvent 顺序,关系
onMeasure,onLayout,onDraw 关系
算法题,反转数组
算法题,链表求和
说说你对协程的理解
协程怎么取消
说说 MVP 与 MVVM 的区别
快手二面
算法题,二叉树的最大深度
如果 android 端和 IOS 端调一个接口,一个通了一个没通,你会如何解决
如果 android 端和 IOS 端调一个接口,一个比较慢,一个比较快,有什么思路
ARouter 的原理是什么?如果不用 ARouter,你会怎么去解藕。接口?设计接口有什么需要注意的?
h5 与 native 交互做过什么工作?
登陆功能,登陆成功然后跳转到一个新 Activity,中间涉及什么?从事件传递,网络请求,AMS 交互角度分析
AMS 交互调用生命周期是顺序的吗?
binder 进程间通信可以调用原进程方法吗?
mvp 与 mvvm 有什么区别?
token 放在本地如何保存?如何加密比较好?
快手三面
viewModel 的原理,为什么可以在 Activity 销毁后保存数据
mvvm 双向数据绑定的原理是怎样的?ViewModel
说说你们项目中的难点是怎样的?
伪代码实现一个长按事件
实现一个下载功能的接口
猿辅导
泛型有什么优点?
动态代理有什么作用?
拉圾回收的 GCRoot 是什么?
Handler 机制了解吗?一个线程有几个 Looper?为什么?
你了解协程吗?协程有什么作用?可以完全取代 rxjava 吗?
你们用的什么消息通信机制
你的项目有什么难点?介绍一下?
算法题,二叉树最长结点集合
猿辅导 2 面
你们项目中的难点是什么?
编译期注解处理的是字节码还是 java 文件
你在项目中有用到什么设计模式吗?
ARouter 的原理是怎样的?
插件化的原理是怎样的?
算法题,K 个一组反转链表
广播与 RxBus 的区别,全局广播与局部广播区别
猿辅导 3 面
你们项目中有什么难点?
@JavaScriptInterface 为什么不通过多个方法来实现?
为什么不利用同步方法来做 jsBridge 交互?同步可以做异步,异步不能做同步
网络封装怎么实现?
算法题,不同面值的几个硬币,怎么求满足条件的最小值
斗鱼
说说 HashMap 的原理
说说 Java 的内存分区
讲讲你对垃圾回收机制的了解,老年代有什么算法?
说说你对 volatile 字段有什么用途?
说说事件分发机制,怎么写一个不能滑动的 ViewPager
说说你对类加载机制的了解?DexClassLoader 与 PathClassLoader 的区别
说说插件化的原理,资源的插件化 id 重复如何解决?
mvp 与 mvvm 模式的区别是什么?
JetPack 组件用过哪些?lifeCycle 的原理是什么?如果在 onStart 里面订阅,会回调 onCreate 吗?
单例模式有什么缺点?
说说 App 的启动过程,在 ActivityThread 的 main 方法里面做了什么事,什么时候启动第一个 Activity?
说说你对 Handler 机制的了解,同步消息,异步消息等
说说你对屏幕刷新机制的了解,双重缓冲,三重缓冲,黄油模型
onCreate,onResume,onStart 里面,什么地方可以获得宽高
为什么 view.post 可以获得宽高,有看过 view.post 的源码吗?
attachToWindow 什么时候调用?
DataBinding 的原理了解吗?
滴滴一面
JVM 类加载机制了解吗,类什么时候会被加载?类加载的过程具体生命周期是怎样的?
Handler 内存泄漏的 GCRoot 是什么?
动画里面用到了什么设计模式?
OkHttp 里面用到了什么设计模式?
OkHttp 连接池是怎么实现的?里面怎么处理 SSL?
泛型为什么要擦除?kotlin 的泛型了解吗?泛型的 pecs 原则
同步屏障
性能优化做过什么工作?
RecyclerView 的缓存结构是怎样的?缓存的是什么?cachedView 会执行 onBindView 吗?
RecyclerView 嵌套 RecyclerView,NestScrollView 嵌套 ScrollView 滑动冲突
ViewGr
oup 在 Action_Move 时 onIntercept 返回 true,事件怎么传递
Launcher 启动图标,有几个进程?
JMM 可见性,原子性,有序性,synchronized 可以保证什么?
源码中有哪里用到了 AtomicInt
AQS 了解吗?
Activity 内 LinearLayout 红色 wrap_content,包含 View 绿色 wrap_content,求界面颜色
ViewModel 的使用中有什么坑?
有用 DSL,anko 写过布局吗?
HashMap 查找的时间复杂度是多少?
评论