前言
今天分享一位小伙伴9面字节的经历,我都有点佩服这位小伙伴的心态。
这位小伙伴基本是从春招就开始面试字节了,直到秋招结束。拿下offer之后也是朝我一把鼻涕一把泪的分享。
话也不多说,直接分享一下小伙伴的经历吧!
一面
- Session存在哪里,怎么把session_id返回个客户端?
- Redis的数据结构,它有哪些复杂数据结构?
- Http与Https的区别,详细描述加密非对称加密的过程
- 线程与进程的区别?
- IO多路复用
- redis服务端是多进程还是单进程,多线程还是单线程
- top loadaverage怎么计算的
- hashmap解决冲突的方式
- 数据库的事务,什么是幻读?事务是怎么实现的
- linux的命令,如何查看服务器负载?
- 算法题
一个长度为n的数组,元素在1到n之间,找到一个重复的元素,空间复杂度越低越好
二面
- 如何查看端口占用情况
- 如何查看远程服务器某一个端口被占用
- 可以ping通,当时客户端连接不上服务端,什么原因
- 算法题
1.最长不重复子串;
2.找比当前数大的下一个数,如1243,结果是1324;
- 数学题
1.有三个盒子,其中一个有奖品,参与者选中一个后,主持人打开另一个盒子没有奖品,问参与者是否换盒子,换与不换的中奖概率是?
三面
- 操作系统包括哪些部分
- 如何进行内存分配
- 进程切换发生哪些事情
- fork函数
- 项目:分布式如何扩容缩容
- 算法题
1. 给定一个升序数组,一个target值,找比target小的最大数字(类似于升序插入排序的一个步骤)
int begin = 0;
int end = arr.length - 1;
int mid = 0;
while(begin < end){
mid = begin + ((end - begin) >> 1);
if(arr[mid] < target)
begin = mid + 1;
else
end = mid;
}
//end = mid 肯定会更新,但是begin = mid可能就不会更新,必须要begin = mid + 1,推进区间的收缩
苟到三面的时候因为太菜被挂了,随后就被hr告知又被国际部门捞了。
被捞一面
- 1.http keepalive、tcp keepalive
- 2.MQ作用、原理以及主要组件
- 3.kafka了解吗,各个MQ的对比
- 4.RocketMQ中topic、queue的具体含义
- 5.集群消费、广播消费
- 6.protobuf作用
- 7.为什么项目里要用protobuf,protobuf 的好处
- 8.市面主流的RPC框架了解多少
- 9.项目中RPC框架中怎么定义协议的
- 10Redis持久化方式
- 11.Redis单进程还是多进程??我印象挺深的,为什么面试官要说单进程而不是单线程
- 12.Redis集群策略、分槽
- 13.Redistribution集群中不同节点如何通信
- 14.Gossip协议
- 15.跳表结构
- 16.算法题
1.带有随机指针链表的深拷贝
被捞二面
- 1.削峰
- 2.多级缓存一致性
- 3.延迟双删解决主从Redis节点的数据一致性
- 4.秒杀项目中缓存预热
- 5.队列泄洪
- 6.MySQL事务
- 7.Docker
- 8.dubbo服务发现
- 9.注册中心服务判活
- 10.负载均衡策略
- 11.哈希一致性
- 12.Linux查看具体端口是否被占用
- 13.思考题:2000w高考成绩(有大量相同数据),无内存限制,要求O(n)时间复杂度排序。 【当时说用桶排序,只要同桶的数量趋近于高考人数,就可以做到O(n),事后才想到可以用Trie树,有点可惜】
- 14.算法题:
1.链表节点两两反转
2.链表n个节点为一组反转
被捞三面
- 1.项目中限流怎么做的
- 2.令牌桶原理、数据结构??数据结构这个我是真的懵了,后来想可以用一个volatile自增字段+阻塞队列实现
- 3.MySQL乐观锁悲观锁以及对应的sql语句
- 4.数据库隔离级别
- 5.dubbo的好处
- 6.算法:
1.删除字符串中 ab,保证最后字符串没有连接的 ab,例 aaabbb
这次面试应该是部门领导人,讲真,这次面试体验真的不太好,整个过程加撕代码只进行了35min,感觉面试官全程都在看简历+写面评,基本没在听说啥,以至于有好几次说完之后都会有至少15s的冷场,哪怕面试官嗯一声给个反馈也好啊,所以最后这场面试是铁挂了,但还好赶上了提前批
提前批一面
- java GC
- java内存模型
- 进程、线程
- 线程切换代价为什么小——除了共享内存外线程切换并不会清空CPU和主存之间的缓存
- 线程状态
- 线程什么时候挂起
- 死锁必要条件、如何避免死锁
- 进程间通信
- OSI七层模型
- http常用方法
- post请求返回的100状态码是协议规定的还是浏览器规定的
- MySQL存储引擎、区别
- 两用引擎优势
- 联合查询
- 查询优化器
- Redis基本类型
- Redis zset怎么实现
- Redis持久化方式
- 全量复制、部分复制
- 复制积压缓冲区
- 算法题:
1.买卖股票二
2.买卖股票三
提前批二面
- 缓存作用
- 分级缓存如何保证数据一致性【面试官一直深入分级缓存的数据一致性,比如什么时候删除脏数据、Redis主从部署怎么保证之类的,总之问的挺深,面试官逻辑非常缜密】
- 分布式锁的实现、原理
- 序列化反序列化
- 如果自己实现序列化该如何操作,假如有一个int类型,你如何序列化为字节流
- 序列化如何支持跨平台
- TCP流量控制、拥塞控制
- TCP流量控制是通过接收端发送带有接受窗口剩余大小的ACK来实现的,那么如果接收端的TCP没有CPU调度会发送ACK吗,会不会因为接受窗口满了并且不能及时发送ACK导致数据丢失【这个问题讨论了好久,不得不说,这个面试官真的好】
- 数据库隔离级别
- MVCC
- InnoDB索引实现
- 联合索引
- MySQL字段类型的长短会对性能有影响吗
- 前缀匹配
- 算法题:
1.走格子
2.走格子+陷阱
3.走格子,每个格子有血包或者怪物能让自己加血扣血,问走到右下角至少需要多少血量 ,可以从右下到左上的逆向dp,并且dp[m][n]=0作为初始条件 【当时觉得面试官想象力真丰富,能想到这么生动的算法题,好像叫地下城与勇士。】
4.如上题条件,给定一个初始血量,判断能否到达右下角
提前批三面
- 为什么要实现一个RPC框架
- 问什么不用本地调用,而要用微服务 (为什么?因为简历上没微服务过不了初筛啊)
- 微服务的好处
- 微服务网关模块的具体逻辑,为什么要用网关
- 网关模块怎么可以保证整个系统的安全性
- 微服务的业务模块拆分,为什么要这样拆分
- 对称加密、非对称加密
- MD5是对称加密么 (这部分答错了,有点可惜)
- 项目中怎么用MQ的
- 算法题:
1.输入n,k,输出n的字典序的第k位数字,若n=15,k=7,1 10 11 12 13 14 15 2 3 4 5 6 7 8 9,输出15
这道题浪费了好多时间,刚开始还傻乎乎的重写Comparactor+StringBuilder来定义字典序,然后转化成topk问题解决,面试官说还有更优解,当时一直没想出来,也浪费了好多时间,最后面试官可能有事吧,等到1h时候面试官说可以了,今天面试先到这里吧,然后就挂了。。。事后才知道可以用Trie树或dfs直接找到第k个数,然后就感觉特别可惜,因为觉得自己前半段发挥挺好的,就因为这道题,以至于颓废了两三天,但最后结果还是好的,三面四天后收到了部门的意向书
最后
字节面试贯穿了小伙伴整个2020。最终相信, 绝大数情况下,坚持一定可以胜利!努力就有回报,加油!
最后将小伙伴的学习资料分享给大家
免费领取资料:戳这里免费领取,暗号:CSDN 还有更多大厂面试题哦!
读者不点关注,诶,我一点也不慌,他皮任他皮,先和他们交流一波,哎哟,被喷了,喷他?不存在的,我反手给他道一手真挚滴歉,看读者怎么说,诶,这就很舒服。评论区要炸?问题不大,我先每一条都点个赞,边缘OB一波,评论区怎么说。哟,这个人铁头娃,很有灵性,好像真的要炸。我头皮发麻了,但我不怕,这时候就要逆向思维,免费送他一份学习资料,这波不亏,你以为呢?堂堂nice博主会怕你个评论区?我心态很好,一点事都氵
以上资料免费领取:戳这里免费领取,暗号:CSDN