后端一面、二面、三面面经
完整信息
本篇目录
#实习面试记录#
# 字节一面
1.简单自我介绍.
2.讲一下**shardingsphere**提的PR.(前面写了一些开源贡献.)
3.我们为什么要使用**shardingsphere**?(分库分表痛点.)
4.事务特性 **ACID**(常规八股,就讲的很细.)
5.一道SQL:查询**name相同的user**
```SQL
select name from user group by name having count(name) > 1 # 差不多这种感觉
```
5.1 给了三个SQL语句,让分析查询的性能(其实就是经典的**最左前缀原则**,分析一下我们是否走了index即可.)
6.你在什么情况下使用Redis?为什么用redis?(讲了意大利人开发原因历史)
7.redisTTL过期之后是怎么被淘汰出去的? 不会,其实就是定时,然后还有惰性删除这样的,我误会是内存淘汰策略.
8.一个算法:经典的滑动窗口,最小长度的数组(秒了).
9.简单看了下项目,没有细聊,为什么做RAG(我诚实的说因为觉得黑马点评不行,然后自己对二次元感兴趣(包装的二次元)),做出来效果大概咋样,了解向量库么(没咋看es,我直接说不是很了解)?mydb能使用么?(承认了自己对项目理解的弱小.)
10.反问:基础重要,关注新技术,做了AI项目的话还是要了解一下.
45min结束,很快约二面.
# 字节二面
- 自我介绍.
- 讲讲你的项目,好大,连什么项目都不说,然后就是我一个人说单口相声.
- 我直接继续讲了shardingsphere的PR(我发现你可以一直拿这个扯淡,然后占用很多时间),然后又讲了redis的PR.主要是头文件的链接问题,他可能不是很懂链接?没继续问.
- 听我说redis,就问了IO多路复用.(我说我用gdb调过这个过程,讲的还行,他也没问IO多路复用的细节.)
- 你贡献了很多开源,你平时是怎么开始准备贡献一个项目的?(讲怎么入手这个项目.)
- 直接开RAG项目,我最不会的一集,不过好歹看了一下.
- 向量检索是怎么做的,讲了KNN和BM25的算法,我说我更在乎关键词.
- 你的关键词匹配是怎么做的,我当时一下忘了IK分词器,没讲上来,后来回忆起来说了,他说他们比较喜欢这个(精确的关键词匹配),他们的实习生用的是AC自动机(牛逼,敏感词过滤很多用这个吧).
- 数据流向是什么,(大概讲清楚了).
- chunk是怎么做的,如何保证语义完整性?(好像有是吧,但我直接说我没处理.)
- kafka专项,直接被秒杀了,我只知道topic和partition--->kafka要好好学习,我当时没时间看了,承认自己不太熟.
- 基础:OS虚拟内存如何理解,我可以总结一下,其实感觉我的理解比较深的,但是没有很好的结构化表达.(我后面讲了懒分配,之后可以再讲一下COW fork,这样也感觉比较懂,我的评价就是你会什么你就往完了说,说到你说不出来或者他把你停了.)LRU算法是怎么实现的,虚拟内存中,cache内部这样的.
- 内存碎片解决,我还真不知道怎么解决,我只知道内外碎片的现象是怎么回事,但是重新整合肯定不行,开销太大,所以实际的OS怎么使用?(这种问题可以彻底解决?还是有缓解方法?是有的,这里是我的盲区说是.)(回想了一下好像也不是盲区,因为手写过malloc,就讲一下里面的策略我觉得就很好,只是很久没有接触了.)
- http协议工作在什么上?TCP如何保证可靠?为什么三次握手,四次挥手,为什么差一次(讲了下合并.)(很简单了.)
- TIME_WAIT等待多长时间,目的?(他自己可能把CLOSE_WAIT和TIME_WAIT弄混了,但是我对状态机流转很熟)
- 项目和学习都是个人兴趣?(是的)学校没有什么合作编程课程?(没有)
- 算法:[搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) 这个直接秒了,二分太熟.
反问:
1.基础如何?
2.分布式,微服务是否重要?你们对校招和日常是否看这个(加分项.)(技术栈主要就是MySQL KV存储 RPC什么的?)
3.你们用GOlang比较多?
4.你们怎么用数据库,我听说字节用TiDB,你们是怎么使用的?(就是存储计算分离,什么分布式事务之类的.)
> 我现在看,我感觉真的啥也不是,兄弟,纯招笑。
结束,70min
# 后端三面
好多太紧张,我都忘了问的啥了.
1.你觉得你的编程水平如何,工程能力如何?(你在问什么,我讲了一下我是如何构建packetGhost的,如何解决包循环的问题?显然他对这个项目不是很感兴趣).
2.问问Java基础知识吧.(前面根本没问过,我以为他们根本不看,问了反射,动态代理,类加载啥的,我就反射大概说明白了,我说我好久没看了,他们可能有个题库.)
3.那你觉得还有必要问Spring和Springboot么(那确实没必要了)
4.**MySQL**设计.
你对事务的理解.(ACID说的很清楚,为什么能把同一个问题问两遍?)
**MySQL**场景:
现在有一张表 id status有三个字段,012,有多个线程进行修改,一个线程修改结束之后要去通知B,B这个时候修改应该失败啥的,没太听懂,问我怎么设计?
我先说了数据库的行锁,我说代码设计可能可以用阻塞队列,他说有没有什么更好的,我说CAS,用SQL语句实现这个CAS,SQL怎么写,大概说了一下.
5.RAG项目,不过问的都是很上层,我对这个项目理解真浅,不过三面也就问一些对于AI的看法之类的怎么用,问的挺抽象的,我也就是随便扯一扯.
6.实习时间?我们用Golang,你怎么迅速进入Golang的学习,你的实习时间是不是有点短......好多,记不得了
我感觉答的一般.最后居然没做算法?
反问:
可能是觉得我对Java不熟,说语言要熟悉
要熟悉kafka,mysql,redis,es之类的.
......
本篇目录
当前问题0139
- 01
简单自我介绍.
- 02
讲一下\*\*shardingsphere\*\*提的PR.
- 03
我们为什么要使用\*\*shardingsphere\*\*?
- 04
事务特性 \*\*ACID\*\*
- 05
一道SQL:查询\*\*name相同的user\*\*
- 06
\*\*最左前缀原则\*\*
- 07
你在什么情况下使用Redis?为什么用redis?
- 08
redisTTL过期之后是怎么被淘汰出去的?
- 09
为什么做RAG
- 10
做出来效果大概咋样
- 11
了解向量库么
- 12
讲讲你的项目
- 13
IO多路复用
- 14
你贡献了很多开源,你平时是怎么开始准备贡献一个项目的?
- 15
向量检索是怎么做的
- 16
你的关键词匹配是怎么做的
- 17
数据流向是什么
- 18
chunk是怎么做的,如何保证语义完整性?
- 19
OS虚拟内存如何理解
- 20
LRU算法是怎么实现的
- 21
内存碎片解决
- 22
http协议工作在什么上?
- 23
TCP如何保证可靠?
- 24
为什么三次握手,四次挥手,为什么差一次
- 25
TIME_WAIT等待多长时间,目的?
- 26
学校没有什么合作编程课程?
- 27
\[搜索旋转排序数组\](https://leetcode.cn/problems/search-in-rotated-sorted-array/)
- 28
基础如何?
- 29
分布式,微服务是否重要?你们对校招和日常是否看这个
- 30
你们用GOlang比较多?
- 31
你们怎么用数据库,我听说字节用TiDB,你们是怎么使用的?
- 32
你觉得你的编程水平如何,工程能力如何?
- 33
反射
- 34
动态代理
- 35
类加载
- 36
你对事务的理解.
- 37
用SQL语句实现这个CAS,SQL怎么写
- 38
你怎么迅速进入Golang的学习
- 39
你的实习时间是不是有点短
