This topic created in 2169 days ago, the information mentioned may be changed or developed.
- 实现方法:FindFatestUrl(ctx context.Context,urls []string)(url string,ts time.Duration)
- 找出最快响应 200 的 url 及其响应时间
- 并发请求 url,但同一时刻最多并发请求 5 个 url
- 请求发送 3 秒后若未返回则超时,视为请求失败
- 仅使用 Go 标准库,可使用伪代码表示发送 http 请求
9 replies • 2020-06-11 09:31:51 +08:00
 |
|
1
ym1ng Jun 10, 2020 1
作业请自己做(手动狗头
|
 |
|
3
morty961 Jun 10, 2020 via Android
这个面试题我也做过。变量名都一样,不会是同一家公司吧
|
 |
|
4
dallaslu Jun 10, 2020
话说这个题的 point 在协程吗?
|
 |
|
5
sadfQED2 Jun 10, 2020 via Android
每个 url 都开一个 go 程请求下,请求结束添加到管道,管道够 200 个就返回,是这个意思吗?
|
 |
|
7
blackeeper Jun 11, 2020
伪代码,golang 初学者,请大神检阅 ``` #urls 放入通道 go func() {ch <- urls;ch.Close()}() #五个 goroutine,并发 for i=0;1<5;i++ { go func() { for url := range ch { #消费通道 r,err := httpGet(url,timeout=3) if err != nil || err == TimeoutError { log.err("请求失败:%s"url) break } #存储返回 200 的结果 if r.StatusCode == 200 { ts := r.time.Duration results[url] = ts } } }() } #最快相应 200 的 URL sortTime(results) ```
|
 |
|
9
xkeyideal Jun 11, 2020
作业不会做,给钱,我给你完整可运行的实现方案
|