面试复盘|逆袭进抖音-面试准备干货&内部实况介绍
楼主21届秋招拿到了抖音Android客户端的offer(base北京)上岸,面试期间在牛客看了大量面经,面试时也有意记录下了面试题集。近期正值校招开启,特地整理出来回馈牛友~
我的经验可以分为【面经题集分享】、【面试准备:如何根据意向岗位JD制定学习计划】,其中面经题集详见另一篇帖子:面试复盘|5家大厂面试对比,抖音客户端上岸分享_笔经面经_牛客网
本文主要分享:【面试准备:如何根据意向岗位JD制定学习计划】,分为自我介绍、准备过程、心态建设三个部分。
一、自我介绍
楼主本科北邮计算机,考研没考上母校,调剂到了一所双非高校,方向变为网络安全。研二时做过安卓相关的安全研究,对安卓比较有兴趣也有一点点了解,秋招时投递的岗位是Android相关的,其中,字节投的是抖音客户端开发工程师。
二、准备过程
这一part分享我怎么确立目标、如何学习,以及总结当时的参考资料。
1、确定适合自己的目标
本科时我就是个学渣,研究生换网安之后玩过CTF、渗透、漏洞挖掘等等,但也没什么牛逼的成果,所以秋招之前,我可以说是研发经验约等于零。
2020年六月底,突然看到各厂提前批的宣传,才意识到该找工作了。我这个人,虽然人菜,但是想得美,我就只想进大厂,特别是字节,可是我对安全也实在没兴趣,搞开发的话没有拿得出手的项目,零实习经验。怎么办?于是我仔细研究了研发类的JD(Job Description),看到客户端岗位接受客户端零基础,看重计算机学科基础能力、对编程语言的掌握深度、编程能力。正好我做过安卓安全研究,对安卓感兴趣,Java也曾选修过,就敲定了安卓客户端研发岗。
2、制定学习计划
复习计划要根据【JD】和【面经】来制定,JD告诉咱们公司的用人需求,面经告诉咱们面试官怎么选人。我当时看了非常多的面试经验帖,总结出安卓客户端程序员要掌握的就是:
1、标配版:Java/Kotlin + 算法 + 数据结构 + 操作系统 + 计算机网络
2、进阶版:标配 + Android基础 + 设计模式
让我最受用的一个Android求职经验贴是《成功入职字节跳动的小姐姐告诉你,Android面试吃透这一篇就没有拿不到的offer!》
作者小姐姐很强大,把面试总结得很透彻,我的复习计划就是以这篇为骨架而做的。而且这篇文也给了我很多信心,当时我想着,这个小姐姐三个月拿字节offer,我就算能力比她差多了,我给自己四个月,五个月,再不济就春招再战,总是可以的吧!(不过建议能秋招上岸还是别拖到春招)
我从大约6月26开始学习Java,一开始主要是看上述小姐姐写的那篇。当时疫情在家,自控力差,效率不高,直到7月9号回到学校,开启高三式作息:
- 6:10 起床
- 6:25 出门去实验室
- 6:45 开始学习
- 上午刷算法题
- 午休一小时
- 下午学习理论知识
- 晚上看看面经搜集问题/机动安排学习/改简历/笔试
- 22:30 睡觉
以上列的是全天用来准备面试时的安排,秋招期间也还有学校的事,毕设的事,不是本文重点所以没往上写。
当时是和另外两个舍友一起结伴复习的,作息步调一致,相互监督相互鼓励,很好坚持,我每天都过得充实又开心!有志同道合的小伙伴真的非常重要哇!超爱她们!
3、知识点学习分享
数据结构 + Java
数据结构大多是配合着编程语言来考察的,所以这俩我放在一起学习。比如问你Java中容器类有哪些,涉及到Set、Map、Queue、List,进一步问它们的底层实现,就涉及到数组、链表、红黑树。网上有非常多的Java学习资料,大家自己搜索就行,文字版看不下去还可以搜视频资料,真的超级多。
数据结构还有一个考查方式是配合它在计算机中的具体应用考察的,比如磁盘为什么用B树,总之面试官希望看到你把计算机知识融会贯通。操作系统 + 计算机网络
学习高频章节和考点,比如进程/线程、进程通信、线程同步,作业调度,Linux系统常用命令,死锁,虚拟内存,内存分配,页面置换算法,TCP/IP五层网络模型及每层的职能,TCP,三次握手四次挥手,UDP,HTTP,HTTPS,HTTP长连接/短链接,Cookie,Session,Post和Get等等。我当时是把王道考研辅导书翻出来学习,感觉比考研的时候读得明白了哈哈。
要学深一些,不能只背概念,因为面试官会一直往下深挖,看你的理解极限在哪里。比如TCP,不能只知道它是可靠的面向连接的协议,如果面试官问:“TCP的可靠性是如何保证的”,咱就答不上了吖!再比如三次握手,要做到能把建立连接过程中双方的状态变化烂熟于心,要知道为什么设计三次握手,两次的话会有什么危害,三次握手机制有什么隐患(SYN洪泛攻击),如何应对,等等。算法
《剑指offer》,在牛客刷的,第一遍刷了一个多月,牛客上有很多大神分享解法,我就疯狂学习。刷完剑指后面了快手,算法考的三数之和,写不出来,一面就挂了,后来发现那道题是力扣很靠前的题目,心痛痛,就开始也刷力扣Top100。这些高频题都很经典,解法也巧妙,只做一次是远远不够的,我比较菜,有些题我甚至要做七八遍。我做的题也不多,总共就200左右吧,但是反反复复刷的比较熟练。牛客有个很好的板块,统计了什么【研发最爱考】【客户端最爱考】,还有考过的企业。面试前半个月,我开始每天在牛客上刷这些题,优先刷字节客户端爱考,刷完之后就扩展到研发爱考、上周爱考等等。
面试算法就是要熟能生巧(现场解题的大佬请忽略~),我面字节时出的两道算法题我都刷得滚瓜烂熟了,面试前一个月我刚刚认真研究过岛屿系列,该系列题目很有意思,我印象特别深刻,所以听到题目的时候内心狂喜!
有些特别基础的算法请务必掌握:快速排序、二叉树前/中/后/层序遍历(递归和非递归法都掌握)、深度优先搜索、链表反转、二分查找。
快排我在美团和滴滴面试中都用到了。设计模式
设计模式不要求必须会,但掌握了绝对是个大大的加分项!而且我发现面试官还挺爱问那么一嘴儿的,能不能聊下去就看你的了。
推荐一些设计模式的书:
经典之作《设计模式》,机械工业出版社,作者是四个博士,推荐给时间充裕的同学。
《深入设计模式》 ,图文并茂,容易理解,推荐给时间紧任务重的同学。
还有《设计模式之禅》,也很不错,讲得妙趣横生,我那时看它就当作边学习边娱乐了。
学习设计模式的时候,要多多举一反三,联系实际创建场景,有助于加深理解,当你能够轻松地用自己想的例子来解释一个设计模式的时候,说明理解过关了,可以用在面试上了。比如我学桥梁模式,一个对象有两个可变的,不同维度的属性,是不是可以对应成口红的不同质地、颜色,如果再加一个维度呢?品牌呀!ok,桥梁模式搞定!不过我遇到的面试官都是爷们儿,为了避免增加沟通的成本,面试时我改成用奶茶来举例了,笑:)
如果你想更秀,还可以用源码举例,比如Java线程池是单例,比较器是策略模式,迭代器是迭代器模式,Android中的监听器是观察者模式,等等。
单例模式超高频,千万要掌握。
- Android基础
这个我会的就不多,Activity生命周期,线程通信,进程通信,AccessibilityService原理,没了。面试被问时就坦然说学得少,不太懂。
建议学习时整理成笔记,我自己也写了总结的,但当时为了省时,很多都从学习资料中直接复制粘贴,担心引发版权问题,这里就不贴自己的博客链接了,我把我看的博客链接和公众号分享出来。
4、学习资料小结
分享一些让我很受用的资料,大家在学习的过程中也要多搜索,我当时看了很多很多东西的,也自己写代码复现、阅读重要的源码,并整理笔记。
- 战略总方针:《成功入职字节跳动的小姐姐告诉你,Android面试吃透这一篇就没有拿不到的offer!》
- 书籍:
《深入理解Java虚拟机》
《设计模式》《深入设计模式》《设计模式之禅》
《剑指Offer》
《王道考研:操作系统》《王道考研:计算机网络》 - 公众号:
陈树义:这个博主写的JVM系列通俗易懂
三***敖丙:《吊打面试官》系列我学到很多
小林coding:有很多很棒的面试文章,图解系列特别好
程序新视界:也有个面试系列,今年又更新了一些写得很细致的线程池、Threadlocal等文章 - 各种博客链接
不可不说的Java“锁”事
System.arraycopy()使用原理解析,坑点之:深拷贝和浅拷贝_youngogo的博客-CSDN博客
深浅克隆之Arrays.copyOf()_can_chen的博客-CSDN博客_arrays.copyof 浅拷贝
Java线程池实现原理及其在美团业务中的实践
Java 内部类详解 | 菜鸟教程
《Java中的增强for循环的实现原理与坑》wx公主号的,链接会过期,自己搜吧
Java多线程系列目录(共43篇)
Java集合常见面试题集锦
一个有很多Java容器源码分析的博客
Handler机制
Android异步消息处理机制完全解析,带你从源码的角度彻底理解
深入理解Activity的生命周期
Android 异步通信:图文详解Handler机制工作原理_专注分享 Android干货-CSDN博客
快速理解脏读、不可重复读、幻读和MVCC
面试题:InnoDB中一棵B+树能存多少行数据?
HTTP1.0、HTTP1.1 和 HTTP2.0 的区别 - Rogn - 博客园
在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?
三、心态建设
我的秋招节奏其实比大多数人慢多了,我九月份才开始有面试,而当时身边已经不少同学拿到了知名企业的offer了,我一度非常焦虑,但焦虑是没有帮助的,我就疯狂催眠自己:稳住不要急!好饭不怕晚!每当被面试打击之后(详见面试复盘|5家大厂面试对比,抖音客户端上岸分享_笔经面经_牛客网 ),也疯狂自我安慰:格局要大,脸皮要厚,这些全当练手!
就这样撑到秋招末尾,我觉得自己火候差不多了,才向字节投递了简历,拿了字节offer后我整个人都瘫了,再也面不动了……当时我还有另一个也在找工作的小姐妹,在被面试打击时会相互取暖。她结束秋招比我早,但是offer不满意,就比较丧,后来被拿到字节offer的我灌了一剂鸡血,春招继续肝,拿到了外企月薪26k的offer~可见不放弃希望有多么重要!愿我们的经历可以给大家带来勇气哦!
岗位介绍
楼主入职快三个月了,公司有线下培训,专门给校招同学举办的,介绍企业文化、部门概况等等,还有前辈现场分享高效工作方法,没有统一的技术培训,但是会给新人提供学习资料和时间。公司福利很nice,三餐全包(自助餐厅/盒饭/健身餐),饮料水果小零食下午茶,五险一金商业保险等等,最让我喜欢的是部门氛围,大家都很nice,有事直说,互帮互助,鼓励分享。还有就是字节是真的很敢让新人接触甚至负责重要的任务,比如楼主就参与了一个新项目的开发,这个项目的PM是个刚入职4个月的小妹妹。
说一下我投递的岗位供大家参考,名称叫【客户端开发工程师-抖音/抖音火山版/直播/影像】,职位 ID:8CL2,属于产品研发和工程架构部下的智能创作团队,在北京、上海、深圳、杭州,大家在官网上按岗位名称搜索就能看到哈。
我们智能创作团队负责抖音、抖音火山版、直播、音乐、影像等多款明星产品的研发,岗位要求我画个重点,完整版见官网:2022届获得本科及以上学历;可接受客户端零基础同学;扎实的数据结构和算法基础,精通至少一门编程语言,包括但不限于:Java、Objective-C、Swift、C、C++……
现在校招还在进行中,如果大家想了解我所在岗位的工作内容等等都可以评论或者私戳我哈,会及时回复滴
#面试复盘##面经##秋招##Android##校招##字节跳动#