怎么管理技术债?
计算机基础 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
怎么判断是不是过度设计?
把你写过的一段复杂代码简化。
先设计数据表。
两种各有什么问题?
该怎么设计缓存?
怎么防止同一天重复签到?
为什么不每次都去查历史算一遍?
这是什么思想?
为什么要分层次说?
参考答案(家长):问自己现在有没有这个需求,没有就别做。
参考答案(家长):记录下来,定期安排时间偿还,别让它无限累积。
参考答案(家长):短码、原始网址、创建时间、访问次数。
参考答案(家长):常常能减掉一半,逻辑反而更清楚。
参考答案(家长):把热门短码放缓存,查不到再回数据库。
参考答案(家长):自增会暴露数量且需要中心;哈希可能冲突要处理。
参考答案(家长):数据多了会很慢,增量维护更划算。
参考答案(家长):用户和日期做联合唯一键,重复插入会失败。
参考答案(家长):体现你懂得按需设计,而不是无脑上复杂架构。
参考答案(家长):预计算 —— 把查询时的开销挪到写入或定时任务里。
给这五块各写一句话。
只强一样会怎样?
画出你的系统设计检查清单。
想一个你写过的程序里有随机的地方。
掷两个骰子,样本空间有多少个结果?
两骰子点数和为 7 的概率?
为什么要减一次?
已知两骰子和大于 9,其中有 6 的概率?
连掷两次硬币,两次结果独立吗?
这个错误叫什么?
参考答案(家长):只会算法写不出可维护的系统,只会工程解决不了核心难题。
参考答案(家长):能说清就说明形成了整体认识。
参考答案(家长):如洗牌、随机出题、快排随机选基准。
参考答案(家长):需求、规模、最简方案、瓶颈、扩展、容错、安全。
参考答案(家长):6 除以 36 等于六分之一。
参考答案(家长):36 个。
参考答案(家长):和大于 9 共 6 种,含 6 的有 5 种,即六分之五。
参考答案(家长):重叠部分被加了两遍,这就是容斥。
参考答案(家长):赌徒谬误。
参考答案(家长):独立,硬币没有记忆。
这体现了什么思想?
为什么它这么重要?
为什么这么低?
这和人的认知过程像吗?
抛三次硬币,正面次数是随机变量吗?
掷一个骰子的期望是多少?
抛 100 次硬币,正面次数的期望?
随机化的价值是什么?
两种算法平均都是 1 秒,方差大的那个有什么问题?
为什么要开根号?
参考答案(家长):现实中我们常常只能观察结果,要反推原因。
参考答案(家长):分类讨论,和你学过的分治一脉相承。
参考答案(家长):很像,见得越多判断越准。
参考答案(家长):健康人基数太大,1% 的误报数量远超真患者。
参考答案(家长):3.5,虽然它本身掷不出来。
参考答案(家长):是,取值 0 到 3。
参考答案(家长):让最坏情况不依赖输入,攻击者也构造不出坏数据。
参考答案(家长):每次期望 0.5,相加得 50。
参考答案(家长):方差是平方量纲,开根号才能和原数据比较。
参考答案(家长):偶尔会特别慢,用户体验不稳定。