招银网络科技后端开发一面面经
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- Java 线程池有哪些核心参数?提交任务后的完整流程是什么?
- 线程池有哪些常见拒绝策略?
- 数据库事务的 ACID 特性是什么?
- MySQL 有哪些事务隔离级别?InnoDB 默认是哪一种?
@Transactional的实现原理、属性和失效场景是什么?- Spring 有哪些事务传播行为?REQUIRED、REQUIRES_NEW、NESTED 有什么区别?
- MyBatis 一级缓存和二级缓存有什么区别?
- MyBatis 中
#{}和${}有什么区别?为什么${}有 SQL 注入风险? - Mapper 接口和 Mapper XML 如何关联?
- 如何设计数据权限体系?
- 飞书单点登录中的 State 和 Ticket 如何组成双重一次性令牌?
- 如何反转链表指定区间
[left, right]?
《参考解析》
- 事务传播:REQUIRED 加入现有事务、没有则新建;REQUIRES_NEW 挂起外层并单独提交;NESTED 在同一事务中使用保存点。选择时应先明确内外层失败是否需要一起回滚。
- MyBatis 参数:
#{}通过预编译参数绑定,能避免把值拼进 SQL;${}进行字符串替换,适合少数受控标识符场景,输入不可信时会产生注入风险。 - 单点登录令牌:State 用于绑定登录请求并防 CSRF,Ticket 是服务端一次性凭证。两者都应具备短时有效期、随机性和服务端消费标记,回调时校验绑定关系后立即作废。
- 区间反转:先找到
left前驱,把区间首节点与前驱断开后逐个头插到前驱之后,最后重新连接尾部。整个过程保持未反转部分链表可达,时间复杂度 O(n)、额外空间 O(1)。