杯具了,落了一个心病,这种事情大家会怎么处理? (转载)# Joke - 肚皮舞运动
z*n
1 楼
Vmware的电面题,有一个分布式FTP Cluster,包含N台FTP服务器,一台为Master,上
面存放了一个很大的文件,比如10T, 剩下的N-1台是Slave,问你如何设计一个同步算
法,把Master上的文件同步到Slave上,要求cost越小越好?
我回答的是,把Master上的文件分成一个个的小Chunk,给每个Chunk算一个checksum,
然后每次同步的时候,再算一遍并检查checksum,如果某chunk的checksum变了,就把
这个chunk同步到Slave上。
Interviewer对此表示赞同,但是又追问了一个问题,他说,如果文件中的某一部分被
删掉了,比如第一个chunk删掉了1个Byte,但是这个删除的操作和位置你是不知道的,
如果还按照原来的chunk size计算checksum,会发现所有chunk的chunksum都改变了,
而实际上只有一个改了;这种情况下,怎么解决?
这部分我没有答出来,有谁能够帮忙分析一下?
面存放了一个很大的文件,比如10T, 剩下的N-1台是Slave,问你如何设计一个同步算
法,把Master上的文件同步到Slave上,要求cost越小越好?
我回答的是,把Master上的文件分成一个个的小Chunk,给每个Chunk算一个checksum,
然后每次同步的时候,再算一遍并检查checksum,如果某chunk的checksum变了,就把
这个chunk同步到Slave上。
Interviewer对此表示赞同,但是又追问了一个问题,他说,如果文件中的某一部分被
删掉了,比如第一个chunk删掉了1个Byte,但是这个删除的操作和位置你是不知道的,
如果还按照原来的chunk size计算checksum,会发现所有chunk的chunksum都改变了,
而实际上只有一个改了;这种情况下,怎么解决?
这部分我没有答出来,有谁能够帮忙分析一下?