忘记录音了,记录比较模糊,被拷打了一个半小时,凉凉
时间/部门
2024/1/24
后端——商业化产品与技术
自我介绍
本硕西电
介绍了一下简历上写的三个项目
- 跟着网上做的铁路购票系统
- 自己手写的MQ
- 服务外包竞赛项目
面试官提问
- RocketMQ 延时消息是怎么实现的?(针对第一个项目问的)
我:使用 RocketMQ 的原因就是因为 RocketMQ 有一些内置的消息类型,延时消息就是其中一种。Kafka 里没有这个功能,所以这也是为什么没使用 Kafka。
面试官:那你知道 RocketMQ 是怎么实现延时消息的吗?
我:这个我目前还不太清楚,我下去看看。
- 你自己手写的 MQ 实现了延时消息和死信队列这些功能么?
我:没有,我主要是模仿3.3版本之前的 Kafka,实现了消息持久化和主从选举。
- Kafka 新版本怎么实现主从选举的?
(我答的 kraft)
- 消息队列怎么保证消费者的消息不丢失的?
(我从 kafka 和 rocketMQ 两个消息队列怎么实现的来回答的)
- 消息队列怎么实现顺序消费的?
我回答了 kafka 的两种方式和 rocketMQ 有内置的顺序消息类型
- Kafka 生产者同步发送、异步发送和发送后遗忘,异步发送也可以使消息有顺序性么?
我没有想过这个问题,所以当时回答的使按理来说有可能会导致消息乱序,但是我猜kakfa做了相应的应对措施。(但事实上,Kafka 并没有做对应的措施,如果异步发送的话,发送到 broker 里就有可能是乱序的,那消费的时候也是乱序的)
手撕
- 约瑟夫环
没做过,讲对了思路,但是最后空指针异常了,不想找bug了,就下一个题了。
- 给一个图书管理系统设计数据库表
这个过程面试官一直在引导,体验很好。一开始说了基础的设计之后,面试官再加一些新的需求。
- 写 SQL 语句
事先没想到会有这种,让我写一条 SQL 语句,在学生表、课程表(ID, TEACHER_ID, TEACHER_NAME, COURSE_ID, COURSE_NAME)、学生_课程表三个表中找出没选"XXX"老师课的学生。
其他
在手撕 2 之后,问了一些计算机网络的基础。
- 怎么用 UDP 实现 TCP?
- 在浏览器输入一个 URI,到页面渲染到你的浏览器上,这一段时间发生了什么?
- IP 是动态变化的,怎么根据 IP 找到你的电脑的?