Android大厂面试经验分享(OPPO,字节,华为,阿里)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android大厂面试经验分享(OPPO,字节,华为,阿里)相关的知识,希望对你有一定的参考价值。
参考技术A我是从小公司跳出来的,最终入职OPPO,说实话这段时间的经历让我深深地感受到,我们为跳槽做的一些临时抱佛脚的提升跟那些大佬的沉淀比起来太渺小了。我们都知道找资料学习、刷面试题,但也许只能应付这一次的面试,后面还是会技术发愁,那些短时间背下来的东西迟早会忘掉, 大家还是做好长期提升自己的准备,好好沉淀的东西最后才是属于自己的。
说说当时的面试过程,我是内推获得的面试机会,很感谢当时帮我内推的兄弟,总共三轮面试,两轮技术,一轮HR面,当天面试结束。
我10:10分到的公司,10:30开始面试,第一轮面试将近一个小时,聊的点我基本上都答得上来,自我感觉良好。然后面试官让我等一下,他去叫他们老大来给我二面,我等了有二十几分钟吧,二面有一个多小时,这次问的比较深,有些地方答的有些嗑吧,总体来说我自己是满意的。HR面约到下午了,整个流程下来每轮面试官都让人感觉很不错,我自己做的准备也让我面试感觉下来很爽。
我把面试遇到过的以及自己学习用到过相关内容都整理到一起了,方便自己进行复盘和后续的查漏补缺:
一、 Java基础
1.1 静态内部类和非静态内部类的比较
1.2 多态的理解与应用
1.3 java方法的多态性理解
1.4 java中接口和继承的区别
1.5 线程池的好处,详解,单例(绝对好记)
1.6 线程池的优点及其原理
1.7 线程池的优点(重点)
1.8 为什么不推荐通过Executors直接创建线程池
1.9 不怕难之BlockingQueue及其实现
1.10 深入理解ReentrantLock与Condition
1.11 Java多线程:线程间通信之Lock
1.12 Synchronized 关键字原理
1.13 ReentrantLock原理
1.14 HashMap中的Hash冲突解决和扩容机制
1.14 Java并发
1.15 Java虚拟机
1.16 JVM常见面试题
1.17 JVM内存结构
1.18 类加载机制/双亲委托
二、 Android基础
2.1 Activity知识点(必问)
2.2 Fragment知识点
2.3 Service知识点
2.4 Intent知识点
2.5 数据存储
三、UI控件篇
3.1 屏幕适配
3.2 主要控件优化
3.3 事件分发与嵌套滚动
3.4 动态化页面构建方案
四、网络通信篇
4.1 网络协议
五、架构设计篇
5.1 MVP架构设计
5.2 组件化架构
六、性能优化篇
6.1 启动优化
6.2 内存优化
6.3 绘制优化
6.4 安装包优化
七、源码流程篇
7.1 开源库源码分析
7.2 Glide源码分析
7.3 day 20 面试题:Glide面试题
7.4 聊一聊关于Glide在面试中的那些事
7.5 面试官:简历上如果写Glide,请注意以下几点…
7.6 Glide OOM问题解决方法汇总
7.7 LeakCanary源码分析
7.8 OkHttp源码分析
7.9 okhttp连接池复用机制
7.10 okhttp 流程和优化的实现
7.11 一篇让你受用的okhttp分析
7.12 OkHttp面试之–OkHttp的整个异步请求流程
7.13 OkHttp面试之–HttpEngine中的sendRequest方法详解
7.14 OkHttp解析大总结
7.15 Okhttp任务队列工作原理
7.16 Android高频面试专题 - 架构篇(二)okhttp面试必知必会
7.17 Android 网络优化,使用 HTTPDNS 优化 DNS,从原理到 OkHttp 集成
7.18 Retrofit源码分析
7.19 RxJava源码分析
7.20 RxJava原理与源码分析
7.21 RxJava如何进行线程切换的?
7.22 Rxjava内存泄漏防止方案——RxLifecycle,AutoDispose,RxLife框架
7.23 Tinker源码分析
7.24 ARouter源码分析
7.25 Android框架层源码解析
7.26 算法设计
八、新技术篇
8.1 实战问题篇
九、面试篇
9.1 开源文档
9.2 面试文献
以上就是我的学习和面试积累,有自己面试经历过的,也有整理的一些大厂面试题,篇幅有限,具体内容就不展示了,我已经整理成文档了。
还是开头说的,仅靠面试期间临时抱佛脚和刷题对自身发展不是长久之计,做好长期提升的规划,好好沉淀每一次的学习和面试经历,把这些最终都转化成属于自己的东西才是实质上对自己最有用的。
大佬勿进字节腾讯阿里这些大厂的Android岗面试该做哪些准备?
提笔缘由
上半年受邀回学校给学弟学妹们做了一波就业指导。后面收到了很多反馈,也算是得到很多有用的经验,下面做了一些整理,分享给大家。
希望大家可以从中获取一些成功的经验或者失败的教训,在接下来九月和十月的面试季中披荆斩棘,收获满意的offer,为自己加冕。
成功的经验和失败的教训
一些需要记住的点(全重点,切记看完)
1.想冲击大厂的同学一定要记得好好准备一下算法,这块只能靠自己;
【PS:后面会给大家整理一份算法高频刷题资料,时间紧张的朋友可以先照着这份资料刷这些重点,时间充裕的朋友也可以用来查漏补缺。】
2.大厂都喜欢问原理,而不是问你会不会某某技术。建议看课程后多看源码,常用开源框架源码、Handler、Binder源码、性能优化、事件分发机制……
3.常问的技术点大概有: java进阶(jvm、并发)、kotlin基本原理、常用数据结构原理( hashmap. currenthashmap、 数组链表lru)、常用设计模式和六大原则。handler、binder原理 ;常用开源框架原理; View的话主要是事件分发原理和属性动画原理。性能优化也很喜欢问,内存/启动/卡顿……
【PS:嗯,内容比较多,一段话写不完,后文会有专门的模块详细展开来写】
4.平时多看一下大佬写的技术博客,提高自己的面试表达能力,运气好的话,你面试甚至会遇到大佬的博客原题,直接背博客内容就行;
5.可以从别人的面经里面学习,自行查漏补缺(记得对照自己简历上面的技术点,因为简历上没写的一般也不会问);
6.加分点flutter、ndk这些吧
7.新技术要稍微系统的了解一下,比如上面第六点提到的,最好是有上线项目。
重点准备一:算法
推荐大家去看这个:《最短时间搞定算法:字节跳动Android岗算法题考前突击宝典》
对于贪心算法,可能会重点考察以下题目:
- 通配符求值
- 跳跃游戏
- 跳跃游戏II
- 分发糖果
- 判断子序列
- 移掉K位数字
- 分割数组为连续子序列
对于DFS (深度优先搜索遍历) ,可能会重点考察以下题目:
- 重建二叉树
- 岛屿数量
- 二叉树的最大深度
- 平衡二叉树
- 二叉树根节点到叶子节点和为指定值的路径
- 判断-棵二叉树是否为搜索二-叉树和完全_二叉树
- 二叉树根节点到叶子节点的所有路径和
- 判断二叉树是否对称
- ……(内容比较多,重点都整理在后文的
《算法刷题宝典》
中了)
比如对于链表,可能会重点考察以下题目:
- 反转链表
- 链表中环的入口节点
- 判断链表中是否有环
- 链表中倒数第k个结点
- 链表中的节点每k个- -组翻转
- 合并有序链表
- 删除链表的倒数第n个节点
- ……(后续整理在
《算法刷题宝典》
中了)
对于数组,可能会重点考察以下题目:
- 螺旋矩阵
- 重建二叉树
- 数组中出现次数超过一半的数字
- 矩阵的最小路径和
- 缺失数字
- 顺时针旋转矩阵
- 加起来和为目标值的组合
- 集合的所有子集
- 数组中的逆序对
- 旋转数组
- 矩阵查找
- ……(全收录)
对于字符串,可能会重点考察以下题目:
- 最长无重复子串.
- 括号序列
- 最长回文子串
- 大数加法
- 反转字符串
- 最小编辑代价
- 将字符串转化为整数
- 验证IP地址
- 最长公共前缀
- 字符串变形
- 通配符匹配
- kmp算法
- 数字字符串转化成IP地址
- 大数乘法
- 第一个只出现一次的字符
对于动态规划,可能会重点考察以下题目:
……
(后面看内容好像还挺多,专门整理成了一份PDF,大家感兴趣的可以扫码免费获取)
《算法刷题宝典》
有需要的朋友可以直接扫【
下方的二维码
】找我免费获取全套资料
。
↓↓↓↓↓
重点准备二:一些常问技术点
- Handler相关知识
- Activity相关
- Fragment
- Service 相关
- Android布局优化之ViewStub、 include. merge
- BroadcastReceiver 相关
- AsyncTask相关
- Android 事件分发机制
- Android View绘制流程
- Android Window. Activity. DecorView以及View
Root - Android的核心Binder多进程AIDL
- Android高级必备: AMS,WMS,PMS
- Android ANR
- Android 内存相关
- Android 屏荨适配
- Android 缓存机制
- Android性能优化
- Android MVC、MVP、 MVVM
- Android Gradle 知识
- RxJava
- OKHTTP和Retrofit
- 最流行图片加载库: Glide
- Android组件化与插件化
(一)Handler 相关知识
1、Handler Looper Message 关系是什么?
2、Messagequeue 的数据结构是什么?为什么要用这个数据结构?
3、如何在子线程中创建 Handler?
4、Handler post 方法原理?
5、Android 消息机制的原理及源码解析
6、Handler 源码解析
7、Android Handler 消息机制
……
(二)Activity 相关
1、启动模式以及使用场景?
2、onNewIntent()和onConfigurationChanged()
3、onSaveInstanceState()和onRestoreInstanceState()
4、Activity 到底是如何启动的
……
(三)Fragment
1、Fragment 生命周期和 Activity 对比
2、Fragment 之间如何进行通信
3、Fragment的startActivityForResult
4、Fragment重叠问题
5、Android Fragment完全解析,关于碎片你所需知道的一切
6、Fragment 重叠, 如何通信
……
(四)Service 相关
1、进程保活
2、Service的运行线程(生命周期方法全部在主线程)
3、Service启动方式以及如何停止
4、ServiceConnection里面的回调方法运行在哪个线程?
5、startService 和 bingService 区别
……
(五)……
内容比较多,一篇文难以概全,后面的内容都以PDF的形式整理成文档了,有需要的朋友可以直接扫【
下方的二维码
】找我免费获取全套资料
。
↓↓↓↓↓
整理总目录:
重点准备三:一些教训+面试里的加分点
下面是其中一个小学弟分享他的面试经历(几点教训)。
这位小学弟的情况是:面了七家大厂(包含:腾讯、网易、酷狗、WPS、斗鱼、字节、快手),但是斗鱼和快手被刷了,只拿到了五家offer(他义正言辞的说自己不是在凡尔赛)。
其中,网易被刷下是因为不会flutter,没有flutter的项目经历,快手被刷了是因为终面的算法没有过。(他表示,除了算法大厂都会问,flutter、NDK也基本上会问到)
最后他反复向我强调:算法很重要,flutter 很重要,NDK也是大厂面试的加分项!!!!!
(其实这些点我当初有跟他们强调过,还分享过一些学习方法和配套的资料,早知如此,何必当初)
他的话真实的告诉我们一个现状:
flutter现在有大厂在使用,很多业务都已经比较成熟了,这基本成了我们搞移动开发的一个必备技能,还需要掌握的有一定深度,值得我们好好学习的一个技术方向。另外NDK音视频方向的市场需求也很大,大家可以好好准备一下。
为了帮助还没有上手flutter和NDK的朋友,今天在这里做一下指路和分享。
一样的,扫描上文中的二维码,直接找我获取。
重点准备四:准备面试时需要注意的点
面试这件事,功夫在平时,临场时最重要的是心态。下面给大家几点实用性建议。
-
充分准备
珍惜每次的面试机会,做好充分的准备。刷题什么的不要懈怠。上面的资料多看几遍,力扣的题目最好都刷一下。(尤其是算法题,千万不要偷懒,算法是决定工资水平的一个分水岭,想拿高薪的千万不能放弃算法题)。 -
不抛弃 不放弃
失败是成功之母。要有失败的心理准备,不要因为一次的不顺利就灰心。简历会被放回到人才库,其他部门仍可以让你去继续面试,不过是从头再面(就当做积累经验吧)。 -
猥琐发育,别浪
在准备跳槽的朋友尤其要注意,很多时候,你觉得你很有价值,其实那只是一个幻觉,其实是平台的价值。离开了平台,你什么也不是(并不是贬低和打击你的信心,只是希望你不要盲目自信)。希望大家能有谦虚学习的态度,猥琐发育,别浪。
总结
眼下又是一年秋招,阿里今年开启了史上最大规模的校招:针对应届生开放了 113 种岗位,其中 45 种岗位首次招聘应届生;京东 2022 年的校招岗位需求也较去年增加了 30%…
开发岗需求多,薪资可观,前景也好,确实是应届生的好选择。但是随着越来越多人涌入 IT 行业,竞争也越来越激烈。希望这些资料对大家有帮助!
文中的资料都是免费分享的,有需要的朋友【
直接扫描文中的二维码
】,找我获取。
以上是关于Android大厂面试经验分享(OPPO,字节,华为,阿里)的主要内容,如果未能解决你的问题,请参考以下文章
Android高级Framework系统面试专题系列/层次定位/一线大厂腾讯阿里华为oppo面试经验
这都没挂,2021字节跳动的Android研发岗也太好进了吧?(面经+经验分享)
这都没挂,2021字节跳动的Android研发岗也太好进了吧?(面经+经验分享)