美团面试

一面 3.25

  • 自我介绍+针对自我介绍中的数据库设计大赛的提问

  • 泛型作用?类型擦除后是什么类?

  1. 泛型作用:编译时的类型安全检查
  2. 泛型擦除:如果[T extends X] ,则泛型擦除为X,否则,被擦除为Object。
  • 重载和重写区别?实现泛型接口后将方法里的T替换为String是否算重写?为什么?

实现泛型接口后将方法里的T替换为String是方法重写

  1. 什么是双亲委派机制?
    当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。
  2. 双亲委派的作用?
  • 防止类的重复加载:通过委托去询问上级是否已经加载过该.class,如果加载过了,则不需要重新加载,保证了数据安全。
  • 防止破坏核心类:通过委托的方式,保证核心.class不被篡改,即使被篡改也不会被加载,即使被加载也不会是同一个class对象,因为不同的加载器加载同一个.class也不是同一个Class对象。这样则保证了Class的执行安全。
  1. 打破双亲委派的场景
    典型的打破双亲委派模型的框架和中间件是tomcat和osgi。打破双亲委派的作用:为了实现各目录下类的隔离。 alt Tomcat中可以部署多个web项目,为了保证每个web项目互相独立,所以不能都由AppClassLoader加载,所以自定义了类加载器WebappClassLoaderWebappClassLoader继承自URLClassLoader,重写了findClassloadClass,并且WebappClassLoader的父类加载器设置为ExtClassLoaderWebappClassLoader.loadClass中会先在缓存中查看类是否加载过,没有加载就获取其父类加载器,类加载交由ExtClassLoaderExtClassLoader再交给BootstrapClassLoader加载;都加载不了,才自己加载;自己也加载不了,就遵循原始的双亲委派,交由AppClassLoader递归加载。
  • 拥塞控制过程

慢开始、拥塞避免、快重传和快恢复

  • TCP可靠连接(三次握手、四次回收过程)?第二次握手时为什么要ACK+SYN?

  • 普通IO和NIO的区别?

参考:IO和NIO的区别 alt

  • 什么是IO多路复用?

Selector Buffer Channel

  • 线程的通信方式?命名管道和匿名管道的区别?
  1. 线程通信方式:管道、信号、信号量、消息队列、共享内存、套接字
  2. 命名管道和匿名管道的区别:
  • 管道/匿名管道(Pipes) :用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。
  • 有名管道(Names Pipes) : 匿名管道由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道。有名管道严格遵循先进先出(first in first out)。有名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信。
  1. MySQL联合索引遵循最左前缀匹配规则,即从联合索引的最左列开始向右匹配,直到遇到匹配终止条件。例如联合索引(col1, col2, col3), where条件为col1=a AND col2=b可命中该联合索引的(col1,col2)前缀部分, where条件为col2=b AND col3=c不符合最左前缀匹配,不能命中该联合索引。
  2. 匹配终止条件为范围操作符(如>, <, between, like等)或函数等不能应用索引的情况。例如联合索引(col1, col2, col3), where条件为col1=a AND col2>1 AND col3=c, 在col2列上为范围查询,匹配即终止,只会匹配到col1,不能匹配到(col1, col2, col3).
  3. where条件中的顺序不影响索引命中。例如联合索引(col1, col2, col3), where条件为col3=c AND col2=b AND col1=a, MySQL优化器会自行进行优化,可命中联合索引(col1, col2, col3).
  • InnoDB的索引结构是什么?B树和B+树的区别?为什么要用B+树而不是B树?

为什么要用B+树而不是B树?

  • 更少的IO次数: B+树的非叶节点只包含键,而不包含真实数据,因此每个节点存储的记录个数比B数多很多(即阶m更大),因此B+树的高度更低,访问时所需要的IO次数更少。此外,由于每个节点存储的记录数更多,所以对访问局部性原理的利用更好,缓存命中率更高。
  • 更适于范围查询: 在B树中进行范围查询时,首先找到要查找的下限,然后对B树进行中序遍历,直到找到查找的上限;而B+树的范围查询,只需要对链表进行遍历即可。
  • 更稳定的查询效率: B树的查询时间复杂度在1到树高之间(分别对应记录在根节点和叶节点),而B+树的查询复杂度则稳定为树高,因为所有数据都在叶节点。
  • 数据库ACID解释

原子性、一致性、隔离性、持久性

  • 怎么保证数据库的一致性?

undo log

  • undolog和redolog的区别
  • redo log保证持久性、undo log保证原子性
  • redo log是InnoDB引擎独有的功能、undo log是MySQL数据库的功能
  • 算法题:链表区间反转
实习秋招面试记录 文章被收录于专栏

个人实习+秋招面试记录

全部评论

相关推荐

最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello&nbsp;world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务