1. Android大厂面试经验分享(OPPO,字节,华为,阿里)
我是从小公司跳出来的,最终入职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 面试文献
以上就是我的学习和面试积累,有自己面试经历过的,也有整理的一些大厂面试题,篇幅有限,具体内容就不展示了,我已经整理成文档了。
还是开头说的,仅靠面试期间临时抱佛脚和刷题对自身发展不是长久之计,做好长期提升的规划,好好沉淀每一次的学习和面试经历,把这些最终都转化成属于自己的东西才是实质上对自己最有用的。
2. Android面试:字节飞书5轮面试Android Framework层的源码就问了4轮!
说起字节跳动的这次面试经历,真的是现在都让我感觉背脊发凉,简直被面试官折磨的太难受了。虽然已经工作了三年,但是也只是纯粹的在写业务,对底层并没有一个很深的认识,这次面试经历直接的让我感受到我和那些一线大厂开发之间的差距,说句实话,是真的很难受。
也不多说什么了吧,我们还是来回顾一下我在字节跳动的这次面试经历。 一共是面了5轮,至于为什么面了5轮的原因,可能是面试官还是想试试我的技术水平吧 。
虽然说最终还是没能拿到offer,但是这次的面试经历让我更加直观的了解了我和大厂Android开发之间的差距,算是收益颇丰吧 。
总体来讲,一面还是答得不错的,或许是面试官觉得小瞧了我,接下来的四轮面试我仿佛遭到了严打
最后唠叨几句,希望各位没拿到offer的真的不要灰心,可能你之前所有的失败都是你成功的垫脚石,我面挂的时候也曾经自闭过,但更多的是反思,如何调整自己的复习计划。在复习的时候一定要有自己的强项,能把这个知识点理解的很透彻并且把相关的知识点拓展出去。另一方面就是让面试官看到你对这个岗位的热情,能够自发性地去学习与岗位相关的东西,下面给大家分享一份我珍藏的《2022最新Android中高级面试题合集》质量非常搞,希望能对你有帮助!
内容概要 :包括 Handler、Activity相关、Fragment、service、布局优化、AsyncTask相关、Android 事件分发机制、 Binder、Android 高级必备 :AMS,WMS,PMS、Glide、 Android 组件化与插件化等面试题和技术栈!内容特点:条理清晰,含图像化表示更加易懂。
Android Framework 开发虽然比较偏底层,圈子窄,但是能掌握一些原理的东西,可以触类旁通,往应用层发展也可以。目前大公司的app开发都要基于模块化、层次化、组件化、控件化的思路来设计架构,而这一切的基础都建立在Android Framework系统框架底层原理实现之上。
3. 腾讯大佬整理推荐《Android Framework 开发揭秘》突破面试!(附面试宝典)
随着 Android 开发者越来越多,企业在筛选 Android 程序员时越来越看中一个程序员对于 Android 底层原理的理解和思考。
经常面试的人就知道,现在 Framework 算是面试必问知识点了,比如下面一些大厂面试题:
Framework 为开发应用程序提供了非常多的 API,通过调用特殊的 API 构造 APP,满足业务上的需求。正因为有了 Framework 层,应用开发才能事半功倍,专注于业务逻辑实现。
这里给大家分享一份由 腾讯大佬整理推荐的《Android Framework 开发揭秘》以及《2022最新Android中高级面试题合集》。
这份1932页的《2022Android中高级面试题汇总》是总结了2020-2021期间大厂面试中的高频面试题汇总,其中包括腾讯、字节、美团、阿里、网络…等一线互联网大厂。
资料包含: Java基础、Android基础、UI控件、网络通信、架构设计、性能优化、源码流程…
想要深入学习了解 Framework ,突破面试难关,那么这两份《Android Framework 开发揭秘》《2022最新Android中高级面试题合集》一定不要错过。
4. 已拿32k小米Android高级开发offer(面试题回顾)
到现在我入职也有一段时间了,这才有空梳理一下当时的面试题。简单说下我的情况:这是一次比较平常的跳槽,不是什么逆袭大厂的剧本,只是薪资有所涨幅。
个人经历不详说,面试题对大家来说可能更有参考性,本篇先整理小米的面试题,我前后也面了很多个大厂,有空把其他几个大厂的面试题也总结一下。
Java基础肯定是少不了要问的,这轮面试Kotlin相对来说是我这些面试中问得比较多的,所以说准备面试还是要面面俱到。
我有点佩服我的记忆力了。这部分涉及到更多的 源码、原理和优化 方面的问题,Android高级开发需要具备一些什么能力大家也应该有所衡量了。
最后给大家分享一份 2246页 的 Android大厂高频面试题解析大全 ,基本上把我的面试内容都涵盖到了: Android、性能优化、Java、Kotlin、网络、插件化、热修复、模块化、组件化、增量更新、Gradle、图片、Flutter等。
这份资料免费提供给大家复习,文末查看领取方式,搞定Android面试这一份肯定够了。
第一章 Android相关 (源码分析、性能优化、Framework等)
第二章 性能优化 (GC原理、布局优化、绘制优化、内存优化等)
第三章 Java相关 (四种线程池、JVM、内存管理、垃圾回收、引用等)
第四章 Kotlin相关 (延迟初始化、Reified、Extension Functions、函数等)
第五章 网络相关 (HTTP 知识体系、HttpDns 原理、TCP,UDP,HTTP,SOCKET 之间的区别等)
第六章 插件化&热修复&模块化&组件化&增量更新&Gradle
第七章 图片相关 (图片库对比、LRUCache原理、图片加载原理、Glide等)
第八章 Flutter相关 (Flutter原理、Flutter Hot Reload、Flutter 动态化 探索 、Flutter Platform Channel等)
需要这份资料的朋友私信我【面试题】就可以免费领取。
希望大家都可以把握住每一次自我提升的机会,把每一步都走踏实了,涨薪升职什么的都会迎你而来。
也欢迎大家和我一起交流Android方面的事情。
5. 把大厂都面试一遍后,我总结了13条面试经验和面试题(附答案)
近期大大小小面了十几家公司,花了一点时间整理了14条面试经验,希望能帮助到你。
1.面试前要认真准备,及时梳理
你会的和面试中你能讲清楚完全是两码事。不是为了背知识点出去吹牛逼,而是要把自己会的梳理好思路,组织好语言。哪怕几个月前才做过的项目,如果没有做项目复盘,突然让你讲,恐怕未必所有细节都能记得清楚。
2.每面完一家一定要复盘
面试完把没表达好的地方再打磨打磨,一些高频问题的答案组织好提纲,尤其是关于项目的。现场的答案通常逻辑都会很混乱,笔者自己面到最后,依然感觉很难把项目说出亮点来,毕竟我前东家是外包公司,很多技术点没机会做得深入。
3.简历不是一成不变的,要及时调整
基本每面一家都建议调整一下细节,应聘岗位不同,简历所呈现的重点也应不同,所以针对投递的职位,简历要做不同程度的优化。比较心仪的岗位需要根据岗位描述有偏向性地单独准备简历。这样通过率才会更高,在面试中也会让你过面试官更容易抓到你与该岗位的契合点。
4.不要把内推想的太神奇,除非你有够硬的关系。
对大部分人而言,内推的作用就是过简历关,其他方面的作用我不太好评估,每个人的资源不一样。你拿Offer了,内推人拿推荐奖金,你面挂了,推荐人也不会怎么样,打铁还需自身硬,当然这只是自己的看法。
5.控制自己的面试节奏,否则可能会非常辛苦。
每个公司的面试节奏不一样,可以提前找HR问清楚,比如阿里就是平均一个岗位要面一个月,而滴滴我当时早晨一面下午二面,2天后就三面了,进度很快。笔者面试中节奏安排基本是错乱的,中间有几天平均每天1.5个电话面,真的很考验体能。建议综合调研一下可以投的岗位,按照【保底】【满意】【挑战】三个档拉开梯度投简历,毕竟你最后只能选一个,都投到一个档次里意义不大。
6.谨慎面对各大招聘软件上的邀约
招聘软件上会有很多人问你要简历,他们并不是真的对你感兴趣,只是群发消息,建议不要随便给简历,很吓人的。笔者自己第一个蚂蚁金服的面试,就是招聘软件里对方说“先看一下简历”,结果转手就给内推了,当时没有经验,完全不知道面的什么部门什么要求,也不知道面试预约了还可以推掉,结果赶鸭子上架第一个面试一面就栽了,面评表上吃了个很难看的差评,很影响心情。
7.面试中对待不同的面试官要有好的心态
不要把人想的太坏,也不要把人想的太好,想让你过的会帮你找亮点,让你有阐述的机会,不想让你过的就会盯着你不会的点一直问,随时等着放大你任何一个漏洞,面试的过程中你会遇到各种各样的人,当成一种阅历,不卑不亢就好。给我印象比较深刻的是政采云的技面官,花名堂主,面试之余给了我很多忠告和指点,受益匪浅。
8.在面试过程中尽量不要话太多
每个面试官喜好不同,有的人希望你不知道的就说不知道,有的人希望听你的思路和推测,我自己在面试中,有的面试官就说“不知道没关系,你可以讲讲思路,或者如果让你来做,你会怎么做”,也有的面试官开场就说“我问的每个点你简单陈述就行,如果我感兴趣就会自己展开问”,在不明确对方偏好的情况下,建议话少点,说的越多漏洞越多,也容易碰到雷区引起反感。
9.简历尽量投给HR和你认识的搞技术的朋友
这样即便最终没有通过,也大概能知道问题出在哪,原则上面评结果是保密的,但是可以拜托对方针对自己的不足点提供一些关键信息,以便明确下一步努力的方向,面试从来都不是一次决定最终结果的事情,一次栽了,再面其他的就行,如果真的非常向往某个公司或岗位,过一两年再来就行了,重点是你要先敢面。如果简历给到猎头,那么当你面对同等资历的竞争者时可能就会被Pass,因为如果招了你,是需要给猎头付费的,如果简历给了不认识的人内推,极有可能后续什么消息都打听不到,干着急。
10.我强烈建议大家去尝试参加面试
定期去了解大厂的技术动向和对于你这个水平的面试者的评定条件,每个厂都不一样,你的学校、专业技术、工作履历、工作年限、项目管理经验等等都可能被作为指标,尤其是像笔者这种半路出家的野路子码农,千万不要用网上那些经验往自己身上套,差别太大了。很多人都会觉得自己“水平差”,感觉自己“啥都不会”,但是自己感觉自己差和面试中被人吊打完全是两种感觉,后者虽然不好受,但能迫使你做出改变,走出舒适区。
11.面试是一场匹配游戏
不是你越牛逼结果就越理想,面试的关键词是【匹配】。大多数面试者都是劣势的一方,请对自己好点,通过了,告诉自己"运气不错,继续努力,要对得起别人的赏识",没过,也没关系,告诉自己"运气不太好,继续努力就好,总有一天会有人赏识"。对面试中暴露出的技能短板要足够重视,但对于结果,真的没必要太较真,有时候公司的想法并没有那么复杂,就是想招个更年轻更便宜的而已。
12.大厂对于大龄程序员是有“把控”的,不管招聘方承不承认。
13.一定要做一个有亮点的程序员
无论是什么,一定得有跟普通应聘者不一样的地方,可能是业务梳理能力,资源协调能力,跨端开发,跨栈开发,或者某个专项的技术玩的很溜都可以,但一定得有,如果还没有,那就开始培养一个。
你近期面试了吗?欢迎在评论区一起讨论,我这里整理的一些大厂面试资料(附答案)可免费提供,添加QQ群:1020139748 备注即可。