拿下技术面上传简历

你写了一个 `async def fetch_all(urls)`,里面用 `requests.get(url)` 循环请求 100 个 URL,然后 `await asyncio.gather(*[fetch_one(u) for u in urls])`。压测发现 QPS 和串行差不多,且一个慢请求会拖住其他所有请求。请解释原因,并给出两种改法;如果某个同步库没有异步替代,怎么放才不阻塞事件循环?

工程与系统设计代码与工程1-3 年知识点 1 个

面试官在考什么

判断是否理解事件循环、阻塞调用与异步并发的本质,以及能否在不能替换同步库时正确卸载。

并发与异步

回答框架 · 前两步

  1. `requests.get` 是同步阻塞调用,在事件循环线程执行会阻塞整个 loop,导致其他任务无法调度,表现为串行。
  2. 改法一:用异步 HTTP 客户端如 aiohttp/httpx.AsyncClient,真正让出事件循环。

还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

同一能力域的其他题