命名是写得最多的东西,也是最容易被忽视的设计。讲清楚好名字的三条标准、常见坏名字的改法,以及一致性为什么比正确性更重要。
错误处理写不好,程序不是悄悄算错就是动不动崩。讲清楚可预期与不可预期错误的区分、抛出与返回的取舍,以及每一层该承担什么责任。
不背语法表,从实际要解决的问题出发,讲清楚元字符、量词、分组与回溯陷阱,并给出手机号、邮箱、日期等常见场景的写法。
缓存配错会让用户看到旧页面,配好了能让网站快好几倍。讲清楚 Expires、Cache-Control、ETag 的分工,以及各类资源该怎么设。
握手和挥手是网络面试的常客,但真正值得理解的是它为什么这么设计。讲清楚每一步的目的、TIME_WAIT 的意义,以及对开发者的实际影响。
HTTPS 不只是加个锁图标。讲清楚它防的是什么、两种加密方式如何分工、证书链如何建立信任,以及常见的配置误区。
分支不是越多越好。讲清楚主干开发与特性分支的取舍、提交粒度、合并与变基怎么选,以及误操作之后的恢复手段。
调试不是碰运气地改代码。讲清楚一套可复用的流程:稳定复现、缩小范围、形成假设、验证假设,以及为什么日志比断点更适合线上问题。
大 O 衡量的不是速度,而是增长速度。讲清楚常见量级的差别、为什么常数被忽略、均摊复杂度怎么理解,以及实际工程中它与真实性能的偏差。
慢查询不是靠猜的。讲清楚怎么看执行计划、索引的三种用法、什么写法会让索引失效,以及深翻页为什么越翻越慢。
代码评审不是挑刺。讲清楚评审的目标、按什么顺序看、六个必查维度,以及怎么给反馈才不伤和气。
测试写得多不等于质量好。讲清楚该测什么、不该测什么、一个测试的结构与命名,以及为什么过度 mock 会让测试失去意义。