回馈牛客——机械渣硕的秋招之路

前言

昨天刚面完美团,作为自己秋招的最后一站,真的太累了。尤其是昨天,是最累的一次,前天晚上因为实验室有事,凌晨三点才到寝室,半夜也睡得不好,早上七点过起来去成都面美团,瞌睡真的来,状态也不好,发挥的很一般,虽然最后有幸走到了HR面,后面问HR说要排序后决定,结果要国庆节之后才出了。希望能有个好结果吧,也祝愿牛友门和身边的朋友都能拿到满意的offer。目前手里有三个offer,都是安卓岗,快手,可能是小sp(加了一面),或者白菜,能拿快手是我意料之外的,之前压根没有想过能够去快手,面试快手的时候真的是佛系面的,压根没有准备,就抱着随缘的心态去了,没想到最后结果还挺好的;小米,白菜,面试评价为优秀,自己一面太差,否则都能拿个sp;蘑菇街,应该是sp,最差也是小sp。自己其实是从5月份开始决定在秋招开始找安卓岗位的,之前做了大半年的目标检测,找实习的时候处处碰壁,最终也放弃了,从那个时候开始准备安卓。

看的书籍

自己是在研一开始接触安卓开发的,之后空了很长时间没做,刚开始复习的时候很多东西都忘记了。然后基本从头开始,这里主要看了两本书李刚老师写的《疯狂Android讲义》,花了一周时间大致浏览下,因为很多东西之前学过的,只是忘记了,另外一本是玉刚老师写的《Android开发艺术探索》,这本书看了好多遍,真的很多干货,面试问题大部分都来自于这部书,如果你面试安卓岗,真的建议你把这本书好好看看。另外也看了Android相关的很多博客,郭神、鸿神、后厂村刘皇叔等业界大佬。java部分:阿里专家写的《java并发编程的艺术》,这本书真的写的很好,教会了我很多很多;《深入java虚拟机》,这本书,面试java必考,很重要。此外还有数据库(我只看了MySQL必知必会,当然这里看了很多博客)、网络(《计算机网络》、《图解HTTP》)、操作系统(《计算机操作系统》)、算法(《数据结构与算法java语言实现》、《数据结构与算法Python语言实现 》、《漫画算法》、牛客也刷了几遍、LeetCode也刷了有一百多道题,这里个人觉得刷题之后一定要总结,写笔记,否则真的很容易就忘记了)这些知识也是必须补的,面试中也会问到,这部分看公司侧重点,有的会侧重网络、有的会侧重操作系统,我数据库简历上没怎么提,所以问的比较少。

投递时间点和简历

做简历很重要,一定要写自己会的、自己不会的尽量不要写,项目一定得非常清楚,一面二面三面都会问到项目。我是八月初开始投递的,其实已经比较晚了,有的大厂提前批都结束了,当然自己一开始也没有想进入一线大厂,最开始目标是成都华为和OPPO,但是OPPO简历筛选没过,很气,华为成都安卓岗很少,后面才投了小米、快手、美团、腾讯等公司。

面经干货

我真正走完流程的只有四家:快手、小米、蘑菇街、美团;因为我一开始只想留成都,但是成都的选择很少,大厂又进不去,只能选小厂,成都有安卓岗位的:腾讯(没报希望,投了之后很快收到了笔试通知,但是有事没做,后面又给我发了笔试通知,好像还没出结果)、京东(我八月底才知道京东在成都有安卓岗,那个时候已经结束了)、招银网络科技(笔试和电话面试过了,今天的面试,我拒了,不想再弄了)、OPPO、华为(但是只有无线部门才有安卓岗,由于今年华为招的少,就改岗位了,很气,当时面试的时候只有C++的HC了)、百词斩(这公司笔试很难,一个小时4题、简历筛选也很难,很多大佬都没收到笔试通知,很迷)、极米科技(拿了快手后鸽了)、汇顶科技(笔试没过好像,具体我也忘记了,编程题很简单,考了很多C的东西,真的不知道)、中移成都研究院(收到美团面试通知后鸽了)、tap4fun(好像面试比较迟,10月份去了)。在成都的OPPO简历筛选没过后,真的打击到了,这个时候把聚焦点换到成都以外的公司:蘑菇街(8月20+开始面试的,9.1杭州现场面的,流程比较慢)、4399、虎牙、完美世界、CVTE、携程、快手、瓜子二手车、中兴(面试体验极差、一面只问了项目相关、连java的基础都没有问,发了二面通知,没去了)、奇安信、vivo(我是重庆地区的面试,在节后了,可能之后会去佛系面一波)、步步高、中国邮政(鸽了)、农业银行成都软开(鸽了)。

蘑菇街

一面 2019年8月23日(这是周五,可能下周二、三出结果;一般是两到三个工作日)

面试官感觉很nice,尤其在编程题的时候,我其实弄好了,但是本机调试不对(后来发现是***的忘记调用自己写的函数了,输出肯定不对了),面试官给我提示,再本机调试还是不对,之后他那边调试对了,把他提示的代码注释了,也对了,问题是我本机出了问题,原本的思路和代码是没有问题的。整体感觉面试问题比较简单,我基本都是知道的,除了Android部分有点忘记了,答的不够好和漏点;java部分都是OK的。整个过程用了大概55分钟,我感觉聊得还行,最后还直接问了自己的面试情况。

  1. java内存布局
  2. java四个引用
  3. 创建对象的过程,对象在堆上是如何分配的?
  4. synchronized讲一下
  5. hashmap简单讲一下
  6. View绘制到屏幕上的过程,主要答三大过程,没有细说
  7. Android中内存泄漏(这里我只讲了单例类、内部类)(不够好)
  8. Android性能优化,主要指View(我讲了ListView的ViewHolder),这点讲的不够好;然后又问了View过度绘制。
  9. Android view事件分发(由于我简历写了view的滑动冲突,问了滑动冲突情况、方法等,之后又问了事件分发)
  10. activity的启动模式。
  11. 编程题:很简单,爬楼梯问题,用费波拉契数列解
  12. 讲一下项目中令你最印象深刻的事情。

二面 2019年8月28日 (感觉面的一般,周一出的结果,约的周三面)

  1. 说自己的项目
  2. 加载更多功能的实现。(这个答的不好)
  3. 事件分发机制
  4. java基本数据类型
  5. 编程题:很简单,但是自己写的不好;一个链表输出倒数k个节点:我说了两种方法,用一个ArrayList存,然后直接取倒数第k个节点;反转链表,取第k个节点
  6. 跨平台开发有了解吗?
  7. 最后总结了下自己今天的答辩;然后问了一些面试的后序事情
  8. 最后说了下自己最近在干的事情,我说了下Glide的源码。

三面 2019年8月29日(周三面完二面,有点伤心,没想到晚上就收到了三面的通知)

  1. 说自己的项目,把我简历上面写的项目都问了个遍;问的特别详细,具体会问你为什么这么设计?项目中你遇到的困难,怎么解决的?最大的难点是什么?有什么遇到了困难跳过的?项目给你最大的收获是什么?为什么这个选择这个框架等?
  2. 设计模式,让我说了下装饰器模式(我简历中写了)。为什么会用设计模式?不用和用有什么区别?
  3. 单例类,线程安全问题(我项目中出现了,所以被问)。
  4. 后端的交互等
  5. 为什么选择Android?(因为我的方向是增强现实,所以特意问了我为啥不做算法,另外还问了我对增强现实技术的发展,我觉得可能是对我研究生期间的学习状况有个了解吧)
    最后自己问了几个问题,整个下来半小时左右,我觉得聊得还行;但是网上看三面面经有让写代码,而我没有写代码,感觉内心有点慌。之后中午吃完饭就收到HR面通知,说实话还挺意外的,也太快了,毕竟上午十点面的,两个小时就出结果了。

小米

一面 2019年9月4号

31号的时候和面试官约的4号的一面,先说总的感受吧,几个问题我感觉我回答得挺好的,但是敲代码是真的捉急啊,我自己都看不下去了,不过面试官人真的很好,全程很耐心,还给我讲解问题,帮我找BUG,最后真的很感谢他给了我二面的机会。(还有些记不起了)

  1. 先问项目,项目中的难点,怎么解决的 。
  2. java内存布局,每个区是干什么的。
  3. java中四大引用
  4. 多线程中,sychronized和volitate的区别
  5. Android事件分发
  6. Glide加载图片的过程(我简历里面说了看了Glide的源码),应该是有遗漏,最后补了一问:加载图片是异步的,是如何显示在ImageView上的,这里我答的是handler,我记得就是这个。
  7. 编程题,其实很简单,atoi函数,输入一个String输出int值,判断各种非法情况。我真得很无语自己了这个是很简单的,结果却搞出了很多问题。

最后面试官说我基础还可以,还是给了我二面的机会,好好准备吧,机会不容易啊。

二面 2019年9月5号(还有很多记不起了)

  1. 先怼项目,问的很细,直到你不会,感觉怀疑人生,真的在做东西的时候根本没有考虑到这么多。
  2. HashMap的原理、为什么HashMap中key是引用类型而不是基本数据类型,为什么有了基本数据类型还有包装类型
  3. java线程池中用到的队列有哪些,各个的应用场景
  4. 编程题,两数之和

快手

佛系面的,当时就没有写面经,现在也想不起了,不过很有幸能够拿到快手的意向书,运气爆棚。有时候感觉心态真的很重要。

CVTE

当时其实自己是不想面的了,因为已经收到了小米的意向书,然后想着C场是我之前实习找的,也挺想去的,另外为了刷一波面经,就答应了。

一面 2019 9月21号

电话面试,约的是10点,但是面试官来挺早,9点半就给我打电话了,谈了55分钟。因为自己已经拿了小米的offer了,本来不想面的,但是C厂是我之前老早投递的,就还是面了。

  1. 项目里面最难的问题是什么?项目扯了应该有十来分钟吧。
  2. Android中的内存溢出和内存泄漏,我这里举了单例类的情况,之后又问了解决的方案,我也答了,然后还问了如果必须要在单例类中使用activity的context怎么办,这里我说可以使用弱引用,他感觉很不满意这个答案,但是我后来查了博客都是这么弄的啊,很奇怪。
  3. GC的策略、算法等。
  4. volatile关键字的内存语义。面试官问问题不是直接怎么问的,我这里是在项目中使用到了这个,他问为什么能解决。
  5. HashMap的数据结构,两种结构的查询时间
  6. 接口和抽象类的区别
  7. Android中service和activity的通讯。这里我答了handler,这个东西是可以实现,不过很麻烦,之前面快手的时候面试官给我解释过,用两个handler,后悔当时没有写面经忘了,面试官就在这里一直问,我答不上来了。当然其他的方式我是答了的,callback、binder、messenger、广播、其他类定义共享变量、eventBus应该也可以,不过我没用过。
  8. Android onLayout()onMasure()的区别,为什么会分成两个方法,onMasure()完了再进行 onLayout(),那么为啥我不能一次在一个方法中直接实现这个两个过程?我这里答了onMasure()可能会执行多次,并且举了RelativeLayout的例子,不对。
  9. 自定义瀑布流布局的实现?我说主要是重写onLayout(),确实不知道这个。
  10. 如果你有大小为64M的内存空间,如果让你放无数张图片怎么弄。我不太懂什么意思,我说虚拟内存,但感觉他不太想要这个答案,我就说可以用缓存。这个他才说可以。说实话这题我有点懵逼,如果是用缓存的话,还是会满的,即使加上LRUCache也会满啊。
    后面查状态,被挂了,有点想不通,上面的问题我没有记录完,但是我感觉我应该过了啊,哎,原谅自己太菜了吧,反正也没打算去,所以就不在乎了。

美团

机械渣硕的成都美团现面,大佬勿喷,之前万幸拿到快手意向书,满自信来美团面试,深受打击,确实也看到了很多自己的技术盲点,尤其是操作系统和网络部分,有的知识点忘记了,犯了很多错误,offer随缘吧,这次体验不错,尤其是一面,面试官超级好,和我同是四川人聊的很开心,二面深受打击,不过终究还是得到了复试机会。9月26号一站式弄的,一面+二面+三面+HR面。面经不全,有的忘记了。

一面

  1. 先来看了本科学历,专业,然后写代码,层序遍历二叉树,剑指offer原题,自己的字写太烂,给面试官讲了一遍。
  2. Java中引用,这里我答了四种,他说还有filial ize引用
  3. 安卓中activity啥时候被回收
  4. 计算机如果是单核,那么使用多线程有意义吗
  5. java对象的内存布局
  6. 类的字节码会被卸载吗,为什么
  7. 安卓中handler原理,looper可以有多个吗?
  8. Threadlocal原理
  9. activity何时会被销毁,然后onsaveInstance()方法何时执行,finish方***保存activity的状态吗

二面

二面我感觉是我最难的一次面试了,我感觉就是问了你一个问题,然后会一直挖一直挖,直到你不会,真扛不住了,第一次面试说这个我不知道了,还以为自己挂了,没想到后来居然过了,万幸啊

  1. 项目,项目里面最难的部分,这里扯了一会
  2. hashmap的结构
  3. java oom和栈溢出
  4. 给你一个三角形,和一个点,如何判断点是否在三角形内,拓展,如果是四边形,五边形呢(算面积来做)
  5. 输入url访问的过程,如果用https和http建立连接的区别,SSL的过程,如何验证服务端的密钥,网络缓存,网页中有多个标签,用什么数据结构可以快速知道标签层级最深的标签,最后一个问题巴拉巴拉,然后感觉做的一般
  6. 有5000000个int型数据,内存有限,如何排序,这里是操作系统的知识,以前看过,但是忘了,没答上。
  7. 安卓中asytask中的postxxx方法在哪里调用的
  8. 他写了一个方法,里面有方法参数,定义了一个变量,然后在方法里面new了一个对象,各变量和对象是存在哪里的,然后如果加了一个onclicked,用到了某个变量,这个变量为啥用final修饰,在onclicked里面可以修改这个变量的值吗。
  9. 代码题,右移一个数组,我以为就简单实现下,结果他说要考虑各种异常情况,这里补了几次

三面

感觉主要还是看简历,基本没有技术问题,问你的短板,优点,别人对你的评价,感觉有点像HR面。最后聊了聊如果进公司的话,主要的业务等,最后还加了面试官的微信。

个人建议

在这个过程中,我觉得一定要多写笔记、多总结;看了别人的书或者博客或者刷了题之后都写写笔记,即使很简单的东西,当时知道,过了时间又忘记了,写笔记实际上是一个产出的过程,尤其是知识点,如果不写笔记,面试问着相当于重新组织语言,写笔记,用自己的话说一遍,就相当于面试了,这样的话不仅能够帮助记忆,还可以让你在面试的时候顺手拈来。

#面经##快手##小米##美团##蘑菇街##校招##Java工程师#
全部评论
我也是机械。你这太强了
点赞 回复
分享
发布于 2019-09-27 19:08
你最后去哪了,还是搞安卓吗?
点赞 回复
分享
发布于 2020-02-03 19:56
乐元素
校招火热招聘中
官网直投
中间有实习吗
点赞 回复
分享
发布于 2020-02-04 09:35

相关推荐

14 73 评论
分享
牛客网
牛客企业服务