-
怼Java项目
-
手写快排
-
LRU算法原理/如何实现
-
分布式系统的hash一致性算法原理/如何实现
-
问了不了解Redis,不了解就只问了数据结构,还问如果自己实现一个这样的系统会怎样设计
-
Java中map实现机制 - 底层是个entry数组
-
map中查找数据的方法 - hash
-
map中hash冲突如何处理 - 链表,超过8转换成红黑树,冲突过多则扩容
-
Mysql事务性质ACID
-
MySQL四种隔离级别-未提交读、提交读、可重复读、可串行化
-
每种隔离级别分别可以避免哪些问题
-
MySQL是如何实现可重复读的
-
MVCC实现机制-每行后有两个隐藏列用于存储版本号
-
深入考察MVCC实现机制-如果事务B先于事务A创建但在事务A两次查询中修改了数据,数据库会如何处理?
-
索引结构 - B+树
-
联合索引(A,B),select ... from ...where B = 'xxx' and A = 'xxx'可以命中索引吗?mysql查询优化器会判断纠正这条sql语句该以什么样的顺序执行效率最高,最后才生成真正的执行计划
最左前缀匹配 假如在table表的a,b,c三个列上建立联合索引,简要分类分析下联合索引的最左前缀匹配。 首先看等值查询: 1、全值匹配查询时(where子句搜索条件顺序调换不影响索引使用,因为查询优化器会自动优化查询顺序 ),可以用到联合索引 SELECT * FROM table WHERE a=1 AND b=3 AND c=2 SELECT * FROM table WHERE b=3 AND c=4 AND a=2 2、匹配左边的列时,可以用到联合索引 SELECT * FROM table WHERE a=1 SELECT * FROM table WHERE a=1 AND b=3 3、未从最左列开始时,无法用到联合索引 SELECT * FROM table WHERE b=1 AND c=3 4、查询列不连续时,无法使用联合索引(会用到a列索引,但c排序依赖于b,所以会先通过a列的索引筛选出a=1的记录,再在这些记录中遍历筛选c=3的值,是一种不完全使用索引的情况) SELECT * FROM table WHERE a=1 AND c=3 再看范围查询: 1、范围查询最左列,可以使用联合索引 SELECT * FROM table WHERE a>1 AND a<5; 2、精确匹配最左列并范围匹配其右一列(a值确定时,b是有序的,因此可以使用联合索引) SELECT * FROM table WHERE a=1 AND b>3; 3、精确匹配最左列并范围匹配非右一列(a值确定时,c排序依赖b,因此无法使用联合索引,但会使用a列索引筛选出a>2的记录行,再在这些行中条件 c >3逐条过滤) SELECT * FROM table WHERE a>2 AND c>5;
-
数据库分库分表方式
-
HTTP状态码1xx 2xx 3xx 4xx 5xx 分别问了几个详细的
-
出现大量处于TIME_WAIT状态的TCP连接说明什么 - 建立大量连接
-
HTTPS工作原理
-
常见的对称非对称加密算法
-
如何统计网站每天的访问量(可以登录)- 最开始想用数据库存,后想到哈希表,再优化为多重哈希表、布隆过滤器
反问:
-
部门具体业务:同一招聘,随机分岗;
-
需要加强学习的领域:基础不错,实践欠缺,如分库分表,Redis;
-
能不能通过面试:能;
总共面试40分钟,几乎全部在问问题,问题超级多只记住了个大概
全部评论
(6) 回帖