一鼓作气连八闯关的Android 秋招面经,只是稍稍来迟!!!

Posted 冬天的毛毛雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一鼓作气连八闯关的Android 秋招面经,只是稍稍来迟!!!相关的知识,希望对你有一定的参考价值。

作者:吴宇

来晚了来晚了,整理一下去年秋招面经,一直想想整理因之前太忙了,所以拖到现在才发,希望对大家有所帮助。

一、学习经历

比较菜,辣鸡本科生,2018年十一月份开始全面一些的接触安卓,学了第一行代码,面试后进入某公司某部门,正好比较缺人给我这零基础的人过了,十二月份去实习,断断续续中间回学校考试有请假,大概有效实习时间是6个月吧,边学边做的需求,到7月底学校有事离开的。后来回来又干到9月。

对于安卓的学习主要经历就是在公司学的这半年多,感谢能有这样的机会,leader和周围同事都特别好,手把手教学,虽然只学了半年多安卓,但是真实的项目也写过,完整的开发经历也有,有一个组件就是完全自己单人负责的五六千行的代码,还做了很多微小的需求,偷跑出来几千公里外实习,那段时间很累,还得担心学校老师点名考勤为了省钱连夜硬座十三个小时回来……但是学习蛮充实的,尽管还是很菜,但是进步了许多,回过头来看吃的苦是值得的。特别特别感恩实习公司的前辈们给我这样的机会~

二、秋招战果

秋招一共投了八家,腾讯、阿里、头条、美团、猿辅导、爱奇艺、招行卡中心、华为。
爱奇艺笔试完没有任何消息,招行一面挂,阿里二面挂,猿辅导hr面后挂,其余给了offer(还有实习转正)。

最后因为某一家待遇对比下来确实给力,预期自己撑死就是个大白菜,但最后略微超过预期……加上联系学长介绍部门内部氛围也不错……选择去了那一家……(你猜。哈哈)

**补充个小插曲:**因为没有接实习转正offer感觉很对不起leader的培养,某信上跟leader告别完之后一直很尴尬……因为之前跟某一家面试官某信上聊的很开心,部门也满意,本来都打算去了,但是最后一家待遇还有工作同事聊出来,比我预期的都要好,就没有去……感觉跟那个面试官最后也搞得很尴尬……

三、面经

按照秋招一面的顺序,把当时记录的写一下,但记得不全见谅。
第一家面的腾讯 腾讯一共面了六面,前三面应该是一个部门,三面过了一周灰了,后面三面是被另一个部门捞起来的,最后offer

腾讯

腾讯一面
1.自我介绍(后面的自我介绍我就不提了)
2. 一上来写归并排序 写镜像二叉树
3. 进程线程区别
4. 线程上下文切换切换了啥
5. 死锁 死锁避免 银行家算法
6. 虚拟内存解决什么问题 页面置换算法
7. 链表 顺序表的区别 应用场景
8. 网络各层作用 对称加密 非对称加密 路由表咋来的 mac表咋来的
9. volatile的语义 怎么实现的 gc算法 强软弱虚
10. 双亲委派作用 要是到最后所有类加载器都没找到这个要加载的类 会发生什么
11. hashmap hashtable
12. 四大组件都用过么(回答没用过contentprovider,再问那知道他是干啥的不……背了一些概念)
13. activity启动模式
14. 多进程的几个activity依次启动 一个application只会被初始化一次吗

腾讯二面

一上来写两个升序链表合并(跟一面归并排序基本一样。。感觉两面面试官没有任何交流……)

然后问了四十分钟项目

(我简历上就是实习期间写的公司的项目,讲项目每个公司问的问题都差不多,一般就那几个问题

(1)你遇到了什么困难
(2)有什么亮点
(3)做了什么优化

因为公司实习的时候也基本什么都不会,所以实际上每个东西对我来说都是困难……但是面试也不可能全说一遍,就着重介绍了自己在这个项目里面收获最大的几个点,有图片处理优化oom的,有kotlin相关的遇到的和java交互时候空指针的坑的,有遇到内存泄露自己排查并解决的,有在项目中两端通信方面相关tcp udp技术选型的等等,甚至有家公司hr面试都问我项目,楼主恬不知耻为了体现自己是个上进的应届生😂都有提自己学习英文搜索技巧在stackoverflow找到精确解决方案以及通读google文档和源码注释的经历……总之就是说的东西首先体现这个项目是自己做的,其次体现自己比较好学,在项目里面克服难点收获了什么,说出来的难点自己一定要有深入思考过,经得起追问。这样的话我感觉应该就能应对大部分问题,当然要想能有收获,肯定还是要这个项目是从头到尾自己好好做,真实参与进来解决问题的。)

腾讯三面 (挂~)

又问了问项目,交谈甚欢大概三十分钟……这一面面试官真的很会引导人

平时怎么学习的

有没有考虑留在实习单位,吹了一下腾讯大公司……不细说了。

本来以为稳了,等了一周多,最后时刻灰掉。

后来另一个部门捞起来重新面,说是看我笔试题做得好(笔试,a了4道,虽然看上去a的多。。但是楼主真的很菜。近半年自己没刷过除了剑指的题目,刚好我参加的那一场比较简单,记得当时有很多人a了三四道)

新部门复捞

腾讯一面
写题,是笔试没写出来那道,问我是不会吗,我说应该会,但是没时间了……结果给自己挖了坑,最后还是没写出来,搞了一个小时,给了一个错误解法,对方竟然还说代码写的不错。。以为凉了,然后已经默认凉了,结果莫名其妙过了……

下来问隔壁acm金牌说这题是他们训练赛原题…不是我能击败的。。

题目太长了……不忍回顾,关键词 刷漆……

腾讯二面

写题,笔试题a的一道加了个条件,比较简单,问项目。。感觉面试官并不是做安卓的……也没问啥细节

问啥时候能实习

腾讯三面

聊了聊天

项目讲一讲

什么计算机课学的好 讲一下

印象最深刻的写过的代码讲一讲

美团

美团一二面 现场面

当时人还在北京 就现场面试了一二面是连着的
交流两个实习的项目

面试题

  1. handler
  2. 怎么样算是一次请求成功了
  3. 项目中写的bitmap优化是指?
  4. 线程池用过没,有什么优点
  5. 怎么维持的长连接 为啥要有心跳包
  6. a启动b 再返回生命周期
  7. 线程进程协程 区别
  8. 上下文切换的区别
  9. 求树高度
  10. 三次握手为什么不是两次一次 五次六次
  11. kmp算法
  12. java内存分区
  13. jvm和dvm有什么区别
  14. 链表找环
  15. 还写了个算法题目
    一个数组a[ ]里面的数都是大于等于0的 求输出一个数组b[ ]使b[i]的值是a数组中所有位上除了a[i]的乘积

美团三面 电话面

主要问之前提到的那个项目 三十分钟 面试官很会引导,给了很多优化建议。。完全可以偷来用在后面的面试中哈哈哈

楼主简历上还写了个当时做的另一个需求的项目,被美团面试官问到了,因为那个项目自己只是完成了个需求,并没有细读源码原理……很多问题没有答好,但好在面试官也放过了。

平时如何学习的

阿里

阿里一面(刚刚面完腾讯一面十分钟电话突袭)

  1. final关键字
  2. 重载重写 返回值如果不一样方法签名和列表一样会出现什么 为什么
  3. 抽象类和接口 抽象类能不能继承普通类
  4. jvm分区 栈溢出是什么 栈里面存了什么
  5. 子线程如果出现异常会怎么样
  6. 说一下sychronize的实现的机制 说一下volatile有什么用
  7. wait notify notify之后之前wait的代码是从哪里开始执行的
  8. wait不在同步块里面执行会怎么样
  9. Reentrantlock用过吗 和sychronized有什么区别
  10. 内存泄露有哪些场景
  11. 问怎么恢复acticity状态 哪些方法 oncreate里面能恢复吗 和重写那俩方法恢复有什么区别
  12. view的 measure onmeasure什么区别 on draw draw dispatchdraw什么区别

剩下估计还有很多……但是当天晚上阿里一面已经是我第五场面试了,脑袋确实比较疲劳,晚饭也没吃,很多问题不记得了,淘宝面试官不停的问确定吗确定吗,第一次碰到这。。确实招架不住,当天面完感觉已经凉了(这种情况一般是面试官想看看你是不是真的会。。因为有些人(比如我)可能是背下来的知识。。被这么一问……震住就慌了。。)

阿里二面(午觉时候电话突袭) 挂~

  1. 讲一下项目,遇到什么问题
  2. tcp udp区别
  3. framelayout relativelayout有什么区别
  4. 写个算法题,比如大学里面那种c语言程序,return0 就退出了,为什么你写的andriod app 一行一行代码执行了不会退出?
  5. 两个线程交替打印
  6. 三次握手 第二个包丢了会咋样?
  7. android什么地方最熟悉
  8. bitmap存储的位置 安卓几个版本有什么不同?

总结
答的不好,总结原因主要是自己在安卓方面储备还达不到阿里的标准,加上是刚刚开始面试,阿里一面是我开始秋招第一天就面了,二面也就过了几天,准备不充分,加上自己很菜,安卓很多问题还没来得及学习,只对自己在公司用过的东西有理解,没用过的都停留在背诵概念的阶段,淘宝面的有很多安卓源码的东西都没有回答好,后面就疯狂恶补……虽然福报厂挂了,但是也对后面的面试起到了帮助作用。

猿辅导

猿辅导一面

写了两道题,第一题数组中奇数挪到偶数前面 第二题常见动态规划,三角形从上往下走选一条权值最大的路径
然后问了问handler activity生命周期 网络分层

猿辅导二面

写了两道题第一题,二叉树节点值只有0和1,删除所有值为0的叶子结点,让这个树最终所有叶子结点都为1,第二题动态规划最大连续子序列乘积

  1. framelayout relativelayout有什么区别
  2. recyclerview机制 怎么区分不同类型的item的
  3. 内存泄露有哪些场景
  4. 长连接发心跳包的作用是什么

猿辅导三面现场 Hr后挂~

  1. 为什么不读研
  2. 聊项目 遇到了什么问题 讲一下怎么解决的
  3. 场景设计题 贪吃蛇多人对战 整个从服务端到客户端什么样的架构思路讲一下
    客户端做哪些事情重点说一下 写一下伪码
    算法dp 贪吃蛇找食物 找到食物的最短路径 坐标系中有障碍物
    整个三面很不适应……都是比较开放性的问题,自己比较天马行空的胡扯……最后菜了……算法题没写出来,我说没刷题不好意思算法有待提升,面试官说你这还是得刷一下题啊,算法题很重要。。😂。连着就出来没想到叫去hr面了。出了大楼以为稳了。。一周后挂掉,最后想了想可能是现场人均hr面…

头条

头条一面

  1. activity生命周期
  2. oncreate和onstart区别
  3. oncreate执行一个耗时操作会怎么样
  4. 什么情况会anr
  5. handler
  6. looper prepare做了什么事情
  7. dialog弹出会不会影响生命周期(我说这个试过,不能,他说确定吗。。我说确定…他说会,下来之后再看看……)
  8. kotlin介绍一下协程 还有没有用到其他的特性
  9. kotlin能完全避免空指针吗
  10. 项目的图片太大怎么处理的
  11. 什么是采样率 什么是分辨率
  12. 哲学家进餐问题 写出pv操作伪代码 这个问题比较经典。。但是没准备充分,只给出来两种比较简单的解决方法。。
  13. https了解吗 讲一下流程 面完了让他评价他说应该再深入了解一下具体的加密算法之类的东西……
    算法题最大连续子序列和 把序列也打印出来 可能有多个序列满足条件

头条二面

  1. 问了问项目 三十分钟左右 抠的比较细
  2. http报文结构
  3. 跨进程通信
  4. 设计模式 责任链讲一下
  5. bitmap的优化 怎么压缩
  6. 提到分辨率和质量 压缩什么区别inbitmap什么用 bitmapRegiondecoder
  7. java内存布局
  8. 两个数组找中位数
  9. post 和 get区别

拿这个问题举个例子,这个问题其实老生常谈了,但是回答时候建议看看rfc文档的定义,知乎上也有人总结的不错,建议不要背诵网上博客写的那些东西,实质上的区别就只有rfc中定义的语义上的区别,一个是获取资源,一个是处理资源。很多博客里面写的区别主要是实现上的区别,比如get能不能带请求实体?语义上rfc里面并没有规定,当然可以带,但是像okhttp这样的框架去看源码发现get请求你带了实体是会抛异常的,只有post才给带请求实体,这是实现上的区别。我们讲区别应该去看更根本一些的点,再去讲常规的实现上有哪些区别,这样会好一些,体现自己并不是背下来。。而是对这个问题有一定理解和深入探讨的😂这是一点个人建议。包括对于那些输入个url发生了什么 进程线程 hashmap hashtable这种老生常谈的知识点尽可能了解的多一些 看看源码注释看看经典的计算机专业课的书籍文档。。会比很多人看几篇博客背背东西收获更多一些,也能回答的更全面一些

最后一道算法题太长了 应该是个笔试题,不忍回顾……

头条三面

  1. 虚拟内存 物理内存 讲一下 有什么区别
  2. udp怎么实现可靠传输 为什么要这么做
  3. a启动b流程 为什么是先pause 等b展示完了再stop
  4. 怎么监控卡顿
  5. 性能优化做过图片是吧 讲一下
  6. 堆和栈的区别
  7. c++智能指针
  8. 竟然没有写算法题……

华为

华为的面试被转到了什么什么通用工程师……但本来也就是抱着体验体验的态度。。面试很随意。
问了些智力题,笔试三道a了两道,复盘了笔试题。还有activity生命周期以及其他一些常规问题……强度比较低吧。。也没有做记录,感觉没啥分享的必要。。就是注意笔试题是自己写的就好了。

招行

招行卡中心一面 (挂~)

  1. 感觉面试官是后端程序员,盯着项目的长连接问到底。。
  2. 以项目为主
  3. 长连接怎么保持
  4. 为什么要有心跳包
  5. 长连接保持过程中会有什么问题
  6. 了解android push的机制吗
  7. 怎么保证数据传输过程的安全
  8. 怎么保证客户端的安全
  9. android 10 会有什么影响

有什么问题要问
过一天后挂……
秋招结束。。

四、总结

总体面下来感觉还是基础知识比较重要,计网 操作系统 数据结构与算法每一门都要好好学习,大学里面正常学这些的话,应该大厂都能通过二三面。项目的话尽可能要做出有亮点有难点的(或者说能吹给别人听的😂),没有难点没有亮点但是是自己写的项目的话可以刻意去制造一些难点,自己去解决也能提高不少,给面试官也有的吹。
感觉自己运气比较好,赶上了大厂比较缺客户端的时候,最后结果也算满意了。

五、其它

主要分享一下反问环节自己收获的东西,我一般会问固定的一个问题,然后再结合面试情况问一些其他的东西。这里分享出来看看。

问的最多的一个问题是有关上面提到的基础知识的问题,大致会这样描述:

“我也参加了几个月的公司实习,在实际的项目工作中,我发现自己好像并没有用到什么高深的算法,也没有机会去感知到底层的网络数据包跨越一跳一跳到达目的地,更没有场景让我去利用编译原理去解决的东西,我也不需要清楚什么虚拟机的原理照样也能写代码,等等,当然也与自己接触到的东西确实很有限有关系,但大部分业务场景好像并不需要用到用到那些基础知识,但是我的之前的领导告诉我基础很重要要好好学,在学校时候老师也说这些很重要,也花费了大量功夫去看一些经典的书籍,然而我并不知道在应用开发的工作场景中这些东西到底有什么用处,而您刚刚也问了很多这些问题,那面试为什么要重点考察这些东西?除了体现自己基础扎实,以及有时偶尔用到那么一次以外(实习时候确实有感受到过自己基础知识有用到那么几次hhhh)”

美团面试官:你是说这些东西没有用对吧。我把我刚刚问的这些东西给你举个例子…

边说着他把求树高度,字符串匹配算法等等几个在美团APP里面的实际场景举了例子给我,给我讲了jvm的知识如果有人不懂这个,就会写出频繁gc的代码,如果你知道那些东西,那就会去注意这些问题,网络框架封装好了,确实也感知不到底层的握手和包的传送,但有时候我们自己设计一些通信的协议,也会去参照人家那些协议的经典做法等等等(还说了好多 已经不太记得了…抱歉)…至于很多安卓平台的东西,这些一方面是校招学生很难接触到真正的公司的项目,根据他们几年的经验,大部分人也是掌握的不太好,背的一些概念,如果上面的基础知识掌握的不错,那么平台的东西他们认为是在正式工作用到时候,会水到渠成的。
大概用了十分钟吧。。我真是一旁愣愣的 加上无比敬佩的听着…面试官真的好评,心服口服,让人感觉获益最大的一次面试。

tx面试官:

大致的意思就是这是校招,我们还是主要考察学校学的东西,学生做的项目大部分也没有太多可以问的点。基础过关是第一步。
(实际上感觉并没有回答我的问题。。)

阿里面试官:

他在刚刚工作的时候,也有这样的疑惑,但是慢慢地发现真到用到的时候,这些知识都很关键,在有些时候决定技术方案的时候,这些基础知识的东西,提供给我们一些业界的经典的范例,可以去模仿借鉴人家的东西,就比如我这个项目,blalalla他觉得选用某个网络协议会好一些,这时候实际的体验上会是怎么怎么样的。而关于操作系统的一些东西,什么地方要用线程,什么地方使用进程,如果你不知道这些东西的区别很难去知道该怎么做,再比如跨进程通信的各个方式,你只有在理解了那些方式之前的优缺点,才能决定你在这个业务场景下选择哪个更好一些。。等等…
这个回答也收获颇丰…

头条面试官:

你是说面试不应该问这些东西么。(我赶紧说。。不是不是…就是有一些疑惑)
同提到了阿里面试官说到的技术选型的问题,我连连点头,还提到抖音的有些算法就是我们自己手写的…另外还提到了,这些经典计算机课程的学习成本是要高于那些安卓ios的很多东西的,我们也喜欢与聪明人为伍(嗯…我是聪明人hhh),掌握那些基础知识之后,学习平台相关的东西也会容易许多。

猿辅导面试官:确实我们很少用到一些算法,但是可以锻炼思维,你处理边界case就能体现你思维的严谨性。
(当时只问了算法,所以感觉回答的也还可以哈哈)

推荐

在面试之前自己在网上收集了一些面试相关的进阶学习文档,里面的内容比较丰富,内容包括Android架构视频+BATJ面试专题PDF+核心笔记等学习文档。希望能够帮助到大家提升技术。如果大家有需要参考学可以点击下方小卡片进行访问查阅。



以上是关于一鼓作气连八闯关的Android 秋招面经,只是稍稍来迟!!!的主要内容,如果未能解决你的问题,请参考以下文章

数字IC设计/FPGA工程师秋招面经

大厂Android秋招面经;如何斩获高薪Offer?你且收好!

2018秋招面经-后端开发

我的Java秋招面经大合集

2019秋招面经大汇总 - 运营

2023秋招面经深信服 前端 一面(1h)