|
|
2009百度实习笔试题
9 s$ R" U% X: J7 c" n6 v: _& V/ n0 m9 J8 `# Q, w
. R; X6 q1 |$ b
" N: o, N3 L8 Z) y
2 m- U4 ]3 L& m6 _一、编程题(30分)
# p4 Q4 a+ n- _. X输入:N(整数)
) S7 x; C, t# @7 r5 P输入:数据文件A.txt,不超过6条记录,字符串长度不超过15个字节
$ y7 z3 M6 Q) U; F" n文件格式如下:, R6 R1 O: c$ c, [. d
字符串\t数字\n* `' }0 J# _( C. P5 ~$ `0 U$ Y
$ _% R _' D. k. X( H5 P
说明:( J+ r( C) H) H; V$ I r1 N
每行为1条记录;字符串中不含有\t。
. |2 s3 L: @1 r数字描述的是该字符串的出现概率,小于等于100的整数。
" j( \8 S( b% J$ b n0 L) ?多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;
; x A) m( S6 o0 i/ B如果文件格式错误,程序也退出。! V* r" ~3 Z+ r1 z
N# B. L R: l; a7 Z
要求:
- v% F0 I' d r( _编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机
5 l4 j5 ~2 f( g" V& U8 \6 {0 f
! g* b1 n) D0 F0 P2 e地输出字符串,输出N条记录
2 k' g" Y- G4 y& H% ^9 |/ e8 Z0 L" r
例如:
) m4 y/ E3 |! m) z* Z输入文件A.txt
, ?% a/ ^% j0 \* f- `3 tabc\t20
* b5 K* ?( x9 ^9 i2 C) ~a\t30
% P; u7 E/ k/ Pde\t50
/ @6 A3 ]# ]: {输入为:105 X3 A* n/ @- ?; I" ?* f
- S2 U: s1 a0 c3 L; y7 x7 j即 abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输出10条记
& l+ k) V4 T2 L H+ l
! j9 r% i# x1 Z录
- G$ l1 J: x; q% t! r; n" g1 ]. ^) E以下为一次输出的结果,多次输出的结果可能不相同。: `; `" |( e- S. W4 U0 j, k
abc
% T/ ~. i' u$ X2 J! O/ ua8 a" a! W+ R. l7 u
de) i: ]9 j; z2 J8 B# ^0 A
de; j" J& |+ p G+ L/ W
abc
& o4 B2 z) c$ w) Sde
# K* v. z) O* N( C( oa
4 T- [ g! V( [; a- Y+ r7 z. e3 ude
K, U [. A) [a
+ B h4 W3 i% [7 Jde
# t. G- n% v/ [3 `# Y
; ]& [) S( `$ G3 h$ ~: y: D二、算法题(35分)
3 x1 F$ ^( t, y8 s; U" a9 r# N题目描述:
% v: ^/ b) B( s! K8 U x2 ^2 p设有n个正整数,将它们联接成一排,组成一个最小的多位整数。
, X0 R5 Z/ ~" [+ g; I& `6 w$ F5 {; b- u
程序输入:n个数
5 G! |1 R+ E, k; i" N程序输出:联接成的多位数+ k+ A; t7 E0 @# E
# H$ v3 [5 B$ V. a/ r- J5 \
例如:
1 g& n/ V2 G: y z3 ln=2时,2个整数32,321连接成的最小整数为:32132,
7 w7 H+ Q; L) M. gn=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355
0 O1 F" H6 {+ `' Z, }- I$ v2 ^
: |9 d0 @; M2 i* a[题目要求]
& N/ j3 q) T8 l/ W. C1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算& [1 w& {$ Y2 [% q3 p0 D; b) m' g
5 j2 ]5 `- C9 [, |) Z# H
法。
1 Q+ J9 Y9 U R3 t5 B' S5 M2. 给出算法的时间空间复杂度。1 y! U7 _- K w8 x# \5 t# T
3. 证明你的算法。(非常重要)
1 p- n7 K; t2 c# h- ^( N3 ^; s7 }5 ~) V1 m9 X* ]9 }+ Q
三、系统设计题(35分)% _$ ?# i# [. U, f2 C0 E
在一个有1000万用户的系统中,设计一个推送(feed)系统。以下是一些预定义概
! v, v1 Z2 [+ [2 l( d+ N [' v
% F! U4 ^7 p1 R/ x$ F4 I; |( F1 V念
9 t S( ^6 a( m0 i$ p. r1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简
- T) [$ ?; k7 \! S: ]
+ l I7 U K' A }写为uid);则uid的范围是从1到1000万的正整数。
: Z, ?+ V4 [ r3 N# x2 ^" D8 t2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的
: w! D7 R5 u" P: `+ r+ M$ T2 x$ v! E8 T- J! `/ h/ L% J# c! u
两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以! y! q; @& i0 N+ I2 t/ P5 c
- T- }# z6 D7 b5 n: `+ ]; p
被解除4 U" o0 V$ I X2 R6 `
3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发
! t g \3 `. m( e3 q$ B1 n/ `) Z" m( I! ?- z% _% e$ E/ _0 t# ^
表的文章;每篇文章通过一个blogid表示。
/ {! k1 i4 } b0 Z7 R4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系
7 [7 d( J8 h0 t( p( V0 U
' K' ~3 p1 f5 L0 H统中就是所有好友的文章更新列表。
3 u# ~) w* u4 B5 T) g5、访问量要求:所有feed访问量每天在1亿量级;所有的blogid增加量每天在百+ w# X6 j( c5 q0 y# s5 [2 G
7 v$ t) u' ^: I3 G6 _万量级。
* ^0 l6 L: N, o' r
9 Y) ?1 r; R* L; ~" k题目:请在以上限制条件下,设计一个高效的feed访问系统。7 L. o6 n2 w; {0 W, i
: j- I7 e4 k7 {, c; \
要求:4 Z A3 z1 v% z. v* E$ [
1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed
# x" ^% s5 d( X r
7 v+ h4 r8 _( R( J6 F2 B2 i;feed的展现按照时间倒排序,最新的在最前面2 c7 }8 T# h4 u- e( g" _5 P& G
2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友; y. w1 z, U& X" q. S& D8 z
9 h& K) c- H s6 g( n
feed都是未被删除的
( W9 P- K' t9 o/ P$ C1 q3、尽可能高效。
) T( C# T; p# O3 n$ p, ^# j5 P( P7 |8 f0 S% T
百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html
& C4 V& J7 o( |8 l8 [百度历年实习生招聘真题:http://bbs.aftjob.com/thread-606504-1-1.html4 M9 L5 H. j3 ^7 W
百度2010实习生笔试2套:http://bbs.aftjob.com/thread-610484-1-1.html6 i- p) i9 w- D+ V% z
百度求职俱乐部:http://bbs.aftjob.com/group-4-1.html |
|