AKULAKU |Java开发(数字银行)|四年半

一、面试提问汇总(按主题分类)

1. 项目经验与架构设计

  • 请介绍你在金融系统和高并发场景中的经验。
  • 你是如何设计统一身份认证系统的?
  • 如何处理12家银行的接口差异?
  • 策略模式和适配器模式在项目中是如何应用的?
  • 你提到用了WebClient替换RestTemplate,为什么选择这个方案?
  • 微服务之间是如何通信的?内部服务调用和外部银行接口调用有什么区别?
  • 认证授权机制是如何设计的?OAuth 2.0具体是怎么接入的?

2. 性能优化与数据库

  • 你是如何优化千万级流水授权表的查询性能的?
  • 联合索引和覆盖索引在什么场景下使用?
  • 连接池参数调优是如何做的?有没有遇到过僵尸连接问题?
  • 慢SQL排查和优化的流程是怎样的?
  • 你了解B+树索引和哈希索引的区别吗?为什么选择B+树?
  • 数据库表设计有哪些规范?字段非空和默认值设置你是如何考虑的?

3. 事务与并发控制

  • 数据库事务的ACID特性是什么?隔离级别有哪些?
  • 在可重复读级别下,如何处理并发更新导致的脏读问题?
  • 在支付回调场景中,如何保证数据的一致性和幂等性?
  • 乐观锁和悲观锁在项目中是如何使用的?
  • 在多线程场景下,@Transactional注解是否有效?如何保证事务的一致性?
  • 先更新DB再删除缓存的方案,在高并发下是否有风险?

4. 分布式与中间件

  • 你们项目中使用了什么MQ?为什么选择IBM MQ?
  • 死信队列是如何实现的?RocketMQ中死信队列的原理是什么?
  • 分布式锁在项目中是如何使用的?有没有实际应用经验?
  • 全链路追踪是如何实现的?有没有使用过traceId?
  • 微服务间的鉴权是如何做的?有没有用户信息传递方案?

5. 算法与基础

  • 请描述一下链表反转的算法。

二、面试复盘与建议

✅ 表现好的方面:

  1. 项目经验扎实:你有丰富的金融系统开发经验,特别是在统一身份认证、多银行接口对接方面,有明显的技术贡献。
  2. 性能优化能力强:从索引优化、连接池调优到WebClient替换,展现了系统级的优化能力。
  3. 安全意识强:对OAuth 2.0、证书隔离、加密验签等安全机制有清晰的理解和实践。
  4. 表达清晰:在介绍项目和技术方案时,能够用具体数据和案例支撑,增强了说服力。

⚠️ 需要改进的方面:

  1. 理论深度不足
    • 在事务隔离级别、分布式锁、死信队列等深层次原理上,回答略显零散,缺乏系统性。
    • 建议结合《高性能MySQL》、《RocketMQ技术内幕》等书籍,加强对底层机制的理解。
  2. 复杂场景处理经验不足
    • 多线程事务、分布式事务一致性等场景处理方案不够成熟。
    • 建议在实际项目中尝试使用Seata、本地消息表等方案,并总结成案例。
  3. 系统监控与链路追踪薄弱
    • 对全链路追踪(如SkyWalking、Zipkin)的实践经验不足。
    • 建议在项目中引入链路追踪工具,并理解其核心机制。
  4. 算法基础需加强
    • 链表反转虽然能描述,但表达不够流畅,建议适当刷题,提升手写能力。

三、后续面试准备建议

方向建议
项目复盘梳理2-3个核心项目,准备“背景-挑战-方案-结果”结构,突出你的技术贡献和思考过程。
技术深度针对事务、锁、索引、MQ等高频考点,整理原理、应用场景、坑点,形成知识卡片。
系统设计准备1-2个系统设计题(如设计一个秒杀系统、统一认证平台),强化架构思维。
算法刷题每天刷1-2道LeetCode中等难度题,重点掌握链表、树、排序、动态规划等高频题型。
模拟面试找同行或使用在线平台进行模拟面试,提升表达流畅度和应变能力。
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
遇见
下载 APP