Java面试:2021.05.09

1、Spring事务的实现原理?

  • 编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。

  • 声明式事务是建立在AOP之上的。使用一个事务拦截器,在方法调用的前后/周围进行事务性增强(advice),来驱动事务完成。

     

之后还回答了事务的特性、隔离级别等内容,详细内容较多,放到下面几篇中了可以参考。

 

2、单例模式怎么应用的?

简单来讲,通过区分单例模式中的懒汉式和恶汉式的特性在架构设计时进行应用。比如:在我们订单这部分数据访问量比较大就可以选用懒汉式用到的时候再加载。(这里只是举例,用到的时候再加载也会降低用户体验度,大家可以结合自己的项目情况讲解)

 

数据库连接能不能做SingleTon?

 

如果是简单地把一个connection对象封存在单例对象中,这样是错误的,因此连接池里有多个链接可以用,如果使用SingleTon,那在WEB访问时,就只能用一个数据库链接,那不是死的很惨? 

 

但是链接池可以使用单例模式,初始化的时候创建譬如100个connection对象,然后再需要的时候提供一个,用过之后返回到pool中,我们用单例模式,是保证连接池有且只有一个。 

 

例子,比如DAL层写好一个调用数据库表的类,在BLL层应用此类时,如果每次都new创建的话需要频繁的创建和回收,而DAL层这个类里又没有和对象相关的值变量,所以不需要每次都new一个,这时候就可以用单例模式来创建这个DAL实例。

 

3、数据库中left join和right join的区别和应用?

😄,这个太常见了。必需要结合自己项目的应用场景来了。我先讲了这两种连接的概念,又举了一个例子,(教师表和学生表,根据左表教师表查询右表学生的详细信息等。大家可以根据自己项目中的应用来讲解。)

 

总结:左连接where只影向右表,右连接where只影响左表。

 

一般要使得数据库查询语句性能好点遵循一下原则:
在做表与表的连接查询时,大表在前,小表在后;
不使用表别名,通过字段前缀区分不同表中的字段;
查询条件中的限制条件要写在表连接条件前;
尽量使用索引的字段做为查询条件。

 

整体今天的面试情况还可以,不算难。其他又聊了聊相关的行业看法、项目周期和薪资啥的。加油!各位。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值