首页课程小红花墙

算法进阶 · 小纸条

选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。

第 1 章30第 2 章30第 3 章30第 4 章30第 5 章30第 6 章30第 7 章30第 8 章30第 9 章30第 10 章30第 11 章30第 12 章30第 13 章30第 14 章30第 15 章30第 16 章30第 17 章30第 18 章30第 19 章30第 20 章30第 21 章30第 22 章30第 23 章30第 24 章30第 25 章10
只印题目
第 1 页 · 正面(题目)
1溢出是怎么回事

8 位下 127 加 1 等于几?

2浮点数怎么存

为什么浮点数有精度误差?

3浮点数的坑

金额计算该用浮点数吗?

4存储器的层次

为什么要分这么多层?

5局部性原理

数组比链表快,和这个有关吗?

6缓存友好的代码

这个差别有多大?

7CPU 在干什么

这四步叫什么?

8流水线

这和工厂流水线是一个道理吗?

9分支预测

这对写代码有什么启发?

10指令集

这就是为什么程序要针对平台编译吗?

第 1 页 · 背面(答案)

参考答案(家长):尾数位数有限,很多小数无法精确表示。

参考答案(家长):-128,绕回去了。

参考答案(家长):快的贵而小,慢的便宜而大,分层能兼顾成本和速度。

参考答案(家长):不该,通常用整数存"分"来避免误差。

参考答案(家长):大数组上可能差好几倍。

参考答案(家长):有关,数组连续存放,缓存命中率高得多。

参考答案(家长):完全一样,每个工位同时处理不同的产品。

参考答案(家长):指令周期。

参考答案(家长):正是。

参考答案(家长):可预测的分支比随机分支快,有时值得考虑。

第 2 页 · 正面(题目)
11从代码到指令

编译器主要做什么?

12编译与解释

各举一个例子。

13操作系统在干什么

没有操作系统会怎样?

14进程是什么

同时打开两个浏览器窗口,是几个进程?

15线程是什么

进程和线程最大的区别是什么?

16并发与并行

一个人同时聊天和做饭,是并发还是并行?

17调度

为什么不能让一个程序一直占着 CPU?

18共享数据的麻烦

两个线程同时给计数器加一,结果可能是几?

19锁

加锁的代价是什么?

20死锁

死锁和过独木桥的比喻像在哪?

第 2 页 · 背面(答案)

参考答案(家长):C++ 编译型,Python 解释型。

参考答案(家长):翻译加优化,把人写的代码变成机器能跑的指令。

参考答案(家长):看实现,可能是多个进程,也可能是一个进程的多个部分。

参考答案(家长):每个程序都要自己驱动硬件,且无法同时运行多个。

参考答案(家长):并发,快速切换而已。

参考答案(家长):进程内存独立,线程共享内存。

参考答案(家长):可能只加了一次,因为都读到了旧值。

参考答案(家长):别的程序会卡死,系统失去响应。

参考答案(家长):都是互相等待、谁也不让。

参考答案(家长):其他线程要等待,性能下降。

第 3 页 · 正面(题目)
21虚拟内存

这解决了什么问题?

22分页

为什么按页而不是按字节?

23文件系统

删除文件时,数据真的被清掉了吗?

24网络:分层

为什么要分层?

25IP 与路由

这和寄信有什么相似?

26TCP 与 UDP

视频通话适合用哪个?

27三次握手

为什么两次不够?

28数据库是什么

为什么不用文件自己存?

29表、行、列

学生信息表可能有哪些列?

30索引

索引的代价是什么?

第 3 页 · 背面(答案)

参考答案(家长):按字节映射表会大得离谱,按页才实际可行。

参考答案(家长):内存隔离、地址统一、以及内存不够时可以用硬盘补。

参考答案(家长):每层只管自己的事,互不干扰,也便于替换。

参考答案(家长):通常只是标记为可用,数据还在,所以有恢复的可能。

参考答案(家长):UDP,宁可丢几帧也不能卡。

参考答案(家长):都是按地址逐站转运。

参考答案(家长):并发、事务、索引、崩溃恢复,自己写很难做好。

参考答案(家长):两次只能确认一个方向,第三次才确认另一个方向也通。

参考答案(家长):多占空间,且插入删除时要维护索引。

参考答案(家长):学号、姓名、班级、成绩。

op599 课程