首页 > 后端研发工程师-作业帮二面
头像
offer_plusplus
编辑于 2021-04-20 08:39
+ 关注

后端研发工程师-作业帮二面

  • 怼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) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐