某银行大厂面试技术问题深度解析(一)

作者:360_go_php日期:2025/10/28

1. MyBatis的依赖pom包

MyBatis 是一个持久层框架,主要用于简化数据库操作。要在项目中使用 MyBatis,必须在 pom.xml 文件中添加相应的依赖。以下是常用的 MyBatis 依赖:

1<dependency>  
2    <groupId>org.mybatis</groupId>  
3    <artifactId>mybatis</artifactId>  
4    <version>3.5.5</version>  
5</dependency>
6
7<dependency>  
8    <groupId>org.mybatis</groupId>  
9    <artifactId>mybatis-spring</artifactId>  
10    <version>2.0.6</version>  
11</dependency>  
12
  • mybatis 是核心依赖,提供了 SQL 映射和执行功能。
  • mybatis-spring 是 MyBatis 与 Spring 集成的依赖,简化了 MyBatis 在 Spring 环境下的配置。

2. Maven如何解决循环pom依赖

在 Maven 中,循环依赖会导致构建失败。Maven 使用继承和依赖机制来组织项目。如果遇到循环依赖,可以通过以下几种方法解决:

  • 依赖重构:将循环依赖拆分成多个模块,避免循环引用。
  • 依赖排除:使用 <exclusions> 标签排除冲突的依赖。
  • 引入接口抽象:将循环依赖的部分抽象成接口或抽象类,减少直接依赖。

3. Java的8大基础类型和所占字节

Java 中有8种基本数据类型,每种类型所占字节数如下:

数据类型占用字节数取值范围
byte1-128 到 127
short2-32,768 到 32,767
int4-2^31 到 2^31 - 1
long8-2^63 到 2^63 - 1
float4±1.4E-45 到 ±3.4E+38
double8±4.9E-324 到 ±1.8E+308
char20 到 65,535 (Unicode字符集)
boolean1 (通常)true 或 false

4. 类加载器

类加载器(ClassLoader)是 Java 中用于加载类的组件。它通过以下步骤加载类:

  • 加载:将类的字节码文件加载到内存中。
  • 连接:包括验证、准备和解析。
  • 初始化:执行类的初始化操作。

常见的类加载器有:

  • Bootstrap ClassLoader:加载 JDK 核心类库。
  • Extension ClassLoader:加载 JDK 扩展类库。
  • System ClassLoader:加载应用程序类路径中的类。

5. Redis的缓存穿透和缓存雪崩

  • 缓存穿透:指查询的数据在缓存和数据库中都不存在,导致每次请求都访问数据库,可能造成数据库压力过大。解决方法:
    - 使用布隆过滤器(Bloom Filter)来判断数据是否存在。
    - 对查询结果为空的数据设置缓存,避免频繁查询数据库。
  • 缓存雪崩:指缓存大量数据同时过期或失效,导致大量请求直接访问数据库,可能引发数据库宕机。解决方法:
    - 设置不同的缓存过期时间,避免同时过期。
    - 使用缓存预热策略,提前加载热点数据。

6. Redis的key键过期事件

Redis 提供了两种方式来监听键的过期事件:

  • 主动过期:Redis 定期检查键的过期时间并删除。
  • 惰性过期:当键被访问时,Redis 会检查键是否已过期,并删除已过期的键。

你可以通过配置 notify-keyspace-events 来开启过期事件的通知。​编辑

7. Redis的延迟队列

Redis 延迟队列通常是利用 Sorted Set 数据结构来实现的。通过将任务的执行时间作为分数,将任务放入 Sorted Set 中。当任务的执行时间到达时,客户端从队列中取出任务。常见的做法是:

  • 将任务的执行时间(时间戳)作为 score,将任务数据作为 member 放入 Sorted Set
  • 定时检查 Sorted Set 中的任务,并取出到期的任务进行处理。​编辑

8. RocketMQ的消息最终一致性

RocketMQ 提供了事务消息机制,确保在分布式系统中消息的一致性。消息的最终一致性通常是通过以下方式保证的:

  • 消息发送:消息首先以半消息的形式发送,状态是“未决”。​编辑
  • 执行本地事务:生产者根据业务逻辑执行本地事务。
  • 消息确认:根据本地事务的执行结果,提交或回滚事务消息。

9. 分布式事务(CAP,2PC,3PC,TCC)

  • CAP 理论:在分布式系统中,三个特性是互相牵制的:
    - Consistency(一致性)
    - Availability(可用性)
    - Partition tolerance(分区容错性)
  • 2PC(两阶段提交协议):通过协调者和参与者的配合来保证事务的一致性。存在阻塞问题。
  • 3PC(三阶段提交协议):在 2PC 的基础上增加了准备阶段,解决了 2PC 中的阻塞问题,但复杂性更高。
  • TCC(Try/Confirm/Cancel):将分布式事务拆分为三部分:
    - Try:预执行操作,检查是否可以提交事务。
    - Confirm:提交事务。
    - Cancel:回滚事务。

10. 平时如何学习技术

  • 系统性学习:选择合适的学习路径,从基础开始,逐步掌握进阶知识。
  • 动手实践:通过项目实践来加深对技术的理解。
  • 阅读官方文档:官方文档是最权威的学习资源。
  • 参与社区:加入技术社区,关注最新的技术趋势和最佳实践。
  • 自我总结:定期总结所学内容,并做笔记,帮助记忆和复习。

11. 未来发展

随着技术的快速发展,未来可能会看到更多的创新和变革,特别是在以下领域:

  • 人工智能:AI 将会深入到各个行业,特别是在数据分析、自动化和智能决策中。
  • 区块链技术:区块链在金融、物流、身份认证等领域将有更多应用。
  • 量子计算:虽然还处于初级阶段,但量子计算将在未来改变计算能力和算法。
  • 云计算和边缘计算:随着数据量的激增,云计算和边缘计算将在分布式系统中扮演重要角色。

在未来的工作中,持续学习和灵活应变是非常重要的,随着技术的更新换代,我们需要不断地调整自己的技术栈,保持竞争力。


这篇文章从常见的银行大厂面试问题出发,逐个解答了技术点,希望能帮助在面试中顺利回答这些问题,顺利通过面试!


某银行大厂面试技术问题深度解析(一)》 是转载文章,点击查看原文


相关推荐


Python 的内置函数 complex
IMPYLH2025/10/25

Python 内建函数列表 > Python 的内置函数 complex Python 的内置函数 complex() 用于创建一个复数对象。复数在数学和科学计算中有着广泛的应用,特别是在信号处理、电气工程和物理学等领域。 class complex(r=0, i=0): ''' 类型转换为 complex :param r: 实部 :param i: 虚部 :return: 转换为 complex 后的值 ''' 示例 # 创建实部为


猿辅导Java面试真实经历与深度总结(三)
360_go_php2025/10/23

​ 在Java面试中,有些问题是每个面试官几乎都会问到的。这些问题涉及到JVM内存管理、Spring框架的核心原理以及一些常见的Java技术点。今天我们来解答一系列常见的Java面试问题,帮助你更好地准备面试。 1. JVM内存区域及内存溢出 JVM内存分为多个区域,每个区域有不同的功能。主要分为以下几个区域:​编辑 程序计数器(Program Counter Register):每个线程有独立的程序计数器,用于指示当前线程所执行的字节码指令的位置。 Java虚拟机栈(JVM Sta


3个技巧让你彻底搞懂JavaScript异步编程
良山有风来2025/10/22

你是不是曾经遇到过这样的情况? 页面上的数据加载了半天就是出不来,控制台报了一堆看不懂的错误。代码写着写着就变成了“回调地狱”,一层套一层,自己都看不懂自己写了什么。 别担心,异步编程确实是很多前端开发者的痛点。但今天,我会用最通俗易懂的方式,带你彻底搞懂JavaScript中的异步编程。 读完本文,你不仅能理解回调、Promise和async/await的区别,还能掌握如何在实际项目中优雅地处理异步操作。最重要的是,你会拥有一套清晰的异步编程思路,再也不用害怕处理复杂的异步逻辑了。 什么是异步


基于SpringBoot的高校迎新管理系统
计算机毕设定制辅导-无忧2025/10/20

一、前言         随着高等教育规模的持续扩大和信息化建设的不断推进,传统高校迎新工作面临着流程繁琐、信息分散、效率低下和管理混乱等挑战。人工办理报到手续、纸质材料收集与核对不仅耗时耗力,还容易出现差错,给新生、家长及迎新工作人员带来诸多不便,难以满足现代化高校管理的需求。         为提升迎新工作的组织效率与服务质量,本文设计并实现一套基于SpringBoot的高校迎新管理系统。系统采用SpringBoot框架构建稳定、高效的后端服务,利用Vue.js开发响应迅速、交互友好


MYSQL学习笔记(个人)(第十五天)
chenzhou__2025/10/19

自学《数据库系统原理与应用》——— 黄宝贵、马春梅、禹继国 —— 清华大学出版社 关系规范化理论: 关系规范化的作用:         为了设计一个合理、可靠、简单、正确的关系数据库,形成了关系规范化理论。其包括两个方面的内容:1.数据依赖,研究属性之间的依赖关系;2.范式,是关系模式符合某种级别的标准。 1.问题的提出: 下面有个关系模式: SCD(sno, sname, dname, office, cno, cname, score) 其中按照现实需求和实际应用,可得语义: (


[嵌入式系统-136]:主流AIOT智能体软件技术栈
文火冰糖的硅基工坊2025/10/18

主流AIoT(人工智能物联网)智能体软件技术栈涵盖了硬件、通信、AI算法、安全防护等多个层面,其核心在于通过“感知-分析-决策-执行”的闭环架构,将物联网的连接能力与人工智能的认知能力深度融合。以下从技术架构、关键技术栈、应用场景三个维度进行解析: 一、技术架构:分层解耦与闭环控制 AIoT智能体的技术架构通常分为四层,每层承担特定功能并协同工作: 感知层 功能:通过传感器和终端设备采集环境数据(如温度、湿度、图像、声音等)。关键技术: 传感器技术:高精度、低功耗的传感器(


C#设计模式源码讲解
小张9992025/10/16

C#设计模式源码合集,包含23种设计模式完整源码,每个模式都有详细注释和实例代码。 不想打螺丝,转行做架构师       功能亮点: 1.创建型模式5种:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式 2.结构型模式7种:适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式、代理模式 3.行为型模式11种:策略模式、迭代器模式、中介者模式、观察者模式、状态模式、模板方法模式、命令模式、职责链模式、访问者模式、解释器模式、备忘录模式 4.每个模式都配有详细注释和实


告别JS初学者噩梦:这样写流程控制和函数才叫优雅
良山有风来2025/10/15

你是不是也遇到过这样的场景? 面对一堆复杂的if-else嵌套,自己都看不懂昨天写的代码;想要复用某个功能,却只能笨拙地复制粘贴;代码越写越长,bug越改越多,最后连自己都不想维护... 别担心,今天这篇文章就是来拯救你的! 我将带你重新认识JavaScript的流程控制和函数封装,分享一些让代码变得更优雅、更易维护的实用技巧。读完本文,你将彻底告别“面条式代码”,写出既漂亮又实用的JavaScript代码。 流程控制:从混乱到清晰 先来看个真实案例。假设我们要根据用户等级显示不同的权益: //


无Dockerfile构建:云原生部署新姿势
10岁的博客2025/10/14

容器化安装新玩法:无 Dockerfile 构建与多环境部署 创新点解析 Buildpacks 免 Dockerfile 构建 通过云原生构建包自动分析代码类型(Python/Node.js/Java等)动态生成最优容器镜像,无需手动编写 Dockerfile示例命令:pack build my-app --builder=gcr.io/buildpacks/builder:v1 Kubernetes 多环境热切换 使用 Kustomize 实现同一应用的多环境配置覆盖环境差异抽象为覆盖


如何基于Spring Cloud Gateway实现灰度发布的具体配置示例?
IT橘子皮2025/10/12

基于 Spring Cloud Gateway 实现灰度发布,核心思路是通过定义路由规则,将特定流量导向新版本服务。下面我用一个表格汇总主要策略,然后提供具体配置示例和关键说明。 🎯 灰度发布策略概览 策略类型核心机制适用场景​基于请求头 (Header)​​检查请求头中的特定标识(如 X-Gray-Release: true)内部测试、指定体验用户​基于权重 (Weight)​​按配置的百分比随机分配流量到不同版本A/B测试、逐步放量​基于用

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0