gpt4 book ai didi

java - "Last 100 bytes"面试场景

转载 作者:IT老高 更新时间:2023-10-28 11:45:10 27 4
gpt4 key购买 nike

前几天面试被问到这个问题,想知道一些最好的答案(我回答的不是很好哈哈):

场景:有一个网页正在监视通过某个网络发送的字节。每次发送一个字节时,都会调用 recordByte() 函数来传递该字节,这可能每天发生数十万次。此页面上有一个按钮,当按下该按钮时,将在屏幕上显示传递给 recordByte() 的最后 100 个字节(它通过调用下面的打印方法来实现)。

以下代码是我得到并要求填写的:

public class networkTraffic {
public void recordByte(Byte b){
}
public String print() {
}
}

存储 100 个字节的最佳方式是什么?一个列表?好奇如何最好地做到这一点。

最佳答案

类似这样的东西(循环缓冲区):

byte[] buffer = new byte[100];
int index = 0;

public void recordByte(Byte b) {
index = (index + 1) % 100;
buffer[index] = b;
}

public void print() {
for(int i = index; i < index + 100; i++) {
System.out.print(buffer[i % 100]);
}
}

使用循环缓冲区的好处:

  1. 您可以静态保留空间。在实时网络应用程序(VoIP、流媒体等)中,通常会这样做,因为您不需要存储传输的所有数据,而只需要存储一个包含要处理的新字节的窗口。
  2. 速度很快:可以使用读写成本为 O(1) 的数组来实现。

关于java - "Last 100 bytes"面试场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7986186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com