2020-09-02字节2面(填坑)

tech2022-08-14  131

字节2面 (Java) (填坑)

今天稍微有点空… 我来补一下 之前的坑.

这里我会给上我认为挺全面的答案… 如果有更加全面的答案 欢迎来弥补

2面过了…等待3面~… 祈祷 来几个java的问题

进程通讯的方式

管道 . FIFO . 消息队列 . 信号 . 共享内存

共享内存这种方式底层是如何实现的

创建虚拟内存空间, 在物理内存上开辟空间进程将共享内存映射到自己的虚拟地址上 (可能使用一个mmap 的函数实现)对这片内存进行操作. (可以绕开内核的管理, 所以 共享内存这种方式是在ipc里最快的一种)不用了之后, 由其中一个进程来对这片内存进行释放

tcp的3次握手来讲一下

第一次 , 客户端 发送一个 SYN 和 seq . 发起建立连接的要求

服务器收到消息后, (确定自己的接收功能) , 同时发送 ack = seq + 1的包 , 以及 ACK , seq 的包 , 第二次握手

第三次 , 客户端收到这个包(确定自己的收发都没有问题 ) , 同时发送 一个 ack = seq + 1 , ACK的应答包… 进入稳定连接状态

time_wait 状态了解吗

这个状态是在四次挥手里面的 , 最后一次挥手. 由客户端发起了最后一次挥手之后, 客户端进入了 time_wait状态

为什么需要time_wait

因为要确保 服务器 收到最后一次挥手

如果 服务器 没有收到最后一次挥手, 那么服务器因为超时 , 会进行重新发送 这条挥手请求

所以time_wait 需要等待 2MSL 的时间, 来确保服务器收到了

redis为什么这么快

2个原因, 1是基于IO复用模型, 提供了 redis虽然是单线程的, 但是能够高效的对多个指令进行反应

2是它的存储主要是在内存中, 而且结构大多简单, 操作起来十分的快速

io复用模型是怎么样的

io复用模型主要的作用是让 单线程 同时去响应多个请求…

它具有2个阶段… 第一个阶段 是select 出就绪的通道, 第二个阶段是得到这个通道中的数据

第一个阶段是不阻塞的, 可以使用 select , poll , epoll的方式实现. 前俩者 使用的是轮询, epoll 使用的是一个基于事件的回调 , 把on复杂度的轮询 , 降低到了o1

**补充 : ** 什么是 IO , IO的过程 (漏了这个问题)

IO 主要是2个过程, 第一个过程是内核通过一些方式得到数据的过程 , 这个过程 , 调用者根据会不会陷入阻塞, 分为阻塞的还是非阻塞的

第二个过程是内核中的数据拿到用户态中来, 这个过程 , 调用者根据会不会等待完成, 分为同步, 和异步

什么是阻塞和非阻塞, 什么是同步和异步

同8

io复用模型是阻塞的吗

这个问题我入坑了… 我当初好像看到 select的过程是阻塞的- -… 一直在说我认为是阻塞的… 被面试官怼了…

io复用模型…是非阻塞的… 而且大多时候 也是使用非阻塞的…

谈谈select和epoll

select … 一种轮询的机制, 通过轮询 寻找就绪的通道

epoll … 基于事件. 通过回调事件处理器, 就绪的通道,会把自己放入到就绪队列中, 等待被接收

redis的zset如何实现的底层

zset使用的是一种跳跃表的形式. 它有多层的结构 . 单单看一层的结构, 它类一个双向链表的样子

每当插入一个值, 它会使用类似一个随机的函数, 长高. 越高层的 , 节点越少. 每移动一格… 就会跳跃掉好多节点…所以叫跳跃表

(这里我觉得稍微有点没有讲清楚- … 跳跃表是真的难描述)

zset插入一次的时间复杂度是多少? 为什么是 O(logn) 有依据吗

我答的是 logn … 我说是和 长高的 那个随机函数有关… 我学习到的是 … 跳跃表的性能 是接近红黑树的… 而且实现起来比红黑稍微简单一些, 在并发量足够大的情况下, 因为 它自身调节很少… 可以比红黑更加高效…

至于要说依据… 我是真的不知道- -… 应该和那个随机长高的函数有关…

tcp中…如果3次握手完成了, 客户端宕机了…怎么办

这个我没答出来… 当时一开始说…服务端会发送数据…给客户端… 一直没响应会重发…重发失败多次就会断开连接…

但是面试官后来说 … 如果服务器不发送数据呢… (这就尴尬了- -… 还真没想过- -…)

好像可以使用类似心跳的约定…如果客户端和服务器 多久没有发送心跳了… 就断开连接…

算法题 … 给定一个数组 和 一个 sum . 任取 数组中的几个. 和为sum 的不同组合有多少种

样例: [5,5,10,2,3] , sum = 15 . 输出 4

使用map 或者 dp 都可以… 这里就不给出了.

最新回复(0)