|
亲!马上注册或者登录会查看更多内容!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
2015暑假Intern,之后还有几轮未知。- s0 D& Q7 ^- {3 U3 J
土木转行所以细节可能粗糙,请谅解。. U- J8 K& r( q% ^( a9 _# G* K( w
6 T- K( ~' \; D5 N" ^感想:
- y6 `% w- f0 P( l2 U1,他们家的题目是挺有意思的,原题或者纯算法都很少,大量的实例分析和design的题目(不过复杂度不高,毕竟intern)。
" C9 L, H0 N) [) g" }2,可能多个面试官同时出现,be ready。* w- l( _. J2 f/ F; K5 z! a* C; m" J
X. |5 ? |5 s$ \. h( z校面:
' Q; x; k% u. Q- E: `- c0,Talk about yourself。7 J+ K5 `7 [3 ^2 U, J" w
" C. |4 C2 G& ?1 q/ R# V1,用户会发送buy和sell的指令给后台的服务器组,sell之前必须要有buy。但是服务器组内部跑指令可能会把指令顺序搞乱,如何保证能够正确执行原始的指令顺序。
7 Q' V) p# z5 w' v" [( Z
% E4 R v8 I1 H& ~8 D这个其实我和他们聊了一阵子也不太明白是什么概念,毕竟我的想法是如果用户恶意输入无效指令我们也要去试图恢复吗(比如sbsbsbsb)。然后就是如何知道用户的原始指令顺序是什么,然后就是如何把信息递给服务器组(本身是个大黑盒,你不知道会如何)。总之聊了一下换题了,感觉不是很get到考点。" d/ a* n) a7 E9 t I8 S
$ z) c( g# E) R7 n2 }" Q2,给你N个数组代表N种股票的每天的交易员ID(比如1 2 2 2 8 2 1就代表7天里3个交易员在负责这些股票),返回所有参与过所有股票交易的交易员ID。" ~( c0 Z8 c* G. \: Y5 }% I- Y
% m, Z) K1 \2 \' }8 t/ y6 B# `# K! W这个用hashmap存交易员id和他对应的count,同时记录当前扫到第k个股票的数组。如果看到一个id,并且count等于k-1,就加1。结束了把所有count等于k的id输出。' [. K! c/ B- Z0 @
+ n) `$ G/ W# M5 P: w
3,信息发送的load balancing。假设给你一个send()函数,可以发送一个message。要求你写个函数balancedSend(int msg, int cd),可以在cd的秒数内最多发送msg条信息(比如balancedSend(10, 60)就是60秒内最多10秒),并且尽可能降低每一条message的延迟。$ o6 O( q& z0 m5 U
! r% b! Z* Z/ s7 A* Q3 G. e
就是个基本的写函数问题,跑send()之前计时,发完msg个信息后检查消耗时间,如果超过cd就直接下一轮,如果没超过就sleep(cd - 消耗时间)。
1 h6 z) H! c$ g* a! |
: f" i/ r, e8 x6 I/ ^) X4,系统会不断推送<股票名,当前价格>给你,要求你实现三个接口:currentPrice(String name)返回该股票的当前价格,currentProfit(String name)返回该股票目前的利润(其实就是当前价格减去起始价格),top20返回当前利润最大的20个股票。
; v1 E) B0 Y; h5 p
' r; }2 r& L8 l' e) x! c3 N, O& H/ u+ i依然是hashmap,不过值用一个数据类包起来两个参数,当前价格是起始价格。额外保持一个size为20的minHeap,每次更新股价,如果它比之前的老价格高,就拿价格差和minHeap的root去比,如果大于就插进去,同时删除root。
2 U" ~ T; y0 q" Y2 N& o% p& D' u |
评分
-
查看全部评分
|