字节跳动 · 抖音电商

后端一面、二面、三面面经

完整信息

39 条问法 · 38 道题

本篇目录

#实习面试记录#

# 字节一面

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之类的.

......

本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
    \[搜索旋转排序数组\](https://leetcode.cn/problems/search-in-rotated-sorted-array/)
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39

相关公司