时间过得飞快,一代又一代就这么成长了起来,曾经的 95 后备受争议,如今的 95 后进入社会,扮演着各行角色,成为了行业顶梁柱,今天,要分享的是自己的成长经历。今年 25 岁,毕业之后进入一家小型的互联网公司工作,名字就不说了,算是熟知的,在这家公司呆了三年,直至今年才有了跳槽的想法。

每个人都拥有大厂梦,我也不例外,在小公司待久了,感觉人会荒废掉,太轻松,没有压迫感。在众多大厂中,最终选择了字节跳动。“年轻、活力、富有激情”是我听到得最多对它的形容词,所以毅然决然,希望自己能够在这个舞台上展示出自己。

以下讲一下这次面试字节跳动的面试题,另外还对自己的面试做了一些总结,总结里含有一些学习方法和资料点击此处领取

字节面经:

字节跳动一面:

  • 实习项目就聊了差不多 30 分钟

  • 问了 MySQL 的索引

  • redis 的 string 类型

  • 为什么使用 RabbitMQ?

  • RabbitMQ 有哪些部件?如何保证准确性跟一致性?

  • hashcode 和 equals?

  • 动态代理

  • 快排

  • 无序数组计算每个位置大于前面的多少个数字(归并排序)

字节跳动二面:

  • 谈谈项目?

  • mongodb 底层原理或者数据结构是什么,务处理,插入和 mysq 有什么区别,为什么会慢

  • 如载过程(Java) ,每一步做了什么

  • 子类和父类的实例变量和方法有什么区别

  • 重载和覆盖区别,返回值类型不同,可以重载吗,为什么,底层如何实现的

  • java 多线程,状态图,画出来,阻塞的状态有哪几种,运行顺序,多线程的一些方法

  • java 泛型

  • ThreadLocal, Concurrent 下面的包,原理是什么,

  • AtomicInteger,原理是什么,如何做到高效率的,有什么优化措施

  • 悲观锁和乐观锁

  • @Transaction 的原理,还有比如在一个类中两个方法, -个是 B 方法,-个是 C 方法, B. 上没有注解,C 上

  • 有那么在外面调用 B**有事务,为什么,根据底层原理能不能推断出来(给提示问你能不能推断出来)

  • 查询学生成绩不及格的所有人的姓名和编号,根据这个语句,如何建立索引,为什么,

  • mysq 底层是什么,为什么效率高,主键能不能太大,为什么,如果太大,底层数据结构会不会变化,为什么

  • linux 查询 tcp 连接处理 CLOSE_ WAIT 的状态的数目

  • 了不了解 RabbitMQ, kafka, RocketMQ, ActiveMQ, 以及其他消息中间件

  • redis 为什么效率高,线程,数据结构,网络模型,aio, nio, bio, 为什么这么设计?如何处理高并发

字节跳动三面:

  • 数据仓库,雪花模型和星型模型区别和用处,数据仓库的过程(分层) ,如何设计

  • 数据仓库和数据湖的区别

  • 分布系统的设计,分布式系统 CAP,分布式系统的模型

  • linux 环境下的线上业务管理有没有,如何管理

  • redis 的集合有没有限制,限制是多少

  • redis 的 1w 条的插入和更新有什么区别

  • mysql join 的底层原理是什么,有哪几种(不是左右连接这种)

  • linux 命令查询一个文件内出现重复最多的数字的

  • linux 命令查询一个文件的行数

字节跳动 HR:

  • 自我介绍,对公司面试的评价,实习时间

  • 为什么转专业?

  • 你认为你有什么优点?有什么缺点?有什么兴趣爱好?

  • 在团队中习惯充当什么样的角色?

  • 遇到过比较困难的事情是什么?觉得自己很幸运的事情是什么?

  • 对于未来的规划?有没有使用过公司的其他产品?有没有转正想法?

  • 你还有什么想问的?

字节跳动面试题答案:


学习经验总结

(一)调整好心态心态是一个人能否成功的关键,如果不调整好自己的心态,是很难静下心来学习的,尤其是现在这么浮躁的社会,大部分的程序员的现状就是三点一线,感觉很累,一些大龄的程序员更多的会感到焦虑,而且随着年龄的增长,这种焦虑感会越来越强烈,那么唯一的解决办法就是调整好自己的心态,要做到自信、年轻、勤奋。这样的调整,一方面对自己学习有帮助,另一方面让自己应对面试更从容,更顺利。

(二)时间挤一挤,制定好计划一旦下定决心要提升自己,那么再忙的情况下也要每天挤一挤时间,切记不可“两天打渔三天晒网”。另外,制定好学习计划也是很有必要的,有逻辑有条理的复习,先查漏补缺,然后再系统复习,这样才能够做到事半功倍,效果才会立竿见影。

(三)不断学习技术知识,更新自己的知识储备对于一名程序员来说,技术知识方面是非常重要的,可以说是重中之重。要面试大厂,自己的知识储备一定要非常丰富,若缺胳膊少腿,别说在实际工作当中,光是面试这一关就过不了。对于技术方面,首先基础知识一定要扎实,包括自己方向的语言基础、计算机基础、算法以及编程等等。

结合自身的一个学习经历,总结了一套非常系统的复习包,包括思维脑图、Java 基础知识、Spring 全家桶、数据结构、分布式、网络、操作系统等等。当然,这些复习资料可以给大家参考一下,这些已经整理成了完整的 pdf

01 Java 核心知识点学习笔记:笔记里的知识点非常齐全,囊括了 JVM、锁、并发、Java 反射、Spring 原理、微服务、Zookeeper、数据库、数据结构等大量知识点,每一个知识点都有非常详细的解析,这本万能宝典在手,不信还有搞不懂的面试题!


02 手撕架构技术篇

该篇内容囊括了以下专题的高频面试题、实战文档以及使用总结。


03 最新大厂面试专题

这个题库内容是比较多的,除了一些流行的热门技术面试题,如 Spring、微服务、MySQL、redis 等,还包括 Dubbo、Kafka、ZooKeeper 等,另外关于算法的内容也有,如 LeetCode、算法的乐趣等。


04 实战电子书

关于实战,我想每一个做开发的都有话要说,对于小白而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。**目前,我手头上整理到的电子书还算比较全面,Spring、SpringBoot、SpringMVC、SpringCloud、JVM、并发编程技术、Redis 相关、MySQL 调优、Tomcat、ZooKeeper 等高级技术都囊括其中。


写在最后

学习永不止步,大厂有你有我!

最后提醒:以上整理的所有 PDF,均点击此处领取