双非渣本后端,三个月逆袭字节,入职那天“泪目”了
个人背景情况
2017 年毕业于一所不知名双非本科大学,毕业时就有着一颗想进大厂的心,但又想留在成都,不愿意去北上广,现在其实相当后悔。当年在成都的大厂少之又少,再加上校招时非常努力地玩耍,导致投的几个大厂面试都全部挂掉。也错失了进大厂最好的机会,所以我奉劝大三的同学如果对自己的职业有追求,有进大厂的梦想,在大三的时候一定要好好准备,在校招的时候拿 offer。
最后我在成都一家本地科技公司做了 Java 开发,中间也跳过一次槽,也是做的 Java。但这几年时间里总感觉公司能给的成长太慢,虽然自己也在学习,还是免不了焦虑,特别是像自己这种学历和公司背景都一般的程序员,要保证自己以后不被淘汰,必须得做点什么。所以在听到一个前同事被公司裁掉,最后进入大厂这个事情之后,彻底点燃了我心中想进大厂的那把火,我也准备内推试试字节跳动。
因为疫情原因,很多企业生存困难。我也保持了理智,没有辞职进行面试。而是给自己制定了学习计划,不得不说,在职的情况下复习确实很难,因为可能加班打乱计划。于是我把所有能利用的个人时间全部利用了起来,比如早上十点上班,我六点钟就会起床,刷两个小时 LeetCode,八点钟洗漱之后去上班。晚上如果有时间就会把早上刷过的题拿出来继续复习,花了两个月的时间,一边复习(预习)数据结构,一边做题,LeetCode 上面的高频题基本都过了一遍。花了那么多时间刷题,都是因为自己算法太菜,以前没有进行专门的练习。题做得差不多之后,就开始复习专业知识了,具体内容我都会总结出来。前前后后准备了三个月,我才敢进行内推,经历了八次面试之后,面试时间又持续三个月,皇天不负有心人,终于在这个月等到了 oc。
下面是面试内容,时间太久了,可能记得不太全,但基本上包含了所有问题,白天上班,我都是选择晚上进行面试,哈哈
一面 A 部门
讲项目,串起来讲,可能遇到的问题,怎么解决,怎么实现,讲了发送客服消息
Spring 里面的 bean 怎么回事
HashMap 和 ConcurrentHashMap,HashMap 中的红黑树,两者 rehash 的区别
Mysql 的一致性是什么,数据库 redolog,undo log,MySQL 的索引结构,为什么二级索引叶子节点不能直接存储行数据的指针,这样可以不回表,怎么考虑的?
redis里面的 zset,跳表怎么实现,怎么增删,
redis是怎么 rehash 的
二面 A 部门
自我介绍
再一次聊项目,功能,架构,角色,量级
Spring 里面有哪些设计模式
SpringMVC 和 SpringBoot 有什么区别
SpringBoot 的自动配置是怎么实现的
刚刚你说了线程池,你线程池是用的什么,参数有哪些,为什么这么设置
线程池核心线程满了怎么办,里面的阻塞队列是干什么的
说说 ThreadLocal 是什么
CAP 理论知道吗,为什么不能同时满足
Redis 里面的数据结构有什么场景
Redis 怎么实现锁(redis锁的所有坑都说了一遍)
分布式事务知道吗,有哪些方案(说了 2PC,3PC,TCC,MQ)
有什么要问我的
三面 A 部门
这个面试官是个 leader,比较强势,很多细节回答的不是很好,所以脸色一直不好,给人压力较大,面完就觉得凉了。果然面完之后和前两次不一样,HR 那里就没有任何通知了,到这里还是很失落,准备了那么久,因为最后一面没表现好导致挂掉。之后等了一个月,这一个月没有任何消息,一个月过后又接到字节 HR 的电话,说我之前两面面评都不错,让我试试他们部门,我就同意了。
一面 B 部门
介绍项目,细节
怎么做服务拆分,边界怎么划分的
分布式之后会遇到什么问题,CAP 的各个情况介绍一下
dubbo 调用过程是怎样的,PB 知道吗
thrift 了解过吗
zk 介绍一下,有哪些节点类型,特点
怎么知道项目中接口的重要性,怎么做监控,你说的自动化测试是怎么做到的(这个问题回答完,他笑了。。。)
你所理解的 SLA 是什么,要达到什么等级
说说你理解的 k8s
nginx 的 upstream 是干什么的
nginx 有哪些负载均衡策略
算法题:岛屿数量
你有什么问题要问我
二面 B 部门
介绍项目,细节
锁有哪些实现方式
分布式锁的实现方式
JVM 的内存模型,垃圾回收算法
MySQL 的事务介绍,ACID 的实现原理是什么(想问 MySQL 的日志)
HashMap 的原理,其他线程安全的 Map
Redis 的高可用,有哪些持久化方式
Redis 的数据结构,线程模型
用过什么消息队列,有什么特点
怎么保证消息幂等消费
docker 的网络模式
提问
三面 B 部门(交叉面)
介绍项目,细节
Linux 的内存管理
浏览器打开一个网站的过程中会经历哪些网络处理,DNS 的具体过程是啥
zk 是什么分布式模型(想问的 CAP 定理),主从怎么做选举
zk 只有一个主节点,写性能不高,zk 怎么解决的
etcd 或 consul 知道吗
多个服务中如何快速排查问题
Redis 中的淘汰方式有哪些,Redis 性能高的原因是啥
docker 的实现原理
四面 B 部门 (leader 面)
介绍项目,细节
项目量级多大,QPS 最高的接口是怎么做的
rpc 怎么实现服务发现
zk 中的 watch 机制是怎么实现的
分布式锁有哪些实现,MySQL,zk,Redis 都说了一遍,并且分析了各自的优缺点,这个问题问的频率太高了
怎么提高数据库读写性能
k8s 了解吗
servicemesh 有做过吗
五面 B 部门(HR 面)
离职原因
期望薪资
基础知识
常用集合、数据结构(数据增删改查操作的原理具体实现、各参数的含义,以及如何组合使用)
Java 的语法,OO 的思想要熟悉,常用设计模式要知道场景
JVM 内存模型,垃圾回收算法,垃圾收集器的区别,GC 调优
线程模型
IO 模型(包括操作系统底层 IO 模型和常见 BIO、NIO、AIO、IO 多路复用的原理)
Redis(数据结构的内部实现、淘汰原理策略、持久化、集群、扩容、数据同步、以及一些常见缓存问题的解决方案)
MySQL(索引原理,查询优化,三大日志)
消息队列(内部原理,常见消息问题解决方案)
分布式场景题(高可用,高性能相关)
其他知识
位运算
大数据量操作(在有限时间内完成、在有限空间内完成)
设计题(看一些常见的分布式 ID、分布式计数服务等等)
算法
面试前的备战资料
整份手册分为了七个篇章,分别是:高并发篇、分布式篇、中间件篇、数据库篇、设计模式篇、数据结构与算法篇、阿里巴巴 2021 年全年面试题总结篇!
点击此处 或者扫码 凭截图即可免费获取 PDF 版
高并发篇
秒杀的核心思想:层层过滤
尽量将请求拦截在上游,降低下游的压力
充分利用缓存与消息队列,提高请求处理速度以及削峰填谷的作用
大型互联网应用(大数据、高并发、多样数据类型)的难点和解决方案
分布式篇
中间件篇
根据得到的文档和查询语句的相关性,对结果进行排序
数据库篇
设计模式篇
工厂模式
简单工厂
数据结构与算法篇
分析 HashMap 的 put 方法
阿里巴巴 2021 年全年面试题总结篇
配置中心之简版
总结
我给大家的建议就是慢慢来,不管是社招还是校招,制定自己的计划,一定要有自己的知识体系,针对自己薄弱的地方进行强化复习,不放过任何一个细节。 简历上写的东西一定要会,一般都是针对简历来提问的。如果在预习的过程中感到困难或者吃力,那就对了,等你熬过去了,就是胜利。祝福大家都能拿到满意的 offer。
点击此处 凭截图即可免费获取 PDF 版
评论