热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从简历被拒到收割今日头条offer,我用一年时间破茧成蝶!

每日早8点半,精品技术文章准时送上

点击上方 石杉的架构笔记 ,右上选择“ 设为星标

每日早8点半,精品技术文章准时送上

往期文章

BAT 面试官是如何360°无死角考察候选人的(上篇)

每秒上万并发下的Spring Cloud参数优化实战

分布式事务如何保障实际生产中99.99%高可用

记一位朋友斩获 BAT 技术专家Offer的面试经历

亿级流量架构系列之如何支撑百亿级数据的存储与计算

来源:大数据肌肉猿

本文是 无精疯 同学投稿的面试经历

在此感谢 无精疯 同学的分享

目录:

1. 印象中的头条

2. 面试背景

3. 准备面试

4. 头条一面(Java+项目)

5. 头条二面(大数据+项目)

6. 头条三面(算法+场景题)

7. 如何通过头条笔试?

8. 如何准备头条面试?

9. 一个关于如何进大厂的小建议

一、印象中的头条

先说说我印象中的今日头条:

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

2. 给的钱多,笔试也贼难 。参加过头条笔试的同学都知道,头条笔试可以笔试三次,就是不论你有没有参加都有三次机会。

笔试就5道算法题,两个小时,去年第一次看到算法题就自闭了,第一次挂了。第二次又很认真地做,做到一半放弃了。没过几天又邀请我做第三次,有一种强行被侮辱的感觉。

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

从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!

二、面试背景

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

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

从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!

2.正好在健身房认识了一个在抖音做数仓的小leader,我觉得这是天意啊。于是免费给他上了节私教课(ps:本人业余爱好健身,颇有心得),上完让他帮忙内推。

三、准备面试

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

为避免误导大家,这次也不做标题党,写了准备一年,踏踏实实干事。

从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!

都是比较不错的书单

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

一月:

大数据入门。整个一月份都在刷入门视频和《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,我用一年时间破茧成蝶!

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

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

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

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

四、头条一面

(Java+项目)

头条一面的面试题,主要focus在java和项目,下面我列举了一些我还记得的,给大家看看:

  • 讲讲倒排索引的原理? 讲讲 redis 里面的哈希表?happen-before的规则?

  • volatile修饰符,synchronize锁,聊一下你对它们的理解?

  • java单例模式的实现,懒汉、饿汉? 进程与线程的区别,多进程和多线程的区别?

  • HashMap原理,为什么用红黑树,红黑树的特点? 快排时间空间复杂度,最好最坏的情况,优化方案?

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

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

  • 了解Go语言吗?

五、头条二面

(大数据+项目)

二面重点则转移到了大数据,针对大数据相关的技术的各种问题,炮火依旧猛烈:

  • Kylin的项目架构?Paxos和ZAB协议, CAP理论,分区容错性的意义?

  • HDFS的读取、写入,容错处理(从源码级别解释),N amenode HA,脑裂,Yarn的调度机制。

  • 大表Join小表优化,如何处理数据倾斜? 讲一下最大堆和最小堆

  • MapReduce的过程(第一版和第二版的)、MapReduce shuffle,Spark shuffle。

  • Hive的内部表和外部表区别、数仓建模模型、数仓分层、雪花模型和星型模型。 了解ClickHouse吗?它与Kylin的区别?

六、头条三面

(算法+场景题)

三面就来算法了,总得来说还好,没有遇到变态级别难度的题目:

  • LRU算法实现(伪代码) 链表倒数第K个数(讲思路)

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

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

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

七、如何通过头条笔试?

这次的笔试里总共有5道,我AC了2.5题,第一题90%,第二题90%,第三题70%,不算好,但勉强通过了。

去年的这个时候我可是连题目都看不懂的,看得懂的只知道用嘴怎么说,不会用代码实现。

通过这段时间的算法训练,总结了如下几点算法笔试经验:

1. 平时刷题一定要总结归纳,最好分类

比如关于树的题型,链表的,数组等等,观察它们的解题思路,总结出解题套路。

2. 积累 工具 类算法

什么叫工具类算法?就是你解一道算法题需要用到另一种算法,这个被调用的算法就是解决这道算法题的工具。

比如常见的「深度优先遍历」、「广度优先遍历」、「01背包」、「KMP算法」以及常见的选择和 排序 算法都是经常使用的工具类算法。

3. 学会抽象题目

笔试算法题不同于面试算法,不会直白跟你说要使用哪种算法去解答,更多的要自己学会抽象。

你需要抛开题目本身,要明白内部讲的是什么,别被题目的糖衣炮弹迷惑了。只有把题目抽象成最原始的算法你才能更好地使用工具类算法进行解答。

八、如何准备头条面试?

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

1. 特意准备几个面试题源码

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

2. 特意准备项目难点

面一些大厂的时候避免不了被问到项目难点,不可能用普通Bug含糊过去啊。

这边可以从项目用到的技术栈出发,去寻找技术栈在项目中会存在的难点,然后套进自己的项目,找个自己能懂,最好能全懂的。

3. 针对性去了解公司的技术栈使用情况

比如头条使用Go,众人皆知,那为什么我不突击学习一下呢?

比如我从业内人士得知头条最早使用的是Kylin框架,后面慢慢转为ClickHouse。

那既然这样, 我必须了解一下两者的不同啊,而且还可以结合头条的业务场景来进行了解。

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

我一直崇尚「 曲线救国 」的做法,也一直在向别人传播这种做法。

现在能力背景不足没关系,只要规划好自己的学习路线,一步步阶梯式往上爬,总可以实现目标。

因为我自己二本出身,但我意识的早,大二就开始实习,用项目和实习经历弥补我背景不足,然后一步步走到「 offer自由 」。

很多时候,并不是只有巨人才可以成功,你只需要做到行动上的普通人,就可以超过很多思想上的巨人,行动上的矮子。

END

如有收获,请划至底部,点击“ 在看 ”,谢谢!

推荐阅读:

  • 简历写了会Kafka,面试官90%会让你讲讲acks参数对消息持久化的影响!

  • 面试最让你手足无措的一个问题:你的系统如何支撑高并发?

  • Java高阶必备:如何优化Spring Cloud微服务注册中心架构?

  • 高并发场景下,如何保证生产者投递到消息中间件的消息不丢失?

  • 从团队自研的百万并发中间件系统的内核设计看Java并发性能优化!

  • 如果20万用户同时访问一个热点缓存,如何优化你的缓冲架构?

更多文章:

  • 2018年原创汇总

  • 2019年原创汇总(持续更新)

  • 爆款推荐

  • 面试专栏

欢迎长按下图关注公众号 石杉的架构笔记

从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!

BAT架构经验倾囊相授

从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 我们


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
author-avatar
mobiledu2502885993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有