点击蓝色“五分钟学算法”关注我哟

加个“星标”,一起学算法

作者 | 无精疯

来源 | 大数据肌肉猿

今天分享一篇好友的面试经验给大家,他在文中总结的 积累工具类算法 来准备大厂的算法面试小吴觉得对大家很有帮助!

一、印象中的头条

二、面试背景

三、准备面试

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

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

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

七、如何通过头条笔试?

八、如何准备头条面试?

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


一、印象中的头条


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 小表优化,如何处理数据倾斜?

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

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

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

8.MR shuffle,Spark shuffle。

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

10. 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自由」。很多时候并不是只有巨人才可以成功,你只需要做到行动上的普通人,就可以超过很多思想上的巨人,行动上的矮子。

END

 原 创 热 文 推 荐 

☞毕业十年后,我忍不住出了一份程序员的高考试卷

☞一道腾讯面试题:厉害了我的杯

☞十大经典排序算法动画与解析,看我就够了!(配代码完全版)

☞这或许是东半球分析十大排序算法最好的一篇文章

☞面试官,我会写二分查找法!对,没有 bug 的那种!

你点的每个“在看”,我都认真当成了喜欢

从简历被拒到收割今日头条 offer ,我花了一年时间相关推荐

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

    点击上方石杉的架构笔记,右上选择"设为星标" 每日早8点半,精品技术文章准时送上 往期文章 BAT 面试官是如何360°无死角考察候选人的(上篇) 每秒上万并发下的Spring C ...

  2. 从简历被拒到收割今日头条offer,我花了一年时间

    点击上方"何俊林",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 图/ 阿曼苏丹国 文/ 大数据肌肉猿 作者/ 无精疯 一.印象中的头条 1.老板张一鸣跟我是福建老乡,龙 ...

  3. 从简历被拒到收割今日头条Offer

    作 者:无精疯 来 源:大数据肌肉猿 广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶.导致用户接受文章不及时.您可以打开订阅号,选择置顶(标星)公众号,重磅干货,第一时间送达! 一. ...

  4. 从简历被拒到收割今日头条offer经验总结

    一.印象中的头条 二.面试背景 三.准备面试 四.头条一面电话面(Java+项目) 五.头条二面视频面(大数据+项目) 六.头条三面视频面(算法+场景题) 七.如何通过头条笔试? 八.如何准备头条面试 ...

  5. 从简历被拒到收割 8 个高薪 offer,我用了 3 个月成功破茧成蝶

    半年前我一个小老弟从外包离职了,本以为有两年经验进个一般的公司没有问题的,结果人家一看是外包出来的,面试问的问题也不是很懂,简历被拒了好几次.还好这个小老弟没有气馁,在论坛博客和里面的大佬虚心学习,还 ...

  6. 破茧成蝶—从简历初投被拒到收割5个offer,我花了3个月时间...

    以下来自一位我身边朋友的投稿,对这位朋友的经历我也是深表佩服的,下面是他前不久某大厂面试的一次经过,小编我也是用第一人称的口吻来给大家展示一下他的面经吧 1 .自我介绍 2 .Java 基础 java ...

  7. 从简历被拒到收割8个大厂offer,我用了3个月成功破茧成蝶

    五一小长假已经结束了,不知道大家还有没有想着五一之后再次突击面试一下,其实不一定要跳槽,出去面试也是为了了解市场行情,不然老是沉迷于加班和增删改查,真正出去面试的时候发现自己成了井底之蛙... 为了避 ...

  8. 从外包公司到今日头条offer,吐血整理

    前言 疫情一过,我相信将会是面试求职的高峰时期,如果此时手里有份高质量的面试宝典,那么你将得心应手面对考官各种问题.虽然不敢保证你能应聘上心仪的职位,但是能保证看完这些内容你的收获将超乎你的想象! 此 ...

  9. 从外包公司到今日头条offer,帮你突破瓶颈

    背景 在深度使用 Flutter 开发过程中,我们遇到了业务代码耦合严重,代码可维护性糟糕,如入泥泞.我们需要一个统一的应用框架来摆脱当下的开发困境,而这也是 Flutter 领域空缺的一块处女地. ...

最新文章

  1. 机器学习:论相关(一)
  2. flutter控制显示隐藏_leaflet中如何通过透明度控制layerGroup的显示隐藏
  3. C# 与 Unity 同名函数
  4. Spring Boot(2.1.2.RELEASE) + Spring Cloud (Finchley.RELEASE)搭建服务注册和发现组件Eureka
  5. 《深入理解OSGi:Equinox原理、应用与最佳实践》一2.2 Bundle
  6. 使用Netbeans开发App Engine Java
  7. 无需写try/catch,也能正常处理异常
  8. malloc/free 和 new/delete的联系和区别
  9. python3 open函数_Python3 open函数
  10. Python 语言程序设计(2)基本图形绘制
  11. 【游戏王arc-v卡片力量SP改名字ID教程】
  12. Python学习 Day26 JS循环语句(二)
  13. 汽车以太网测试之UpperTester
  14. 【MySQL基础教程】事务详细介绍
  15. 未来计算机网络在医学上的发展,论述计算机网络技术在医学技术中的发展和作用.doc...
  16. android 修改默认壁纸
  17. 【机器学习】算法原理详细推导与实现(七):决策树算法
  18. 探索路上永不止步:区块链驱动广告透明和安全
  19. Python编程PTA题解——查验身份证
  20. 【干货】外贸业务员的客户开发信为什么总是进老外垃圾邮箱?

热门文章

  1. 【MAYA动画基础 2】Maya+AdvancedSkeleton蒙皮绑定
  2. 饿了么拿什么留住年轻人?
  3. 苹果x屏幕多少钱_iphone7plus屏幕失灵,7p换屏幕多少钱
  4. 杭州入局无人驾驶,你的城市开始无人驾驶测试了吗?
  5. 苹果手机怎么添加QQ邮箱?
  6. 解决Tomcat无法启动的问题
  7. Micromine.v10.0.5-ISO 1CD矿山软件
  8. autocad.net 画多段线_解决AutoCAD2014绘制多段线的详细教程--系统之家
  9. POJ2394 Checking an Alibi ——最短路
  10. uniapp ios原生插件引入图片等资源文件方式