美团](https://www.nowcoder.com/jump/super-jump/word?word=%E7%BE%8E%E5%9B%A2))一面:(50min)

进程和线程的区别

  1. 拥有资源

进程是资源分配的基本单位,线程不拥有资源,但是线程可以访问路隶属于进程的资源
2.调度
线程是CPU调度的基本单位
3.系统开销
切换线程开销小,切换进程开销大
JVM角度说线程和进程的区别:。。。。

进程间的通信

进程间的通信方式:匿名管道、有名管道、信号、消息队列、信号量、共享内存、套接字
线程间的通信方式:互斥量、信号量、事件(共享变量、消息通知、管道、ThreadLocal)

操作系统的io模型

操作系统的IO模型分为:同步IO、异步IO
同步IO分为阻塞IO、非阻塞IO
异步IO一定是非阻塞IO
https://blog.csdn.net/qq_39213969/article/details/110378743

对同步和异步的理解

同步和异步关注的是消息通知机制
同步指的是在发起一个调用时,在没有得到结果之前,该调用不返回。一旦调用返回了,就得到返回值了。
就是调用者主动等待调用的结果。
异步指的是调用在发出后,这个调用就返回了,所以没有返回结果。
就是当一个调用发出后,调用者不会立即得到结果,而是被调用者完成工作后,被调用者通过状态等通知调用者。

说一下数据库的特性

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

说一下隔离性怎么实现的

隔离性通过MVCC实现
MVCC是通过版本链和read view实现的

说一下数据库索引用的什么数据结构

B+树

为什么要用b+树 b+树有什么特性吗

B+树搜索效率更稳定
B+树的叶子结点存储数据

你知道数据库里b+树一般是多少层吗

2层

有没有经历过查询很慢的情况

慢查询的优化

问我搜内存里100层的b+树快 还是搜内存里3层的b+加上磁盘里2层的快?(不知道是不是这么问的了 大概是这样

做题:乱序数组里找第k大元素

(我用快排做的 做完了他让我优化

二面(1h)

自我介绍

问项目(问了大概15分钟左右

问做项目的时候遇到了什么问题

为什么tcp是三次握手

spring boot的自动装配了解吗

hashmap底层数据结构是什么 它是线程安全的吗

hashmap扩容的条件是什么 为什么要扩容

equals 和 ==的区别

如果两个引用类型它们的值是一样的 那他们的地址会是一样的吗

hashset是依据什么原理去重的

为什么重写equals还要重写hashcode

hash冲突了怎么办

线程池的核心参数

多线程执行的时候 依靠什么来保证他的一致性

什么是可重入锁

jvm垃圾回收算法](https://www.nowcoder.com/jump/super-jump/word?word=%E7%AE%97%E6%B3%95))

怎么判断一个类可以回收了

做题:

1.写sql语句

一个学生表 里面有学号 分数 和课程 求每个课程的最高分数

2.用两个栈实现队列(](https://www.nowcoder.com/jump/super-jump/word?word=%E7%94%A8%E4%B8%A4%E4%B8%AA%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97)()问了时间复杂度)

3.判断回文链表](https://www.nowcoder.com/jump/super-jump/word?word=%E9%93%BE%E8%A1%A8))

你平时是通过什么渠道学习的

你是怎么知道你学习的一个大概流程(就是什么时候该学哪个了的这种意思)

你最近在学什么

最近有没有学习分布式这块的东西

问你想来北京工作吗

你有什么要问我的吗