• 一个应届生拿字节跳动offer的努力,整整用了一年的时间


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

    一个应届生拿字节跳动offer的努力,整整用了一年的时间

     

    以下

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

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

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

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

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

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

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

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

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

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

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

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

    总结:

    一定要列好自己的学习计划,也要学会根据自己的学习情况调整计划。项目是面试的敲门砖,也是面试的大头,我是从大二出去实习的,所以在项目这边可以花较少的时间,不用从零开始学。底层理论一定要会,不然大厂无望。算法一定要硬刚,总共就那几种题型,我刚开始也很抵触的,觉得太难了,后面迎难而上也就那么回事。第一遍不行就第二遍,不然就第三遍,直到现在剑指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 + 最大堆)


    总结:

    我一直崇尚「曲线救国」的做法,也一直在向别人传播这种做法。现在能力背景不足没关系,只要规划好自己的学习路线,一步步阶梯式往上爬,总可以实现目标。因为我自己二本出身,但我意识的早,大二就开始实习,用项目和实习经历弥补我背景不足,然后一步步走到「offer自由」。很多时候并不是只有巨人才可以成功,你只需要做到行动上的普通人,就可以超过很多思想上的巨人,行动上的矮子。

    写在最后

    我把学习资料都整理在网盘了,获取方式:点击链接《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

  • 相关阅读:
    location.href
    网络载入数据和解析JSON格式数据案例之空气质量监測应用
    概率dp HDU 3853
    poj2031-Building a Space Station(最小生成树,kruskal,prime)
    在JS数组指定位置插入元素
    leetcode
    leetcode笔记:Range Sum Query
    最优解算法的讨论
    NYOJ_77 开灯问题
    C++调用Lua的性能測试
  • 原文地址:https://www.cnblogs.com/xiaoyusheng/p/13433500.html
Copyright © 2020-2023  润新知