我21届秋招面试过快手、美团点评、百度、网易有道,最后上岸抖音Android客户端(base北京)。面试期间在牛客看了大量面经,面试时也有意记录下了面试题集。近期正值校招开启,特地整理出来回馈牛友~
【先说结论】
一定不要在还没有把握的时候就去面试你最心仪的公司,应该先试试其他公司,积累经验,认真复盘总结,查漏补缺,面试经历宝贵,请好好利用!
去年秋招期间也参加过一些笔试,基本上5道编程里能做出2道就能进面试,认真刷题就还行。
我的目标岗位是Android客户端研发,但其实本身并不会Android,只会Java(大厂JD上基本都写着接受客户端零基础)。
为了方便大家阅读,以下内容的面试题答案我自己也整理好了,有需要的可以直接跳到文末
一、抖音
先说这个上岸了的,投递的岗位是Android客户端开发工程师,三轮技术面。
面试回顾
三次面试都是持续一小时,基本分为:【自我介绍】【技术问答】【算法考察】三个部分。面试官提问题是围绕求职者来的,你简历上写什么,就着重问什么,听得特别认真,让面试者感受到尊重。技术考察时不是泛泛问,你回答时提了什么,就往那个点展开提问,整体感觉是更注重校招生的学习能力和发展潜力。而且面试官都超级nice,温柔耐心,我答不出来的他们还会引导我思考,像个师长,不像面试官。
一面
- 自我介绍2分钟
- 介绍简历上的项目
- 项目是安卓相关的,让我讲项目中用到的知识的原理
- 知道多少安卓的东西?我说粗浅了解,比如四大组件,Activity生命周期。于是让我说生命周期都调用了哪些方法
- Android四大组件为什么被称为四大组件?有什么共性
- Android进程回收优先级
- 知道设计模式吗,讲一下
- 我讲了单例模式、桥接模式
- 代理模式知道吗,讲讲
- 我讲了静态代理,面试官又说还有个动态代理,能说说吗
- 于是我把两者的区别和动态代理怎么调用的说了一下,感觉面试官是满意的
- 算法题,整数数组最大子串求和
- Java的类加载过程
- 我回答时说类加载用了双亲委派机制
- 为什么要用双亲委派
- 类加载器有哪些
- 这些类加载器的父子关系
- 自己平常写的类是用哪个类加载器加载的
- Bootstrap加载器也是加载器,它的父加载器是哪个?
- Java中常见的线程安全工具有哪些
- 除了Java,你还会什么编程语言
- 我说C、C++,python、js、php这些都用过,但不算熟练
- 那你觉得C++和Java有什么区别
二面
- 自我介绍
面试官插播闲聊:你和内推人认识吗,怎么认识的?什么时候的网友啊,面基过吗,你家在南边,干嘛来北京啊,被她忽悠来的啊哈哈!(在这个过程中我放松了不少,紧张情绪退散!) - 介绍项目
- Java中接口和抽象类的区别
- final关键字的使用
- 刚才你说到了重写,还有一个概念叫重载,这两者有什么区别
- 写一下单例模式
懒汉式单例中使用双锁模式这个考太多了,我直接写了这个,让面试官有继续抛问题的机会。果然他先是问了为什么要双锁,再问了为什么要用volatile关键字修饰单例变量。 - 你刚才说了volatile关键字,那现在来聊一下这个关键字
- 由这个关键字又展开了对Java多线程的各种问题
- 说一下死锁的概念,构造一个死锁的场景
- 进程通信方式有哪些
- 我提到了管道,于是又问了命名管道、匿名管道
- 计算机网络学的怎么样,说说http和https的区别
- 你说https是加密的,用了哪些加密方式
- 为什么要使用不同的加密方式
- 算法题:计算岛屿个数
三面
-
自我介绍
-
介绍项目
-
针对项目问了我很多问题,问得比前两面的都细致,特别喜欢问我对原理的理解
-
由项目引申问了Android中的通信机制,问了handler
-
项目中遇到什么比较大的困难,你是怎么解决的
-
Java的Map
-
如果在多线程场景下hashMap会有什么问题吗
-
Java有什么容器是线程安全的吗
-
你刚才说的那些容器是怎么实现线程安全的
-
JVM中的GC Roots 是什么
-
Java中的四大引用是什么,为什么有这四种不同的引用,知道应用场景吗
我在回答时提到了内存泄漏,于是下一问就被问内存泄漏 -
说一下内存泄漏
-
怎么防止内存泄漏
-
写代码:循环遍历List删除指定元素
这里我翻车了,写出了异常,好在没有紧张到失智,用另一个方法写出运行正确的代码交了差,最后面试官还很耐心地给我解答报异常的原因。 -
反问环节
我没什么想问的,但是因为上一题代码写错了,我想给自己找补,就把一面时答得不好的问题重新说了一下。这里也有小心机在的,咱们要主动提及自己熟练掌握的东西,包括面试时也应主动把话题引到自己擅长的地方。
再过几天就拿到offer啦!
百日心心念念,一朝得偿所愿,恍然如梦。然而下一秒就是想抽自己几个大耳刮子——我要是早这样努力,至于当几年学渣?!那么我是怎么努力准备秋招的呢,想看的可以评论留言哦,需求多我就分享一下~
时间线:
2020.10.20 投递简历
2020.11.9 一面
2020.11.13 二面
2020.11.16 三面
2020.11.20 发offer
二、快手
9月5号,客户端开发工程师
这是我第一次面试,超级紧张,节奏掌握不好,而且当时才九月初,我连Java都没学扎实,光速挂了。
【教训:掌握好时间,别啰嗦】
-
自我介绍
-
最近最得意的项目简介
本来人家只给我5分钟,我叭叭叭了18分钟 = =。 -
现在我和你建立连接用的是什么协议
-
为什么用无连接的
-
你在浏览器上输入一个网址,按下回车后,都会用到哪些协议
我事无巨细都说了,详略不得当,面试官叫我简略点 -
说一下https的ssl过程
-
还有其他技术问题,忘记了
-
算法题:三数之和
没写过,完全不会,写出来的只能过30%用例,面试官一直让我多想想,到最后我内心疯狂呐喊我要放弃!!
面试官挺年轻的,面试过程中不给人压迫感,还安慰我别紧张,就是聊聊。
三、美团点评
9月9号,Android开发工程师,也是一面挂
【教训:当场写生题的成功率在我这里为0,要想过关,唯手熟尔~】
对这场面试记忆不深刻,因为没被问Java、安卓、计算机网络之类的,面试官看我学过安全,就问我栈溢出、UAF之类的问题,还有C语言的问题。
算法:第n大的数
我当时觉得挺简单的,先快速排序一下再取结果咯,复杂度也不算高。然后麻溜儿地写出了一段搞反顺序的代码,“光荣”地挂了。
四、百度
9月12号,移动端软件开发
一面55min,当场告知我等下二面,二面38min,挂
这回有很认真地记录问题并复盘
一面(55min)
- 自我介绍+问项目
- 什么是深拷贝,什么是浅拷贝
- 数组的拷贝是深拷贝还是浅拷贝
- 重载和重写的区别
- 什么场景用重载
- equal和==有什么区别
- tcp三次握手过程
- 为什么要三次握手
- 线程安全如何保证
- 锁机制是怎样的
- 线程通信怎么实现
- 线程之间共享数据的话怎么保证数据安全性
- hashmap的put过程解释一下
- hashmap的哈希函数怎么实现的
- 设计模式知道吗,如果if else很多怎么办
- 算法:实现有重复数字的有序数组的二分查找,输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一
面试官也很耐心,给足我思考的时间。不过我感觉有点像看题库提问,问得比较泛,也没什么规律,没有死揪住一个知识点深挖。
二面 (38min)
-
你有什么优点和缺点
-
针对我说的优点,提了个场景问题
-
安卓如何进行消息传递
-
安卓和js的交互怎么实现的
-
Activity的生命周期,涉及到什么方法
-
ActivityA调用ActivityB(原先B没有启动),两者会调用什么方法
-
如果ActivityB是弹窗或者半透明,ActivityA会调用onStop()吗,为什么
-
安卓的ANR,怎么检测发生了ANR
(ps:我都说不会安卓了还被连问Android,好崩溃,所以后来我才去了解那些最基础、面试最常考的安卓知识) -
了解设计模式吗?
-
写一下单例模式
我倒是能写出来,但是有细节瑕疵,所以还是不熟练啊! -
为什么你写出来的这个要判断两次if (Instance == null)
-
说一下https的ssl过程
-
http2.0和1.0有什么区别
-
GC ROOT由什么组成
-
说一下内存泄漏和抖动,开发的时候怎么避免
-
智力题,烧绳子
二面面试官一看就是经验丰富的技术牛,问问题有层层递进那味儿了,我感觉好厉害。面试官也很耐心,我中间网络不好断过一次,后来就一直有杂音,但是对方一点不耐烦都没有,而且安卓那几个问题我是连续懵逼,他也没表现出不屑啥的。
五、网易有道
9月23日,Android开发工程师,一面挂
- 问了很多我简历中项目相关的问题
- 写个完整的、能正确运行的单例模式case
- 线程通信(感觉面试官好喜欢问通信问题)
- 面试题我忘得差不多了,只记得Java、计算机基础方面的问题都和上面的面试大同小异,我和面试官聊得还行,不知道为什么挂了。网易的面试官给我的感觉也很nice,让人莫名地感觉公司文化很好。
其实还面了一家也很有名的公司,但是面试体验差,也没有有效问题,就不写了。给大家分享一下连续面试被挂的心态,其实当时我整个人都挺不好的,回顾整个九月里的面试都在被打击,十分沮丧,网易面试的前一天,我都打退堂鼓了,很害怕被消磨自信,还好很快调整了心态。
从心态爆炸到臭不要脸
九月份这几次面试下来,我基本熟悉了面试Android客户端的套路,大概能猜测拿着我简历的面试官会在哪里提出问题,也知道自己欠缺在哪里,于是我决定用一个月时间专心为面试抖音进行学习,不再面其他公司了,毕竟投简历和笔试也很花时间的。
【写在最后】面试是很宝贵的经历,一方面是锻炼自己的面试能力,一方面是感受面试官的风格、水平,毕竟以后是要做同事的人,对方还很可能是你的leader,还是要合得来才行。另外,注意做好记录和复盘~面试被拒绝是很正常的事情!我们应该关注的是面试暴露出自身什么缺陷,而不应该沉浸在情绪里,杜绝玻璃心才是走向成功的开始哦!祝大家拿到心仪的offer~另外上面的面试题答案和自己的面试心得经验为了方便大家阅读,我自己也整理好了,放在了下面的二维码中,有需要的也可以自行提取。