You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
2.4 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 期中测试 | 这些Redis源码知识你都掌握了吗
你好,我是蒋德钧。
时间过得真快从7月26日上线到现在我们已经走过了一个半月的学习之旅不知道你的收获如何呢
前面我其实也说过阅读和学习Redis源码确实是一个比较烧脑的任务需要你多花些时间钻研。而从我的经验来看阶段性的验证和总结是非常重要的。所以在这里我特别设置了期中考试周从9月13日开始到9月19日结束这期间我们会暂停更新正文内容你可以好好利用这一周的时间去回顾一下前20讲的知识做一个巩固。
有标准才有追求,有追求才有动力,有动力才有进步。一起来挑战一下吧,开启你的期中考试之旅。
我给你出了一套测试题,包括一套选择题和一套问答题。
* 选择题:满分共 100 分包含4道单选题和6道多选题。提交试卷之后系统会自动评分。
* 问答题包括2道题目不计入分数但我希望你能认真回答这些问题可以把你的答案写在留言区。在9月16日这一天我会公布答案。
### 选择题
[![](https://static001.geekbang.org/resource/image/28/a4/28d1be62669b4f3cc01c36466bf811a4.png)](http://time.geekbang.org/quiz/intro?act_id=926&exam_id=2699)
### 问答题
**第一题**
Redis源码中实现的哈希表在rehash时会调用dictRehash函数。dictRehash函数的原型如下它的参数n表示本次rehash要搬移n个哈希桶bucket中的数据。假设dictRehash被调用并且n的传入值为10。但是在dictRehash查找的10个bucket中前5个bucket有数据而后5个bucket没有数据那么本次调用dictRehash是否就只搬移了前5个bucket中的数据
```
int dictRehash(dict *d, int n)
```
**第二题**
Redis的事件驱动框架是基于操作系统IO多路复用机制进行了封装以Linux的epoll机制为例该机制调用epoll\_create函数创建epoll实例再调用epoll\_ctl将监听的套接字加入监听列表最后调用epoll\_wait获取就绪的套接字再进行处理。请简述Redis事件驱动框架中哪些函数和epoll机制各主要函数有对应的调用关系。
好了这节课就到这里。希望你能抓住期中周的机会查漏补缺快速提升Redis源码的阅读和学习能力。我们下节课再见