依赖选择与版本管理

共 17 题
#

1. 依赖选择(dependency selection)的多维度评估中功能、性能、维护活跃度、许可证、安全、社区

A 多维度评估并按其相关性加权权衡 ✓ 正确答案
B 只看功能是否满足需求
C 只选最新版本
D 只选社区最活跃的
#

2. 依赖的"传递依赖"(transitive dependency)的真实依赖树(npm ls、mvn dependency:tree)

A 传递依赖无需关注
B 传递依赖不存在
C 传递依赖是直接依赖的依赖,需通过依赖树查看并纳入扫描与版本管理 ✓ 正确答案
D 传递依赖与漏洞无关
#

3. 依赖锁定文件的工程规范中 lockfile 应提交到版本库还是忽略、何时允许升级锁定版本、锁文件冲突的解决流程与团队约定如何制定?

A 应忽略不提交,以避免冲突
B 升级时可手工直接编辑 lockfile
C 应提交到版本库,保证可复现构建,并通过受控流程升级 ✓ 正确答案
D lockfile 对构建无影响
#

4. 依赖的"供应商策略"(vendoring)中完全控制 vs 外部依赖的工程取舍

A 完全控制依赖、可离线构建并审查,不受上游下线影响 ✓ 正确答案
B 体积更小
C 更新更自动
D 无需管理漏洞
#

5. 依赖的"升级策略"(upgrade strategy)中保守升级、激进升级、Dependabot 自动化

A 只做保守升级
B 按风险与变更幅度分级,结合自动化工具与测试门禁 ✓ 正确答案
C 只做激进升级
D 从不升级依赖
#

6. 依赖锁定的"安全"(security)边界中哈希校验、TUF(The Update Framework)

A 加快依赖下载速度
B 替代哈希校验
C 减少依赖体积
D 防止更新元数据被伪造,应对依赖源投毒攻击 ✓ 正确答案
#

7. 依赖选择的功能评估(functional evaluation)中 API 设计、易用性、文档

A 依赖体积大小
B API 是否清晰、一致、易用 ✓ 正确答案
C 依赖的公司大小
D 依赖的价格
#

8. 依赖选择的安全评估(security evaluation)中漏洞历史、响应速度

A 漏洞披露后修复并发布安全版本的速度 ✓ 正确答案
B 依赖启动速度
C 下载速度
D 编译速度
#

9. 依赖选择的性能评估(performance evaluation)中基准测试

A 主观感受
B 只看文档
C 只看依赖大小
D 用真实数据做可重复的基准测试 ✓ 正确答案
#

10. 依赖的"Bus Factor"风险中单维护者的依赖突然停止维护(left-pad 事件)

A 微小第三方包被移除可能拖垮大量项目,需评估维护者风险并做缓存/锁定 ✓ 正确答案
B 应使用更多第三方包
C 依赖越少越好
D 不需要管理依赖
#

11. 依赖选型的评估中维护、许可证与安全?

A 依赖的代码行数
B 依赖的下载量
C 项目是否活跃(commit 频率、issue 响应、维护者) ✓ 正确答案
D 依赖的品牌
#

12. 核心依赖停止维护或被曝重大漏洞时的决策中 fork、迁移替代库、自研维护三者的决策框架、迁移成本与时间窗口如何评估?

A 一律自研
B 先评估漏洞紧急度与迁移成本,匹配时间窗口,必要时先 fork 缓释再迁移 ✓ 正确答案
C 一律 fork
D 什么都不做
#

13. 依赖选择的维护评估(maintenance evaluation)中 commit 频率、issue 响应

A 项目的许可证
B 项目的代码量
C 项目的性能
D 项目是否有人持续处理问题与反馈 ✓ 正确答案
#

14. 依赖选择的许可证评估(license evaluation)中兼容性、商用许可

A 传染性许可证(GPL/AGPL) ✓ 正确答案
B 宽松许可证(MIT/Apache)
C 无许可证
D 任何许可证都一样
#

15. 版本策略中语义化版本与锁定?

A 漏洞修复
B 向后兼容的新特性
C 破坏性变更 ✓ 正确答案
D 文档更新
#

16. 依赖更新的自动化中 Renovate/Dependabot?

A 支持更多语言
B 集成 GitHub 原生安全更新,可自动创建安全补丁 PR ✓ 正确答案
C 支持自定义调度
D 无需 CI 即可合并
#

17. 传递依赖的风险与治理中依赖冲突、漏洞传递与许可证传染如何识别,锁定(lockfile)与依赖扫描在 CI 中如何落地?

A 通过 lockfile 锁定版本并在 CI 中接入覆盖传递依赖的 SCA 与许可证扫描 ✓ 正确答案
B 只需关注直接依赖
C 传递依赖无法治理
D 传递依赖的许可证与项目无关