开发 5 年!三面字节,成功拿到 27k*17offer,原来也没那么难
一、为什么跳槽?
我做后端五年多了,同很多人一样,我大学的专业和程序员这个行业没有任何的关系。毕业后,很迷茫,就做了门槛相对来说较低的服务行业,之后,就一个偶然的机会接触了程序员这个行业,之后便开始了我长达五年多的后端开发工作。
我之前在一家中型的互联网公司工作,技术一直还算可以,一年前,随着年纪的增长,有了家庭的压力,便开始想着提升自己,想让自己到达一个新的高度,而且大厂的话不论是管理还是工作氛围都是可以帮助到自己的。
接下来就是跟大家分享一下我的字节面试经历,希望对即将在金九银十跳槽的朋友有所帮助,请大家耐心看下去。
文章中会分享一些我自己整理的一些面试“面试真题+Java 成长笔记+技术官实战笔记+电子书”,希望能对大家有一定的帮助,需要的朋友可以添加上我的小助手 vx:bj070701 即可免费获取!
二、开发 5 年!三面字节,斩获 27k*17offer!
1、字节一面(都是相对比较浅的问题):
自我介绍
项目介绍
项目问到 token,说一下
项目如何实现的,如果多终端呢(这里我回答的不是很流畅)
还可以存放在哪里 session
cookie 是什么
为什么当时没有实现(我直接回答的因为不会)
正整数开根,保留两位小数
JMM 说一下(开始背书)
说到线程,那么线程是属于那块区域的
GC 说一下(开始背书)
有用到 hashmap 吗?实现?
是线程安全的吗?
想要线程安全怎么办?
为什么使用红黑树
红黑树特性
和平衡搜索二叉树的区别
时间复杂度?
在浏览器输入一个网址会发生什么?(又开始背书了)
TCP/IP 模型和 OSI 模型
用过索引吗
怎么样确定使用到了索引
索引类型
为什么用 B+树
和 B 树有什么区别
聚簇索引和非聚簇索引
有用过锁吗
说一下 lock 和 synchronized 的区别
代码题:手写一个单例模式吧(默写)
看到有 volatile 关键字
说一下 volatile 吧
和 synchronized 的区别
乐观锁和悲观锁
反问环节
到这里一面就结束了,总体上来说还算是可以,只是有少部分的点有些遗忘所以导致答得不太流畅,一面没有问到计网和多线程,操作系统相关的知识,后续面试可能会是重点。
2、字节二面(相对来说还是有点难度的):
刚看到这位面试官,我就觉得是一位大佬,不是根据发量判断的哈哈,而是身上带有一股大佬的气质,后续的面试也证明了我的猜想。
自我介绍
你觉得自己相比一年前进步了多少
算法题:编辑距离
你使用的是什么版本的 jdk?(我说的是 1.8,然后还问了我 1.6 和 1.7、1.8 的差别)
HashMap 和 HashTable 的区别是什么
那么 HashMap 有没有线程安全的版本
如何实现的?
说到使用到了 mysql 问索引
索引数据结构
为什么要用 B+树
聚簇索引和非聚簇索引 (一开始说反了,后来突然意识到)
B+树叶子节点链表一定是放的是 key 和值吗?
怎么去分配聚簇索引和非聚簇索引
为什么这么去分配呢
你的项目有很大的量级吗,有做过数据库优化吗
然后问 int 存到数据库里面一般你都用什么类型来接
顺着问 varchar(35)的含义
又问了中文在 varchar 中占几个字符
还问了你在项目里有注意过这个编码问题吗
讲一下 redis 的优点
3、字节三面:
计算机网络:
TCP UDP 相关知识,握手挥手之类的
Https 建立连接的过程
状态码
重定向转发区别
数据库:
索引的知识
ACID
事务并发的问题解决方法等
还有一些不太记得了
Java:
简历上写的用的 java 比较多,问了不少 java
String 创建对象
==equals 区别
垃圾回收机制
设计模式
lambda
intern
java 内存模型
线程池操作,参数等
算法题:
第一题:是输入一个数组,返回数组内数字能组成的最大数。
[1,3,5] = 531
[1,10,45] = 45110
类似上面这样
第二题:是输入每个课程之间的关系,比如 1->2,表示学习课程 2 需要先学习课程 1,每轮学习课程 项目不限,问最快几轮学习完之类的。
这题只让说了思路,面试官说就是想看看怎么解决吗不需要写代码。
第三题:蛇形或者说之字形遍历二叉树。
总的来说问得还算简单都是常规题,感觉运气不错哈哈。
三、学习笔记分享
1、面试真题笔记
这一年来,除了平时工作经验的积累,自己不断地在学习也是积累了不少的笔记,可以分享给大家,需要完整版的朋友可以添加上我的小助手 vx:bj070701 即可免费获取!
Java 基础面试题:
Dubbo 面试题含答案:
Mybatis 面试题及答案:
JVM 面试题及答案:
Redis 面试题及答案:
Java 面试问题集:
java 基础部分
算法与编程
html&JavaScript&ajax 部分
Java web 部分
数据库部分
XML 部分
流行的框架与新技术
软件工程和设计模式
j2ee 部分
EJB 部分
webservice 部分
EJB 部分
还有很多就不一一做展示了,希望对即将在金三银四面试的朋友们有所帮助。
2、技术学习笔记:
2.1、Java 成长笔记(JVM+Java 集合+Java 多线程开发+Java 基础+spring 原理+微服务+netty 与 rpc+网络+日志+zookeeper+kafka+rabbitmq+Hbase+MongoDB+Cassandra+设计模式+负载均衡+数据库+一致性算法+Java 算法+数据结构+加密算法+分布式缓存+Hadoop+Spark+Storm+YARN+机器学习+云计算)
JVM(线程+Jvm 内存区域+Jvm 运行时内存+垃圾回收与算法+Java 四种引用类型+GC 分代收集算法 VS 分区收集算法+GC 垃圾回收器+Java io/nio+JVM 类加载机制)
Java 基础(Java 异常分类及处理+Java 反射+Java 注解+Java 内部类+Java 泛型+Java 序列化+Java 复制)
微服务(服务注册发现+API 网关+配置中心+事件调度+服务跟踪+服务熔断+API 管理)
Kafka(kafka 概念+kafka 数据储存设计+生产者设计+消费者设计)
数据库(储存引擎+索引+数据库三范式+数据库是事务+储存过程+数据库并发策略+数据库锁+分区分表+两阶段提交协议+三阶段提交协议+柔性事务+CAP)
还有很多技术大牛的学习笔记保存在我的电脑里,已经为了大家整理好了,需要的朋友可以添加上我的小助手 vx:bj070701 就可以免费获取了!
四、结尾
这次的面试分享就到这里了,不敢很确定的说对大家帮助有多大,但是多多少少都是有些帮助的。
我觉得氛围真的很影响一个人,之前在小公司的时候,不管是工作氛围,还是身边的人,给我传达的氛围就是消极的,让我没有动力去提升自己,哪怕自己有想法,也会很拖延。如果你正处于这种氛围,一定要跳脱出来,然后持续地去努力,你会发现其实进入大厂真没那么难。
希望大家可以点赞+转发支持一下!谢谢!
评论