Android大厂面试经验分享(OPPO,字节,华为,阿里)

前言

我是从小公司跳出来的,最终入职OPPO,说实话这段时间的经历让我深深地感受到,我们为跳槽做的一些临时抱佛脚的提升跟那些大佬的沉淀比起来太渺小了。我们都知道找资料学习、刷面试题,但也许只能应付这一次的面试,后面还是会技术发愁,那些短时间背下来的东西迟早会忘掉,大家还是做好长期提升自己的准备,好好沉淀的东西最后才是属于自己的。

说说当时的面试过程,我是内推获得的面试机会,很感谢当时帮我内推的兄弟,总共三轮面试,两轮技术,一轮HR面,当天面试结束。

我10:10分到的公司,10:30开始面试,第一轮面试将近一个小时,聊的点我基本上都答得上来,自我感觉良好。然后面试官让我等一下,他去叫他们老大来给我二面,我等了有二十几分钟吧,二面有一个多小时,这次问的比较深,有些地方答的有些嗑吧,总体来说我自己是满意的。HR面约到下午了,整个流程下来每轮面试官都让人感觉很不错,我自己做的准备也让我面试感觉下来很爽。

面试题

我把面试遇到过的以及自己学习用到过相关内容都整理到一起了,方便自己进行复盘和后续的查漏补缺:

一、 Java基础

1.1 静态内部类和非静态内部类的比较

  1. 静态内部类和非静态内部类的区别
  2. 扩展:内部类都有哪些?
  3. 局部内部类
  4. 匿名内部类

1.2 多态的理解与应用

  1. 多态概述
  2. 多态中成员的特点
  3. instanceof关键字
  4. 多态的转型
  5. 多态案例

1.3 java方法的多态性理解

  1. 什么是java的多态
  2. 运行时多态
  3. 代码理解

1.4 java中接口和继承的区别

1.5 线程池的好处,详解,单例(绝对好记)

  1. 线程池的好处
  2. 线程池的详解
  3. 线程池的单例

1.6 线程池的优点及其原理

  1. 使用线程池的好处
  2. Executor框架
  3. 线程池大小确定

1.7 线程池的优点(重点)

1.8 为什么不推荐通过Executors直接创建线程池

  1. 缓存队列 LinkedBlockingQueue 没有设置固定容量大小
  2. 最大线程数量是 Integer.MAX_VALUE
  3. 拒绝策略不能自定义(这个不是重点)
  4. 创建线程或线程池时请指定有意义的线程名称,方便出错时回溯(这个不是重点)

1.9 不怕难之BlockingQueue及其实现

  1. 阻塞与非阻塞
  2. LinkedBlockingQueue 源码分析
  3. ArrayBlockingQueue源码分析

1.10 深入理解ReentrantLock与Condition

1.11 Java多线程:线程间通信之Lock

  1. synchronized的缺陷
  2. Lock类接口设计
  3. ReentrantLock可重入锁
  4. ReadWriteLock读写锁
  5. 公平锁
  6. Lock和synchronized的选择

1.12 Synchronized 关键字原理

  1. Synchronized 原理
  2. Synchronized 优化
  3. Synchronized 和 ReenTrantLock 的对比
  4. Synchronized 与 ThreadLocal 的对比

1.13 ReentrantLock原理

1.14 HashMap中的Hash冲突解决和扩容机制

  1. 关于HashMap
  2. 关于Hash算法和Hash冲突
  3. HashMap中的处理冲突
  4. HashMap中的扩容机制

1.14 Java并发

1.15 Java虚拟机

1.16 JVM常见面试题

  1. Java内存区域
  2. HotSpot虚拟机对象探秘
  3. 内存溢出异常
  4. 垃圾收集器
  5. 内存分配策略
  6. 虚拟机类加载机制
  7. JVM调优
  8. 类加载
  9. JVM内存模型
  10. Java中一个对象从创建到销毁的过程和JVM类加载过程

1.17 JVM内存结构

  1. JVM内存结构【方法区+虚拟机栈+本地方法栈+程序计数器+堆】
  2. Java中的对象一定在堆上分配吗?

1.18 类加载机制/双亲委托

  1. java类加载机制和类加载器以及双亲委派原则解析

二、 Android基础

2.1 Activity知识点(必问)

  1. Activity启动过程全解析
  2. 启动模式以及使用场景
  3. onSaveInstanceState以及onRestoreInstanceState使用
  4. onConfigurationChanged使用以及问题解决

2.2 Fragment知识点

  1. Fragment的通信问题, 新建Fragment为何不要在构造方法中传递参数
  2. 为什么官方推荐Fragment.setArguments(Bundle bundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数呢?
  3. Androidx 下 Fragment 懒加载的新实现
  4. Fragment全解析系列(一):那些年踩过的坑
  5. Google-Fragment概览
  6. Google-与其他Fragment通信

2.3 Service知识点

  1. Handler知识点(必问)
  2. Android主线程阻塞处理及优化
  3. 深入聊聊Android消息机制中的消息队列的设计
  4. 深入理解MessageQueue
  5. 你真的懂Handler.postDelayed()的原理吗?
  6. Handler.postDelayed()是如何精确延迟指定时间的
  7. Handler延迟消息执行机制,会阻塞吗?

2.4 Intent知识点

  1. Android跨进程传递大内存数据

2.5 数据存储

三、UI控件篇

3.1 屏幕适配

  1. Android屏幕适配和方案【整理】
  2. Android 目前稳定高效的UI适配方案

3.2 主要控件优化

  1. RecyclerView优化

3.3 事件分发与嵌套滚动

  1. 一篇文章让你轻松弄懂NestedScrollingParent & NestedScrollingChild

3.4 动态化页面构建方案

  1. Android | Tangram动态页面之路(二)介绍
  2. Android动态界面开发框架Tangram使用完整教程

四、网络通信篇

4.1 网络协议

  1. 看完让你彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)

五、架构设计篇

5.1 MVP架构设计

  1. 高级MVP架构封装演变全过程
  2. Android—我所理解的MVP模式

5.2 组件化架构

  1. Android为什么要用组件化?

六、性能优化篇

6.1 启动优化

  1. Activity启动流程
  2. Android性能优化–启动优化

6.2 内存优化

  1. Android性能优化:这是一份全面&详细的内存优化指南
  2. Android性能优化:手把手带你全面了解 内存泄露 & 解决方案
  3. Android内存优化(使用SparseArray和ArrayMap代替HashMap)

6.3 绘制优化

  1. Android性能优化:那些不可忽略的绘制优化

6.4 安装包优化

  1. Android 安装包优化–减小安装包体积

七、源码流程篇

7.1 开源库源码分析

7.2 Glide源码分析

  1. Android面试题:Glide

7.3 day 20 面试题:Glide面试题

  1. Glide的优点
  2. 生命周期绑定原理
  3. 缓存原理

7.4 聊一聊关于Glide在面试中的那些事

  1. 来简单介绍下Glide的缓存
  2. 具体说一说Glide的三级缓存原理
  3. Glide加载一个一兆的图片(100 * 100),是否会压缩后再加载,放到一个300 * 300的view上会怎样,800*800呢,图片会很模糊,怎么处理?
  4. 简单说一下内存泄漏的场景,如果在一个页面中使用Glide加载了一张图片,图片正在获取中,如果突然关闭页面,这个页面会造成内存泄漏吗?
  5. 如何设计一个大图加载框架

7.5 面试官:简历上如果写Glide,请注意以下几点…

  1. 谈谈Glide
  2. 假如让你自己写个图片加载框架,你会考虑哪些问题?

7.6 Glide OOM问题解决方法汇总

7.7 LeakCanary源码分析

7.8 OkHttp源码分析

  1. OkHttp源码解析
  2. Okhttp面试简答
  3. okhttp面试题----拦截器interceptor
  4. Okhttp3 总结研究 (面试)

7.9 okhttp连接池复用机制

  1. 概述
  2. 连接池的使用

7.10 okhttp 流程和优化的实现

  1. 概述
  2. 异步流程的实现
  3. okhttp 中有哪些优化,优化是怎么实现的
  4. okhttp 中用到了哪些设计模式

7.11 一篇让你受用的okhttp分析

7.12 OkHttp面试之–OkHttp的整个异步请求流程

7.13 OkHttp面试之–HttpEngine中的sendRequest方法详解

7.14 OkHttp解析大总结

7.15 Okhttp任务队列工作原理

  1. 概述
  2. 线程池的复用和管理

7.16 Android高频面试专题 - 架构篇(二)okhttp面试必知必会

  1. HTTP报文结构
  2. HTTP发展历史
  3. okhttp有哪些优势
  4. okhttp使用
  5. 看过okhttp源码吗?简单介绍一下
  6. 同步请求详细源码解读
  7. 异步请求详细源码解读
  8. okhttp实现网络请求的方法
  9. okhttp实现带进度上传下载
  10. 为什么response.body().string() 只能调用一次
  11. okhttp运用的设计模式

7.17 Android 网络优化,使用 HTTPDNS 优化 DNS,从原理到 OkHttp 集成

  1. DNS 和 HTTPDNS
  2. OKHttp 接入 HTTPDNS

7.18 Retrofit源码分析

  1. Android:手把手带你深入读懂Retrofit 2.0源码

7.19 RxJava源码分析

  1. RxJava操作符之创建操作符(三)
  2. RxJava操作符之转换操作符(四)
  3. RxJava操作符之过滤操作符(五)
  4. RxJava操作符之组合操作符(六)

7.20 RxJava原理与源码分析

  1. RxJava的消息订阅和线程切换原理

7.21 RxJava如何进行线程切换的?

  1. RxJava 是如何实现线程切换的(上)
  2. RxJava 线程切换原理
  3. RxJava2线程切换原理分析

7.22 Rxjava内存泄漏防止方案——RxLifecycle,AutoDispose,RxLife框架

  1. Android 使用RxLifecycle解决RxJava内存泄漏
  2. 解决RxJava内存泄漏(前篇):RxLifecycle详解及原理分析
  3. RxLifecycle详细解析
  4. 使用Rxjava2导致的内存泄露问题
  5. Rxjava解除订阅②:AutoDispose

7.23 Tinker源码分析

7.24 ARouter源码分析

  1. ARouter原理剖析及手动实现
  2. ARouter组件化框架原理分析
  3. Android之ARouter使用和原理解析
  4. 手动实现一个路由框架EasyRouter
  5. Arouter核心思路和源码详解
  6. ARouter源码分析(四)—— 缓存与优化
  7. 我所理解的Android组件化之通信机制
  8. ARouter系列三:依赖注入暴露服务
  9. ARouter系列一:Activity跳转原理详解

7.25 Android框架层源码解析

  1. Java层源码解析

7.26 算法设计

  1. 时间复杂度
  2. 数据结构
  3. 浅谈单链表与双链表的区别

八、新技术篇

8.1 实战问题篇

  1. Android工程中方法数超过65536解决方法

九、面试篇

9.1 开源文档

9.2 面试文献

  1. Android 面试题积累 (高阶)

结尾

以上就是我的学习和面试积累,有自己面试经历过的,也有整理的一些大厂面试题,篇幅有限,具体内容就不展示了,我已经整理成文档了。

还是开头说的,仅靠面试期间临时抱佛脚和刷题对自身发展不是长久之计,做好长期提升的规划,好好沉淀每一次的学习和面试经历,把这些最终都转化成属于自己的东西才是实质上对自己最有用的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,042评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 6,877评论 0 2
  • 今天上午陪老妈看病,下午健身房跑步,晚上想想今天还没有断舍离,马上做,衣架和旁边的的布衣架,一看乱乱,又想想自己是...
    影子3623253阅读 2,908评论 1 8
  • 年纪越大,人的反应就越迟钝,脑子就越不好使,计划稍有变化,就容易手忙脚乱,乱了方寸。 “玩坏了”也是如此,不但会乱...
    玩坏了阅读 2,131评论 2 1
  • 感动 我在你的眼里的样子,就是你的样子。 相互内化 没有绝对的善恶 有因必有果 当你以自己的价值观幸福感去要求其他...
    周粥粥叭阅读 1,635评论 1 5