被问到“有一个接口需要返回 10w 条数据,应该怎么做?”该如何回答?

2019-05-27 21:35:32 +08:00
 avk458

面试岗位是 Java,按照分页的逻辑按需返回,被告知不对。

10265 次点击
所在节点    Java
50 条回复
sammeishi
2019-05-28 10:09:25 +08:00
跪舔型:
老师这个题目一看您就是老江湖了,佩服佩服,我个人觉得输出端肯定要做内存 cache 防止阻塞 IO,然后在分块后使用流并发推送防止。。。。最后在使用。。。。。 您老法眼看看可以吗?
真-程序员型:
老师,您脑子里的水没排干吗? 什么业务需求一次输出 10w ? 应用端一次请求 10w 设计者是大学生吗?把接口当下载机吗? 是迅雷玩上瘾了吗? 考虑过好好看病吗?
encro
2019-05-28 10:12:41 +08:00
想要的答案应该是:1,返回一个 TaskID,2,Task 完成通知;3,根据 Task_id 自己过来取.4,取的时候分 chuck 返回不要一次读取.
moonsola
2019-05-28 10:16:39 +08:00
不管面试官的初衷是什么,这种问题更考验的是需求沟通能力。
很多面试官也就是随口提一个问题,他心中有一个完善的使用场景,但是你不知道啊,你得问出来。

客户或者产品经理上来问一句“我要对接一个接口,需要返回 10w 条数据,能做吗?”
你就回答个“能”,然后开始调分页的轮子?不需要确认下其他的信息?
10Buns
2019-05-28 10:30:31 +08:00
面试官是期望你需求分析吧?
lihongjie0209
2019-05-28 10:48:45 +08:00
所有的技术问题都会回到需求分析上.
FelixLiu
2019-05-28 11:02:17 +08:00
我觉得我听过这个问题会很迷茫。这 10w 条数据是什么数据?数、字符串 or 对象?数据类型不同,可能就会产生不同的处理方法,我觉得你应该搞清具体需求是什么。
icaca
2019-05-28 11:19:35 +08:00
可能是面试官所遇到的问题,可以入职之后帮他解决此问题。
wclssdn
2019-05-28 11:19:59 +08:00
不说业务场景,单接口返回 10w 条数据是傻 x 么。。。
如果真要返回:
那 10w 条是怎么产生的?如果要回答这个问题,那就要看业务场景,数据时效性如何。是否适合缓存,能否用 cdn。
如果一定要用 http 接口,则需要自行设计内容格式,每行独立编码,可流式解码。如果用 linux,一定要用系统态发文件。应用层要支持 range、gzip。
性能角度,单次接口耗时多久?单服务器 qps 能到多少,业务 qps 峰值多少?如果多台服务器提供服务,是否对不同用户需要提供不同的 10w 行记录(不同时间方案的 10w 行数据是有差异的)。这又可以做共享缓存方面的优化。

任何抛开业务场景谈架构的都是傻 x。。。 如果面我这个问题,我可以答,但我听不到实际的应用场景,我不会去这家公司(为了面试出傻 x 问题的人是傻 x )
realpg
2019-05-28 11:39:20 +08:00
以我现在手头的项目而论 如果一次返回 10W 条数据,最好的办法就是拿着硬盘去机房拷回来

如果对方不愿意给更多限定 那你就列出一系列不同场景的解决方案 以示自己的阅历并让只在脑袋里出一种他们经历过情况的出题的人一脸懵逼
Vendettar
2019-06-01 13:22:42 +08:00
写到文件里面传输吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/568165

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX