字节跳动实习 - 面试(第一轮)

1、简述一下项目情况

2、MySQL事务的特点
MySQL事务及隔离级别

3、数据库的隔离级别,以及项目中的数据库所处的隔离级别
MySQL事务及隔离级别

4、MySQL是如何调优的,InnoDB存储引擎默认的隔离级别是什么。
写会mysql索引
MySQL InnoDB 索引原理
MySQL InnoDB默认使用Read repeatable

5、根据不同班级统计分数大于90的学生人数

(1)创建学生表,并插入数据

mysql> create table student(id int,name varchar(10),score int(3),class varchar(10));

# 插入数据
mysql> insert into student values (1,'tom',100,'class1'),(2,'sarry',80,'class2'),(3,'jerry',90,'class1');

(2)查询已有数据

mysql> select * from student;
+------+-------+-------+--------+
| id   | name  | score | class  |
+------+-------+-------+--------+
|    1 | tom   |   100 | class1 |
|    2 | sarry |    80 | class2 |
|    3 | jerry |    90 | class1 |
+------+-------+-------+--------+
3 rows in set (0.00 sec)

(3)按班级查询大于90分的学生个数

mysql> select class,count(*) from student where score >=90 group by class;
+--------+----------+
| class  | count(*) |
+--------+----------+
| class1 |        2 |
+--------+----------+
1 row in set (0.00 sec)

(4)按班级查询大于60分的学生个数

mysql> select class,count(*) from student where score >=60 group by class;
+--------+----------+
| class  | count(*) |
+--------+----------+
| class1 |        2 |
| class2 |        1 |
+--------+----------+
2 rows in set (0.00 sec)

6、select count(id) from student where score > 90 group by class;(1、使用where 还是having 2、select from where group by几个关键字的执行顺序)

  • 使用where
  • SQL关键字的执行顺序
    字节跳动实习 - 面试(第一轮)_第1张图片
    (1) from:对左表left-table和右表right-table执行笛卡尔积(a*b),形成虚拟表VT1;
    (2) on: 对虚拟表VT1进行on条件进行筛选,只有符合条件的记录才会插入到虚拟表VT2中;
    (3) join: 指定out join会将未匹配行添加到VT2产生VT3,若有多张表,则会重复(1)~(3);
    (4) where: 对VT3进行条件过滤,形成VT4, where条件是从左向右执行的;
    (5) group by: 对VT4进行分组操作得到VT5;
    (6) cube | rollup: 对VT5进行cube | rollup操作得到VT6;
    (7) having: 对VT6进行过滤得到VT7;
    (8) select: 执行选择操作得到VT8,本人看来VT7和VT8应该是一样的;
    (9) distinct: 对VT8进行去重,得到VT9;
    (10) order by: 对VT9进行排序,得到VT10;
    (11) limit: 对记录进行截取,得到VT11返回给用户。

7、快速排序法
Python快速排序法

8、给定一个没有重复数字的数组,找出第K个大的数字。(思路一:排序+索引;思路二:使用快排进行优化

leetcode 215题

你可能感兴趣的:(面试经历)