编程基础篇 · AI 背后的数据结构

把 AI 写的代码「验收」一遍

三档任务:让 AI 解释它选的数据结构、要求换一种实现对比利弊、给你自己的项目挑一次收纳方式

本页解决的问题

先给结论

「把 AI 写的代码「验收」一遍」要解决的关键问题是什么?

三档任务:让 AI 解释它选的数据结构、要求换一种实现对比利弊、给你自己的项目挑一次收纳方式

判断标准

跟着交接处走,不要只看 Demo。 系统是否可靠,往往取决于模型、工具、状态、权限和人的交接处。把每次交接都当成可以观察、测试和恢复的地方。

下一步

为一个自动化步骤写清输入、负责人、审批和恢复动作。

常见误区

一次运行成功了,却说不清发生了什么,也无法安全重放。

挑一档 · 今天就动手
🥉

任务一 · 让 AI 自己交代

验收的第一步:不看代码,先审口供

30 分钟

拿一段 AI 给你写过的代码(没有现成的?让 AI 现写一个「通讯录去重」小工具:输入一堆姓名+手机号,去掉重复的)。然后把下面的提示词甩给它,让它自己交代用了什么收纳方式。

针对你刚才写的这段代码,请回答三个问题,用大白话,我不是程序员: 1. 你用了什么数据结构来存这些数据?(数组、哈希表、还是别的?) 2. 为什么选它而不是别的?说出至少一个被你放弃的备选方案和放弃理由; 3. 如果数据量翻一千倍(比如从 100 条涨到 10 万条),这段代码会变慢多少?哪一行最先扛不住? 如果你发现自己刚才的选择其实不是最优的,请诚实说出来,并给出更好的版本。
完成标准:你能用自己的话向别人转述「它用了什么结构、为什么、数据变多会怎样」这三个答案——转述不出来就再追问 AI 一轮。
🥈

任务二 · 要求换一种收纳

同一功能两种写法,优劣你来裁判

半天

接着任务一的代码,让 AI 用另一种数据结构把同一功能重写一遍,并列出两版的优劣对照表。关键在最后一步:结论不让 AI 下,由你来判断哪版适合你的场景。

请把刚才这个功能用另一种数据结构重新实现一遍(比如原来用数组就换成哈希表/Set,原来用哈希表就换成数组),然后: 1. 两个版本的完整代码都贴出来,关键行加注释说明「这里在做什么」; 2. 列一张优劣对照表,至少比较四个维度:查询速度、插入速度、内存占用、代码可读性; 3. 分别说明:什么场景下版本 A 更好、什么场景下版本 B 更好,各举一个具体例子(数据量多大、操作多频繁); 4. 不要替我下结论,把判断留给我。 我的场景是:(描述你的真实情况,比如「个人工具,数据最多几百条」或「要上线给几万人用」)
完成标准:你基于自己的场景做出了选择,并且能说出「因为我的数据量是 X、最频繁的操作是 Y,所以选它」——说不出这句话,说明判断还是 AI 替你做的。
🥇

任务三 · 给自己的项目做选型

先自己选,再和 AI 对答案

一周

挑你手头一个真实需求(工作项目、个人工具都行)。先别问 AI——用 ds-summary 讲的「怎么找 / 怎么进出」决策心法,自己把数据结构选了;然后让 AI 独立出一份选型方案,对比你俩是否一致。先过一遍下面的自查清单,把场景想清楚再动手。

📋 选型前自查清单(全部勾完再去问 AI)
数据会涨到多大?现在几百条还是将来百万条——量级决定一切
最频繁的操作是查还是插?读多写少和写多读少,答案完全不同
要不要保持顺序?需要按时间/名次排列的话,很多结构直接出局
要不要去重?天然去重是 Set/哈希的主场
值不值得上缓存?同样的查询反复发生的话,想想 ds-6 的隐形折扣
🎉 五个问题都想清楚了——你已经完成了大部分工程师跳过的那一步。带着这五个答案去问 AI,它给的方案质量会高一个档次。
我有一个真实需求要做数据结构选型,我已经自己选好了,先别给答案,按下面流程来: 我的需求:(一句话描述,例:给公司 5000 个 SKU 做一个库存查询工具) 我的场景参数:数据量约 X 条、最频繁的操作是 X、是否需要顺序:X、是否需要去重:X、同样的查询是否反复出现:X 请你: 1. 独立给出你的选型方案(用什么结构存、为什么),先不要问我选了什么; 2. 给出这个方案在我的数据量下的性能预估(查一次/插一次大概多快); 3. 说明数据量涨 10 倍后方案要不要变、怎么变。 你答完后我会公布我自己的选择,我们对答案:一致就互相验证,不一致就辩论谁的理由更站得住。
完成标准:你和 AI 的选型一致(互相验证成功),或者不一致但你能在辩论中听懂它的理由、说清你的理由——两种结局都算赢,怕的是从头到尾没自己选过。
为什么顺序是「先自己选、再问 AI」?反过来的话,AI 的答案会瞬间覆盖你的思考,你永远不知道自己原本会怎么选。验收能力就是在「我选的和它选的不一样,为什么?」这个缝隙里长出来的。
顺手记住 · 验收时的三个红旗信号

做任务的过程中,如果在 AI 的回答里看到这三种信号,值得多追问一轮。

🚩
循环里套循环找东西

两层 for 挨个比对,就是 ds-1 的「大抽屉里翻大抽屉」。追问一句:「换成 Set/哈希表会不会更快?」

🚩
说不出放弃了什么

问它备选方案时只会夸当前选择、举不出被放弃的选项——说明它没做过选型,只是默认输出

🚩
只在小数据上演示

Demo 用 10 条数据跑得飞快不代表什么。永远追问:「数据翻一千倍会怎样?」——这是本章最值钱的一句话。

「挑一档 · 今天就动手」为什么要看操作

「拿一段 AI 给你写过的代码(没有现成的?让 AI 现写一个 「通讯录去重」小工具 :输入一堆姓名+手机号,去掉重复的)。然后把下面的提示词甩给它,让它自己交代用了什么收纳方式」把结构落到了一个具体动作。这里真正要比较的不是名词谁更高级,而是数据如何被放置,以及最常发生的操作需要走多远。

读懂结构,要同时看访问方式和变化方式

「接着任务一的代码,让 AI 用 另一种数据结构 把同一功能重写一遍,并列出两版的优劣对照表。关键在最后一步: 结论不让 AI 下,由你来判断 哪版适合你的场景」揭示了一个容易被忽略的取舍:按位置读取、按键查找、从两端进出、插入新元素和遍历关系,适合的组织方式并不相同。一个结构在某个操作上很快,不代表它在所有操作上都快。

  • 验收从审口供开始 :让 AI 交代结构、理由和备选方案,比读代码本身更快暴露问题
  • 结论要自己下 :AI 负责摆事实列对照表,「哪版适合我的场景」必须你来判断
  • 选型前先过五问 :量级、读写比、顺序、去重、缓存——想清楚再问 AI,方案质量高一档

把规模和更新频率一起算进去

实践时可以把「Demo 用 10 条数据跑得飞快不代表什么。永远追问: 「数据翻一千倍会怎样?」 ——这是本章最值钱的一句话」当作边界提醒:先写下数据量、最常用的操作和允许的延迟,再看 AI 给出的结构是否真的匹配。

从「挑一档 · 今天就动手」走到「顺手记住 · 验收时的三个红旗信号」

「挑一档 · 今天就动手」先把问题落在「拿一段 AI 给你写过的代码(没有现成的?让 AI 现写一个 「通讯录去重」小工具 :输入一堆姓名+手机号,去掉重复的)。然后把下面的提示词甩给它,让它自己交代用了什么收纳方式」上;到了「顺手记住 · 验收时的三个红旗信号」,讨论继续推进到「做任务的过程中,如果在 AI 的回答里看到这三种信号,值得多追问一轮」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。

把这条判断带到下一个场景

遇到一个新的数据结构时,不要从定义开始背。先写出最频繁的操作,再估计数据量和更新方式,最后检查结构是否让这三个条件同时成立。

  • 「挑一档 · 今天就动手」:拿一段 AI 给你写过的代码(没有现成的?让 AI 现写一个 「通讯录去重」小工具 :输入一堆姓名+手机号,去掉重复的)。然后把下面的提示词甩给它,让它自己交代用了什么收纳方式
  • 「顺手记住 · 验收时的三个红旗信号」:做任务的过程中,如果在 AI 的回答里看到这三种信号,值得多追问一轮
  • 「最后的要点」:先选再对答案 :验收的眼力,长在你和 AI 意见不一致的那个缝隙里

最后的「最后的要点」把讨论落到「先选再对答案 :验收的眼力,长在你和 AI 意见不一致的那个缝隙里」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。

✅ 这一课想和你分享的

  • 验收从审口供开始:让 AI 交代结构、理由和备选方案,比读代码本身更快暴露问题
  • 结论要自己下:AI 负责摆事实列对照表,「哪版适合我的场景」必须你来判断
  • 选型前先过五问:量级、读写比、顺序、去重、缓存——想清楚再问 AI,方案质量高一档
  • 先选再对答案:验收的眼力,长在你和 AI 意见不一致的那个缝隙里
标记为已学完 阅读进度会自动记录
← 上一篇下一篇 →

继续阅读

同一条线上的下一篇。

文章讨论

读到这里,留下一个判断。

把刚想明白的地方、还没想通的问题,留给下一位一起学习的人。

正在讨论 把 AI 写的代码「验收」一遍 AI 背后的数据结构
3条讨论文章讨论 · 与共学社区同步
在共学社区查看
AM
Asha Morgan内容编辑
观点实践记录

我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。

文章讨论7 有帮助
LH
Lin Harper独立开发者
观点观点

读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。

文章讨论5 有帮助
KM
Kiki Moore产品运营
问题问题

如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。

文章讨论4 有帮助