您的位置:首页 > 数据库

2020Java面试数据库和mybatis方面常见问题总结(持续更新)

2020-04-20 19:00 1031 查看

1.mysql的事务有哪几种特性

原子性,一致性,持久性,隔离性

2.谈一谈你对死锁的了解

先说死锁是什么:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
也可以举例去表达:比如进程A和进程B要同时过一个独木桥,A走了一段,(占了B的资源)B也走了一段,然后A不让路,B也不让路,互相僵持,就造成了死锁的产生
2.1.满足死锁的条件
1)互斥条件:进程对所分配到的资源不允许其他进程访问,若其他进程访问该资源,只能等待,直至占有该资源的进程使用完成后释放该资源之后才能访问。

2)请求和保持条件:进程获得一定的资源之后,又对其他资源发出请求,但是该资源可能被其他进程占有,此时请求阻塞,但又对自己活得的资源保持不放。

3)不可剥夺条件:是指进程已获得的资源,在未完成使用之前,不可剥夺,只能在使用完成后自己释放。

4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链

3.mybatis的循环插入标签是什么
1.foreach标签

4.说一下sql都有哪些约束
1.主键约束,外键约束,UNIQUE唯一约束,NULL/NOT NULL 空和非空约束,CHECK检查性约束,说一下这五种常见的就行了

5.说一下List和map的区别

List:是存储单列数据的集合,存储的数据是有序并且是可以重复的
Map:存储双列数据的集合,通过键值对存储数据,存储 的数据是无序的,Key值不能重复,value值可以重复

6.谈一下你对集合的了解
这里主要就是谈, LinkedList, Vector, ArrayList,HashMap、HashTable、TreeMap

ArrayList 是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。
LinkedList 是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率高。
Vector 是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。

HashMap是键值对的方式存储的,但不能保证次序,单线程;
HashTable与HashMap存储方式相同,但是是线程安全的;
TreeMap是有序的键值对,基于红黑树排序。

7.谈一下你在你最熟悉的项目中用到的技术点

这里的话你就讲你的项目是干嘛用的,里面自己运用到的技术是什么就行了

8.说一下redis
这里就先说redis是什么:redis是一款优秀的nosql(非关系型),key-vlaue,内存级别的数据库!redis是单线程,操作是安全的!
然后讲redis的特点有哪些
比如:
1.Redis支持数据的持久化,会根据一定的策略持久化到磁盘,即使断电也不会丢失数据.
2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3.Redis支持数据的备份,即master-slave模式的数据备份。

9.mybatis中#和 $ 是干嘛用的
#是占位符,$是替代符
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。
Mybatis在处理 ${}时,就是把 ${}替换成变量的值。

10.mybatis中动态sql都有哪些
where otherwise if when set trim bind choose foreach

11.mybatis中常用的标签有哪些

select|insert|updae|delete(增删改查)
resultMap paprameterMap sql include selectKey再加上上面的9个动态标签

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
Suy_Z 发布了4 篇原创文章 · 获赞 3 · 访问量 241 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: