字节面经总结

网络相关

Https的过程讲一下。先是说了http+ssl,dns之后,准备讲ssl的原理时,他示意我说回答一下传输层相关的。然后我就回答了tcp三次握手,对着服务器端指定端口,比如80端口发起连接,之后就是正常的数据请求了。

TCP四次挥手,结合CS两端点的TCP栈和上层应用的交互来解释四次挥手,以及为何需要中间那个FIN-WAIT-2这个过程,最后由被动关闭一方的上层应用通过调用socket.closed()来结束数据传输,进入最终的FIN模式;

一个完整的 HTTP 请求会涉及到哪些协议?

HTTP 和 HTTPS 的区别

详细描述一下 HTTPS 的加密过程,需要几次通信

tcp/ ip 模型 和 osi模型

TCP 拥塞控制

一个 10M 大小的 buffer 里存满了数据,现在要把这个 buffer 里的数据尽量发出去,可以允许部分丢包,问是用TCP好还是UDP好?为什么?

Mysql相关

MySQL left join、inner join

MySQL 事务的四个隔离级别

Mysql 的幻读是怎么个情况,Mysql 是如何避免的。

B 树 和 B+ 树的区别,为什么 mysql 要用 B+ 树,mongodb 要用 B 树 (3次)

Mysql 集群如何保证数据的一致性

Mysql 索引 聚簇索引和非聚簇索引的区别 (3次)

联合索引和列选择性

innodb 引擎 优点

假如要查A in () AND B in (),怎么建索引?

假如用id翻页的方式,数据库表如何设计?索引如何设计?

假如量很大,你觉得需要分库分表吗?怎么分? 分库分表后怎么查询分页? 分库分表后怎么保证主键仍然是递增的?

现在需要支持深分页,页码直接跳转,怎么实现?

瞬时写入量很大可能会打挂存储,怎么保护?

binlog 日志和 redolog 日志清楚吗

Redis相关

缓存穿透和缓存击穿

redis setnx + expire 有什么缺点,如何优化(2次)

分布式锁 (2次)

redis 的跳表,为什么不用红黑树

redis 集群是怎么实现的,说一下一致性 hash

Redis数据结构 (2次)

ZSet实现,zrange start, stop,总长度为n,复杂度是多少 (3次)

zset 延时队列怎么实现的

Redis 的 ZSET 做排行榜时,如果要实现分数相同时按时间顺序排序怎么实现?

redis 的持久化

消息队列

rabbitmq 的工作原理。

kafka 的工作原理,如何保证顺序

kafka消费者如何消息去重

Kafka的ConsumerGroup

操作系统

操作系统内存模型

select 和 epoll

进程的调度

Java语言

java 实例放在哪个区,常量放在哪个区;

说一下Netty的IO原理

Java GC

HashMap实现、ConcurrentHashMap,是否是线程安全、原因,为什么使用红黑树和平衡二叉树的区别,HashMap扩容时,对读写操作有什么特殊处理 (2次)

Lock 和 Synchronized 的 区别

volatile 和 Synchronized 的 区别

乐观锁和悲观锁的区别

Java CAS

Go语言

Go 协程简单用法;

Go func与method之前的那个Receiver是什么?

Go的闭包语法

GMP 调度模型

Context 的用法

Go 的垃圾回收是怎么实现的,好在哪里,不好在哪里

Go 的逃逸分析

微服务

断路器内部怎么实现的?断路器会造成写入失败,假如我们不允许写入失败呢?

任务系统怎么保证任务完成后发奖一定成功

常识

让你设计一个限流的系统怎么做? 令牌桶

实现简单令牌桶算法

令牌桶,加上随时间滑动的要求,即:限制用户在任一连续的一小时内,不能超过5W的请求。

自旋锁和互斥锁有什么区别

打开一个 URL 的过程 (2次)

Token、Session、Cookie 是什么

时序型数据库的存储结构是怎么样的?

LSM树了解吗?是一种什么存储结构

系统设计

设计一个微信朋友圈系统

类似于设计一个长链接转短链接

Mysql 集群在保证强一致性的情况下,如何保证高并发

设计一个海量日志写入系统

让你设计一个延时任务系统怎么做 说了两个方案,一个是使用 redis 的 ZSET 来实现,考虑分片来抗高并发,使用 redis 的持久化来实现落地,使用 redis 的哨兵实现故障转移。 一个是使用时间轮的方法。

现有一个随机数生成器可以生成0到4的数,现在要让你用这个随机数生成器生成0到6的随机数,要保证生成的数概率均匀

算法题

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

算法题是股票买卖,一次和无限次两种。

链表求和

最小覆盖子串

670.最大交换

正整数开根号,保留两位小数

一个无序数组找其子序列构成的和最大,要求子序列中的元素在原数组中两两都不相邻

有 N 枚棋子,每个人一次可以拿1到 M 个,谁拿完后棋子的数量为0谁就获胜。现在有1000颗棋子,每次最多拿8个,A 先拿,那么 A 有必胜的拿法吗?第一个人拿完后剩余棋子的数量是8的倍数就必胜,否则就必输。

给出一棵二叉树的根节点,现在有这个二叉树的部分节点,要求这些节点最近的公共祖先。

参考:
字节跳动社招后端一二三面已过丶以及学习感言
字节跳动 |go 后端开发工程师社招一二三四五面面经|2022
字节跳动后端社招面经(二面、三面)
一年工作经验跳槽字节跳动社招经历分享

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值