写点什么

双非渣本后端,三个月逆袭字节,入职那天“泪目”了

发布于: 2 小时前
双非渣本后端,三个月逆袭字节,入职那天“泪目”了

个人背景情况

2017 年毕业于一所不知名双非本科大学,毕业时就有着一颗想进大厂的心,但又想留在成都,不愿意去北上广,现在其实相当后悔。当年在成都的大厂少之又少,再加上校招时非常努力地玩耍,导致投的几个大厂面试都全部挂掉。也错失了进大厂最好的机会,所以我奉劝大三的同学如果对自己的职业有追求,有进大厂的梦想,在大三的时候一定要好好准备,在校招的时候拿 offer。

最后我在成都一家本地科技公司做了 Java 开发,中间也跳过一次槽,也是做的 Java。但这几年时间里总感觉公司能给的成长太慢,虽然自己也在学习,还是免不了焦虑,特别是像自己这种学历和公司背景都一般的程序员,要保证自己以后不被淘汰,必须得做点什么。所以在听到一个前同事被公司裁掉,最后进入大厂这个事情之后,彻底点燃了我心中想进大厂的那把火,我也准备内推试试字节跳动。

因为疫情原因,很多企业生存困难。我也保持了理智,没有辞职进行面试。而是给自己制定了学习计划,不得不说,在职的情况下复习确实很难,因为可能加班打乱计划。于是我把所有能利用的个人时间全部利用了起来,比如早上十点上班,我六点钟就会起床,刷两个小时 LeetCode,八点钟洗漱之后去上班。晚上如果有时间就会把早上刷过的题拿出来继续复习,花了两个月的时间,一边复习(预习)数据结构,一边做题,LeetCode 上面的高频题基本都过了一遍。花了那么多时间刷题,都是因为自己算法太菜,以前没有进行专门的练习。题做得差不多之后,就开始复习专业知识了,具体内容我都会总结出来。前前后后准备了三个月,我才敢进行内推,经历了八次面试之后,面试时间又持续三个月,皇天不负有心人,终于在这个月等到了 oc。

下面是面试内容,时间太久了,可能记得不太全,但基本上包含了所有问题,白天上班,我都是选择晚上进行面试,哈哈

一面 A 部门

  1. 项目,串起来讲,可能遇到的问题,怎么解决,怎么实现,讲了发送客服消息

  2. Spring 里面的 bean 怎么回事

  3. HashMap 和 ConcurrentHashMap,HashMap 中的红黑树,两者 rehash 的区别

  4. Mysql 的一致性是什么,数据库 redolog,undo log,MySQL 的索引结构,为什么二级索引叶子节点不能直接存储行数据的指针,这样可以不回表,怎么考虑的?

  5. redis里面的 zset,跳表怎么实现,怎么增删,

  6. redis是怎么 rehash 的

  7. 算法二叉树转双向链表

二面 A 部门

  1. 自我介绍

  2. 再一次聊项目,功能,架构,角色,量级

  3. Spring 里面有哪些设计模式

  4. SpringMVC 和 SpringBoot 有什么区别

  5. SpringBoot 的自动配置是怎么实现的

  6. 刚刚你说了线程池,你线程池是用的什么,参数有哪些,为什么这么设置

  7. 线程池核心线程满了怎么办,里面的阻塞队列是干什么的

  8. 说说 ThreadLocal 是什么

  9. CAP 理论知道吗,为什么不能同时满足

  10. Redis 里面的数据结构有什么场景

  11. Redis 怎么实现锁(redis锁的所有坑都说了一遍)

  12. 分布式事务知道吗,有哪些方案(说了 2PC,3PC,TCC,MQ)

  13. 算法题树的直径

  14. 有什么要问我的

三面 A 部门

  1. 介绍项目

  2. 场景题,设计一个朋友圈,读 QPS 1000w,写 QPS 10w

  3. 算法题LFU

  4. 你有什么问题

这个面试官是个 leader,比较强势,很多细节回答的不是很好,所以脸色一直不好,给人压力较大,面完就觉得凉了。果然面完之后和前两次不一样,HR 那里就没有任何通知了,到这里还是很失落,准备了那么久,因为最后一面没表现好导致挂掉。之后等了一个月,这一个月没有任何消息,一个月过后又接到字节 HR 的电话,说我之前两面面评都不错,让我试试他们部门,我就同意了。

一面 B 部门

  1. 介绍项目,细节

  2. 怎么做服务拆分,边界怎么划分的

  3. 分布式之后会遇到什么问题,CAP 的各个情况介绍一下

  4. dubbo 调用过程是怎样的,PB 知道吗

  5. thrift 了解过吗

  6. zk 介绍一下,有哪些节点类型,特点

  7. 怎么知道项目中接口的重要性,怎么做监控,你说的自动化测试是怎么做到的(这个问题回答完,他笑了。。。)

  8. 你所理解的 SLA 是什么,要达到什么等级

  9. 说说你理解的 k8s

  10. nginx 的 upstream 是干什么的

  11. nginx 有哪些负载均衡策略

  12. 算法题:岛屿数量

  13. 你有什么问题要问我

二面 B 部门

  1. 介绍项目,细节

  2. 锁有哪些实现方式

  3. 分布式锁的实现方式

  4. JVM 的内存模型,垃圾回收算法

  5. MySQL 的事务介绍,ACID 的实现原理是什么(想问 MySQL 的日志)

  6. HashMap 的原理,其他线程安全的 Map

  7. Redis 的高可用,有哪些持久化方式

  8. Redis 的数据结构,线程模型

  9. 用过什么消息队列,有什么特点

  10. 怎么保证消息幂等消费

  11. docker 的网络模式

  12. 算法题比较版本号

  13. 提问

三面 B 部门(交叉面)

  1. 介绍项目,细节

  2. Linux 的内存管理

  3. 浏览器打开一个网站的过程中会经历哪些网络处理,DNS 的具体过程是啥

  4. zk 是什么分布式模型(想问的 CAP 定理),主从怎么做选举

  5. zk 只有一个主节点,写性能不高,zk 怎么解决的

  6. etcd 或 consul 知道吗

  7. 多个服务中如何快速排查问题

  8. Redis 中的淘汰方式有哪些,Redis 性能高的原因是啥

  9. docker 的实现原理

  10. 算法题:相交链表

四面 B 部门 (leader 面)

  1. 介绍项目,细节

  2. 项目量级多大,QPS 最高的接口是怎么做的

  3. rpc 怎么实现服务发现

  4. zk 中的 watch 机制是怎么实现的

  5. 分布式锁有哪些实现,MySQL,zk,Redis 都说了一遍,并且分析了各自的优缺点,这个问题问的频率太高了

  6. 怎么提高数据库读写性能

  7. k8s 了解吗

  8. servicemesh 有做过吗

五面 B 部门(HR 面)

  1. 离职原因

  2. 职业规划

  3. 期望薪资

基础知识

  1. 常用集合、数据结构(数据增删改查操作的原理具体实现、各参数的含义,以及如何组合使用)

  2. Java 的语法,OO 的思想要熟悉,常用设计模式要知道场景

  3. JVM 内存模型,垃圾回收算法,垃圾收集器的区别,GC 调优

  4. 线程模型

  5. IO 模型(包括操作系统底层 IO 模型和常见 BIO、NIO、AIO、IO 多路复用的原理)

  6. Redis(数据结构的内部实现、淘汰原理策略、持久化、集群、扩容、数据同步、以及一些常见缓存问题的解决方案)

  7. MySQL(索引原理,查询优化,三大日志)

  8. 消息队列(内部原理,常见消息问题解决方案)

  9. 分布式原理、算法、rpc 原理(paxos、raft、zookeeper 的原理)

  10. 分布式场景题(高可用,高性能相关)

其他知识

  1. 位运算

  2. 大数据量操作(在有限时间内完成、在有限空间内完成)

  3. 设计题(看一些常见的分布式 ID、分布式计数服务等等)

算法

  1. 数组

  2. 链表

  3. 位运算

  4. 二叉树(dfs,bfs,相当重要,只要会了二叉树,回溯那些算法也会了)

  5. 设计题

  6. LRU/LFU

  7. 排序

  8. 查找



点击并拖拽以移动

面试前的备战资料



点击并拖拽以移动

整份手册分为了七个篇章,分别是:高并发篇、分布式篇、中间件篇、数据库篇、设计模式篇、数据结构与算法篇、阿里巴巴 2021 年全年面试题总结篇!

点击此处   或者扫码 凭截图即可免费获取 PDF 版


点击并拖拽以移动

高并发篇

秒杀的核心思想:层层过滤

尽量将请求拦截在上游,降低下游的压力

充分利用缓存与消息队列,提高请求处理速度以及削峰填谷的作用



点击并拖拽以移动


大型互联网应用(大数据、高并发、多样数据类型)的难点和解决方案



点击并拖拽以移动


分布式篇



点击并拖拽以移动


中间件篇



点击并拖拽以移动


根据得到的文档和查询语句的相关性,对结果进行排序



点击并拖拽以移动


数据库篇



点击并拖拽以移动


设计模式篇



点击并拖拽以移动

工厂模式

简单工厂



点击并拖拽以移动


数据结构与算法篇



点击并拖拽以移动

分析 HashMap 的 put 方法



点击并拖拽以移动


阿里巴巴 2021 年全年面试题总结篇



点击并拖拽以移动


配置中心之简版



点击并拖拽以移动


总结

我给大家的建议就是慢慢来,不管是社招还是校招,制定自己的计划,一定要有自己的知识体系,针对自己薄弱的地方进行强化复习,不放过任何一个细节。 简历上写的东西一定要会,一般都是针对简历来提问的。如果在预习的过程中感到困难或者吃力,那就对了,等你熬过去了,就是胜利。祝福大家都能拿到满意的 offer。


点击此处   凭截图即可免费获取 PDF 版


用户头像

还未添加个人签名 2020.09.07 加入

还未添加个人简介

评论

发布
暂无评论
双非渣本后端,三个月逆袭字节,入职那天“泪目”了