后端面试话术集锦第 十一 篇:mybatis面试话术

本文是后端面试集锦的第十一篇章,专注于MyBatis面试话术。内容涵盖MyBatis的介绍、优缺点、与Hibernate的区别、#{}与${}的区别、属性名与字段名不匹配的解决方案、动态SQL、缓存机制、多参数传递等多个关键知识点,旨在帮助求职者掌握MyBatis的核心概念和使用技巧。

这是后端面试集锦第十一篇博文——mybatis面试话术❗❗❗

1. 介绍下mybatis,说说它的优缺点是什么?


Mybatis是一个半ORM(对象关系映射)的持久层框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程,使用时直接编写原生态sql

  1. 优点:

    • 基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响。SQL写在XML里,解除sql与程序代码的耦合,便于统一管理,提供XML标签,支持编写动态SQL语句,并可重用

    • 很好的与各种数据库兼容

    • 提供映射标签,支持对象与数据库的ORM字段关系映射,提供对象关系映射标签,支持对象关系组件维护

    • JDBC相比,消除了JDBC大量冗余的代码,不需要手动开关连接,能够与Spring很好的集成

  2. 缺点:

Keepalived 是一种用于实现高可用性(HA)和负载均衡的开源软件,常用于服务器集群环境中,确保服务的持续可用性和稳定性。在面试中,关于 Keepalived 的问题通常围绕其核心功能、配置方式、工作原理以及与 Nginx 等工具的对比展开。以下是常见的面试问题及参考回答。 ### 3.1 Keepalived 的基本作用是什么? Keepalived 最核心的作用是实现虚拟路由冗余协议(VRRP),从而提供高可用性(HA)和负载均衡功能。它可以监控服务器的状态,当主服务器出现故障时,自动将流量切换到备用服务器,确保服务不中断。此外,它还可以与 LVS(Linux Virtual Server)结合使用,实现四层负载均衡 [^1]。 ### 3.2 Keepalived 的工作原理是怎样的? Keepalived 主要基于 VRRP 协议来实现高可用性。它通过在多个节点之间维护一个虚拟 IP(VIP),由主节点(Master)负责响应请求,当主节点不可用时,备用节点(Backup)会接管 VIP,继续提供服务。Keepalived 还可以通过健康检查机制定期检测服务状态,确保只有健康的节点参与流量转发 。 ### 3.3 Keepalived 的配置文件结构是怎样的? Keepalived 的配置文件通常包含以下几个部分: - **global_defs**:全局配置,包括邮件通知设置、路由标识等。 - **vrrp_instance**:定义 VRRP 实例,包括虚拟 IP 地址、状态(Master/Backup)、优先级等。 - **virtual_server**:定义虚拟服务器及其后端真实服务器(Real Server),并配置负载均衡算法和健康检查策略。 示例配置片段如下: ```conf vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.100 } } ``` ### 3.4 Keepalived 支持哪些负载均衡算法? Keepalived 本身并不直接实现负载均衡算法,而是通过与 LVS 集成来支持多种调度算法。LVS 支持的常用调度算法包括: - 轮询(Round Robin) - 加权轮询(Weighted Round Robin) - 最少连接(Least Connections) - 加权最少连接(Weighted Least Connections) 这些算法可以通过 Keepalived 的配置文件进行指定 [^3]。 ### 3.5 Keepalived 如何实现健康检查? Keepalived 支持 TCP、HTTP、SSL 等多种健康检查方式。通过在 `virtual_server` 配置块中定义 `check` 指令,可以定期对后端服务器进行探测。例如: ```conf virtual_server 192.168.1.100 80 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 192.168.1.101 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } } ``` ### 3.6 Keepalived 与 Nginx 在负载均衡方面的区别是什么? Keepalived 更侧重于实现高可用性和基于 VRRP 的流量切换,通常用于四层(网络层)负载均衡。而 Nginx 是一个高性能的反向代理和七层(应用层)负载均衡器,支持更复杂的流量控制策略,如基于 URL 的路由、SSL 终止等。在实际部署中,两者可以结合使用,以实现更高层次的可用性和负载均衡能力 [^3]。 ### 3.7 Keepalived 如何与 LVS 配合使用? Keepalived 可以通过配置文件自动管理 LVS 的规则,动态调整后端服务器的状态。当某个 Real Server 出现故障时,Keepalived 会自动将其从 LVS 的调度队列中移除;当服务恢复后,又会重新加入。这种机制极大地简化了 LVS 的管理复杂度 [^1]。 ### 3.8 Keepalived 的高可用性是如何实现的? Keepalived 通过 VRRP 协议实现高可用性。多个 Keepalived 节点组成一个 VRRP 组,其中一个节点作为 Master,其他作为 Backup。Master 节点负责处理流量,当其发生故障时,Backup 节点会通过优先级机制选举出新的 Master,从而实现无缝切换 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网全栈开发实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值