2024年安卓最新我的-Android-面试故事---13家面试记录,附面试答案,滴滴安卓面试

尾声

如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

架构篇

《Jetpack全家桶打造全新Google标准架构模式》

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

需要这份系统化学习资料的朋友,可以戳这里获取

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

**一面:**简单聊了下我发现在面试官是做播放器的,native 层的,他们也是想找这方面的,我意识到简历写过了(后来回去又修改了下),简单了下 JNI ,FFmpeg,直播相关的推拉流,面试官明显不太满意,他们想找个专业底层的,最后说你等等。

**二面:**这次是 Java 层的面试官,也是聊了推拉流相关的一些东西,接着让分析 View 绘制过程,当我说道 ViewGroup 可能不会调用 onDraw 时,他问我为什么,我说有个标志控制,然后问我影响这个标志的条件有哪里?额…,好吧,我不太清楚…。

接着说了下他们团队构成,给了些建议和评价,他认为我有点盲目的看源码,很多不知道为什么,如果有个人能站在更高的角度来指导一下我这样会非常有利。这次的评价还可以,也让我自信了一些。

最后说你下午来的真不是时候,我们今天有发布会领导走不开,你先回去,后续如果有需要再联系你,当时还年轻,不知道这是客套话还高高兴兴的回去了呢@@。

**总结:**先说结果吧,结果就是我等了几天实在觉得不对就问了他们HR,他告诉我面试官说想找经验更丰富的孩子,好吧~。这次面试后回去再看源码时我也更仔细了,对那些关键的东西会去看看具体原理,然后最大的收获是边自信了很多,不再惧怕面试了。

4.新华移动传媒(offer)

**一面:**这次是电话面试,先简单卖弄了下自己,接着开始聊项目中中的东西,聊了听过 IM 相关的东西(面试官以前腾讯QQ的),接着聊直播聊视频,聊兴趣,我说想玩音视频相关的时候,他说他们现在有个项目就是搞这个事的,大致又聊了下项目,由于总公司在杭州所以他们需要集中约时间过来面试。

**二面:**面试地点在新华社里面,面试官说需要给我定级,于是从基础开始了,包括 Android 基础和 Java 基础,像几种启动模式的应用场景之内的,然后是源码相关的一些东西,接着是视频相关的东西,最后面试官非常的耿直,直接说给你交个底,如果你喜欢就来吧。很耿直的面试官,点个赞。

**三面:**这次是 HR面试,顺带说一句 HR非常漂亮,加了微信哦,杭州果然产美女啊。聊离职原因啊,说自己优缺点啊,兴趣爱好啊,还有,有女朋友么?我当时想问:“那请问你有男朋友么”,当然这种想法在坐怀不乱的我脑中一闪而过,接下来我可是要报价的了,不能被迷惑呢。聊完薪资明显她感觉我要高了,但是我算了下差不多,就坚持了。

**总结:**这次面试明显不紧张了,说话也非常有调理,都是第一、第二、第三…这样表述的,语速也没以前那么快了,给人感觉更严谨成熟。不足就是谈薪资我没谋划好,没有个计划,这也是很致命的,当时也没意识到。

5.好未来(未收到 offer)

加他们老大一起总共是三面,总体感觉面试过程舒服程度一般。

**一面:**来了两个人,一个兄弟不知道技术怎么样,我聊到 Sophix 的时候他不太清楚,然后就走了,留下了另外一个。这兄弟一直跟我聊项目,问我项目中的功能实现,包括业务实现,我感觉他居然怀疑某些功能不是我做的,对于这点有些哭笑不得,这么大的项目做了两年了,肯定有一些业务细节有些遗忘,比如一个按钮的显示规则这种的,全是业务的,聊了很久。

**二面:**这兄弟是做后台的,先是查了我学校排名(我不小心看到了他电脑屏幕),然后问我 CSDN 的博客都是你原创的么,我说写了原创肯定就是原创啊,老被人怀疑的感觉非常不爽。接着是些不痛不痒的 Java 基础,然后开始聊数据库,问我一些 SQL 语句,查询啊、新增字段啊之类的,接着问我 Linux 命令、vim 命令。

**三面:**面试的是项目组老大,技术聊的不多,主要是聊个人的兴趣爱好啊,个人规划,离职原因,然后问了期望薪资。我说了个价,他马上问是税钱还是税后,说实在的我不知道现在行情,不知道要多少合适,但是直觉告诉我要少了。最后就问什么时候入职了,我说一个月后,他就没说什么了。

**总结:**这次面试虽然技术上没得到什么帮助和指点,但是从没得到 offer 来看原因很可能是入职时间说的太长,他们那边明显想找个尽快入职的,还有价格不能要太低,这样反而不好。

6.支付宝校园生活(未收到 offer)

接到面试电话有点意外,毕竟是支付宝相关的业务,然后就开始有点点忐忑了~,不过还好,我早已不是一二面时那个羞涩的少年了。

**一面:**这是一个发际线比较高的大哥,一看就比较有逼格那种,不如意料,这大哥知道的很多,而且不浅,我们聊的很随意,一般是我说道哪个知识点然后他就开始延伸,比如我说用了热修复,他就问热修复原理,我大致说了,然后继续深问,直到我扛不住~。当然性能优化这种必问的也是不少的,还有 okhttp 框架流程、快排描述、Acticity 生命周期,包括周期这间的区别,叫从多方面考虑、Http等等。我感觉经常 get 不到他的点 。。。

**总结:**这次问的问题我确实不怎么吃得住,深入一点可以,再深入一点可能就有点不行了,平时应该往更深的地方思考,就好比 Activity 生命周期大家都知道,但是为什么这么设计,这么设计的好处可能就不是都去思考过的了。

7.汽车之家(offer)

经过前六次的战役,现在的我面试的时候基本可以做到比较淡定了,由于不紧张,思路也慢慢变的清晰,反应也恢复到了平时的状态。

**笔试:**汽车之家是必须笔试的,题目和两年前大同小异(我刚来北京的时候就去面过~),都是些 Java 基础和 Android 基础,HashMap 啊,String 之类的。

**一面:**一个30岁左右的男子,面带微笑,看着非常的稳重。我自我介绍完了后开始聊我以前的项目,包括 JSBridge 的一些细节、热修复的原理、原图加载原理、项目中的性能优化等等,然后介绍了他们的项目,一个小时下来非常愉快,由于马上12点了于是他给我留了电话,叫我一点半打电话给他然后安排二面。

**二面:**二面我记得是移动端的老大,问了些 Java 基础、Http、项目中都做了些什么、为什么土木转计算机、离职原因等等。

**三面:**面我的人看着应该有40多,一脸祥和,一看就是久经沙场的老将,场据说是项目老大,问了我的职业规划、对框架的理解、怎么搭建一个高解耦的直播框架(解耦各种第三方sdk)。

**四面:**问了些生活上工作上的琐事,当然最重要的是砍价,汽车之家工资一般吧,但是福利非常不错,工作也轻松,没有加班风气。

**总结:**到现在我发现只要一面表现要了后面的面试就容易了些,但是还是不要掉以轻心,

老大不喜欢的话你直接领导再想要也没用,到此我已经体会到了平常心的好处,让人能从容的交流,这样才能尽可能多的展现自己。

8.蚂蜂窝(未收到 offer)

这家公司是做旅游攻略起家的,我个人非常喜欢户外,所以果断就投递了,这家公司总监非常有意思,后面会说到。

**笔试:**这家公司的笔试题一定要认真做,后面面试会和你聊的,大部分是 Java 基础和 Android 基础,值得一提有一个小算法题,是给出了算法条件和结果,让你写这个算法。大致是这样的:有一个数组 array1 = [x2,x3,x11,x12,x14,x6,x7,x8,x4,x5],array2=[x4,x6,x3,x11],结果:[x5,x7,x8,x2,x12,x14],大概是这样的。

**一面:**先是聊面试题,聊了很久。然后开始聊自定义 View、View 绘制、事件分发等等,面试官挺擅长 View 绘制和事件分发,我们从理论聊到了实践,从实践聊会理论,然后分析一些系统控件的实现,我就慢慢想,他也不急,就一直等着我。最后请教了他的学习方法,我发现他对问题非常好奇,一旦有疑问就会刨根究底把这个东西完全吃透,这也是非常值得学习的地方。

**二面:**先是性能优化、键盘冲突的处理、截取照片中部分图像的方法原理、项目中负责哪些东西等等,想截照片那个我确实不知道,但是我分析了下,发现好像确实是我说的,无非就是很多像素,然后从数组中取出相应的像素重新生成一张 Bitmap。

**三面:**这次是技术总监,由于太晚了,简单聊了下给我留了一个题让我回去做,做完和他微信视频聊天辩驳,最后给我送了一份饭来让吃了再走吧~,好吧这个题其实是一个概率论的题,他要求弄出理论计算和 Python 实验两种。

结果就是经过几次视频我的答案也不是他想要的,他也提示了我,但是我始终觉得我的有道理,所以最后就不了了之。

**总结:**这次面试我又发现一个现象,东西没做过或者不会其实还好,如果你得分析出来结果或者大致原理,那么面试官会非常喜欢,就好比二面的那个截图,这个方法对我后面的面试帮助很大,当然如果想要 offer 还是不要太倔强了,顺着总监一点应该还有点机会的,不过至今我任然坚持我看法@@

9.豆果美食(offer)

说实话我是豆果的忠实用户,所以就过段投递了,豆果氛围非常好,领导也很 Nice,当然人家用户量也是好几千万。

**笔试:**没有算法,都是些常规的 Android 基础和 Java 基础,没什么好说的。

**一面:**一个很年轻的小伙,但是实力很强的,他整个面试过程完全没按照我简历来。我们聊得最多的是 Framework 的东西,他比较擅长这个。比如 Handler原理、Activity 启动过程、进程启动过程、Android 系统启动过程、Java 虚拟机与 Dalvik 区别、Dalvik 与 Art 区别等等,我发现我们两个很像,学的东西大同小异,所以聊得很来,后来我们加了好友。

**二面:**简单自我介绍了下,然后聊我做的东西,这次也聊了键盘跳跃的处理、原图处理、性能优化等。

**三面:**一上来问了我很多基础的,View 绘制流程,onMeasure 与 onLayout 的几个参数的分别是干嘛的,接下来都是聊职业规划个人兴趣还爱之类的了。

**四面:**这次是 Hr,简单了解了下我的情况后开始谈薪资,说实话待遇我不是很满意,算下来年薪和我现在差不多,不过豆果还是非常有潜力的!

**总结:**这次面试自我表现还行,该说的都说了,但是薪资谈的一般,给自己一个薪资计划的,不然后面会有很多不愉快的事。

10.阿里高德事业部(未收到 offer)

这次面试其实我有点虚,都有点犹豫去不去的,但是我知道不去我肯定会后悔,所以硬着头皮就冲过去了,事实证明这次面试对我帮助是最大的,挺佩服面试官的,感觉比我还清楚自己的优缺点,只是可惜最后还是未尝所愿。

**一面:**这次面试的内容非常的多,我只能记得大致了,显示聊我项目中做的东西,聊到 IM 的时候问到了数据库,问我怎么封装的,我说没怎么封装,他说那你现在想一下,我想了很久只能想到反射,但是问题是字段怎么映射呢,后来他提醒了一种方式,用注解,好吧…,聊到 leakCanary 我大致说了原理,当我说道退出 Activity 时调用 dump 的时候,他问了句,那每次都会调用 dump吗,dump很耗时的,它用什么办法在没内存泄漏的不 dump。

问网上很多人说Handler 内存泄漏,为什么会泄漏,怎么引用的。还有很多小问题,像多线程同步的、binder 通信的。到最后他跟我说了下来这边我将会负责什么,然后问我感不感兴趣,说实话满感兴趣的,让后他觉得我优点就是学习能力还行,缺点就是很多东西没串起来,举一反三还达不到。这关就这样过了。

**二面:**据说是他的领导,领导应该对我的简历不太满意,简历聊了下,问了下 http 、对高德了解多少、做地图的关键点是什么。然后说你学习能力还行,但不是科班的,经验不是很多,应该也能做,但是可能会慢一点点,然后就没了。

**总结:**通过这次面试我又自信了很多,相信自己还是可以的,至少慢慢努力还是有用的,毕竟这是高德啊,也为后面去其他大一点的公司面试打下了基础。然后我还学会了在面试中思考不会的东西,经常能在不会的情况下找到一些线索。一面的面试过最后也加了我微信,告诉了下我面试没通过的原因,并表示有机会再叫我,这点让我挺感动的!很少有面试过能做到这样吧。

11.京东商城(offer)

京东总部有点远在亦庄那边,一早就出门了,下午还有其他的面试,导致一天都没吃饭,面试也非常考体力啊。

不算Hr总共是四面,前三面主要主要是聊我项目中做的东西和他们项目是做什么的,也会问些 Java 基础和 Android 基础,第四面是定级,会跟你聊你学的最深的一块儿,其中有个哥们问了个小算法,10点半开始进京东大厦,面完差不多是1点。

12.美团(未收到 offer)

美团对基础非常看重,每一面都有一个小算法题,一二面基本都是聊基础,但是说基础的同时也不缺深度,感觉非常不错。

一面: String相关的问了很多、HashMap 的原理、Java 的引用类型、Activity 启动模式、Activity 生命在各种情况下的生命周期、二分查找、单例模式、Handler 机制、系统中用 Handler 的地方等等等等,看着都是些常见的,但是问的非常的细,很多都是平时容易忽略的东西。面试官人很好,一直告诉我不要紧张,因为我一直在喝水,我其实是非常饿,最后让等二面的时候再次嘱咐我不要紧张,二面尽量往你会的方向引导,真的很感谢那个面试官。

**二面:**二面聊的比较多的是 Java 相关的,基础是一方面,然后聊到热修复的时候随便问到了我 类加载器与Java 虚拟机的双亲委托模型,也是有一个算法,写完后让我继续优化这个算法,我是真优化不动了,面试官一看就是很耿直的人,告诉我老大今天开会让我回去等电话,这次我觉得应该不是委婉的拒绝。

**三面:**等了很久,终于等到了 Hr 的电话安排我去三面,三面的面试过那天刚好在校招,于是我就被带到校招的地方去了,我觉得在面试过看到我简历那一刻开始就没打算要我了,整个过程非常短,基本没聊技术,自我介绍环节都省略了,简单聊了下然后让我做一个算法题,我写完后正犹豫,他有收卷的意思,然后就说让回去等,我心里知道肯定没戏了…

13陌陌科技(offer)

陌陌的产品我非常喜欢,我以前也是做社交类的东西,所以感觉蛮适合我的,里面几个面试官也很 nice.

**一面:**面试官是优化组的组长,跟我聊很多优化的东西,我确实不是专业的,可以说面的一塌糊涂,我感觉没戏了,我一想反正来了,于是就请教了他很多问题,主要是架构的,他很耐心的给我讲了陌陌的组件化,最后说去叫迭代组的来面我吧。

**二面:**先是 Java 基础相关的问题,那后聊了我项目中的一些东西,IM 啊、图片加载啊之类的,很多都记不清了。

**三面:**面试官是 Android 组的老大,我来聊了很多 jni 相关的东西,我记得他问了一个问题:“我看你项目中用了 GIF图是吧,GIF图怎么解析呢?”我不知道,于是我用视频那套分析了下,然后他表示认可,还有好多其实都不知道,但是高德的面试过教会了我多分析多联想多能举一反三。

**四面:**这次是hr面试,谈了离职原因,期望薪资,我以为就通过了呢,没想到还有一面,叫我回去等电话安排总监给面试。

**五面:**这是一个看着很年轻的技术总监,但技术应该很不错的,我们聊了很多数据库方便的定西,IM 与 视频的也不少,大概聊了半个小时吧,最后也没给答复,让回去等。

**总结:**这是这次跳槽的最后一次面试,对自己表现还是挺满意的,其实一面真的挺煎熬的,我确实很多不知道,一面面试官是专业性能优化的,我确实还查了一点,聊架构我也一塌糊涂,但是我当时没气馁,虽然暴露的体无完肤我还是坚持把我知道的说了,不知道的问了,也没表现出怯场。

需要掌握的技能点

列下我在面试遇到比较多的。

  • 基本算法,其实基本没遇到和难的算法,都是给定一个实际场景然后写个小算法,比如叫把 String 的 IP 地址转成 int 值,IP 是 192.168.0.1 这种,对应 int 值是 19216801。

  • Java 中常用类的源码,如 常用的数据结构(HashMap问的比较多)、String、StringBuilder
    等等,可以看看 《Thinking in Java 》

  • Java 虚拟机、Art、Dalvik 他们的区别。

  • 性能优化,这是个很大的点,但是基本是必问的。

  • Java GC 原理、GC Root 的概念、Java 引用类型。

  • Android 的基础知识,强烈建议理解性的阅读《Android 艺术探讨》,很多问题的答案都可以在这本书上找到,像 View 绘制流程、事件分发流程、Handler 机制、IntentService、HandlerThread 这些可以边看边跟源码边做笔记。

  • 多线程中,线程安全。

  • 线程池,需要理解里面各种参数的含义,适用场景。

  • 进程间通信、线程间通信。

尾声

评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。

有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。

一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。

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

需要这份系统化学习资料的朋友,可以戳这里获取

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

是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值