写点什么

从简历被拒, 到拿下头条面试, 我花了一年的时间 (经验分享 + 面试题)

用户头像
Android架构
关注
发布于: 2 小时前

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


③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.**特意准备了几个


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


项目技术难点**,能在面试的时候炫一下。


四、头条一面(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 等集合类,多线程的各种锁以及大数据框架的部分源码。

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
从简历被拒,到拿下头条面试,我花了一年的时间(经验分享+面试题)