字节跳动Android岗面试被拒,理由竟然是:背景不够???

303 阅读10分钟

笔者二本双非院校,今年刚毕业的我被字节反复鞭尸,被拒绝的原因很多,其中最离谱的一个竟然是说我:背景不够???!

所幸,最后我拿到了offer。

表打我,我是来分享经验的,“先富带后富,最后实现共同富裕”。

我和头条的孽缘

笔者普通二本院校非科班毕业,从简历被拒,到拿下头条面试,前后差不多花了一年的时间。

之所以执着于头条,是因为字节的老板是我们那边出来的,算是老乡吧,心里有一种与有荣焉的自豪。就想进字节和大佬一起工作。

说是花了一年时间,其实是分段的,并不是一整年都花在字节上面,去年初生牛犊不怕虎,和字节的面试官battle过一回,然后……然后我就自闭了

面过的都知道,字节的面试,笔试就5道算法题,两个小时。我去年第一次看到算法题就自闭了,理所当然的挂了。第二次又很认真地做,做到一半放弃了。没想到的是,过几天又邀请我做第三次,有一种强行被侮辱的感觉,反复鞭尸……尽管……但是……我还是挂了。

后面是看大学一个室友面上了,我想着:这货都能去,为什么我不行,这才重整旗鼓,卷土再来。

今年从三月份开始准备面试到四月份收offer,大概花了一个月的时间,期间,我一直在踏踏实实复习。下面这些都是我阅读过的优秀书籍,里面涵盖了计算机大部分的知识,我也做了详细的归类。

  • 计算机思维:

  • CS50,哈佛公开课《计算机科学导论》, B站就有资源,自取~

C语言:

(不要问我为什么要列举C语言,因为移动开发搞音视频开发要用到,而且,这还是一个非常吃香的方向,不信的话,可看一下大佬的这两个文:

提升:

  • 算法: 《大话数据结构》 《算法(第四版)》 《算法导论》,一般人可能都会被劝退。。。不过可以看下学习C++

  • 学习C++: 《C++ primer》 《STL源码解析》 《Effective C++》 《深度探索C++对象模型》 看完上面👆四本,C++算入门了,接下来靠你自己去进阶~

  • 好好学下网络: 《计算机网络-自顶向下》 《TCP/IP详解-卷一》

操作系统: 《现代操作系统》 学堂在线网站--清华操作系统课程 如果你想自己试着写写mini 操作系统,我强烈推荐 《操作系统真象还原》,就算不写,这里也可以学到好多其它操作系统书少有的知识

  • 计算机系统 《深入理解计算机系统》 《程序员自我修养》--别被名字迷惑了,这本书真正该叫 《编译链接与运行》,真是好书 《设计数据密集型应用》

Java系: 《Java 核心技术 》 《effective java》 《深入理解Java虚拟机》 《Java并发编程实战》

我这边有部分的电子版,大家有需要的可以点击【此处】进入我的公众号,添加备注【面试】,免费获取这份资料的完整版

后宫选秀

其实,除了字节飞书的offer,我另外还拿到了阿里和京东的offer(但是最后我还是选择了字节真爱,哈哈哈): 我一直坚信:一分耕耘,一分收获。我能够收获这些offer,这与自己的努力付出是离不开的,当然也离不开一些好的资源的辅助,为了积攒更多的人品,我决定把这些给了我很多帮助的高质量学习资源分享给大家。

面试复习资料整理

编码面试

算法

PS:这里推荐大家去看这篇整理:最短时间搞定算法:字节跳动Android岗算法题考前突击宝典

在开篇准备阶段我们就已经提过算法相关的准备工作,对于字节来说,算法面试 是每轮技术面试都会有的“饭后甜点”(也有可能考察多线程)

从字节的面试规则来看,这一面是流程的必然要求;

从考察点来看,这个环节主要考察面试者的编码能力,思考能力,算法能力等等

从这个角度来看,面试管如果问“快排”这样思维固定,代码固定的题目,反而是比较简单的,所以“快排”的考察一般出现在一面最后的环节

比较能考察以上所提到的各种能力的,最常考察的就是链表,比如链表反转等,这里我们就不贴具体的代码了,小伙伴们上Leetcode 可以找到很多优秀的代码示范

如果想练习高频面试题目,笔者推荐牛客网的高频面试题 >>> www.nowcoder.com/activity/oj

当然,如果要通过刷高频通过算法面试,每道题至少刷3遍,加强自己的算法手感,才能在面试中不卡壳

多线程

最后算法面试部分,有可能也会对多线程相关题目进行考察,这部分一般不会很难,主要考察编码能力,以及对多线程的理解,如线程之间是如何进行协作的,如何保证线程安全及线程的等待通知等

比较常考的就是“四个线程abcd,启动顺序不定,a线程打印a, b线程打印b,按顺序输出abcd”,这也是笔者在字节面试中遇到的一道题

这个问题主要考察线程的等待通知机制,在实现上并不难,笔者也写过一篇文章来分析相关的代码及内部原理,可以点击 >>>公众号找我获取《线程手册》PDF

相信看完这个线程手册,基本上 90% 的多线程问题都难不倒你了(剩下的10%是AQS实现原理相关问题,就更深入一些了)

技术面试

这里笔者指除了编码之外的技术能力面试,针对Android面试来说,通常会对两大块进行考察,一部分是语言相关,一部分是Android相关

(一)语言部分

语言来讲,通常是Java,其他的也有Koltin, Groovy, Kotlin, C++ 等方面的考察,除java外其他的都会根据简历的情况进行一定考察

Java面试题就很多了,一般 warm up 的 题目就是以面向对象相关问题进行展开,再进行深度提问,比如笔者就遇到过提问“对多态有什么理解,多态是如何实现的”这样的问题(于是有了笔者最近整理的一份PDF手册 >>> 到底什么是多态?(点这里进公众号找我领取多态手册)

其他高频的还有Hashmap相关源码,线程并发问题,等等,笔者在这里想要强调的是,大厂的面试官很可能会挖一些有深度的东西的

比如面试管问题Hashmap源码,你要能讲出来Hashmap源码的实现细节,并且能拓展到如何实现线程安全的Hashmap,CurrentHashmap是怎么实现的,又有哪些其他的线程安全容器,他们内部又是如何实现的线程安全等等,具体细节请参考 >>> 点这里进公众号找我获取《线程高并发手册》PDF

当然,看源码不是一件轻松的事情,这又是另外一个话题了,如果你暂时读源码比较吃力,可以先参考笔者的相关文章,再去自己读源码捋思路,进一步内化为自己的知识

(二)Android部分

针对高开面试,Android部分自然也避不开源码相关内容,比较常问的就是“Activity的启动流程”,“系统启动流程”之类,这些笔者也都做了输出,可以 >>> Android源码分析(点这里进公众号找我获取) 相关系列文章

另外插件化,组件化,热更新,性能优化这些相对“进阶”一些的技术点也会着重进行考察

拿字节面试来讲,就对插件化相关问题进行了考察,尤其是对代码细节考察的比较仔细,比如插件Activity是在哪里做的Hook,如何“欺上瞒下”进行替换的

这样考察的目的一来是先检验面试者是不是真的做过或者研究过,二来也是对代码的深度理解进行考察

笔者的建议是,抓住一两个跟项目相关的有深度的点进行深挖,再结合源码去做一些研究工作,把这些技术点作为自己在面试中的核心竞争力和卖点,展示给面试官。

在这里,笔者把大厂面试中一些比较重要的点进行了汇总整理,有需要的朋友【直接点这里进公众号找我免费获取】

最后的建议

面试这件事,功夫在平时,临场时最重要的是心态。下面给大家几点实用性建议。

  • 充分准备 珍惜每次的面试机会,做好充分的准备。刷题什么的不要懈怠。上面的资料多看几遍,力扣的题目最好都刷一下。(尤其是算法题,千万不要偷懒,算法是决定工资水平的一个分水岭,想拿高薪的千万不能放弃算法题)。

  • 不抛弃 不放弃 失败是成功之母。要有失败的心理准备,不要因为一次的不顺利就灰心。简历会被放回到人才库,其他部门仍可以让你去继续面试,不过是从头再面(就当做积累经验吧)。

  • 猥琐发育,别浪 在准备跳槽的朋友尤其要注意,很多时候,你觉得你很有价值,其实那只是一个幻觉,其实是平台的价值。离开了平台,你什么也不是(并不是贬低和打击你的信心,只是希望你不要盲目自信)。希望大家能有谦虚学习的态度,猥琐发育,别浪。

最后的最后

眼下又是一年秋招,阿里今年开启了史上最大规模的校招:针对应届生开放了 113 种岗位,其中 45 种岗位首次招聘应届生;京东 2022 年的校招岗位需求也较去年增加了 30%…

开发岗需求多,薪资可观,前景也好,确实是应届生的好选择。但是随着越来越多人涌入 IT 行业,竞争也越来越激烈。希望这些资料对大家有帮助!

文中的资料都是免费分享的,有需要的朋友【直接点公众号】备注【面试】获取。