干了三年的程序员花了一年时间才拿下头条offer,原因竟然是这个!

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 下面整理的一些面试题以及面试答案并不是针对字节跳动这个公司的,因为我我是二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年的时间,所以答案本身是针对所有想要找工作的,想进大厂工作的同学,同时适用于研究生和本科生,我将谈一下自己关于面试大厂的体会和如何打造一个足够漂亮的简历,还离找工作比较远的同学也可以看一下如何早点开始准备。

前言

下面整理的一些面试题以及面试答案并不是针对字节跳动这个公司的,因为我我是二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年的时间,所以答案本身是针对所有想要找工作的,想进大厂工作的同学,同时适用于研究生和本科生,我将谈一下自己关于面试大厂的体会和如何打造一个足够漂亮的简历,还离找工作比较远的同学也可以看一下如何早点开始准备。

**一、印象中的头条**

1.老板张一鸣跟我是福建老乡,龙岩市在我朋友说来就是山沟沟,能走出美团王兴和头条张一鸣让我卯足了去龙岩吃特产老鼠干的欲望。

2.给的钱多,笔试也贼难。参加过头条笔试的同学都知道,头条笔试可以笔试三次,就是不论你有没有参加都有三次机会。笔试就5道算法题,两个小时,去年第一次看到算法题就自闭了,第一次挂了。第二次又很认真地做,做到一半放弃了。没过几天又邀请我做第三次,有一种强行被侮辱的感觉。

3.内推被拒。正如我标题所说,简历被拒。去年3月份在知乎上看到一个头条大佬说可以内推春季实习,于是私信并发了简历给他。看了我简历之后说头条竞争激烈,我背景不够,点到为止。。(打扰了)

**二、面试背景**

自从去年被头条笔试的算法凌辱和被头条的前辈指教了之后对头条没啥好感了,也感觉进不去,所以后面大半年都没关注头条的招聘,直到以下两件事情的发生。

1.有一天,之前一块实习的哥们说进了头条,我也蠢蠢欲动打算开始搞了。那时有一个不成熟的想法:「连他都可以进,我应该也可以吧」

2.正好在健身房认识了一个在抖音做数仓的小leader,我觉得这是天意啊。于是免费给他上了节私教课,上完让他帮忙内推。

**三、准备面试**

其实从三月份投递简历开始准备面试到四月份收offer,也不过1个月的时间,但这都是建立在我过去一年的积累啊,无数次的通宵自习室,图书馆的专属椅子都被我坐的陷进去。避免误导大家,这次也不做标题党,写了准备一年,踏踏实实干事。

都是比较不错的书单

**以下是我去年给自己订的学习计划:**

一月:

大数据入门

整个一月份都在刷入门视频和《Hadoop权威指南》,又临近期末,每天5点半起床,看两个小时的视频然后上课或者复习期末考。

二月:

剑指offer刷一遍、数据结构、JavaSE、JVM、多线程

①剑指offer有些搞不懂的直接跳过,等下个月第二遍再刷;

②数据结构重点是各种树、二叉树、红黑树的一些特性以及链表的特性;

③JavaSE主要是类对象接口的区别,能不能继承,Static的特点,各种Hashmap,ArrayList等集合框架的原理源码;

④JVM是根据网上整合的高频面试题进行学习的,刷了一遍面试题之后才去看周志华的《深入理解Java虚拟机》,JVM难的不是JVM布局,垃圾回收算法等这些理论,而是结合代码和项目场景。比如说一段代码,有很多个类、方法,其中又有静态类和全局变量,这时候项目跑起来的时候哪些先加载,哪些变量存放在哪个区,不止要懂理论,还要结合代码懂理论。还有就是项目中的OOM,栈溢出,JVM的参数调优等等。

⑤多线程也是刷网上面试题和博客的,几本多线程的书都是一坨一坨的,理解不来。先动手把几个多线程实现方法实现了一遍,然后分析优缺点,再由此切进去线程不安全和各种锁。多线程学习不同JVM,自己多动手,多调试一下,控制台都会告诉你答案。

三月:

剑指offer二刷,数据库、操作系统、网络、准备面试

①剑指offer第二遍重点刷第一遍时思路懂代码不懂的。

②数据库刷了牛客网SQL实战100多题的,其他都是索引原理,悲观乐观锁等理论。

③操作系统刷高频面试题。死锁的产生条件、解决方法等等,资源调度算法,并发和并行等。

④网络也是刷面试题。三次握手四次挥手以及为什么要这样做、TCP和UDP、网页请求过程、DNS解析过程、网络模型、响应码的意思等。

⑤我每刷一道算法或者理解了一道面试题都会进行整理,所以到面试之前看看整理的文档和博客就行,异常轻松。这个月也继续投递简历进行面试,从三月份开始都是边投边准备,不存在全部准备好再去投。

**三月份收了京东、瓜子二手车等二线大厂的offer。**

四月:

大数据项目、手写剑指offer、继续面试

①三月份被阿里菜鸟部门的三面面试官怼了一发,说简历没有大数据项目面大数据岗,理论会再多有什么用,于是打算在四月份补一下项目。

②在补项目的同时,不忘算法,练习白板写代码。

四月份收了腾讯、去哪儿一些offer,腾讯和去哪儿终面都得现场面,所以一天飞北京,一天飞深圳。拿到腾讯offer的时候跟HR商量能不能去上海或者北京的base,HR说不行,于是就没去了。选工作和生活城市有一个硬性标准:离家远!那些在北方读书的同学毕业之后一直要往家里跑,而我则是一直往外跳,或许是因为在厦门待了四年吧,家乡也是「围城」啊。

5-12月:

实习,看框架源码,面试,整理面经

最后选择了去Kyligence实习了,刚好趁这个机会学习了Kylin源码,看了Hadoop和Spark的部分源码。后面的面试也是为了倒逼自己学习,在面试中找不足,也顺便整理了一些面试资料。

**总结:**

一定要列好自己的学习计划,也要学会根据自己的学习情况调整计划。项目是面试的敲门砖,也是面试的大头,我是从大二出去实习的,所以在项目这边可以花较少的时间,不用从零开始学。底层理论一定要会,不然大厂无望。算法一定要硬刚,总共就那几种题型,我刚开始也很抵触的,觉得太难了,后面迎难而上也就那么回事。第一遍不行就第二遍,不然就第三遍,直到现在剑指offer里面也有一些我不懂的题目,但我也不会去深究,大局为重,不抠细节。

别的同学放寒假的时候,自己一个人在学校旁边租了个小房子学到过年前夕;为了巩固实习的项目更好地面试,跑了几次之前实习的公司请同事吃饭问项目细节;为了阿里面试用肝硬刚,连夜复习;简历投的太多,信息都被卖了,而且一听到手机响就以为是面试电话;去腾讯终面,在深大的通宵自习室连夜复习。

**以上是我过去一年的准备,说说我从投递简历到收offer这一个月的准备。**

1.**复习算法**。把以前刷过的算法题分类整理了一下,因为之前有整理过,所以复习起来没用多少时间,还特意去理解了长长的KMP算法,LRU算法。

2.**复习理论基础**。除了复习整理的面经和资料之外,还特意去了解了一下Golang,因为头条用的go语言。

3.**特意准备了几个项目技术难点**,能在面试的时候炫一下。

**四、头条一面(Java+项目)**

1.倒排索引

2.讲讲redis里面的哈希表?

3.happen-before的规则?

4.volatile修饰符,synchronize锁

5.java单例模式的实现,懒汉、饿汉?

6.进程与线程的区别,多进程和多线程的区别?

7.HashMap原理,为什么用红黑树,红黑树的特点?

8.快排时间空间复杂度,最好最坏的情况,优化方案?

9.TCP的拥塞控制,具体过程是怎么样的?UDP有拥塞控制吗?如何解决?

10.讲讲了解的垃圾回收算法和回收器,什么时候执行STOP THE WORLD?

11.了解Go语言吗?

**五、头条二面(大数据+项目)**

1.Kylin的项目架构

2.Paxos和ZAB协议

3.CAP理论,分区容错性的意义

4.大表Join小表优化,如何处理数据倾斜?

  1. 讲一下最大堆和最小堆


6.HDFS的读取、写入,容错处理。(源码)

7.MapReduce的过程(第一版和第二版的)

8.MR shuffle,Spark shuffle。

9.namenode HA,脑裂,Yarn的调度机制。

  1. Hive的内部表和外部表区别、数仓建模模型、数仓分层、雪花模型和星型模型。


11.了解ClickHouse吗?它与Kylin的区别?

**六、头条三面(算法+场景题)**

1.LRU算法实现(伪代码)

2.链表倒数第K个数(讲思路)

3.一堆螺丝和螺母用最短时间匹配(代码实现)

4.求每天浏览页面的新用户(Hive QL实现)

5.求抖音小视频每日点击量最高的10个(Hash + 最小堆)

**七、如何通过头条笔试?**

这次的笔试里总共有5道,我AC了2.5题,第一题90%,第二题90%,第三题70%,不算好,但勉强通过了。去年的这个时候我可是连题目都看不懂的,看得懂的只知道用嘴怎么说,不会用代码实现。通过这段时间的算法训练,总结了如下几点算法笔试经验:

1.**平时刷题一定要总结归纳,最好分类**。比如关于树的题型,链表的,数组等等,观察它们的解题思路,总结出解题套路。

2.**积累工具类算法**。什么叫工具类算法?就是你解一道算法题需要用到另一种算法,这个被调用的算法就是解决这道算法题的工具。比如常见的「深度优先遍历」、「广度优先遍历」、「01背包」、「KMP算法」以及常见的选择和排序算法都是经常使用的工具类算法。

3.**学会抽象题目**。笔试算法题不同于面试算法,不会直白跟你说要使用哪种算法去解答,更多的要自己学会抽象,抛开题目本身,要明白内部讲的是什么,别被题目的糖衣炮弹迷惑了。只有把题目抽象成最原始的算法你才能更好地使用工具类算法进行解答。

**八、如何准备头条面试?**

头条面试和其他大厂可能大同小异,但就是这个小异才是关键地方,能异于其他人的地方。可以从如下几个方面去做准备:

1.**特意准备几个面试题源码**。像我在回答一些中规中矩面试题的时候,都会从源码角度出发。比如常见的HashMap等集合类,多线程的各种锁以及大数据框架的部分源码。

2.**特意准备项目难点**。面一些大厂的时候避免不了被问到项目难点,不可能用普通Bug含糊过去啊。这边可以从项目用到的技术栈出发,去寻找技术栈在项目中会存在的难点,然后套进自己的项目,找个自己能懂,最好能全懂的。

3.**针对性去了解公司的技术栈使用情况**。比如头条使用Go,众人皆知,那为什么我不突击学习一下呢?比如从业内人士得知头条最早使用的是Kylin框架,后面慢慢转为ClickHouse,那我必须了解一下两者的不同啊,而且可以结合头条的业务场景。

**九、一个关于如何进大厂的小建议**

我一直崇尚「曲线救国」的做法,也一直在向别人传播这种做法。现在能力背景不足没关系,只要规划好自己的学习路线,一步步阶梯式往上爬,总可以实现目标。因为我自己二本出身,但我意识的早,大二就开始实习,用项目和实习经历弥补我背景不足,然后一步步走到「offer自由」。很多时候并不是只有巨人才可以成功,你只需要做到行动上的普通人,就可以超过很多思想上的巨人,行动上的矮子。
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
4月前
|
算法 Java 关系型数据库
2年5个月13天,从外包到拿下阿里offer,没想到屌丝也能有今天
不说太多废话,但起码要让你先对我有一个基本的了解。本人毕业于浙江某二本院校,算是科班出身,毕业后就进了一家外包公司做开发,当然不是阿里的外包,具体什么公司就不透露了,在外包一呆就呆了整整2年多,直到现在才从外包离开,如今拿到阿里的offer准备入职了。
|
4月前
|
消息中间件 NoSQL Java
经验分享:春招零Offer,5月份还有机会吗?
先说答案:**5 月份依然有拿到 Offer 的机会**。 ## 5月份春招结束了吗? - 对于应届大学生来说(也就是今年暑假毕业的学生),**5 月中旬春招就陆续结束了,但是 5 月份会有很多补录的机会**。 - 对于非应届的大学生来说(今年之后毕业的学生)来说,**5 月和 6 月正是在暑假最好的时机,尤其是 6 月份会有大量的暑假实习岗的招聘需求**。 - 对于社招的同学来说,5 月份之后岗位招聘的需求,相比于前两个月会有一个明显的减少,但依然会有招聘的需求,这就好比去景区旅游的人一样,节假日一定是最多的,但非节假日也会有一些人去逛。 ## 为什么会有补录? 因为有一些人可能拿到了很多
39 1
|
4月前
|
NoSQL 算法 Java
我从外包辞职了,10000小时后,走进字节跳动拿了offer
没有绝对的天才,只有持续不断的付出。对于我们每一个平凡人来说,改变命运只能依靠努力+幸运,但如果你不够幸运,那就只能拉高努力的占比。
好家伙!30% 国外程序员每天“摸鱼”四五个小时,国内似乎更严重
2020 年全球爆发新冠疫情后,很多国家和地区的企业支出远程办公,除了一些必须在现场办公的岗位之外,很多岗位的员工都可以居家办公。
|
4月前
|
设计模式 算法 NoSQL
Java开发三年四面字节跳动复习一个月斩获offer,寒冬并不可怕
目前互联网行业形势越来越严峻,我接连投递了很多的简历,得到的回复却是寥寥无几,索性好好复习了大概一个半月的样子,挑战字节跳动成功!!接下来分享我在字节面试遇到的面试题,欢迎大家文末留言与我一起讨论!
|
11月前
|
设计模式 NoSQL Java
栓Q了,大厂被强制毕业,空窗一个月死背八股文,还好拿到了Offer
作为Java程序员,选择学习什么样的技术?什么技术该不该学?去招聘网站上搜一搜、看看岗位要求就十分清楚了,自己具备的技术和能力,直接影响到你工作选择范围和能不能面试成功。
|
前端开发 Java 测试技术
秋招搞个保底offer再说,我换赛道了。
我是24届的应届生,大连某双非大四在读,Golang技术栈,秋招投了100多家公司了,面试有七八家,给机会的大厂也有,比如字节、京东就给机会了,但是都没抓住,都是一面就没后文了。。。 面试结束后,我反思了一下自己,感觉自己还是太差了,基础知识掌握的不够到位,很多问题都只能回答个七七八八,做不到深入叙述,我想主要原因是因为自己没有学,而是直接背的您的学习笔记,这就导致我根本无法对面试官的问题进行进一步延伸。
98 0
|
程序员
程序员成长第十四篇:把时间用在最重要的事情上
程序员成长第十四篇:把时间用在最重要的事情上
99 0
|
小程序 测试技术
这些可以帮你拿下offer的软件测试面试技巧,不要错过!
想要进入一家软件类公司,拿到软件测试这方面岗位的offer,除了专业的技术知识过硬之外,必要的软件测试面试技巧也是少不了的,那么测试人们在面试过程中又应该如何作答呢?
133 0
|
XML JSON 网络协议
上月成功拿到字节跳动offer,全靠我啃烂了这份最新面试题
前言 不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备,所谓不打无准备的仗就是这个道理,以下为大家,描述了从面试准备到最后的拿到offer提供了非常详细的目录,建议可以从头看是看几遍,如果基础不错的话也可以挑自己需要的章节查看。
上月成功拿到字节跳动offer,全靠我啃烂了这份最新面试题