腾讯安卓开发面试,一个五年Android开发者百度,20道高频面试题(含答案)

首先过来第一位面试官,看样子应该是 Android 技术 leader,开始问了我一些基础的面试题,比如:View 的事件分发机制,View的绘图,ListView 的实现原理(这个应该是几年前面试的时候经常问题,没想到现在也能遇见)。聊了好一会,然后他拿出他们的客户端给我演示了一个页面,说这个界面比较卡顿,让我分析下原因。我看过后,提出了几个有效的检测卡顿的方案,他们的这个界面主要是Listview 的 item 里面包含了一个 viewpager,然后 viewpager 的 item 里面有一个大view, 上面有N 多图片 + 动画效果,因此实现起来很麻烦,最后导致性能卡顿(不得不说产品同学,你的想象力真丰富啊,有没有考虑过研发同学的心情)。然后,他感觉得到了共鸣,因此接下来说话就比较放松了,他说和我年龄差不多,感觉我还是很厉害的(我不禁惶恐不安,我感觉还行,但是应该不是他说的很厉害,可能只是工作时间长了,该积累下来的东西大部分都有了),互留了微信,方便以后的交流(事实是没有啥交流的,只是当你面试通过后,可以有一个拉你入伙的渠道,嘿嘿,不晓得对不)。

第二个进来的面试官长得挺帅气的,手上戴着戒指(之所以提到这个,是因为在我在我的印象中这个最亮眼,很多次在和他交流的过程中,我都比较紧张,我就盯着这块看用来放松,说真的如果看着对方的眼睛,双方可能都不会自在,当然除非你很有自信的时候是可以的)。开始简单问了下工作经历,然后就开始聊技术,第一个就是问我知道不知道 二分法,我当时楞了一下,猛然间反应不过来,最后专门确认问了下是不是 二分查找。然后我说在一个数组里面每次查找的时候从中间点开始对比,大于就右边找,小于就左边找,顺带提了一句这要在一个顺序的数组里面。然后面试官就说,二分查找还得每次先排一次序?我当时说是的,结果就感觉很2,可能没理解清楚面试官表达的是什么或者说我的表达有问题,其实我想说最开始的数组就是一个有序数组,但是面试官可能误解了我的意思,以为每次查到后,都要先排一次序(只能说悲催啊)。

这个问题过了后就再问了我一个问题:『你来说说 Java 的内存管理。』这个问题在一两年前上就栽过跟头,所以当时专门看过相关文章。但是当我回答的时候,由于长时间没怎么看过了,记忆有点松动,大体的说出来了,但是不够准确(回去后就好好补充了下,在之后的面试过程中遇到的概率还是非常大的,尤其在第二面的时候)。然后他问我要多少薪资,我当时说 XX,然后他就问我是不是可以低一些呢?我开始说可以低一点,但是当他问低多少的时候,我心想上面两个公司的 offer 基本感觉到手了,这个可以适当的要高点,能给就来,给不了那就算了(我事后想想才明白,这种2B 的想法绝对不能有,要时刻保持低调,把握住任何一次机会)。最后他说,我得对得起兄弟们(怎么说呢?估计是刚回答的时候不是特别的满意,还有感觉我要的太高了),你这个薪资我没法跟上面谈。然后可想而知,当然肯定没有结果了。

因此奉劝各位,要时刻保持低调,谦虚谨慎,莫要装B,否则肯定遭雷劈,我这就是一个活生生的例子。

###第二轮B 类公司面试:

面试有很多,说起来可能会长篇大论,以下就总结性的说说,不再说明具体细节,只说我们之后在面试的时候应该注意的地方,以及他们对应聘者的要求。

#####映客 && 蘑菇街

映客直播在望京soho,很高大上的地方,t1,t2,t3分别对应从低到高的大楼。到公司后,感觉还可以,第一个面我的人是一个技术,基本就问到一些Android 的面试题,没有任何悬念就过了,第二面的时候,感觉那个人还是比较随和的,问了 Java 内存管理的东西,以及一些其他的问题,最后还都聊得挺开心,第三面的时候直接就是 HR谈薪资,很容易就过了。

在望京 soho 还去过 蘑菇街,里面的人技术比较好,我当时过去的时候已经6点了。那个面试官就跟我聊人生理想,提到一些 Android系统原理性的东西,但是感觉回答的不是很好。面试官感觉还是很不错的,然后给我说你以后要多看看例如 handler 原理,windowManager 的东西,并且从源码上去分析,网络上的理论知识还是要结合实践的,真是受教了。这部分我有点弱,虽然知道原理,但是看过源码的东西还是很少的,以后需要注重补充。他说他才是高级,我要应聘的这个 架构师肯定是不行的,问我是否愿意做其他的,我当然表示愿意了,现在要综合提升能力,才能往更高层走。

最后的最后,他很搞笑的跟我说:『我这人真不骗人』。我还纳闷啥意思,最后他说:『今天已经很晚了,第二轮的面试官不在,我明天给你向上反馈下(从之后的一个同事的口中才明白,一般说第二轮的面试官不在,基本就是说你没戏,很委婉的一种说法而已)』。

结束后我看了一下表,我晕,一面就面试我了一个半小时,真特么无语了。不过收获还是很大的,知道自己的不足后,就知道需要补充哪些东西了。

#####乐视

去了一趟姚家园的乐视,只能说看着挺风光的,但是进去后,特么的真虐人。

电梯分区,还只能在一边的乘坐,很不赶巧的是我去的时间刚好是10点,对于他们公司来说这就是高峰期,电梯根本排不上队,而且乱糟糟的(之前在X游的时候,大家都是排队的,这边没有,可能地方太小了,排不开吧)。电梯上不去了,看来只能跟一些人爬楼梯,一直爬到9层,感觉都喘不过气了。

上去后一个很美的 HR(长腿姐)带我找面试官,然后表示没有会议室,原来的会议室都变成工位了,所以让我先在一个小角落呆着(保洁阿姨的专属位置),过了好一会面试官姗姗来迟,也是一些非常基础性的东西,最主要的是他们提到了推送,怎么实现,已经存活情况说了一些。

第二个面试官也是特么来得晚,等了 N 久,闲的无聊就和保洁阿姨聊天,顺带看看他们的办公环境,只能说真心挤得慌。第二位面试官来了后就看看我的经历,因为第一轮的技术面都过了,因此简单聊了下,就说说他们的发展前景,要做海外产品。听我的兴致勃勃,很开心,然后让我等会。

他们基本都去吃饭了,留下了我在那里干等,然后来了一个HR 的小妹妹,跟我谈薪资以及经历,貌似对我一两年换工作有很大意见,哥就好好给她普及了一番互联网界的基础知识。没想到就在快要搞定的时候,这个小妹妹的老大过来了,然后就看见一个身材超棒,腿很长的漂亮姐姐 HR(长腿姐),坐在我的对面(小妹妹示意我这是她的老大)。瞬间不爽了,都马上谈完了,结果换人再来,真无语了。只能将刚刚的辉煌时刻再来装 B一次,然后谈薪资神马的,给的也不是很多,我要 XX,她说那么多,只能给我薪资范围最低的一个档次。好吧,就接着吧,然后非要我先填写一份背景调查表,如果没有问题后,才给我发 offer,我看到美女拿着那份很大的 纸张,瞬间无语了。

我当时就不怎么开心,然后长腿姐毕竟老练的很问到:『说你是不是有事?』。我说是的,待会1点还有其他地方的面试,然后她说:『那你先回去吧,这个表格发你邮箱,你写好后发给我。』然后长腿姐就送我出去,我又特么的一路爬楼梯下去(9层啊),电梯等了 N 久都下不去。

###接下来说说几个有意思的公司

#####新浪

新浪位于理想国际大厦,记得几年前去新浪面试的时候,傻傻的都没准备就去了,结果第一关就挂了。

这次是下午去,外面还飘着毛毛细雨。去了后竟然特么的让我做面试题,哥已经不做面试题很多年。但是想起了之前的经历,还是老老实实写写,据我估计面试的哥们应该会问上面的东西。还好这次做了万全的准备,刷了 N 多面试题,补充了基础的数据结构理论知识。写起来如行云流水,嗖嗖嗖的没几分钟就完了。

第一个面试的哥们看看卷子,没啥意见,然后问最后一道纠错编程题有没有什么问题,我虽然指出了几个错误,但是感觉他还不是特别满意。因此我仔细看了下,原来是一个静态变量引用了 Activity 的上下文,然后指出,他再问了一些偏底层的东西以及性能优化的地方,轻轻松松就过了。

等到第二面的时候,这个人一看就是技术大牛,问了很多 Java 层面的东西,多态,抽象类,多线程,内存管理等等。我感觉回答的不是太好,多态那有点问题,其他的应该还可以。

然后就进入了第三面,第三面的面试官应该是部门负责人,问了工作经历上的事情以及兴趣爱好,之后的发展方向,想做什么层面的。最后很不幸的是在等待第四面的时候,最开始给我题的美眉告诉我时间很晚了,让我先回去,之后等消息。

至少这次来比第一次高级了很多,不至于第一轮就被刷下去。最后分析了下原因,还是薪资要的太高了,尤其是这类公司。

#####滴滴

滴滴位于西二旗,应该有两个办公地点,其实我一直很想去滴滴,福利待遇很不错。一年前去过一次,很可惜在第一轮的时候,因为在某些适配方面回答的不是太好,因此失去了机会。

这次已经准备很多了,进来后还是在去年的位置上坐下等面试官。说实话感觉滴滴成长的很快,办公环境都变的更漂亮了,哈哈哈。

这个面试官一看就是一个技术宅,开始对我各种炮轰。面试题一个接一个的,在我连续回答十来个题后,看见他还在问,记得在提及到 volatile 的作用的时候,我就开始不爽了,这个东西记得之前在源码里面见过,但是具体的一时说不上来,看着他那样子,埋头在纸上给我出题,我就不怎么配合了。面试了那么多家,就你问了 N 多问题,还有完没完了(其实这也算是抗压的一种面试方式)?我直接说不知道,然后他再问了几个基础性的东西,我想都不想直接说不知道,他貌似已经看出来我已经很不爽了,然后说,那你说说你项目中有没有比较 NB 或者比较有亮点的地方。我的回答直接是:没有。然后他也就不怎么问了,说那先这样。我说:好,就这样,我先走了。 然后潇洒的离开滴滴。

现在想想真特么的很2B,应该低调低调再低调。也可能是那天下午太累了,上午面试了两家,而且已经拿到两家的 offer 了,还都不错,在这特么憋屈,才表现的如此差劲。其实对于问题,知道的话就好好说,不知道的话,可以说说思路和想法,然后说说以后会怎么做,利用迂回包抄策略去应答,准没错。至少给面试官知道你还是可以动脑子的人。

在此我真心后悔当时的冲动,向滴滴那位面试官表示歉意。其实不用那样的,我们只需在面试的时候尽力表现自我就可以,以后切莫带着情绪去看待或者回答问题。

对于人生中的很多问题也是这样的,这次栽倒坑里去了(用我老大的话来说,你不在这里踩坑,总有一天也会在另外一个地方踩到,到时候的损失就不可估计,趁着年轻多多历练自己),总结之后才能更近一步。

记得在我离开的时候老大给我最后劝告就是:『你要时刻反思自己此刻是不是已经被别人洗脑了。』

还有面试以及技术方面的大量学习视频,快来获取学习资料提升自己去挑战一下BAT面试难关吧!

点击:

Android 学习,面试文档,视频收集大整理

###第三轮:

#####1.百度

百度位于海淀区上地十街附近,有很多大厦。 我去的是一个做国外工具的部门,去了后,被百度的环境和氛围震惊到了,在一个很大的技术园区,有网易,百度,腾讯公司,对面还有一个大楼正在修建,估计会是另外一个互联网公司的场地。

进入大厦里面后,由于还没来得及吃饭,边吃手里的饼,边浏览下百度的外围办公区。进入百度的大楼后,两个入口都设有刷卡机。

在空闲区等了好一会,然后一个人带我进入大厦。在进去之前,到前台那块面试官输入自己的邮箱账号,然后让我填写其他登记信息,我印象最深的是显示器上边贴着一个纸条,说:请离开的时候在此登记,否则会进入百度的黑名单(意思就这样,具体记不清了)。当时震惊了半天,没想到竟然这个严格。

和面试官进入大楼里面后,只记得的印象是:很整洁,高大。出楼梯后,脚踩着厚厚的地毯,稍微走快点,都感觉很松弛,脚下如踩棉花一样。

为什么有地毯,而不是地板砖————到了夏天很多漂亮的长腿美女穿着高跟鞋踩在地板砖上是一个怎么样的体验呢?噔噔噔……

我在等候区等到第一个面试官,然后我们简单聊了下 Android技术,其中有两点有必要提下:

  • 其中一点是:说说 View 的事件分发机制。然后我就说了好多,从 WindowManager->window->Decorview->子 view。最后我说当所有的 view 都不处理事件,事件会最后会传递到 Activity 的 onTouchEvent 上。然后面试官立刻说:『哈?你这是颠覆我的三观啊?』 然后我意识到可能有问题,但是记得 《Android 艺术开发探索》上确实写过到 Activity,但是不是到 onTouchEvent还真没底。面试官很自信的样子,让我颤抖了。但是随着我的坚信,面试官说:『不行,我不能冤枉你是不!』立刻在手边的 MBP 上看了一下,自言自语感叹道:『还真有啊!』 我顿时无语了。

  • 另外一点是:问我 Service 上能不能弹出对话框。对于这个问题,我印象最深刻了,记得一年前的时候,在另外一个公司就因为这个问题让我尴尬万分,回去后专门对这块进行补充。我的回答是可以的,但是面试官面带差异的表情告诉我这是不行的,Dialog 必须要依附于 Window 才能显示出来。然后我的解释会让面试官郁闷一会:我说这个是可以弹出的,我之前也专门试过,不过他弹出是有条件的。 条件是:

  • 必须在 Manifest 里面注册系统权限

  • 在显示 dialog 的时候必须要加一个 flag.
    我的理由是:系统对话框可以在低电量的时候弹出对话框,我们同样也可以采用该方式来实现。

面试官语塞,然后给我说 Dialog 是必须要依附在 Window 上,Toast 其实也是一个 Window。我听着这些话,就想起以前看过的一篇文章上也确实是这么说的。估计该面试官回去要好好补充下一些知识了哦。 然后该面试官让我不能用 Arraylist,用数组 写一个队列。这块刚好我在之前项目中特意用了一下,写的时候,主要有三个方法: put(), get(),peek(). 然后考虑下队列的特性,一端进入,一端出去。我当时遇到了盲点,没怎么写完,最后给面试官说了下思路,大体是对的。但是关于选择位置那块没怎么想好。不过这不阻碍我进入第二轮。

第二轮面试的时候,面试官带了很多纸张,我瞬间压力山大,知道不太妙。不出所料,这个面试官,从动画实现原理,到 handler 实现原理,一步步深入各种原理,当我感觉回答的不错的时候,然后他就顺着我的问题继续深入。我只能说我尽力了,有些东西,平时开发的时候真心不注意,但是就因为没有留意,所以就没法继续回答他的问题。

面试官把我带出大厦的那一刻,我心情很不好,很可惜没进入百度,之后应该需要准备很多东西。我要说,我还会再来的,哈哈哈! 最后也归还身上的一个牌子到前台后,省的被拉入到黑名单(好吓人的样子)。

以后有时间多看看原理性的东西,最好整理一个自己的博客,写上自己的一些看法和感悟,这样记得最深刻,即使几年后也不会遗忘,只是看看别人总结的东西,真的就不怎么记得住。

关于博客可以使用 Hexo, 我的博客也是如此,可以整理一些自己的东西与心得。

###2.阿里

这次去的是一个阿里的高德部门,在望京 Soho 附近的 首开广场。去了以后首先找厕所,你们知道么?厕所竟然从大厦楼层的的一个角转了一大半圈才找到,回来后进入找不到前台了…… 瞬间无语了。问了好一个美女才回到前台,然后接待我的 HR美女貌似等得不太耐烦了(宝宝心里苦,厕所好远,都找不到回来的路了)。在一个小型会议室等待面试官,看了下布置氛围和环境,感觉太棒了,很多东西都体贴入微。

回顾上次阿里的悲痛遭遇

其实这是我第二次来这边面试了,上一次过来的时候,是刚过完年。提到这里我就苦不堪言,为何如此说呢?当时是2016年2月15日,因为我参加好朋友的婚礼(不得不说,我这个年纪的人都开始结婚了,这次回去有4个好朋友都结婚,可想而知,一场完了以后还有另一场,虽然累,但是值得)推迟了好几天才回北京,在参加同学婚礼的时候接收到阿里高德部门的面试邀请。回到北京的当天是12点多,然后回家,一个关系非常好的朋友说今天她们要宴请公司的人吃饭,因为她们结婚了,让我帮忙弄个 MTV。我想这是朋友的终身大事,因此必须要好好干。

我下午4点是阿里高德的面试,因此时间很紧促。我凭借我大学的技能在两个小时内搞定这个 MTV,总体来说还不错,就迅速发给朋友,弄完已经3点了,然后打车立刻去首开广场。

高德的面试是4点钟,匆匆赶到后,就等待面试官。面试很不理想,因为什么都没有准备,而且心力憔悴。面试官问的是一些基础的 Java 问题,很可惜我没怎么回答好。于是就深深的浪费了一次机会,之后和朋友提起此事,无比后悔,当时其实是可以和 HR 电话再约一个时间的。

这次对我的打击很大很大,因为这是我这么多年第一次面试 BAT 的职位,一上来就受挫,很不是滋味。我在这里失利后我就各种准备资料,增强自己的能力,面试前必须要刷题,虽然简单,但是不失为一种方法,虽然不一定有用,但是会加深印象,尤其是去 BAT 这些公司,一定要准备好,否则就别浪费机会,这就是我的教训和经验。

为了6月份的这次面试策划了很久。以前对什么可能都不是很上心,但是这个事件深深的刺激我了。

第一个面试官来了后问了一些基本问题,很顺利就进入到第二轮面试。

第二轮也基本是技术面试,问了一些 Android 基础和 Java 基础以及内存管理。

第三轮的面试官应是部门负责人,看起来很好说话的,问了一些经历和基本情况后,问我薪资要多少以及之后的发展方向。我说要 XX,之后希望在架构方面发展,但是也可以从业务开始。貌似这里回答的不怎么好。然后让我留了他的联系方式,我知道很有戏哦。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。

后面我就自己整理了一套资料,还别说,真香!

资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。

系列教程图片

2020Android复习资料汇总.png

flutter

NDK

设计思想开源框架

微信小程序

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值