陌陌一面笔记


没回答好的几个点记录一下:

Netty IO模型

Netty模型

NIO的几种模型

nonblocking IO

image-20220723170623233

nonblocking IO的特点是用户进程不断询问内核数据准备好了没有。

IO多路复用

select、poll、epoll。

select轮询和非阻塞IO的轮询区别就是select可以对多个socket端口进行监听。

image-20220723171448273

当用户进程调用了 select,那么整个进程会被 block ,而同时,kernel 会“监视”所有 select 负责的 socket,当任何一个 socket 中的数据准备好了,select 就会返回。这个时候用户进程再调用 read 操作,将数据从 kernel 拷贝到用户进程。

信号驱动IO

Socket 进行信号驱动 IO,并安装一个信号处理函数,进程继续运行并不阻塞。当数据准备好时,进程会收到一个 SIGIO 信号,可以在信号处理函数中调用 I/O 操作函数处理数据。

AIO

异步非阻塞IO。

image-20220723171903904

Java常规的NIO,对于NIO来说,我们的业务线程是在IO操作准备好时,得到通知,接着就由这个线程自行进行IO操作,IO操作本身是同步的。

AIO来说,则更加进了一步,它不是在IO准备好时再通知线程,而是在IO操作已经完成后,再给线程发出通知。因此AIO是不会阻塞的,此时我们的业务逻辑将变成一个回调函数,等待IO操作完成后,由系统自动触发。

MySQL ACID如何保证,redo undo再看下

问我什么时候可以来实习

给我问懵逼了,我不是校招吗?

image-20220723165604464

有人说可以部门协商,随意啦,刷个面试经历。