# 1. BouncyCastle(bcprov)的扩展算法 A 使用 BouncyCastle 算法无需注册 Provider B 它提供的是 JDK 已有的全部算法,无需扩展 C 它是 JCA Provider,通过注册后可用标准 API 使用国密(SM2/SM3/SM4)、Argon2、Ed25519 等 JDK 未内置算法 ✓ 正确答案 D 它只能做哈希,不能做对称加密
# 2. Java 加密与 Spring Security Crypto 模块 A Crypto 模块是独立于 JCA 的加密实现,不依赖其算法 B JCA/JCE 提供标准加密 API,Crypto 模块在其上封装 Encryptors/PasswordEncoder 等易用工具 ✓ 正确答案 C Encryptors 用于密码哈希,PasswordEncoder 用于数据加密 D Spring Security Crypto 只能用于认证,不能单独加密数据
# 3. 优惠券/积分的并发扣减安全,乐观锁/悲观锁/Redis Lua 原子操作如何选择 A 乐观锁冲突低时高效、悲观锁适合高冲突强一致、Redis Lua 脚本原子执行适合高并发,可组合使用 ✓ 正确答案 B Redis Lua 脚本可以保证与数据库的强一致 C 悲观锁无任何锁开销,最适合高并发 D 并发扣减只需在 SQL 中拼接字符串即可
# 4. 哈希算法(MD5/SHA-1/SHA-256/SM3)的安全边界 A MD5 可用于密码存储,因为速度快 B SHA-256 可以直接无盐存储密码 C MD5/SHA-1 已不安全,SHA-256/SM3 用于完整性校验,但密码存储仍需加盐慢哈希而非直接哈希 ✓ 正确答案 D SM3 是弱哈希,仅用于非安全场景
# 5. 对称加密(AES/DES/3DES)的差异 A DES 已不安全,3DES 逐步弃用,AES 是现代标准(128/256 位),业务应使用 AES 并配合 GCM 模式 ✓ 正确答案 B DES 密钥长度比 AES 更长,更安全 C 3DES 比 AES 更快更安全 D 三种算法分组大小相同,可互换
# 6. 接口限流(令牌桶/滑动窗口/漏桶)在 Spring Cloud Gateway 与 Redis 下的实现与选型 A 漏桶适合处理突发流量 B 令牌桶允许一定突发、漏桶恒定输出、滑动窗口统计窗口内请求数,网关可用 Redis 的令牌桶(RequestRateLimiter)实现 ✓ 正确答案 C 令牌桶输出速率恒定,无法应对突发 D 滑动窗口无法精确统计窗口内请求
# 7. 登录与短信接口的防爆破策略,验证码、人机校验(reCAPTCHA/滑块)与指数退避锁定如何组合 A 组合验证码、人机校验、指数退避锁定与短信频率限制,用 Redis 记录状态可有效防爆破 ✓ 正确答案 B 短信接口无需限制频率 C 只需要验证码即可完全防爆破 D 失败锁定后立即解除,无需退避
# 8. 设备指纹生成(浏览器 Canvas/WebGL/指纹哈希)与多账号关联检测 A 设备指纹只依赖 UA,非常稳定 B 多账号关联检测只需看 IP C 通过 Canvas/WebGL/UA 等采集设备特征并哈希成指纹,同一指纹关联多个账号即可触发风控 ✓ 正确答案 D 设备指纹一旦生成永不变化
# 9. 防薅羊毛,注册、领券场景的业务一致性约束与幂等设计(唯一键/状态机/令牌) A 通过唯一键/状态机/令牌建立幂等,配合 Redis SETNX 或数据库唯一索引保证并发不重复领取 ✓ 正确答案 B 幂等只需前端按钮加禁用即可 C 同一用户重复领券是允许的,无需幂等 D 唯一键幂等无法防止并发重复
# 10. 非对称加密(RSA/ECC/SM2)的差异 A RSA 密钥最短、性能最好 B 相同安全强度下 ECC 密钥更短、性能更好,SM2 是国密 ECC,均适合签名与密钥交换,不适合加密大数据 ✓ 正确答案 C 非对称加密适合加密大量数据 D SM2 与 RSA 基于同一数学难题
# 11. Java KeyStore(JKS)与 PKCS12 A JKS 是行业标准格式,跨语言兼容 B PKCS12 是跨平台标准格式、密码保护更强、可含证书链,现代项目优先使用,JKS 仅 Java 专有 ✓ 正确答案 C PKCS12 只能存 Java 专有的密钥 D JKS 密码保护比 PKCS12 更强
# 12. PKI 与 X.509 证书链 A 证书链从目标证书逐级回溯到受信任根 CA,验证签名、有效期、吊销与主机名,构成 HTTPS 信任基础 ✓ 正确答案 B 根 CA 证书是自签名的,无需信任即可验证 C 证书链验证只需看证书名称,无需验证签名 D 证书链验证不需要检查有效期
# 13. SSL/TLS 握手协议(1.2/1.3)的差异 A TLS 1.3 握手更少往返、强制前向保密、仅保留 AEAD 强密码套件,安全性更强 ✓ 正确答案 B TLS 1.3 仍支持 RSA 密钥交换与 CBC 模式 C TLS 1.2 与 1.3 握手流程完全相同 D TLS 1.3 移除前向保密以提升性能
# 14. 业务安全中的人机验证演进,从图片验证码到无感验证(行为分析/设备信任) A 图片验证码无法被机器学习破解 B 无感验证完全不需要任何风险判断 C 人机验证从图片验证码演进到无感验证,通过行为分析、设备信任与风险分级实现低风险无感、高风险挑战 ✓ 正确答案 D 设备信任是唯一的人机验证手段
# 15. 国密算法(SM2/SM3/SM4)的工程应用 A JDK 内置支持全部国密算法,无需额外依赖 B SM4 是非对称算法,用于签名 C SM3 用于对称加密 D SM2 用于非对称签名/加密、SM3 用于哈希、SM4 用于对称加密,Java 中需通过 BouncyCastle 提供实现 ✓ 正确答案
# 16. 密钥派生(KDF)与 PBKDF2/bcrypt/scrypt/argon2 A PBKDF2 是 memory-hard 算法,抗 GPU 最强 B argon2 是 memory-hard 的现代标准,通过内存与迭代参数提高抗 GPU 成本,优于纯迭代的 PBKDF2/bcrypt ✓ 正确答案 C 所有 KDF 的抗暴力能力完全相同 D bcrypt 支持任意长度密码,无 72 字节限制
# 17. 密钥管理(KMS/Vault)的工程实现 A 密钥应硬编码在应用配置中以便使用 B KMS/Vault 集中安全存储密钥并支持轮换,应用通过 API 引用而不持有密钥,避免硬编码 ✓ 正确答案 C KMS/Vault 只能存储但不能轮换密钥 D 应用必须把密钥下载到本地才能使用
# 18. 接口签名(HMAC-SHA256)与重放攻击防护(nonce/timestamp/签名有效期) A 只要校验签名就能完全防重放 B 用 HMAC-SHA256 对参数+时间戳+nonce 签名,服务端校验 timestamp 窗口与 nonce 去重来防重放 ✓ 正确答案 C nonce 用于防止参数被篡改 D timestamp 用于标识请求来源
# 19. 敏感操作的二次认证(OTP/扫码确认)与风险分级(低/中/高)策略设计 A 所有操作都要求最高强度的二次认证 B 风险分级与操作类型无关,与用户无关 C 二次认证只能通过短信 OTP,无法用 TOTP D 高风险操作要求 OTP/扫码等二次认证,低中高风险分级驱动渐进式认证,平衡安全与体验 ✓ 正确答案
# 20. 数字签名(RSA/ECDSA)的原理 A 数字签名用公钥签名、私钥验证 B 签名是对数据加密,保证机密性 C 私钥签名公钥验证,保证了完整性、来源认证与不可否认,ECDSA 基于椭圆曲线密钥更短性能更好 ✓ 正确答案 D RSA 与 ECDSA 签名安全性完全相同,性能相同
# 21. 消息认证码(HMAC)与完整性保护 A HMAC 与普通哈希相同,都无密钥 B HMAC 用共享密钥与哈希计算认证标签,能防恶意篡改,但无法区分具体签名者,与数字签名的非对称机制不同 ✓ 正确答案 C HMAC 能提供不可否认性 D HMAC 用公钥验证消息
# 22. 行为风控(频率/地理位置/设备切换)的实时规则与离线模型协同 A 实时规则能发现所有未知风险模式 B 两者完全独立,不需要共享特征 C 离线模型无法处理复杂模糊风险 D 实时规则快速拦截明确风险、离线模型综合评价发现未知风险,两者结合特征做分级决策 ✓ 正确答案
# 23. 零知识证明(ZKP)的工程现状 A ZKP 允许证明陈述为真而不泄露信息,主要落地于区块链隐私与扩容,但计算开销与工程复杂度仍是难点 ✓ 正确答案 B ZKP 不需要可信设置,可随意使用 C ZKP 可以证明一切通用计算,且无成本 D ZKP 在 Java 生态已广泛普及,无落地难点
# 24. 风控系统的规则热更新与灰度发布(A/B 测试规则效果)的工程实现 A 规则更新必须重启服务才能生效 B 规则存配置中心由引擎热加载,通过流量分流做 A/B 对比效果,验证后再全量,实现快速迭代与可控风险 ✓ 正确答案 C A/B 测试无法对比新旧规则效果 D 灰度发布意味着新规则直接全量生效
# 25. 风控规则引擎与布隆过滤器在黑名单/设备指纹场景的应用与误判率控制 A 布隆过滤器不会误判,可完全替代数据库 B 布隆过滤器可在内存快速判断是否在黑名单,命中后需二次精确验证以消除假阳性误伤 ✓ 正确答案 C 布隆过滤器误判率与位数组大小无关 D 布隆过滤器只支持精确查询,不支持快速过滤
# 26. Java 25 JEP 470/JEP 524 PEM Encodings 预览边界 A 这些 PEM 编码能力以预览特性发布,需启用 --enable-preview,API 可能变更,生产应等稳定后再采用 ✓ 正确答案 B 预览特性默认启用,无需任何配置 C 预览特性 API 保证长期稳定,可放心使用 D PEM 编码只能通过 BouncyCastle 实现,JDK 不支持
# 27. 业务安全事件的审计日志与可追溯性(操作人/时间/设备/结果)设计 A 审计日志只需记录是否成功,无需其他字段 B 审计日志可随意修改,无需保护 C 审计日志应记录操作人、时间、设备、对象、结果与上下文,结构化为不可篡改并集中存储以支持追溯 ✓ 正确答案 D 审计日志不需要脱敏与保留策略