北京DeepLang后端暑期实习一面

北京DeepLang(北京深言科技)后端实习一面

记录一下自己读研一来的第一场面试,结果就是:被薄纱😭😭。面试官是前字节跳动三年工作经历者,这正好跟我的字节跳动青训营项目撞上了,因此被疯狂询问底层原理机制,还包括Redis、Mysql等底层实现。具体面试内容如下:

1、自我介绍

这里建议提前做好准备,包括对自己技术栈的描述、项目的描述等等,而校园经历实则不具备任何重要性,可说可不说。重点就在于对自己技术栈的和项目的描述,因为一个好的描述方式可以起到引导面试官的作用。比如说,我的介绍里面讲到了我会grpc等微服务开发,对应于面试官的问题就是“说说你对微服务的理解、微服务是如何分块的以及在你的项目中你设计了哪些微服务?”。还有就是对与项目而言,如果条件允许的话,可以试着打听一下面试官的基本信息,一定不要撞到面试官非常擅长的领域(除非你足够强,不然会死的很惨!!!)。

2、说说你对微服务的理解、微服务是如何分块的以及在你的项目中你设计了哪些微服务?

这里掌握微服务的分块理念即可,难度不大。

3、你说你会mysql、redis的基本使用,那你从其中选择一种说一下它的特性。

我选的是redis,然后把redis的特性背了一遍,其中也讲到了redis作为分布式数据库的哨兵机制,结果说完之后就被追问了!!

4、哨兵机制已经相对比较古老了,当前存在新的方案取解决,你了解吗,说一下。

当然是不了解。

5、在你的青训营项目里边儿用到了redis,说一下你是怎么使用的。

我在项目里面使用redis的场景主要是用zset结构存储短视频的url,并使用它的排序功能按照时间戳的先后顺序进行排序,以便视频推流时可以按照先发布先推流顺序。

6、你的zset存储结构里除了存储url之外还存储了其他内容吗?

没有,其他内容诸如评论内容等按理说也应该存储在redis中,但是由于时间问题,最终只做了url的。

7、该项目的数据库表你是如何设计的?

阿巴阿巴阿巴说一堆,这个结合自己实际项目即可。

8、你了解MySQL的哪些特性?

1、原子性:一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么 全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性;

2、一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态。(在前面的例子中,一致性确保了,即 使在转账过程中系统崩溃,支票账户中也不会损失200美元,因为事务最终没有提交,所以事务中所做 的修改也不会保存到数据库中。);(这里我回答的时候居然忘了一致性的表述方式,太紧张了~~~)

3、隔离性:通常来说,一个事务所做的修改操作在提交事务之前,对于其他事务来说是不可见的。(在前面的例 子中,当执行完第三条语句、第四条语句还未开始时,此时有另外的一个账户汇总程序开始运行,则 其看到支票帐户的余额并没有被减去200美元。)。

4、持久性:一旦事务提交,则其所做的修改会永久保存到数据库。

9、说一下MySQL的存储隔离级别。

1、未提交读:事务中发生了修改,即使没有提交,其他事务也是可见的,比如对于一个数A原来50修改为100,但是我还没有提交修改,另一个事务看到这个修改,而这个时候原事务发生了回滚,这时候A还是50,但是另一个事务看到的A是100.可能会导致脏读、幻读或不可重复读;

2、提交读:对于一个事务从开始直到提交之前,所做的任何修改是其他事务不可见的,举例就是对于一个数A原来是50,然后提交修改成100,这个时候另一个事务在A提交修改之前,读取的A是50,刚读取完,A就被修改成100,这个时候另一个事务再进行读取发现A就突然变成100了;可以阻止脏读,但是幻读或不可重复读仍有可能发生;

3、重复读:就是对一个记录读取多次的记录是相同的,比如对于一个数A读取的话一直是A,前后两次读取的A是一致的;可以阻止脏读和不可重复读,但幻读仍有可能发生;

4、可串行化读:在并发情况下,和串行化的读取的结果是一致的,没有什么不同,比 如不会发生脏读和幻读;该级别可以防止脏读、不可重复读以及幻读。

隔离级别 脏读 不可重复读 幻读
Read_Uncommitted 未提交读
Read_Committed 提交读 ×
Repeatable_Read 重复读 × ×
Serializable 可串行读 × × ×
10、项目里用到了敏感词过滤,你使用elasticsearch做的还是说直接使用深度学习里的自然语言处理做的?

我说用的是elasticsearch做的,然后说了一下流程。(其实我是用敏感词库识别做的,但感觉太low了上不了台面,正好知道es,就编了一下)

11、你知道数据库的隔离级别是通过什么做的吗?

问到盲区了,确实不知道

12、你知道MVCC吗?

MVCC也就是多版本并发控制......

13、反问环节

这个环节自主性较强,但是最好不要不问。可以问一些部门相关的业务问题,以展示你对他们公司的在意程度。


北京DeepLang后端暑期实习一面
http://example.com/2024/06/24/北京DeepLang后端暑期实习一面/
作者
Samuel-Shu
发布于
2024年6月24日
许可协议