|
|
2009百度实习笔试题
9 r; h0 y5 z+ _. x+ y) W. H6 L2 C8 W
1 w' _' H) r( A& A
0 E5 ^3 Y& s2 P) j/ k
. D" C( t! {/ ?一、编程题(30分)
, v" k% {/ o% s/ R2 c" I输入:N(整数)
: k( q3 B( t1 ?输入:数据文件A.txt,不超过6条记录,字符串长度不超过15个字节1 h: e- C1 F9 @ s) v7 e6 H! @1 C
文件格式如下: p" S8 Y; a+ k' `
字符串\t数字\n# l3 Q% p0 D" T% e$ Q
1 w1 T9 C( j& i$ s! z& |3 `说明:
! O4 ?+ A) P! z$ j每行为1条记录;字符串中不含有\t。- U# p" f2 f z( Z- r6 R/ b0 g Y
数字描述的是该字符串的出现概率,小于等于100的整数。8 w) H/ y& K) @+ Y h" W
多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;
# N7 R, a @/ {$ [9 \: d如果文件格式错误,程序也退出。
$ ]. J- W7 R. R4 K
+ ~2 e8 r8 f/ z" X% [5 r" \要求:
. R. |& h! t$ C9 C编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机
O" C$ Z* I$ ?% D
. }% ?( x; r5 k$ h; M* ]0 x地输出字符串,输出N条记录9 E8 f4 b1 ^3 }' J! M1 w7 g2 @ d! V. m
+ W7 a5 i, E0 r! g7 N4 j7 H) r例如:
$ P' G9 k+ c. R输入文件A.txt* ^0 x/ o g T/ @* X" q8 r
abc\t20
3 ^6 r# E! _; F0 Z6 Qa\t30
& q9 f8 k# }' e5 j4 U' Sde\t504 p: t; b& N3 _% t$ }6 l9 t8 f6 E4 N
输入为:10( g- Y: s, r. i8 A: l1 H; [/ V
: R8 G2 T' b$ F% q2 J
即 abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输出10条记
7 A" A/ q7 o! [2 L* p, R
3 m8 x* U* Z$ ]录# K. V& y. B$ y! r4 ^1 k
以下为一次输出的结果,多次输出的结果可能不相同。
4 E2 Z$ s/ K% O! @" b7 r5 ?abc
% U% i2 F5 @% L* b) R9 Na) G. m& R U, t
de
7 D* U- e' C _: lde
8 c! }* E! p4 J) u; C; Yabc l5 W1 N. T0 B: Z' q& w2 \
de1 N, y" R2 p9 j! G0 g1 z, f
a& S3 g5 Z$ b7 G5 ^1 b# {
de
: u2 _- @# R" s: ~4 pa9 N4 @" e" g6 z! V; I8 _' E, m- t
de
- t6 Y5 b; s! j; N; k
7 o4 R# ^8 \4 S. d% D4 `8 ^二、算法题(35分)
0 F' O* X/ [- F- k- J9 {# _题目描述:
: c8 a& \$ b4 G9 k6 R设有n个正整数,将它们联接成一排,组成一个最小的多位整数。; c% Q6 U; |; r
6 Y9 A- u4 o3 e5 \+ i5 w1 C& o
程序输入:n个数
$ M: e1 b+ u2 F; N4 m' N程序输出:联接成的多位数4 } h4 M+ [" L( w/ s( |7 Y
# l' p' X/ e9 E* M" O例如:, s; Y& m" J7 Z, F. l3 J
n=2时,2个整数32,321连接成的最小整数为:32132,
4 [9 N4 G# o, t. X' k9 q+ D# un=4时,4个整数55,31,312, 33 联接成的最小整数为:3123133551 R4 l/ ^, F [+ s
+ k/ Z" K- Y- q5 `[题目要求]! w' x5 }" W8 s9 g/ |5 k
1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算5 N: h1 H; |+ K; ^' x
, c, C H: g1 T' P+ s法。8 \# v" v( g) m2 n: s
2. 给出算法的时间空间复杂度。4 S& x4 g" G# ~8 H, r. G
3. 证明你的算法。(非常重要)
- r, q+ j; H, f# t1 Z# e( v
2 N3 r7 J# D+ n' t0 \三、系统设计题(35分)
) m2 {/ e; F! w: t( s9 J4 S; y在一个有1000万用户的系统中,设计一个推送(feed)系统。以下是一些预定义概
- d/ G( \; R8 H6 d, }& T& X* F4 K: D/ Y
念
& y" ?1 e, T4 p1 z" U) ~, W; `1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简
/ k$ S7 L+ a' }7 A: C7 e# Y. S4 v9 a2 x7 `* T8 D2 ~
写为uid);则uid的范围是从1到1000万的正整数。
! l' v# J- M, d2 T+ a+ ~/ O2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的3 E3 J0 \" X" C9 u b
" ]% T \. D3 e两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以
4 w# U! @0 L) ?- e
6 {( {8 x( C4 U2 b, x被解除9 _6 |/ z3 n* B: `, [' Y4 m
3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发; F; k# J# Z3 r# P* j* M Z, ~+ Y6 a
5 A0 @ e4 Q6 D6 h1 |表的文章;每篇文章通过一个blogid表示。
* J- N. l2 y7 k- X6 H9 C4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系
; L! k' d# r3 T$ X7 O2 U- c! G3 F; {* m3 W# ]0 e' t! e3 t
统中就是所有好友的文章更新列表。
; Q. b t! K+ b, c" o5、访问量要求:所有feed访问量每天在1亿量级;所有的blogid增加量每天在百% m, f8 z9 Q+ t% `; T0 D
: e9 ^) c- n0 {4 \
万量级。) [; \! R8 x# B7 Q6 y* ~1 n+ x
; f% ]+ I; W/ a" F0 A
题目:请在以上限制条件下,设计一个高效的feed访问系统。8 Q5 z# U: v" m+ m/ B
; r1 U$ T& z) }要求:
1 o) q$ v; T: {, }: o1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed
1 X5 u( z$ X; V, U' F
5 a0 [5 M0 _6 y' };feed的展现按照时间倒排序,最新的在最前面$ J. m2 n3 ]! U* j% n* K# U
2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友
6 K! S) x" O8 }) ~% u' S6 j) ?# e0 e2 U9 G8 P
feed都是未被删除的3 |4 e' `0 _: l! {: W3 ]% H
3、尽可能高效。& M) S* S- j* y- J- A/ o( ~
7 P$ P$ T( @% {( l2 l
百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html
6 V- }& b1 P) b9 [" X. y- Z; C百度历年实习生招聘真题:http://bbs.aftjob.com/thread-606504-1-1.html
_5 `% d, U* L8 a4 r百度2010实习生笔试2套:http://bbs.aftjob.com/thread-610484-1-1.html1 N5 n' s! p, z2 n0 a4 }
百度求职俱乐部:http://bbs.aftjob.com/group-4-1.html |
|