返回信息流前几天参加面试遇到的,水平太渣,各位大神指点指点。。。
问题如下:
网友希望查询今天的天气预报,那么需要你写一个向服务器请求数据的程序,将气象呈现给网友。
现在有3个气象台都提供了气象数据, 这3个气象台分别为 :
A--中央气象台, 该气象台的特点是数据特别准确, 但是返回数据可能特别慢
B--北京市气象台 该气象台的特点是数据准确定很普通, 返回数据的速度也很普通
C--海淀区气象台 该气象台的特点是数据准确定很差, 但是数据返回的数据特别快。
你电脑上有一个文件, 这个文件里面就有上次查询的气象情况, 这个数据准确定是最最不准的, 但是获取到这个数据肯定最快的
注意: A虽然是特别慢, 但并不一定是最慢的, ,所以不能说查询速度是A<B<C, 只能说大部分情况下是查询速度A<B<C
请用你熟悉的语言来实现一个相对较好的方案来使得网友能够无需漫长等待即可获得较为准确的气象预报的方案。
给你的输入数据为 : A_URL, B_URL, C_URL, D_LOCAL_FILE_URL;
这是一条镜像帖。来源:北邮人论坛 / java / #38323同步于 2015/1/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
面试遇到的问题,完全没思路,求大神解救
june0334
2015/1/25镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
抛个砖
后台进程每隔一段时间请求A,用于更新D;
用户每次打开程序/查询的时候先直接显示D,
然后开启2个进程分别查询AB,接收到了B先不急着显示
在一定时间内A没有返回才显示B,如果返回了就显示A
这样呢?。。。感觉有点傻
【 在 june0334 (俊泽june) 的大作中提到: 】
: 前几天参加面试遇到的,水平太渣,各位大神指点指点。。。
: 问题如下:
: 网友希望查询今天的天气预报,那么需要你写一个向服务器请求数据的程序,将气象呈现给网友。
: ...................
【 在 dss886 的大作中提到: 】
: 抛个砖
: 后台进程每隔一段时间请求A,用于更新D;
: 用户每次打开程序/查询的时候先直接显示D,
: ...................
我当时这么想的,三个线程同时对A,B,C发出请求,因为对C的查询是最快的,那就以C的响应时间为标准,如果A的响应时间在可接受的范围,就返回A的数据,否则看B的响应时间是否可接受,最坏情况是A和B的响应时间都太长,那就用C的数据,最最坏的情况当然是C的响应也太长,那就用D了。
当时觉得这种想法好幼稚,看看各位大神有没有高招
我也抛个砖,感觉可以结合A的更新频率。
1、D应该是用作A的缓存,对一个请求先查询D,如果存在就根据A的更新频率判断D是否过期,没过期就用D;
2、D过期或不存在的时候,对A\B\C查询,获得C先返回,然后获得B用B替换C,再然后获得A更新缓存D,并用A替换B
【 在 mengyin0418 的大作中提到: 】
: 我也抛个砖,感觉可以结合A的更新频率。
: 1、D应该是用作A的缓存,对一个请求先查询D,如果存在就根据A的更新频率判断D是否过期,没过期就用D;
: 2、D过期或不存在的时候,对A\B\C查询,获得C先返回,然后获得B用B替换C,再然后获得A更新缓存D,并用A替换B
题目只是说D是上次查询的结果,没有指明到底是哪个源。
另外,如果A的响应时间太长的话,就会使用B或者C的数据,并且保存到D中,跟A更没关系了。