金九银十期间成功斩获 58 万 Offer!六面字节跳动面经(成功关键:吃透九大核心知识+狂刷大厂面试真题)
第一轮:团队面试
第一轮基本上是你的团队成员面试你,是和你同级或者高你一个 P 的师兄来面你,我的话基本没问什么特别的,主要还是讲自己简历上的做的项目,这里需要你很熟悉自己的项目才行,我个人觉得这里你要把项目里你的角色做了什么没做什么讲清楚,然后最好能把自己做的那部分重点展开来讲,然后面试官会从你讲的内容里挑一些具体来问你,这部分就因人而异了,知道的说不知道的别瞎说。最后还会问你一些什么 TCP/UDP 啊、网络模型啊之类的基础知识。我是觉得这一面只要你项目靠谱、不吹牛逼、底子扎实,过一面应该都不是问题。
第二轮:主管面试
这一面其实跟第一面差不多,就是你的师兄们筛完简历了,然后到你的主管来面试你了而已。这一面我的面试官还是让我主要介绍简历(可能因为我是社招,有项目经历他们比较感兴趣吧),然后我就又讲了一遍,因为我一面完了之后有思考过,所以这一次基本上上次没有讲到或者讲得不好的地方这次我都有注意,基本讲的还行。然后接下来依旧是根据你讲的东西来挑重点的来问,这部分真的没有什么固定套路,都是他们听见啥感兴趣的就会问你是“怎么实现的,为什么这么实现,有没有更好的实现方式”这三个问题,这一回除了你要对自己项目足够熟悉之外,还要求你对你做过的东西要有思考才行,你要是现想,那肯定是不靠谱的。这一轮对面最少都是 P8 级别的人了,千万可别不懂装懂的乱说呀。还是那句话,知之为知之,不知为不知,是知也。
第三轮:交叉面试
这一面基本是找个其他部门和你将来的主管平级的 leader 来面你一遍,防止前面自己部门面试作弊嘛,基本套路和二面差不多,但是会多问你一些基础知识和编程能力上的事,主要还是以考核你为目的,肯定不是为了难为你的,所以,好好加油表现出你自己就行。
第四轮:代码面试
这一面据我后来的师兄讲本来是二面,是想省了的,但是后面由于流程规定,又给我加回来了,所以我就经历了一次在线笔试的面试。这一面的面试是给你一个在线网站,然后你和你的面试官一起登陆上去,共享 web 页面,然后他给你出题,你来现场写代码,伪代码就行,然后你再给他讲一遍你的逻辑就 ok 了。这一面没什么好讲的,写代码嘛,是骡子是马拉出来溜溜咯。出的题不会很难,我答的是两道,一道给我半小时,第一道是给你一个 shell 命令,执行的功能大概就是读取一个日志文件,然后根据日志里的某一字段排序,然后取前五,输出。大概考点就是:
1.你得读懂这个有 cat、有 awk、有 sort 等等猛地一看还挺长的 shell 命令;
2.实现它;
3.时空间复杂度/效率;
4.讲清楚。
第二道题目是反转字符串,大概就是把字符串“123456789”从中间分开,然后分别反转,然后输出,输出结果是“432159876”。大概考点就是:
1.实现它;
2.时空间复杂度/效率;
3.讲清楚;
4.尝试给出优化方案;
大概就是这种类型的题,肯定不会重复的,师兄说很可能就是他们最近写代码遇到的问题,就直接拿来问你了,所以也没什么固定套路,你也不用临时抱佛脚的刷题,随缘就好。
第五轮:boss 面试
到这一面的时候基本就稳了,当然我也见过挂的。这一面就是你的主管的主管来面你了,我当时还是先讲项目,然后挑重点的问,不过和二三面明显的区别就是他会问你更高层次的解决方案,不再拘泥于你做的那一点东西,会让你从整体上或者部分整体上讲清楚你项目的解决方案以及你自己的思考(上面的那三个问题),会让你尝试给出更好的解决方案,并解释原因。我个人感觉这一面更多的是考验你的全局观,你要是一直拘泥于自己的小天地,那估计会吃亏的。当然,面试分人的,有的非技术出身的主管就是和你聊聊天谈谈人生理想什么的,你要是不 match 也会被淘汰。
第六轮:HRG 面试
如果你能面到这一面那你基本 99%拿到 Offer!主要就是和你谈人生、谈理想、谈三观、谈薪资,只要你不反人类、不扯淡,就 OK。
把自己的面试经历分享出来之后,很多朋友都问我有没有什么学习方法,其实除了自己的所需要的掌握的技术之外,面试过程中一些技巧和一些面试题也是必不可少的!可以分享给大家一条自己刷的面试题,里面涵盖了:Java 基础、JVM、多线程与高并发、spring、springMVC、MyBatis、SpringBoot、SpringCloud、微服务、数据库、网络底层、TCP、数据结构与算法等等以及一整套的大厂面试真题!
Java 九大核心知识点总结
这份笔记总共九大部分,涵盖了 Java 小白到 Java 架构师层面的面试知识点总结,作者承诺:这份笔记 100%免费获取!因为这份笔记的知识点太多,小编没办法为大家全部完整的展示出来。
- 第一部分 扎实的 Java 基础 (Java 基础+容器+并发+JVM)
- 第二部分 网络知识(计算机网络技术+HTTPS 中的 TLS)
-
第三部分 Linux
-
第四部分 数据结构与算法
- 第五部分 数据库(MySQL+Redis)
-
第六部分 系统设计(RestFul API+常用框架+认证授权+分布式+大型网站架构+微服务)
-
第七部分 必会工具(Git+Docker)
-
第八部分 面试指南(简历应该如何写+如何准备面试+我的学习方法)
第一部分 Java
(一). 基础
1. Java 基本功
- Java 入门(基础概念与常识)
-
Java 语法
-
基本数据类型
-
方法(函数)
2. Java 面向对象
-
类和对象
-
面向对象三大特征
-
修饰符
-
接口和抽象类
-
其它重要知识点
3. Java 核心技术
-
集合
-
异常
-
多线程
-
文件与 I\O 流
(二). 并发
1. 并发容器
- JDK 提供的并发容器总结
-
ConcurrentHashMap
-
CopyOnWriteArrayList
-
ConcurrentLinkedQueue
-
BlockingQueue
-
ConcurrentSkipListMap
2. 线程池
-
使用线程池的好处
-
Executor 框架
-
(重要)ThreadPoolExecutor 类简单介绍
-
(重要)ThreadPoolExecutor 使用示例
-
几种常见的线程池详解
-
ScheduledThreadPoolExecutor 详解
-
线程池大小确定
3. 乐观锁与悲观锁
- 何谓悲观锁与乐观锁
-
乐观锁常见的两种实现方式
-
乐观锁的缺点
-
CAS 与 synchronized 的使用情景
(三). JVM
1. Java 内存区域
- 概述
-
运行时数据区域
-
HotSpot 虚拟机对象探秘
-
重点补充内容
2. JVM 垃圾回收
- 揭开 JVM 内存分配与回收的神秘面纱
-
对象已经死亡?
-
垃圾收集算法
-
垃圾收集器
3. JDK 监控和故障处理工具
- JDK 命令行工具
-
JDK 可视化分析工具
注:含答案 ! 篇幅有限,已整理到网盘 ,需要的朋友 戳此传送门 即可获取 希望对你有帮助~~
面试指南
(一). 程序员简历该怎么写
- 为什么说简历很重要?
-
下面这几点你必须知道
-
必须了解的两大法则
-
项目经历怎么写?
-
专业技能该怎么写?
-
排版注意事项
-
其他的一些小 tips
(二). 如何准备面试
- 如何获取大厂面试机会?
-
面试前的准备
-
面试之后复盘
-
如何学习?学会各种框架有必要吗?
(三). Java 学习路线和方法推荐
- Java 基础
-
操作系统与计算机网络
-
数据结构与算法
-
前端知识
-
MySQL
-
常用工具
-
常用框架
-
多线程的简单使用
-
分布式
-
深入学习
-
微服务
-
总结