面试题汇总(NO.1)

发布时间 2023-04-02 17:43:59作者: 橘子菌菌n

3.31  day1

# 1.深浅拷贝是什么
  >-1. 深浅拷贝是对数据进行复制
  不可变类型:    
           深浅拷贝都是一样的重新拷贝一份数据
  可变类型:       
           如果内部嵌套的还有不可变类型,
             - 浅拷贝只拷贝第一层,嵌套拷贝的是内存地址,
             - 深拷贝是完全在复制一份出来
# 2.魔法方法new和init有什么区别
   >-1.new是类初始化自动时触,
         发生成一个空对象init是也是类初始化自动触发,
         给new产生的对象设置初始值
# 3.python的可变和不可变数据类型是什么?
   >-1.可变数据类是数据值发生改变,其内存地址不变
          - 可变数据类型有字典,列表,集合,文件对象 
   >-2.不可变数据是,数据值发生改变,其内存地址一定发生改变
          - 不可变数据类型有,整型,小数型,字符串,元组,布尔
# 4.什么是生成器,有什么应用场景
   >-1.生成器是程序员在函数内部写的有yield关键字的函数
   >-2.应用场景:
          - 比如说在进行文件操作时,如果文件过大,一次性打开,
            会占用过多内存空间可能会造成内存溢出,
            使用生成器用多少拿多少,减少内存消耗

4.3 day2

# 1.数据库三大范式是什么?
  - 第⼀范式:
       每个列都不可以再拆分。
  - 第⼆范式:
       在第⼀范式的基础上,⾮主键列完全依赖于主键,⽽不能是依赖于主键的⼀部分。
  - 第三范式:
       在第⼆范式的基础上,⾮主键列只依赖于主键,不依赖于其他⾮主键。
  - 在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有⾜够的理由。⽐如性能。事实上我们经常会为了性能⽽妥协数据库的设计。

# 2.mysql有哪些索引类型,分别有什么作用?
  -1. 主键索引: 数据列不允许重复,不允许为NULL,⼀个表只能有⼀个主键。 
           作用:主键唯一性,加快查询速度,不能为空
  -2. 唯⼀索引: 数据列不允许重复,允许为NULL值,⼀个表允许多个列创建唯⼀索引。
           作用:加快查询速度,并且可以限制列值的唯一性,允许为空
      - 可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯⼀索引
      - 可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯⼀组合索引
  -3.普通索引: 基本的索引类型,没有唯⼀性的限制,允许为NULL值。
           作用:加快查询速度
      - 可以通过 ALTER TABLE table_name ADD INDEX index_name (column); 创建普通索引
      - 可以通过 ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3); 创建组合索引
  -4.全⽂索引:是⽬前搜索引擎使⽤的⼀种关键技术。
           作用:主要针对文本的内容进行分词,加快查询速度
      - 可以通过 ALTER TABLE table_name ADD FULLTEXT (column); 创建全⽂索引
  
# 3.事务的特性和隔离级别?
  - 事务的四大特性
       1. 原⼦性: 事务是最⼩的执⾏单位,不允许分割。事务的原⼦性确保动作要么全部完成,要么完全不起作⽤;
       2. ⼀致性: 执⾏事务前后,数据保持⼀致,多个事务对同⼀个数据读取的结果是相同的;
       3. 隔离性: 并发访问数据库时,⼀个⽤户的事务不被其他事务所⼲扰,各并发事务之间数据库是独⽴的;
       4. 持久性: ⼀个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发⽣故障也不应该对其有任何
影响
   - 事务的隔离级别
       1. READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、
幻读或不可重复读。
       2. READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻⽌脏读,但是幻读或不可重复
读仍有可能发⽣。
       3. REPEATABLE-READ(可重复读): 对同⼀字段的多次读取结果都是⼀致的,除⾮数据是被本身事务⾃⼰所修
改,可以阻⽌脏读和不可重复读,但幻读仍有可能发⽣。
       4. SERIALIZABLE(可串⾏化): 最⾼的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执⾏,这样事
务之间就完全不可能产⽣⼲扰,也就是说,该级别可以防⽌脏读、不可重复读以及幻读。