一毂数据
约 1342 字大约 4 分钟
2026-04-04
一面
手撸代码
一毂数据机试题
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 (设置过期时间)选项
SET lock_key "lock_value" NX PX 30000释放锁
lua脚本,为了避免释放其他线程的锁,需要在释放锁时验证锁的拥有者
if redis.call("get",KEYS[1]) == ARGV[1] then
return redis.call("del",KEYS[1])
else
return 0
end锁续期
如果持有锁的操作时间可能超过锁的过期时间,需要定期续期(使用PERSIST命令)
使用EXPIRE命令:EXPIRE 命令用于为键设置一个过期时间(以秒为单位)。如果键已经存在,可以使用 EXPIRE 命令修改其过期时间
expire key seconds使用PEXPIRE命令:PEXPIRE 命令与 EXPIRE 类似,但它使用毫秒作为时间单位,可以设置更精确的过期时间。
pexpire key milliseconds使用EXPIREAT命令:EXPIREAT 命令用于为键设置一个具体的过期时间戳(以秒为单位)。
expireat key timestamp使用PEXPIREAT命令:PEXPIREAT 命令与 EXPIREAT 类似,但它使用毫秒作为时间单位,可以设置更精确的过期时间戳。
pexpireat key timestamp使用PERSIST命令移除过期时间:如果需要完全移除键的过期时间,使其变为持久键,可以使用 PERSIST 命令。
persist keySpring框架中使用java8的stream API,它的特性是什么?
简化代码、提高效率和增强可读性
链式调用
并行处理
函数式编程支持
机试题用到了哪些设计模式?
你有写过前端代码吗?前后端分离开发的标准是什么?
分离标准通常是按照接口文档
前后端通信有哪些方式?
http,websocket
数据库的三范式是什么?
你是否使用过微服务,如何处理微服务间的通信?
如果一个文件服务调用生成文档需要10分钟,其它服务不可能等10分钟,怎么解决;消息队列