7.3美团—Java日常实习面经

7.2晚上投的,发邮件约到了7.3晚上 总时长1小时10分钟左右

  1. 自我介绍

  2. 拷打项目30min

  3. 缓存三兄弟

  4. Redis除了缓存,还能做什么

  5. Redis的数据结构,什么时候用哈希,什么时候用字符串

  6. 线程池的执行流程

  7. MySQL索引的数据结构

  8. 聚簇索引和非聚簇索引

  9. 索引选择使用哪些字段

  10. 使用联合索引要注意什么

  11. 表级锁

  12. hashMap的底层数据结构

算法:lc-3.无重复字符的最长子串

反问:几轮面试,多久出结果,还需要学习什么

整体体验很好,感谢美团!

作者:ljk250531 链接:7.3美团—Java日常实习面经_牛客网 来源:牛客网

算法题:

包没写出来的 第一眼没什么想法

题解 使用滑动窗口 从第一行遍历到最后一行 然后用了hashset去加和删除 以及判断是否包含

其他解 还是滑动窗口 但是就相当于用遍历数组的方式代替了hashset 就是遍历右侧节点 如果左边界 和当前的值重复的话 那么左边的所有都删除了

Redis 缓存三兄弟

缓存击穿 : 热点key  多个数据同时访问导致崩溃

缓存穿透 : 大量访问缓存里边不存在的数据

缓存雪崩 :多个热点key同时失效

Redis 除了缓存还能

主从集群 分片集群 内存回收 哨兵,,,,,,

Redis的数据结构,什么时候用哈希,什么时候用字符串

Redis的五大数据类型:String、Hash、List、Set和ZSet

String适用于简单字符缓存、分布式锁等

Hash适合存储对象;

List可用于实现栈、队列;

Set处理无序不重复元素集合;

ZSet常用于排行榜场景。(这个不是很懂)
原文链接:https://blog.****.net/q2qwert/article/details/131837969

线程池的执行流程

MySQL索引的数据结构

  • B+Tree索引

    • 特点:B+树是一种多路平衡查找树,其所有叶子节点在同一层,且叶子节点通过指针相连,构成了一个有序的链表。在B+树中,所有非叶子节点仅起到索引作用,包含子树所有节点的最大值,而叶子节点则包含了所有的关键字(值)。
    • 优势:由于B+树的非叶子节点只存储索引信息,因此可以容纳更多的节点元素,使得树的高度相对较低,从而减少了查找过程中磁盘I/O的存取次数。此外,叶子节点通过链表相连,便于区间查找和遍历。
    • 应用:MySQL的InnoDB存储引擎默认采用B+树作为索引的数据结构。
  • Hash索引

    • 特点:哈希索引采用哈希算法,将键值换算成新的哈希值,并映射到对应的槽位上。哈希索引的查询效率通常很高,因为在没有产生哈希冲突的情况下,通常只需要一次检索就可以找到目标数据。
    • 限制:哈希索引只能用于对等比较(如=、in),不支持范围查询(如between、>、<等)。此外,哈希索引也无法利用索引完成排序操作,因为哈希索引是无序排列的。
    • 应用:在MySQL中,Memory存储引擎支持哈希索引。InnoDB存储引擎虽然本身不直接支持哈希索引,但具有自适应哈希功能,可以在特定条件下将B+树索引转化为哈希索引

聚簇索引和非聚簇索引

聚簇索引是物理索引,它将索引与数据放在一起。

非聚簇索引的数据存储与索引是分开的。非聚簇索引的叶子节点指向了对应的数据行,而不是直接存储数据。(就是二级索引)

索引选择使用哪些字段

 

使用联合索引要注意什么

 表级锁

 

hashMap的底层数据结构

感觉之前见过这句话

上一篇:Linux