首页 > 编程知识 正文

程序员代码面试指南第二版pdf下载(老人机java电子书下载,面试经历分享)

时间:2023-05-04 17:39:33 阅读:123202 作者:1691

目录1.Mysql2.CHAR和VARCHAR有什么区别? 你能说出myisam和innodb的区别吗? 4 .你能说出事务的基本特性和隔离水平吗? 5 .同步提问脏读、不可重复读、幻读? 6 .事务隔离级别? 7 .自增主键,谈UUID吗? 8.mysql约束分类? 9.drop、delete和truncate的区别: 10 .隐式事务还是显式事务? 11 .存储过程12 .你们的数据量是多少? 分库明细表是怎么做的? 13 .该分表后的ID如何保证唯一性? 14 .该分表后的ID如何保证唯一性? 15 .分表后,sharding_key以外的查询如何处理? 16 .说说MySQL主从同步是怎么做到的吧? 总结

1.Mysql有哪些类型的锁? )1)表级锁)开销小,上锁快。 不发生死锁,锁粒度大,发生锁碰撞概率高,同时性低。

)2)液位计)开销大,加锁慢。 发生死锁,锁粒度小,发生锁碰撞概率低,并发性高。

)3)页面锁定:开销时间、锁定时间、锁定粒度在表级锁定和行级锁定之间发生死锁,并发性中等。

2.CHAR和VARCHAR有什么区别? )1) CHAR长度不可变,范围为1~255。 如果存储长度未达到定义的长度,则会用空格填充。 访问速度快,但容易浪费空间。

)2) VARCHAR长度可变,范围为1~65535。 如果内存长度未达到定义的长度,则存储实际长度的数据。 访问速度有点慢,但节省空间。

你能说出myisam和innodb的区别吗? myisam引擎是5.1版和更早版本的默认引擎,支持全文搜索、压缩、空间函数等,但不支持事务和行级锁定,因此通常用于插入少量查询的场景。 此外,myisam不支持外键,索引和数据是分开存储的。

innodb基于集群索引构建,与myisam相反,它支持事务和外键,MVCC支持高并发性,索引和数据存储在一起。

4 .你能说出事务的基本特性和隔离水平吗? 事务:在数据库中,对数据的一系列操作可以视为一个整体,称为事务。 这个整体要么全部执行,要么不全部执行。ACID 属性的存在确保了 事务的可靠。

(1) Actomicity ) )原子性)原子性要求事务中的操作全部完成或恢复到以前未操作的状态。 也就是说,在事务中的某个操作失败后,就什么也没发生,部分数据不会发生更改。

)一致性(一致性)一致性是指在事务执行前后,数据库状态一致,即从一个一致性状态切换到另一个一致性状态。

(3)隔离性)隔离性要求同时发生的事务相互隔离、不可见。 这意味着一个事务无法看到另一个事务内部操作和操作的数据。

(4) Durability (持久性) :持久性要求事务对数据库数据的更改是持久性的。 也就是说,如果修改数据并提交,其状态将永久不变。

5 .同步提问脏读、不可重复读、幻读? 对于同时执行的多个事务,如果这些事务不采用访问同一数据所需的隔离机制,则会出现以下并发问题:

)脏读)脏读是指,如果一个事务处理正在访问某个数据,但对该数据进行了更改,并且该数据尚未提交到数据库,则另一个事务处理也访问了该数据(如果有)

例如,如果tom的年龄为22,事务处理a的修改tom的年龄为30,并且此时未提交到数据库,则事务处理b获得tom的年龄,得到的是30,事务处理a回滚数据,数据

(2)一个事务多次读取同一数据(不可重复),并且在该事务尚未完成时,另一个事务也访问并修改该数据,导致事务多次读取的数据不匹配也就是说,不能重复。

例如,tom的年龄是22,事务a的读取tom的年龄是22,事务没有结束。 此时,事务b将tom年龄更改为30,然后提交到数据库。 如果事务a将tom年龄重新读取到30,则事务a读取的数据两次不匹配,不能重复读取。

(3)幻读)指事务不是独立执行时发生的现象。 一个事务修改包含表中所有行的表,而另一个事务修改表,如添加或删除数据。 此时,第一个事务发现数据是多还是少。 这种情况下是幻读。

例如,如果事务a查询当前表中的数据总数11,事务b将数据插入表中,事务a再次查询当前表中的数据总数12,则会发生幻读。

注:

反复读,不幻读理解有点相似。

不可重读是对一个数据的操作,重点是修改一个数据。

读取幻像的重点是通过操作表来添加或删除数据。

6 .事务隔离级别? 数据库系统必须能够隔离并发的事务,确保事务之间不会相互影响,也不会同时发生问题。

隔离级别:指示一个事务独立于其他事务的程度。 隔离级别越高,并发性越弱。

(1)读取未提交的内容)即读取未提交的内容。

一般不用。 在此隔离级别上,查询不会被锁定。 这意味着两个事务可能在操作同一个表。 可能会导致“脏读”、“不能重复的读”、“幻读”。

)2)读推荐:

即只能读取到 已提交的内容。
  常用(oracle、SQL Server 默认隔离级别)。此隔离级别下,查询采用 快照读 的机制,即不会读取到未提交的数据,从而避免 “脏读”,但是仍可能导致 “不可重复读”、“幻读”。

(3)Repeatable Read(可重复读)
  常用(mysql 默认隔离级别)。此隔离级别下,查询采用 快照读 的机制,且事务启动后,当前数据不能被修改,从而可以避免 “不可重复读”,但是仍可能导致 “幻读”(新增或删除某条数据)。

(4)Serializable(串行化)
  一般不使用。此隔离级别下,事务会串行化执行(排队执行),执行效率差、开销大。可以避免 “脏读”、“不可重复读”、“幻读“。

【举例:】select @@transaction_isolation; -- 用于查看当前数据库的隔离级别(8.0版本) set session transaction isolation level read committed; --用于设置隔离级别为 read committed 7.说说自增主键、UUID?

(1)自增主键,数据在物理结构上是顺序存储,性能好,占用空间小。可以是 int 和 bigint 类型。int 4字节,bigint 8 字节,项目中理论不应出现 自增主键达到最大值的情况,因为数据太大,效率会大大降低,当出现一定的数据量后,应进行分库分表操作。

(2)UUID,数据在物理结构上是随机存储,性能较差,占用空间大。唯一ID,绝不冲突。

8.mysql 的约束分类?

(1)约束的作用:是一种限制,用于限制表中的数据,为了保证数据的准确性以及可靠性。
(2)约束分类:
  NOT NULL,非空,用于保证某个字段不为空。支持列级约束。
  DEFAULT,默认,用于保证某个字段具有默认值。支持列级约束。
  PRIMARY KEY,主键,用于保证某个字段具有唯一性且非空。支持列级约束以及表级约束。
  UNIQUE,唯一,用于保证某个字段具有唯一性。支持列级约束以及表级约束。
  FORGIEN KEY,外键,用于限制两个表间的关系。支持表级约束。
注:
  列级约束:指的是定义列的同时指定的约束。
  表级约束:指的是列定义之后指定的约束。

外键常用于一对多的关系。即表的某条数据,对应另外一张表的多条数据。
    将 “一” 的一方称为 :主表。将 “多” 的一方称为 :从表。
    通常将 外键 置于从表上,即 从表上增加一列作为外键,并依赖于主表的某列。

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来,需要的话点击这里免费获取

目录:

部分内容截图:

(img-nuxVxQXI-1625153985445)]

部分内容截图:

[外链图片转存中…(img-5DXFUyAT-1625153985446)]

[外链图片转存中…(img-z2Rpcso2-1625153985449)]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。