# 1. DuckDB 嵌入式 OLAP 引擎,支持列存与向量化执行 A DuckDB 是典型的客户端-服务器架构,需要独立服务进程 B DuckDB 是嵌入式数据库,采用列式存储与向量化执行引擎 ✓ 正确答案 C DuckDB 采用行式存储与逐行火山模型执行 D DuckDB 仅支持单线程串行执行查询
# 2. DuckDB 支持 window function、CTE、Pivot/Unpivot 等分析语法 A DuckDB 不支持窗口函数 B DuckDB 支持窗口函数、CTE 与 PIVOT/UNPIVOT 等分析语法 ✓ 正确答案 C PIVOT 的作用是把宽表旋转为长表 D DuckDB 的 CTE 不支持递归
# 3. DuckDB 通过 ATTACH 接入 PostgreSQL/MySQL 数据库 A ATTACH 只能连接本地 SQLite 文件 B ATTACH 是 DuckDB 关闭外部数据库连接的命令 C ATTACH 后无法执行任何查询 D DuckDB 通过扩展可以 ATTACH 并跨库查询 PostgreSQL/MySQL ✓ 正确答案
# 4. Turso 通过 Embedded Replicas 在客户端缓存数据 A 本地副本完全独立,与主库无关 B Embedded Replicas 只支持行式存储 C 嵌入式副本会显著增加主库写延迟 D 嵌入式副本在本地缓存数据以就近读取,写入通常转发到主库 ✓ 正确答案
# 5. DuckDB 在 0.10+ 通过 SELECT * FROM 's3://...' 直接查询 Parquet A DuckDB 通过 httpfs 扩展直接读取 S3 上的 Parquet 并做列裁剪与谓词下推 ✓ 正确答案 B 必须先 COPY 到本地才能查询 C 查询 S3 文件时无法过滤任何列 D 该功能仅支持本地文件系统
# 6. SQLite 通过 WAL 模式支持多读单写并发 A WAL 模式允许多个写者同时写入 B WAL 模式不支持读事务 C WAL 模式实现多读单写,读者不阻塞写者 ✓ 正确答案 D WAL 模式会删除主数据库文件
# 7. SQLite 通过 JSON1/JSONB 扩展支持 JSONB 函数 A SQLite 通过 JSON1 扩展提供 json_extract 等函数,并支持 JSONB 二进制表示 ✓ 正确答案 B SQLite 不支持任何 JSON 函数 C JSONB 比文本 JSON 更占空间 D SQLite 无法对 JSON 字段建立索引
# 8. SQLite / WASM / OPFS 在 WASI Preview2、Component Model 上的沙箱与系统调用代理? A WASM 可以直接访问宿主文件系统 B WASI 通过接口代理方式把文件操作映射到宿主资源(如 OPFS),实现沙箱隔离 ✓ 正确答案 C WASM 沙箱仅限制网络访问 D Component Model 与沙箱无关
# 9. SQLite / WASM / OPFS 在 Cross-compilation(Zig、Clang)的 multi-arch 构建中的 toolchain 整合? A 只能运行在 x86 平台 B 通过 Zig/Clang 指定 target 可交叉编译到 wasm32、arm 等多架构 ✓ 正确答案 C SQLite 无法编译为 WASM D 交叉编译不需要 toolchain 配置
# 10. DuckDB 的扩展机制,INSTALL/LOAD 与 SQLite 的 load_extension 在安装、签名与版本管理上的差异? A DuckDB 与 SQLite 都使用官方签名扩展 B DuckDB 不支持扩展 C SQLite 的扩展需要官方仓库批准 D DuckDB 通过 INSTALL/LOAD 管理带签名与版本的扩展,SQLite 的 load_extension 则加载任意动态库 ✓ 正确答案
# 11. SQLite 的 journal 模式(DELETE/TRUNCATE/PERSIST/WAL)在崩溃安全、并发与 IO 放大上的差异? A WAL 模式写事务会阻塞读事务 B DELETE 模式在提交后删除回滚日志,可能产生较多元数据 IO ✓ 正确答案 C 所有模式都不支持并发读取 D PERSIST 模式在提交后删除日志文件
# 12. DuckDB 读取 Parquet 时的元数据过滤(metadata filtering)与统计信息裁剪如何减少 IO? A DuckDB 总是读取整个文件所有列 B 利用 Parquet footer 的统计信息,DuckDB 可做列裁剪与 row group 跳过来减少 IO ✓ 正确答案 C Parquet 不保存任何统计信息 D 谓词过滤只发生在内存中,无法减少 IO
# 13. DuckDB 与 PostgreSQL 的 SQL 方言差异(ILIKE、PIVOT、QUALIFY 等)在迁移分析 SQL 时的注意点? A 两者在所有分析语法上完全一致 B PIVOT/QUALIFY 是 DuckDB 特色语法,迁移到 PostgreSQL 需改写 ✓ 正确答案 C PostgreSQL 也原生支持 PIVOT D ILIKE 在两种数据库中均不可用
# 14. DuckDB 的 Arrow 集成,COPY ... TO/FROM FORMAT arrow 与内存中 Arrow 数据的零拷贝查询? A DuckDB 只能把 Arrow 数据复制到内部再查询 B Arrow 与 DuckDB 采用不同的列存格式,无法兼容 C DuckDB 支持 COPY 到 Arrow 格式,并能对内存 Arrow 数据做零拷贝查询 ✓ 正确答案 D DuckDB 不支持 Arrow 文件格式
# 15. SQLite 的 auto_vacuum(NONE/FULL/INCREMENTAL)与 freelist 页面回收机制的差异? A NONE 模式会自动缩小数据库文件 B INCREMENTAL 模式下需手动调用 incremental_vacuum 回收 freelist 页 ✓ 正确答案 C FULL 模式无任何 IO 开销 D 三种模式都会立即截断文件
# 16. SQLite 的 UPSERT(ON CONFLICT DO UPDATE/NOTHING)与 RETURNING 子句的语义? A DO NOTHING 表示更新冲突行 B SQLite 不支持 UPSERT C RETURNING 只能返回新插入的行,不能返回更新行 D 可用 excluded. 在 DO UPDATE 中引用本次插入的值 ✓ 正确答案
# 17. SQLite 外键默认不启用(PRAGMA foreign_keys)的原因与启用后对 DELETE/UPDATE 级联的影响? A 外键默认启用并自动级联 B 启用外键后级联删除会永久失效 C 需通过 PRAGMA foreign_keys=ON 启用,之后 ON DELETE CASCADE 才会生效 ✓ 正确答案 D 外键无法声明级联动作
# 18. DuckDB 的 JSON 处理,json_extract/json_transform 等函数与嵌套结构的查询与展开? A DuckDB 只能把 JSON 当作文本比较 B json_extract 用 JSONPath 提取值,json_transform 可把 JSON 反序列化为强类型 ✓ 正确答案 C DuckDB 无法展开 JSON 数组 D 嵌套结构无法查询
# 19. SQLite 全文检索(FTS5)的倒排索引与中文分词(unicode61、trigram)的查询差异? A unicode61 能对中文做真正的语义分词 B trigram 比 unicode61 索引更小 C FTS5 不基于倒排索引 D trigram 分词器通过字符 n-gram 支持中文子串与模糊匹配 ✓ 正确答案
# 20. DuckDB 的 Secret Manager 与 httpfs,S3/对象存储凭证的安全管理与访问控制? A 凭证必须每次写在 SQL 中 B 凭证无法按作用域隔离 C httpfs 不支持对象存储 D Secret Manager 可定义存于指定作用域的 S3 凭证,避免明文暴露 ✓ 正确答案
# 21. DuckDB 的内存模式(:memory:)与持久化文件模式在事务、性能与并发上的差异? A :memory: 模式数据持久化到磁盘 B :memory: 模式进程退出后数据丢失,但性能更快 ✓ 正确答案 C 文件模式数据不持久化 D 两种模式性能完全相同
# 22. SQLite 的 page_size 与 max_page_count 配置对存储空间与随机 IO 的影响? A max_page_count 限制文件页数,从而约束文件大小上限 ✓ 正确答案 B page_size 越大随机 IO 一定越高效 C page_size 可在建库后随意修改 D 页大小与存储空间无关
# 23. DuckDB 与 MotherDuck 云同步,本地缓存、增量同步与冲突处理机制? A 每次查询都全量拉取云端数据 B 云同步不涉及任何一致性 C MotherDuck 不允许本地缓存 D 本地缓存配合增量同步减少重复拉取,多写者需处理冲突 ✓ 正确答案
# 24. SQLite 的在线备份,sqlite3_backup API 与 VACUUM INTO 在一致性上的差异? A sqlite3_backup 会阻塞源库所有写入 B sqlite3_backup 只能用于内存库 C 两种方式都无法保证一致性 D VACUUM INTO 生成紧凑一致的备份文件,但每次基本全量 ✓ 正确答案
# 25. DuckDB 通过 httpfs 扩展读取 S3/HTTP 数据 A 通过 httpfs 可用 glob 通配并行读取 S3/HTTP 上的 Parquet ✓ 正确答案 B httpfs 只能读取本地文件 C 读取远程数据不能做谓词下推 D httpfs 与 Secret Manager 无关
# 26. libSQL 是 SQLite 的 fork,扩展 HTTP wire protocol 与 async API A libSQL 与 SQLite 完全无关 B libSQL 是 SQLite 的 fork,扩展了 HTTP wire protocol 与 async API ✓ 正确答案 C libSQL 不支持嵌入式使用 D libSQL 删除了 SQLite 的所有功能
# 27. Turso 基于 libSQL 提供托管分布式 SQLite 服务 A Turso 与 SQLite 无关 B Turso 只支持单机部署 C Turso 基于 libSQL 提供多区域分布式 SQLite 托管服务 ✓ 正确答案 D Turso 不支持 HTTP 访问
# 28. libSQL 支持 WebAssembly 与原生两种运行时 A libSQL 同时支持原生与 WASM 两种运行时 ✓ 正确答案 B libSQL 只支持原生运行时 C WASM 运行时性能必然高于原生 D WASM 运行时可以直接访问磁盘
# 29. SQLite WASM 在浏览器中执行,依赖 OPFS(Origin Private File System)持久化 A WASM 版 SQLite 可直接写本地磁盘文件 B OPFS 数据无法跨页面刷新保留 C SQLite WASM 通过 OPFS(Origin Private File System)在浏览器中持久化数据 ✓ 正确答案 D 浏览器中 SQLite 无法持久化
# 30. SQLite 通过 VFS 抽象文件系统,jswasm 模式使用 IndexedDB A VFS 仅用于本地磁盘 B VFS 与浏览器环境无关 C SQLite 通过 VFS 抽象文件系统,jswasm 构建可用 IndexedDB 作为持久化后端 ✓ 正确答案 D 浏览器中 SQLite 无法使用 VFS
# 31. DuckDB 的统计信息(ANALYZE、min/max、字典)如何支撑优化器做 join 排序与过滤裁剪? A ANALYZE 收集的 min/max、基数等统计帮助优化器选择 join 顺序与过滤裁剪 ✓ 正确答案 B 统计信息与优化器无关 C DuckDB 只有固定 join 顺序 D 字典统计用于存数据,不影响优化
# 32. SQLite 只读访问的优化,URI mode=ro、PRAGMA query_only 与 immutable 参数的应用? A immutable=1 会额外加锁 B 只读模式与性能无关 C query_only 不限制任何写操作 D URI mode=ro 强制只读,query_only 禁止写,immutable 假设文件不变以省锁开销 ✓ 正确答案
# 33. DuckDB 的 EXPLAIN,Logical Plan 与 Physical Plan 的区别及优化器各阶段的作用? A Logical Plan 与 Physical Plan 完全相同 B Logical Plan 描述抽象查询步骤,Physical Plan 是优化后的具体执行算子 ✓ 正确答案 C 优化器只调整逻辑计划 D EXPLAIN 无法显示执行计划
# 34. SQLite 的锁级别(SHARED/RESERVED/PENDING/EXCLUSIVE)与 busy_timeout 的等待行为? A EXCLUSIVE 锁允许并发读 B SHARED 锁是独占的 C 写者需经 RESERVED→PENDING→EXCLUSIVE 升级,busy_timeout 控制锁冲突时的等待时长 ✓ 正确答案 D busy_timeout 与锁无关
# 35. DuckDB 的 CSV/JSON 自动模式推断(sniffer)与类型推断失败的处理策略? A 自动推断完全准确,无需手动指定 B 类型推断失败时查询必然失败无法补救 C sniffer 基于抽样推断类型,失败时可显式指定 columns 或用 all_varchar 兜底 ✓ 正确答案 D CSV 无法自动推断 schema
# 36. DuckDB 的 Python API,register/replace 注册 DataFrame 与直接查询内存数据的方式? A Python 无法查询内存 DataFrame B register 可把 DataFrame 注册为可查询表,replace 用于覆盖同名表 ✓ 正确答案 C DuckDB Python 只能查询磁盘文件 D 注册 DataFrame 后无法用 SQL 查询
# 37. DuckDB 的并发访问模型,多进程只读共享文件与单写者限制下的实践? A DuckDB 支持多进程只读共享同一文件,但同一时刻仅单写者 ✓ 正确答案 B DuckDB 允许多进程同时写同一文件 C 只读共享无法实现 D 多进程写不会冲突
# 38. SQLite 的表达式索引与部分索引(WHERE 子句)在查询优化中的应用? A 表达式索引无法加速查询 B 部分索引会对全表建索引 C 表达式索引要求查询表达式与索引定义完全一致才能命中 ✓ 正确答案 D 部分索引与 WHERE 子句无关
# 39. DuckDB 的 SQL UDF(CREATE FUNCTION)与宏(CREATE MACRO)在复用分析逻辑时的差异? A 宏是独立执行的函数,有调用开销 B UDF 不能返回表 C CREATE MACRO 本质是表达式模板替换,更轻量;CREATE FUNCTION 可定义表函数 ✓ 正确答案 D 两者完全等价
# 40. SQLite 的临时表(TEMP)与 WITHOUT ROWID 表的语义与适用场景? A WITHOUT ROWID 表以显式主键作为聚簇索引 key,去掉隐式 rowid ✓ 正确答案 B 临时表会跨会话持久存在 C WITHOUT ROWID 表必须依赖 rowid D 临时表写入主数据库文件
# 41. DuckDB 的查询内存控制,PRAGMA memory_limit 与外部排序/聚合落盘(spill)如何避免 OOM? A memory_limit 只影响缓存 B 超过内存上限时 DuckDB 会把排序/聚合结果 spill 到磁盘以避免 OOM ✓ 正确答案 C DuckDB 无法控制内存 D 大查询必然 OOM
# 42. SQLite 的虚拟表机制(CREATE VIRTUAL TABLE、自定义 create_module)如何扩展存储与索引? A 虚拟表只能用内置存储 B 虚拟表无法自定义索引 C 通过 sqlite3_create_module 注册模块后再用 CREATE VIRTUAL TABLE 可把外部数据结构映射为表 ✓ 正确答案 D 虚拟表与扩展无关
# 43. DuckDB 的 VIEW 与 CTE 在分析查询中的复用与性能差异(是否物化)? A CTE 默认总是物化 B DuckDB 的 VIEW 与 CTE 默认内联(非物化),重 CTE 多次引用时可能重复计算 ✓ 正确答案 C VIEW 无法复用 D CTE 只能在服务器端使用