面试题答案
一键面试策略和思路
- 分片标识:为每个分片添加唯一标识(如序号),接收端根据该标识来确定分片顺序。
- 缓存分片:设置一个缓存区,将接收到的分片暂时存储起来。
- 排序重组:在缓存区中按照标识对分片进行排序,然后按照顺序进行重组。
关键代码片段及解释
// 假设接收到的分片数据结构为 {id: 序号, data: 分片数据}
const shards = [];
// 模拟接收分片
function receiveShard(shard) {
shards.push(shard);
// 尝试重组
reorderAndReassemble();
}
function reorderAndReassemble() {
// 按照id排序
shards.sort((a, b) => a.id - b.id);
let reassembledData = '';
shards.forEach(shard => {
reassembledData += shard.data;
});
// 输出重组后的数据
console.log('Reassembled Data:', reassembledData);
// 清空缓存,准备接收新的分片
shards.length = 0;
}
解释:
shards
数组作为缓存区存储接收到的分片。receiveShard
函数模拟接收分片并将其添加到缓存区,然后调用reorderAndReassemble
尝试重组。reorderAndReassemble
函数中,先使用sort
方法根据id
对分片进行排序,接着遍历排序后的分片,将其数据拼接起来得到重组后的数据,最后清空缓存区。