---
url: /notes/面试/真实面经/一毂数据/index.md
---
## 一面

手撸代码
@[pdf](../notes/example/java工程师后端机试题V1.6.pdf)

一毂数据机试题

https://wwzp.lanzoum.com/iy33d2t70hab

示例demo

https://wwzp.lanzoum.com/iNggX2t70jdg

## 二面

### 针对刚才会议声音卡顿的问题，你简单分析一下会是什么原因造成？

### 如果现场有一个设备（麦克风）声音效果非常差，作为设备接入系统的负责人，你要怎么去排查这个问题？

### 声音信号从你嘴里出来到进入我耳朵，这个信号经过了哪些节点？

声音采集：麦克风将声波转换为电信号

声卡（音频输入设备）：麦克风采集到的模拟信号通过声卡（或集成音频芯片）进入计算机

声音处理：声卡将数字信号传递给操作系统的音频驱动程序

音频处理软件：声音信号可能会经过一些预处理（降噪、回声消除）

编码：为了在网络上传输，声音信号需要被编码为适合网络传输的格式

网络传输

数据封装：编码后的音频数据被封装为网络数据包

传输层协议：数据包通过UDP（用户数据报协议）或TCP（传输控制协议）传输

网络路由：数据包通过网络路由器和交换机传输，最终到达会议服务器。

NAT和防火墙：如果数据包需要穿越NAT（网络地址转换）设备或防火墙，可能会对数据包的传输产生影响。

接收端处理

解码：接收端的计算机接收到音频数据包后，首先进行解码，将编码后的音频数据还原为原始的数字音频信号。

音频处理：解码后的音频信号可能会经过进一步处理，例如降噪、音量调整等。

音频驱动程序：处理后的音频信号通过音频驱动程序传递给声卡。

声音播放

声卡（音频输出设备）：声卡将数字音频信号转换为模拟信号，然后将信号传递给扬声器或耳机。

扬声器或耳机：最终，模拟信号被扬声器或耳机转换为声波，进入听者的耳朵。

### 在实际工作中，你是否有遇到过产品使用过程中出现意外问题并成功解决的例子？

### 第二题的时间复杂度是多少？

### 机试题4你在实现新增商品时有没有发现可能存在的bug？

### 机试题4在处理商品ID时，为什么直接判断可能会出现不严谨的情况？

map，id为空

### 第四题你是怎么实现的，思路是什么？

### 判断一段代码好坏，通常会从哪些方面来考虑执行效率？

时间复杂度、空间复杂度、数据结构选择、代码优化（循环优化，减少I/O操作）、可扩展性

### 关于分布式锁的实现，你是怎么做的？

**获取锁**

使用  SET  命令，结合  NX  （不存在时才设置）和  PX  （设置过期时间）选项

```cmd
SET lock_key "lock_value" NX PX 30000
```

**释放锁**

lua脚本,为了避免释放其他线程的锁，需要在释放锁时验证锁的拥有者

```cmd
if redis.call("get",KEYS[1]) == ARGV[1] then
    return redis.call("del",KEYS[1])
else
    return 0
end
```

**锁续期**

如果持有锁的操作时间可能超过锁的过期时间，需要定期续期（使用PERSIST命令）

使用EXPIRE命令：EXPIRE   命令用于为键设置一个过期时间（以秒为单位）。如果键已经存在，可以使用   EXPIRE   命令修改其过期时间

```cmd
expire key seconds
```

使用PEXPIRE命令:PEXPIRE   命令与   EXPIRE   类似，但它使用毫秒作为时间单位，可以设置更精确的过期时间。

```cmd
pexpire key milliseconds
```

使用EXPIREAT命令:EXPIREAT   命令用于为键设置一个具体的过期时间戳（以秒为单位）。

```java
expireat key timestamp
```

使用PEXPIREAT命令:PEXPIREAT   命令与   EXPIREAT   类似，但它使用毫秒作为时间单位，可以设置更精确的过期时间戳。

```java
pexpireat key timestamp
```

使用PERSIST命令移除过期时间:如果需要完全移除键的过期时间，使其变为持久键，可以使用   PERSIST   命令。

```cmd
persist key
```

### Spring框架中使用java8的stream API，它的特性是什么？

简化代码、提高效率和增强可读性

链式调用

并行处理

函数式编程支持

### 机试题用到了哪些设计模式？

### 你有写过前端代码吗？前后端分离开发的标准是什么？

分离标准通常是按照接口文档

### 前后端通信有哪些方式？

http，websocket

### 数据库的三范式是什么？

### 你是否使用过微服务，如何处理微服务间的通信？

如果一个文件服务调用生成文档需要10分钟，其它服务不可能等10分钟，怎么解决；**消息队列**
