一年Android工作经验,一举拿下百度、网易、美团、小米、快手等Offer面经

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

01作业盒子

时间有点久,很多问题记得不太清,大概有以下内容。

一面
  • Android一些优化方案
  • 什么是过渡绘制,如何防止过渡绘制
  • 事件分发机制
  • ListView的优化
  • Binder机制
  • 在多进程中,Application会启动几次
  • 单例模式,双锁原理,volatile原理,静态内部类实现单例的原理。
二面

二面面试官是leader?反正应该不是做Android的,Android的相关知识问的也不多,大多是项目上的东西。

  • Java多线程,synchronized
  • 聊项目,都具体做了什么。
  • Binder机制
三面

应该是leader吧,主要了解一些个人的情况,以及一些项目,最后问了期望的薪资,然后当场就给了offer。

毕竟1年多没有面试了,第一场面试还是给我了很大的自信,也知道现在自己大概能要多少工资是合适的,所以同学们准备跳槽的时候,最好先面几家小公司,盒子还是一个很不错的公司,整体的办公环境挺好的,现在也处于盈利状态,在教育类的app中也排的上名次。

02快手

快手就在五道口地铁站出口不远地方,能看到很显眼的LOGO,看上去很霸气的样子,但是当我进入到快手前台的时候,连一个标示符都没有, 一度以为自己走进了假快手,好吧,我是来面试,这些都不重要,接下来接待的人员把我领进了一个小屋里,等待面试的开始。

一面

面试官是一个很fashion的人,是从小米核心部门过来的,是Android小组的领导。

  • 问了关于数据库的一些问题,SQLite的相关操作,没办法,我在华为唯一一个做的和java相关的项目,但是不太擅长数据库。
  • 网络相关的问题,网络的五层模型,又问了TCP和UDP,还有Android相关的长连接,这里问的比较深。
  • 开始Android先关的知识,Handler机制,Acticity的生命周期以及四种启动模式,各自特点,Service的两种启动模式生命周期,如果同时使用两种启动

第一面这就算过关了等待二面。

二面
  • 问了项目相关的问题,这部分根据自己的项目经验,由于大家的经验都不同,这里我就不详细说了。
  • 设定一个场景,怎么去实现相应的功能,因为快手这个部门想做社交,因此这里是问我是如何实现微信的联系人页面(包括与服务端有什么样的交互)
  • 最后也是一个算法,写出所有数组的子序列

二面面试官是这个组的leader,跟我讲了现在这个组的发展情况和快手现在的情况,由于快手成长很快,所以不能仅仅依靠一个APP,还需要在其他方面进行一些尝试,而这个组的任务就是在一些方面做一些尝试,大概就是这个样子。

二面也顺利通过,接下来就是HR面了,这时候正好是12点,他们要去吃饭,不过快手是提供午餐和晚餐的,第一个面试官带给我一份饭,还不错,后来HR跟我说,现在只是过渡时期,后面午餐和晚餐会改成自助餐的形式。

三面

HR上来很亲切,问了我一些面试的情况,难不难之类的,然后又聊了聊我大学和研究生情况,我只想说我“too simple , too naive “,大概了解我后,只跟我聊我的不足,以此来压低我期望的薪水。说了一下薪资期望,加了微信,让我回去等待,说发offer大概是2周时间,因为需要走各种审批流程,让我不要着急。

快手是一个很年轻的公司,技术还是需要一定的积累,希望不要像小咖秀一样昙花一现。

03美团外卖

一面

简历上写的项目问了一遍,然后开始问知识点。

  • volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,Last-Modify的作用等。
  • fragment的生命周期
  • service一些知识
  • 事件分发机制
  • Binder实现机制,Stub类中asInterface函数作用,BnBinder和BpBinder区别。
  • gradle中buildToolsVersion和TargetSdkVersion的区别是什么
  • 手机适配一些方案
  • hashmap的实现原理
  • 静态方法是否能被重写

这些大概聊了1个半小时,开始的时候还有些紧张,慢慢聊开了,就好多了,面试官的语速有点快,老是需要面试官重复一遍,我也不经意间语速也变快了,不过能看出来面试官还是很厉害的。

二面
  • 3次握手和4次挥手的原因,以及为什么需要这样做。
  • 数据结构,搜索二叉树的一些特性,平衡二叉树。
  • hashmap是如何解决hash冲突的
  • 进程与线程区别
  • 写了一个二分查找和单例模式
  • http中的同步和异步
  • 聊了一些项目上做的东西,问了问职业规划

由于二面面试官不是做Android,本来面试我的人临时开会去了,所以这一轮面试没怎么问android相关知识,不过二面面试官一直是微笑,所以这一轮很轻松,更像是一起讨论问题。
面试完已经是下午4:30了,由于面试当天是星期五,而周五美团的会议比较多,所以等了会,二面面试官说三面面试官在开会,面试另约时间,我还是说这次一次面试完吧,这一等就等了2个半小时,期间hr跟我说三面面试官是个大牛。

三面
  • 我认为Android做的优秀的几个地方,然后又根据我说的问了问比较深入问题。
  • Android是如何进行资源管理的。
  • java比较重要的几个特性
  • 网络五层结构,每一层协议,由于我网络不是很好,还问了一些其他的问题(例如MAC地址和ip地址的区别等)。
  • 为什么离开原来公司,以及职业规划,然后因为面试完大概就晚上8点了,就先让我回去,下周让hr跟我联系,我想这是应该通过面试了吧。

美团技术还是很厉害的,从面试官的水平就可以看出来,尤其是外卖核心部门,办公环境是不错,但是感觉就是有点乱,不知道是不是因为今天面试的人很多,基本上一直有很多人来回走动,有一些嘈杂。

##04小米TV

一面

可能是因为一面是我的学长,所以没有问我很多技术的问题,聊了聊我做的向项目,然后聊了一会OpenGL、GLSurfaceView和Shader,主要聊了OpenGL绘制方法,还有一些Binder相关知识,感觉非常轻松,还想着如果面试都这么轻松就好了,然后就直接下一面了。

二面

二面面试官看上去很斯文,但是还是一个对技术精益求精的人,问的问题都很细,具体问题的顺序挤不太清楚了,大概问了下面几个问题。

  • 单例,快排,回型打印二维数组
  • 写一个死锁,死锁是怎样产生的,怎样防止死锁
  • Acticity启动模式有几种,分别代表什么意思
  • 聊项目都做了些什么
三面

leader是一个很有亲和力的人,上来就跟我说前面技术已经问的差不多了,这里就不询问我详细的技术了,就出了一道算法题,需要说出时间和空间复杂度,以及有没有更优解。

  • 字符串反转,讨论复杂度。
  • 聊经历和项目
HR面

HR面问问题都是一个模板刻出来,都是例行公事的询问,bulabula……然后就算完成面试。

从整体来说,TV更需要一个测试开发,但是我还是想做开发,暂时不想做测试,所以我估计TV是不会给我offer了,虽然说了过几天会正式给我发offer,最后也没法。

小米TV在一个独立的小院子里,环境还是不错的,整体的发展也可以,毕竟是小米生态中重要的一个部分。

05网易

网易大楼是在百度大楼的旁边,感觉还是不错的,来的稍微有点早,在前台等了20分钟左右的样子,面试官就带我去面试了。

笔试

具体的内容记不太清楚了,大概有以下几个类型,都还是比较基本的。
选择题、程序输出题、四道算法、简答

  • 给定一个int型 n,输出1~n的字符串例如 n = 4 输出“1 2 3 4”
  • 输出所有的笛卡尔积组合
  • 单例模式
  • 最长上升子序列

都不是很难,基本上都能作出来。

一面

一面面试官是资深的Android开发工程师,的确水平很高。所有的问题问的都很详细,很多细节,面试官都能清晰的说出来,的确水平很高。

属于循序渐进的问题方式,从简单的知识入手,逐渐深入,直到你回答不出来而且问的都是你自认为很擅长的知识点,可见面试官的功力有多深厚,深深的佩服。

我下面大概说一些问题,但是到最后总能问到很深入的地方。

  • 对刚才做的题,一些错的地方做了讨论,主要是类的加载和内部类方面的知识,尤其一些深入到JVM层的知识的确自己有一些不足,不过大部分都还是能答出来。
  • 双亲委托机制,类的五个加载过程。
  • java类加载器的加载流程。
  • Binder机制,从java到framework再到kenral层,面试官问的都很详细,遇到不会的也都会跟我解释。
  • Serializable和Parcelable的区别。
  • View的绘制流程,详细到framework代码,讨论到不确定的地方,立马打开电脑和我一起看源码。
  • 事件分发机制。
  • 常用设计模式,使用静态内部类实现单例的原理是什么。
  • 线程同步,CopyOnWriteArrayList怎样实现。
  • Volley源码,EventBus源码。

面试完后就到12点了,讨论了1个半小时,跟我说我这关过了基本上就没问题了,面试官还是一个很幽默的人,带我去网易食堂吃了顿饭,的确这里的饭特别好吃,回来后,休息了一会,就开始Leader面了

二面

Leader面,我还以为至少要3轮技术面呢,没想到直接就到leader面试了,后来才知道第一轮面试的结果还是很重要的,一面面试官是非常资深的工程师,只要通过一面了基本就没问题了。

  • 项目介绍,聊一些项目上的问题
  • 下拉listview的实现,需要注意的地方和优化的地方(不是lsitview的优化,是下拉的优化)。
  • Android上一些优化方案
  • 介绍了一下现在做的项目,大体说明了现在所用到的技术。

总体感觉网易的氛围还是非常好的,技术实力非常雄厚,leader技术能力也很强,并且一面面试官告诉我,leader有时候还会自己写一些代码,一般到了leader很少有写代码的了。

hr面

一样的流程,各种谈,说面试官对我评价非常高,希望我能来之类的话,然后就算面试结束了。

06小米

这是第二次面试消息,这次是小米的核心部门,MUI部门,主要做阅读类app,听说发展还是很不错的,为什么要面试两次小米呢,因为之前内推过小米,一周都没有消息,我就在网上投了简历,等面试了小米TV,这边又叫我去面试。到了小米前台,前台没人,我问保安,保安让我打HR电话,结果HR也不接电话,就这样等了半个多小时,HR终于回过来电话,打电话让面试官把我接上去了,一面面试官还以为我不来了。

一面
  • 聊项目,GLSufaceView,OpengGL,Shader相关一些知识,在项目中做的优化
  • gc是根据什么来回收一个对象的,引用计数和gc root分别怎么实现。
  • 怎样会产生内存泄露,举一个具体的例子,使用什么检查内存泄露
  • 自定义View的绘制流程
  • 给出二叉树和一个值,找出所有和为这个值的路径;{1,3}{3,6}{3,4}{6,8}区间去重,最少去掉几个集 合,可以让这个集合没有交集。
二面
  • 什么是ANR,Activity、BroadcastReceiver、Service对ANR时间限制分别是多少,怎么处理ANR,除了系统生成trace.txt文件,怎么在程序中检测ANR。写出伪代码。
  • 编解码一些知识,I帧,B帧,P帧区别。
  • Android一些优化方案。
  • 算法 n/m,怎么判断得数是无限循环小数。
三面

三面面试官看上去很年轻,人也特别幽默,不过技术还是没得说。

  • 介绍项目。
  • 事件分发机制。
  • 算法,将一个字符串转换成int型数字,考虑 错误输入,溢出,正负值等一些条件,考细心。
  • 给出一个搜索二叉树,输出一个排序好的双向链表。
四面

本来以为是HR面,结果不是,应该leader面,上来就说技术就不面了,介绍自己的项目中觉得做的最好的几个部分,大概说了下,接下来就是问了为什么离开原来公司,为什么选择小米 bulabula……面完之后,说今天太晚了(晚上快8点了),hr已经走了,下周让hr跟你电话联系吧,把我送到楼下。

第二周小米就发来了面试通过的消息,具体谈了一些薪资待遇问题。

##07百度

一面

一面面试官的思维非常跳跃,经常我说到一半的问题,突然询问其他相关问题,然后回答完再继续之前的说下去,有些许不适应这个节奏。顺序可能不太对。

  • 类的加载过程,Person person = new Person();为例进行说明。
  • JVM相关知识,GC机制。
  • 类的加载器,双亲机制,Android的类加载器。
  • Android中进程的级别,以及各自的区别。
  • 插件化原理。
  • 集合框架,list,map,set都有哪些具体的实现类,区别都是什么。
  • concurrentHashmap原理,原子类。
  • volatile原理。
  • Binder机制。
  • View的绘制流程,事件传递机制,Handler异步消息机制。
  • Interger中的128(-128~127),这里考的是常量池的概念,这个没回答上来。
  • 线程池的相关知识。
  • Handler机制,HandlerThread实现等等。
  • LRUCache算法是怎样实现的。

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。这也是我这些年来养成的习惯,一定要学会把好的东西,归纳整理,然后系统的消化吸收,这样才能极大的提高学习效率和成长进阶。碎片、零散化的东西,我觉得最没有价值的。就好比你给我一张扑克牌,我只会觉得它是一张废纸,但如果你给我一副扑克牌,它便有了它的价值。这和我们收集资料就要收集那些系统化的,是一个道理。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-3JtleZe5-1713291769909)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值