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

2022-09-23 17:45:17 浏览数 (1)

面试赛季,咱们一线的程序员估计都在网上刷题,各种类型的面试题是铺天盖地的飞过来。但是我们究竟从中能够获取到哪些真正属于自己的技能点呢,下面我将从“面试官的视角”带着大家去分析面试官的思维,那么咱们就从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插件是什么原理?
  • 如果涉及到多个服务同时操控一个数据库,既有插入也有删除,还有更新的操作,那么我们该如何解决数据一致性的问题?

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

总结

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

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

0 人点赞