101
uncat 2019-08-07 10:25:12 +08:00
1. 接收端 nc 监听本地端口用于接收文件
2. 购买一台按量付费服务器, 带宽选择按量付费不限峰值 3. ssh 映射 nc 监听端口到服务器 4. 发送端 ssh 服务器端的接收端口到本地 5. 发送端发送文件内容到本地监听端口 |
102
windfarer 2019-08-07 10:27:23 +08:00
@qq976739120 你应该答,叫个饿了么小哥送
|
103
ryd994 2019-08-07 10:37:44 +08:00 via Android
Python -m simplehttpserver 或者任何轻量 HTTP 服务器
取决于数据特点可以考虑启用 gzip 压缩 对面用 uget / aria2c 多线程&断点续传 如果是 Linux 服务器的话完全可以 rsync+ssh,还兼顾安全呢 |
104
qinyusen 2019-08-07 10:41:08 +08:00 2
上次看到这种问题的时候,是 12TB 数据。。。
答案是高铁人肉送一下。。。 |
105
harck 2019-08-07 10:47:18 +08:00
高铁 4 小时 18 分 左右
飞机 2 小时 20 分左右 快递 24 小时左右 |
106
AlvaIM 2019-08-07 10:50:47 +08:00 1
早上 Mac 收到更新,2 个 G 的更新文件,2 分钟不到就下载完了。 很想知道让坐飞机的是让楼主坐土飞机么?
让面试考官出题严谨,真是呵呵, 又不是高考,吐槽别人出题不严谨的心理上还没毕业吧。 面试就是为了考察候选人面对问题处理问题的能力。 开放式的问题考验的也是你提问题的能力, 对一个 Case 连有价值的问题都提不出来,怎么能指望你能解决问题。这个问题又不复杂, 在不同的条件下有很多种不同的方案,包括看似不靠谱的坐飞机方案,但是楼主连问题都没问,接收两端的网络环境啊,有无什么物理限制啊这些。 最后说道问题本身, 尽可能的快, 那么就包括了 线路选择和尽可能占满带宽,这两个要解决的问题。 包括坐飞机也是线路选择的一个可选模式。 |
107
wodexiaogou 2019-08-07 10:51:22 +08:00 1
他说不考虑安全的前提下,这就已经告诉你答案了啊,用 udp 方式传输
|
108
ipwx 2019-08-07 10:53:55 +08:00
充分利用带宽,在现行网络协议的框架下面,瓶颈是 TCP 丢包造成的拥塞控制协议误判,导致带宽利用率底下。一种方案是多线程传输,所以你架个 HTTP(s) 服务器(譬如 Nginx ),用多线程下载软件(譬如 aria2 )下载就行了。
然而国内网络的丢包很小,我觉得说不定不用搞这个,也能接近跑满带宽。 ---- 这个答案怎么样?楼主? |
110
ych8398527 2019-08-07 11:28:21 +08:00
百度云开会员
|
111
c0878 2019-08-07 11:36:05 +08:00
这是考思考问题的全面性 给的条件越少 你要考虑的点就越多 至少给出几个不同的解决方案并说明这些方案的区别和优缺点
只说一个 ftp 下载之类的 估计面试官那边得分不会高 |
112
goodryb 2019-08-07 11:48:38 +08:00
比较赞同 #111 的说法,开放性问题就要开放性回答,没有限制条件你就可以自定条件
|
113
zcqshine 2019-08-07 11:52:54 +08:00
QQ 现在可以传输 4G 的文件了不
|
114
wlsnx 2019-08-07 11:55:55 +08:00
4G 又不是 4T,直接 rsync 就行了。
|
115
fuyufjh 2019-08-07 11:58:13 +08:00
这么简单的场景,无论用 HTTP 还是 FTP 还是 TCP 直接发,都不会有太大区别
要是我就会问如果北京有个 4T 的文件,怎么给各个省会城市传一份,假设地理位置越近带宽越宽 |
116
zjyl1994 2019-08-07 11:59:23 +08:00
4g 不算大啊,公司 vps 开了个 100M 的端口,scp 过去也没多少时间
前几天刚从成都往上海送了 10G 文件的路过 |
117
miserist 2019-08-07 12:09:29 +08:00
帝都,百度云,开会员,上传文件,魔都,百度云,开会员,下文件
|
118
guokeke 2019-08-07 12:42:38 +08:00
4G 直接 rsync 就行,而且追求速度的话,瓶颈永远是带宽,加钱就好了,设计方案再牛逼也没法突破带宽限制,
除非设计压缩算法。 |
119
bilberry 2019-08-07 13:05:11 +08:00
飞鸽传书,把 U 盘绑到鸽子身上 https://mp.weixin.qq.com/s/RSvEWTzMHEYvY6FBdC4cbQ
|
120
yzmm 2019-08-07 13:27:26 +08:00
把文件分成 1000 份,然后 100 线程 UDP 传,至于接受端收不收得到管我屁事啊。
问这问题的人不知道是在想啥,如果网速 10GB/S 那么考虑怎么传输真的就重要了? |
121
wingyiu 2019-08-07 13:31:29 +08:00
分块 并发 md5 校验 小客户端 合并 udp 考虑双方带宽 先计算跑满
|
122
bertsir 2019-08-07 13:49:54 +08:00
不说带宽的都是耍流氓
|
123
lenmore 2019-08-07 14:14:51 +08:00
4G 不大不小
1、考虑压缩。 2、用最简单的工具,比如 QQ,云盘,SFPT 3、考虑带宽,如果 PC 端的网络带宽不够,可以考虑通过手机 4G 网络传。一般 4G 网络的上传是不限速的,快的可以达到好几 MB。 |
124
lmw2616 2019-08-07 14:16:47 +08:00 via Android
分包多线程上传,到阿里云,接收方同时下载,
|
125
nicoljiang 2019-08-07 14:27:59 +08:00
假如我是面试官,我得到目的大概是:
1. 看你应激的场景梳理能力; 2. 看你知识的广度(喜欢折腾技术的 geek 和 培训班 出来的 coder 能看出很大差别); 3. 看你对网络的特性是否有深入了解(例如:切成 4096 个 1M 的小文件,多线程传输,以充分利用「 TCP 的流量控制 /拥阻控制」算法的特性) 当然,实际上我并非研发,而是 PM,所以纯属瞎猜。 |
126
casaca 2019-08-07 15:20:22 +08:00
发顺丰比较快。
|
127
lihongjie0209 2019-08-07 17:09:52 +08:00
突然想起来可以反问啊
直接问: ftp/http/rsync 是否可以满足需求, 不满的话把需求再明确一下不就有方向了吗 |
128
radc 2019-08-07 17:17:00 +08:00
干过带着硬盘去机房直接拷的事 200G 同城打车往返 80 块 :doge:
|
129
xomix 2019-08-07 17:34:11 +08:00
拆分 /分布式发送 /分布式接收 /合并
你能答出来这个就已经合格 如果能想到用 udp 协议和 hash 校验来替换 tcp,那你的分数就相当高了。 |
130
vmskipper 2019-08-07 17:48:02 +08:00
北京 上海建一条专门传数据的光纤
|
131
YaakovZiv 2019-08-07 21:16:48 +08:00
阿里和华为有对象存储服务,传上去,然后对端下载,速度就很快,4G,该题目未对带宽限制,根据我以前在家里体验的情况看,预估在 10 分钟左右,可以传输 7G 的文件,无论是单个文件还是多个文件一共 7G。相对来说,这里面附带了对安全的考虑,因为可以设置安全策略限制指定的用户下载资源。
再有就是,北京的终端 A 和上海的终端 B,同时使用了云磁盘 C,共享磁盘 C,A 终端存储的该 4G 文件可以直接在终端 B 查看使用。 |
132
danmu17 2019-08-07 21:31:48 +08:00
@xomix 问题是在现实世界里,在双方网络都正常的前提下,这样做完全是无用功,不会提高任何效率。好奇在中国哪种水平的公司才会有这种低水平的面试题。
|
133
moran3649 OP 各位大佬的指点让我越来越懵逼。 😂
事实上这是某外包公司的面试问题,楼主也是浪了四个月第一次去面试,很多事情都没想到缩小问题范围,比如带宽限制,考验知识的方向等等。 |