写点什么

Android 开发 3 年,九月份面试 12 家大厂跳槽成功,我有一些面试经验想分享给你们

用户头像
Android架构
关注
发布于: 7 小时前

建议按知识点分类,这样比较方便重复练习与知识点掌握。


在知识点刷过一遍后,也可以按照公司分类或者 LeetCode 热题 100 刷,一般公司出算法题也是有题库的


下面推荐几个题库供大家使用:


按知识点分类


github.com/yuanguangxi…


github.com/zhangyixing…


按公司分类


github.com/afatcoder/L…


热题 100


zhuanlan.zhihu.com/p/84230862



面经


--


接下来就是各公司的面经了,分享出来供大家参考。

尚德公司面试

  • 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


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


oup 在 Action_Move 时 onIntercept 返回 true,事件怎么传递


  • Launcher 启动图标,有几个进程?

  • JMM 可见性,原子性,有序性,synchronized 可以保证什么?

  • 源码中有哪里用到了 AtomicInt

  • AQS 了解吗?

  • Activity 内 LinearLayout 红色 wrap_content,包含 View 绿色 wrap_content,求界面颜色

  • ViewModel 的使用中有什么坑?

  • 有用 DSL,anko 写过布局吗?

  • HashMap 查找的时间复杂度是多少?

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android开发3年,九月份面试12家大厂跳槽成功,我有一些面试经验想分享给你们