前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >假如你是面试官,你怎么问Mybatis的原理

假如你是面试官,你怎么问Mybatis的原理

作者头像
35岁程序员那些事
发布2022-09-23 17:45:17
2180
发布2022-09-23 17:45:17
举报

面试赛季,咱们一线的程序员估计都在网上刷题,各种类型的面试题是铺天盖地的飞过来。但是我们究竟从中能够获取到哪些真正属于自己的技能点呢,下面我将从“面试官的视角”带着大家去分析面试官的思维,那么咱们就从Mybatis的原理开始试水吧。

假如你是面试官,你该怎么问Mybatis

我们换位思考,如果你是面试官,你该怎么去问“与Mybatis相关的问题”。我们可以做一个测试,就是自己合上电脑,你能想起那些与Mybatis相关的技术问题呢?

有经验的面试官,有无数的方式来快速的验证你是通过“八股文”来准备的技能点,还是真的会,并懂原理。

如果我是面试官,我先不会直接问你“八股文”,我会直接问你“Mybatis是什么?”,好吧咱们脑子里快速的回忆一下,这里我暂时不告诉答案。

如果能够回答出“Mybatis是什么?”,那么还可以试探性的去问“Mybatis都有哪些功能,你平常在业务开发过程中是怎么用的呢?”,好吧这个是不是比直接干巴巴的“对着百度去问候选人要有用呢”,当然我这里只是从换位思考的角度去考虑,并不是每个面试官都这么去问,我只是说程序员,如果按照这个思路去准备Mybatis相关的面试,肯定是会事半功倍的。

Mybatis是什么呢?我们可以这样回答,Mybatis是一个中间件,具体来说是一个轻量级的Java持久层中间件,再具体一点,它是完全基于JDBC实现持久化的数据访问的中间件,好吧,这样回答的关键是说出了本质,本质就是一个数据访问的中间件。

Mybatis又有哪些功能呢?我们可以这样回答,Mybatis支持以XML和注解的形式进行配置,能灵活、简单地进行SQL映射,也提供了比JDBC更加丰富的结果集。为什么要这么回答呢,因为Mybatis的功能实在是太多了,我们这样说,就能够让面试官知道,你可能在实际项目中用过Mybatis,体现你的实战能力。如果面试官觉得不满意,你可以再深入的去介绍某一个功能,比如“Mybatis是如何完成SQL映射的”。

“SQL映射”是一个非常高频率的面试问题,也就是咱们通过XML或者注解写了一堆的配置文件,那么这些文件是如何被映射到JDBC层,并生成最终的SQL语句,从而实现数据的访问的。如果你去面试候选人,你可以用这个问题顺藤摸瓜,找出候选人的很多技术盲点。

关于这个问题,其实我们也不需要过多的去死记硬背,我们可以通过实际的项目去联想记忆,假象你要你现在写一个查询语句是SQL,通过Mybatis如何实现?好吧,我们需要写xml文件,xml文件中,有命名空间节点、用select节点、有result节点等等,这些是xml的形式。那么我们又想在这些节点标签中我们又要配置哪些元素呢,比如实体类名称,以及xml对应的Mapper实例类等。想到这些之后,我们又会想到,那肯定是要有规格文件的,不然Mybatis是怎么识别这些xml文件的。再接着想,有了这些东西之后,Mybatis又是如何在Spring Framework的语境中自动完成xml的加载的呢,那么这个又会考虑到mybtais-spring这个框架,有了它,我们的Mybatis才能在Spring Framework的语境中运行。

好吧,这个就是简单的从“SQL映射”这个问题的角度去分析,我们如何去做原理的串联。

面试八股文

这里还是列举一些面试的八股文,技术人看到之后,可以自己尝试的在心里解答一下:

  • Mybatis如何分页,物理分页和逻辑分页的区别,你使用课哪些分页插件,是自己研发的还是直接使用开源的,原因是什么?
  • 你了解Mybatis的SQL映射吗,它主要是为了解决什么问题?
  • Mybatis如何支持动态SQL?动态SQL的使用场景有哪些?
  • 什么是Mybatis的一级和二级缓存,业务开发中我们该如何利用它们来提升接口性能?
  • 如何防止SQL注入?SQL注入有哪些安全隐患,请列举一些?
  • 你了解Mybatis底层的哪些核心类,能够说出它们的设计思想吗?
  • Mybatis的延迟加载是什么?它主要解决哪些问题?
  • 我可不可以用Mybatis完成批量插入?如果可以,我该怎么做?
  • 有自己写过Mybatis的插件吗?Mybatis插件是什么原理?
  • 如果涉及到多个服务同时操控一个数据库,既有插入也有删除,还有更新的操作,那么我们该如何解决数据一致性的问题?

以上八股文暂不提供答案,会在下一期文章中解读,咱们可以先自己思考下。

总结

我们在准备面试的时候,针对技术技能这块,我们一定要学会换位思考,从面试官的角度去理解某一个技术,然后反复的询问自己“如果你是面试官,你该怎么问原理”。经过反复的训练之后,就能让我们自己养成好的习惯,就算自己不知道原理,也能通过这种思维模式,去反推出它的原理(中间件框架的很多技术原理其实是通的)

最后希望程序员都能够找到一份合适自己的工作,并工作开心和快乐。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构随笔录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档