程序员老鬼

1000T的文件怎么能以最快速度从南京传到北京?有点大跌眼镜!

嗨,大家好,我是老鬼。
今天,看到一道有趣的面试题:如何以最快速度把1000TB的数据从南京传到北京?

Image

作为一名老码农,面试过不少求职者,老鬼在此说明一下,我们一般喜欢做一面面试官,只要技术将就,我都会放过,能不能进去交给二面、三面的兄弟,也好给老大交差,因为我不喜欢为难求职者,说不定哪一天老鬼也会是下一个求职者😂
好了,我将从面试官的角度探讨如何寻找最佳答案。
说白了,面试官想知道你是如何来推算成本的,毕竟这种问题没有标准答案,主要看思路。
作为,求职者应该考虑最常见的网络传输方式,并计算其实际可行性。需要了解当前的带宽情况,例如家庭宽带、企业数据专线等,如果不清楚的话,可以直接让面试官告诉你,一般来说,都会告诉你的。
例如:
  • 家庭宽带:下行最大1Gbps,上行300Mbps

  • 数据专线:最大100Gbps,价格最低35W/月

  • 互联网专线:最大10Gbps,价格54W/月

根据这些数据,候选人应进行一些简单的计算,就能得出传输所需的时间。

假设使用企业级数据专线,其实际传输速率为100Gbps,候选人应进行如下计算:
Image
这里,部分求职者忽略传输单位的转换,忘记➗8,这也是一个陷阱,当我们提到网络带宽时,通常是以比特每秒(bps)为单位,而存储和传输数据时则以字节(Byte)为单位。
一个小时内传输的数据量为:

Image

传输1000TB数据所需的时间为:

Image

那么,你应能够指出,通过企业级数据专线传输需要大约22.2小时。

如果我们使用互联网数据专线,大概要花 22.2*10/24 = 9.25 天。

如果使用家庭的带宽,大概要花几个月,黄花菜都凉了😂

接着,你就可以从成本的角度来考虑,其实企业级数据传输是最优的方案,时间快,只需要35万/月,那还有没有更省钱的成本的呢?

我看到这位博主给出了一个出人意料的答案“人肉快递法”,说实话,让我有点惊喜,我是完全没有想到,虽然听起来不那么“高科技”,但在某些场景下非常实用。

Image

具体实施方法:
  • 背上63块16TB的硬盘坐高铁,从南京到北京大概5个小时。

  • 算上两边交通时间,总共大约7小时。

  • 成本计算:高铁票价来回大约928元,加上两边打车钱,总计1100元左右。

候选人应展示这种方法的优越性,例如传输时间仅需7小时,费用仅1100元,相比网络传输的几百万费用,极具成本优势。

说白了,作为面试官要是听到你这个回答,确实能加分不少👍

但大部分面试官更希望你能从网络传输层的角度来进行优化,例如数据分片、并行传输和压缩技术。

这里,我给出一个使用多线程进行数据分片传输,以提高效率的demo,供大家参考:

import threadingimport os
def transfer_chunk(chunk, destination): # 模拟传输 os.system(f"scp {chunk} {destination}")
chunks = ["chunk1", "chunk2", "chunk3"]destination = "user@beijing:/data"
threads = []for chunk in chunks: thread = threading.Thread(target=transfer_chunk, args=(chunk, destination)) threads.append(thread) thread.start()
for thread in threads: thread.join()
print("Data transfer complete")
通过这个面试题,面试官希望看到候选人应具备以下能力:
  • 综合分析能力:能从多角度考虑问题,包括时间、成本和安全性。

  • 灵活思维能力:能提出创新的解决方案,而不是拘泥于传统方法。

  • 技术实现能力:能提供具体的实现方案,并展示技术细节。

说实话,这个面试题真的不错,希望对大家提升技术有所帮助~
最后,老鬼在AI领域方面(不限于编程)取得了一些小成绩,对AI感兴趣的同学可以🔗一下哦,同时,送《100+AI搞钱密码》😂

Image

往期推荐
01
Chrome下载及安装保姆级教程
02
最新版ChatGPT如何下载使用教程?
03
如何搭建一台军事黑客都无法攻破的Linux堡垒机?
Image
点分享
Image
点收藏
Image
点点赞
Image
点在看