2021年头条抖音安卓客户端研发实习面试经历(已被录用)

背景

昨天晚上,我收到了上个月结束的头条抖音安卓直播客户端研发岗实习生的录用通知,所以现在就把我这三轮技术面+一轮HR面的经历、能想起来的问题,还有面试的前因后果跟大家分享一下,让大家在找工作时有所参考

受邀面试

我今年研二,还有很多实验要做,所以年初的计划是六月份开始投简历找实习,一二月份根本没开始准备复习安卓、java等面试知识,更没有刷题。二月中旬,正月初十左右,突然收到头条HR加微信的请求,邀请我参加面试,我抱着看看他怎么说,以及即便这次不去,后面找实习也可以联系的心态同意了。交流过程中,他问我暑假能不能回北京这儿实习,我说七八月份可能没时间,实验室方面比较忙。他又问九月份秋天呢,我一想,反正那时也肯定要找秋招,而且中期答辩是七月十五号,那么九月应该事情都落停了,随即就回复说九月份可以去,头条HR闻讯随即把我推给了抖音直播研发的项目组组长。

因为那时我完全没准备,所以跟项目组组长定好的面试时间是三周之后的3月14号周日——头条分大小周,也就是相邻的两周一周双休,一周周日上班,岗位自然是他们所在的抖音直播安卓客户端研发面试,工作地点和我大三时所在的中航不同,这次是在中航附近的紫金数码园。

我想了想,头条这次能主动邀请我,原因有三:1)、17年冬天我应聘头条实习时,简历在他们那里有存档,所以才能找到我;2)、18年我大三下学期在头条极速版客户端工作时没捅娄子,没有不良案底,所以他们找到我的简历才想跟我联系;3)、头条安卓研发岗现在很缺人,年前我在头条的前同事就问过我想不想回去实习,周围的同学有没有想来做安卓的。因为那时我一心扑在实验室上,而且实验室就我一个做过安卓,当时就婉言谢绝了。而初十头条竟然又有人联系我,说明因为新冠瘟疫带来的人员流失,以及头条即将上市带来的业务扩展,导致安卓研发岗人手不够,这样他们才能找到我这种三年前在他们那儿工作过,且离职后一直没有联系过他们的人。

面试准备

刷题

不管怎样,答应下来后,就要好好准备。正月十一开始,我就在leetcode上刷题,一天四五道,基本都是简单或中等难度,解法大多是大力出奇迹,极少部分是通过观察(比如切绳子那道),但凡涉及动态规划、图论的一律跳过,学不来。

顺便说下我在数据结构及算法方面的积累,其实不多,我熟悉的数据结构就是数组、链表、栈、队列、二叉树,图不会;算法方面,排序会冒泡和快排,搜索就是二分法(当然得先排序再二分,要是数组无序的,直接挨个儿找)。因为安卓方面涉及的数据结构及算法很少,排序工作都是在服务端完成的,客户端收到列表信息只需要展示出来就可以了,无需二次排序。

知识点复习

关于安卓及java的知识点,主要是参考这三篇文章:2020年Android面试题大全(附答案)40个Android面试题,以及Android 性能优化最佳实践

关于2020面试题一文,我也没有全看全背,HTTPS没怎么看;设计模式只看了里面的单例;四.5的Bitmap我没怎么看;五.3的Framework部分我只看了Activity、Window、ViewRoot和DecorView的关系,至于启动流程,完全没看,DCL、Happens-before更是没有关注

关于40个安卓面试题,里面比较重要的有动画分类、Activity启动模式、屏幕旋转时Activity的生命周期、解析xml的类等

因为我这一段时间刚跟着尚硅谷宋红康学习完JVM,所以对java内存的布局、内存泄漏、内存溢出还算熟悉,虽然GC算法只知道引用计数、标记回收、标记整理的大概,不过也应该不会被轻易问倒。我本科在找实习时,也有过对安卓知识点的整理,记录在我的github仓库中:https://github.com/songzeceng/first/tree/studyOfIpc(项目根目录下的txt文件)

我是在面试开始前两周开始背知识点的,当然不是死记硬背,而是在理解的基础上去背,理解不了的话那就愣背。其实看着东西不少,实则新知识点不多,我只花了两个周末,就把上面三篇文章中自以为有价值的,及我自己准备的总结背完了

面试

第一轮技术面

3月14号傍晚六点,第一轮技术面准时开始,使用的平台是牛客网的面试平台。面试中问到的问题如下(我能记起来的):

1、自我介绍
2、java四种引用类型、内存模型
3、http常见响应码、与https的区别
4、哈希映射的实现
5、java中锁的类型
6、常见设计模型,写一个单例,其中volatile的作用
7、两个数组中最大公共子数组的长度
8、Handler、Looper、MessageQueue的工作机制
9、在京东研发做的主要工作
10、了解webp图片格式么,怎么做图片加载的优化
11、syncronized关键字工作原理
12、try-catch中try里有return,此时如果能走到return,finally块还会不会执行
13、静态字段、非静态属性字段和局部变量的初始化顺序

首轮技术面历时五十多分钟,首先自我介绍我说的很简单:我叫啥、来自哪儿、在哪儿读书、啥学历、目前主研方向是啥;其次上面的问题我没有全部回答开,比如http与https的区别就说得很含糊(只说了https在http之上做了加密工作)、webp完全不会、java中锁的类型还忘了,图片加载只知道TinyPNG在线压缩..还好别的都答得不错,特别是JVM内存模型没有把我问倒,再加上两个编程题我都写出来了:单例不用说,二次检查+volatile+私有构造方法;两个数组中最大公共子数组的长度则是暴力找,大力出奇迹。

第二轮技术面

七点整完第一轮,我想头条再快也得第二天面第二轮吧,所以就开始打CS1.6了,正在我抡着AK暴打前敌时,一个来自天津的电话打了过来——很可能是头条的HR,我一接还真是,她告诉我第一轮通过了,今晚八点第二轮。这真是让我措手不及,赶紧关了游戏,通过了HR的微信请求,打开面试知识点笔记,同时再次进入牛客网准备面试。

第二轮技术面涉及的问题大致如下:

1、自我介绍
2、http头部信息、如何实现断点续传
3、TCP三次握手、四次挥手
4、上次在头条研发做实习时,图片轮播怎么实现左右无限滑动
5、Animation与Animator的区别
6、View触摸事件的传递
7、矩阵的顺时针输出
8、安卓中IPC的实现方式
9、安卓中Activity的生命周期
10、进程与线程的区别
11、JVM常见的GC算法
12、在浏览器中输入某个网址,按下回车会发生什么
13、Cookie的作用是什么
14、java中异常的类型及举例

头条的面试之间是相互独立的,所以运气好的会问到和前面面试相同的问题。这次其实我也被问到了——java引用类型、哈希映射被问了两次,只是第二轮时面试官好像突然看到了第一轮的问题记录,所以赶紧打住我的口似悬河,接着问新问题了。

第二轮面试历时四十多分钟,同样,我也不是所有的问题都对答如流,这次http头部信息我所知甚少、断点续传只知道客户端用RandomAccessFile来进行文件的随机访问、Animation和Animator区别不知道、View触摸事件的传递忘了(幸好还知道onTouchEvent()返回true表示消费这个事件)。剩下问题都还行,都在我掌握范围内,那道编程题还是暴力,注意索引不要越界、拐角处不要重复输出即可。

第三轮技术面

第二天周一上午,HR就微信告诉我二面也过了,而三面的时间商量好是3月16号周二下午六点。由于在前两轮面试中发现我电脑的麦克风不是很好用,我就借用我室友的电脑来面试(提前说好了都)。第三轮技术面主要是问项目经历(当然可能还是问知识点,我大三应聘时就是三轮都是提问知识点),涉及问题大致如下:
1、前两次实习的工作内容、前两轮面试的编程题思路
2、用过哪些第三方库:Retrofit2.0中的动态代理、Picasso中的图片缓存
3、以后的技术路线
4、比较深刻的项目经历、遇到过哪些棘手的问题、如何解决的
5、你有什么问题

这轮的面试官刚参加完一个需求定义会议,晚饭都没吃就着急忙慌地跑过来面试我,尽管面试中没有表示出来焦躁的情绪,不过看得出来没有怎么准备,问的都是一些张嘴就能问的东西。我回答的还行吧,那俩第三方库说的比较少,因为很多细节记不来。深刻的项目经历、棘手的问题我是基于去年我做的实时目标检测说了说,三面总共耗时40分钟左右

HR面试

三面过后我是有点儿紧张的,感觉我回答的不算非常好,不知道能不能过。好在周二当晚HR就微信告诉我,三面也过了,HR面试时间经过商量定在了第二天——3月17号傍晚五点,用的平台从牛客网换成了飞书,我还是用的室友的电脑(面试完了我请他搓了一顿烧烤),这次HR面试所涉及的问题大致如下:

1、之前两次实习,自己在技术上有什么收获
2、前三轮面试感觉如何,哪里发挥好,哪里发挥较次
3、以后的职业生涯有什么打算,怎么这么早就来找实习
4、大三在头条实习完为何选择读研,研究生生活中有什么收获
5、希望早些入职,并且在实习和秋招中做好平衡
6、你有什么问题(工作地点)

这轮HR面试颇有些压力测试的味道,我被驳了不少,但因为她捏着我能不能通过面试,我也只能顺着她含糊其辞地回应,本次HR面试总耗时为半小时左右。

收到录用通知

因为实验室方面事情多,我计划国庆过后赴京实习,由于头条的录用通知有效期为半年,所以17号面试完,一直到3月底(我23号问了一下HR,她说我的录用通知正在审核,走流程需要一段时间)才有HR加我微信商量入职事宜,说好的是4月10号清明之后发录用邮件。

这段时间我一直在做操作系统调度方面的工作,所以也没怎么觉得焦躁。同时,实验室也有同一届的同学开始投实习简历,目标公司有阿里、腾讯、美团等,我没有投新的,因为我觉得头条就已经很好了,研发实习基本都能转正,转正后的工资在互联网企业中也是翘楚,所以我见好就收。

经过跟实验室老师的交流,他们也同意放行,因为前几届同学也都是研三上半年这个时间段出去实习的。

昨天,4月12号我收到了抖音直播安卓客户端研发的录用通知邮件,9月20号入职,虽然比预计提前了三周,但还好,因为跟实验室老师说了后,他们依旧同意放行,尽管还是邀请我读博(当然我对于此的答复是可以考虑,但这种事只有到今年深秋才能有定论)。

结语

这就是我的安卓实习面试经历,希望给大家有所帮助。大家有问题的话可以在评论区讨论,我当知无不言言无不尽。

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值