|
|
2009百度实习笔试题
+ e. {1 w& Q. c4 L& U2 u6 K' ?# M( m6 o3 Q
+ l' z. r, y9 M8 n9 V
6 }1 N5 ? r% z6 W i- Z8 @
4 t( O: k0 s- I: o* v
一、编程题(30分)
& r1 x9 U0 Y4 I, Z/ d6 j3 _# K# M输入:N(整数)
6 h# }0 @/ j3 s. Y W% w- H; y; y输入:数据文件A.txt,不超过6条记录,字符串长度不超过15个字节
2 Y: L6 Y5 t3 e4 T3 @8 z文件格式如下:+ ^7 }' H* o" ]* y
字符串\t数字\n" }! O/ F3 `; A; o1 X2 c; j9 V& [7 `
0 X8 h/ t5 E8 R* x4 |说明:
0 F5 @" L3 c1 S9 \7 i5 U每行为1条记录;字符串中不含有\t。1 R$ Z3 p1 @) I) b& w/ B6 K' Y' j
数字描述的是该字符串的出现概率,小于等于100的整数。
: A, r. ~; l3 y2 @- c" t6 t3 U4 |多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;/ N3 @; b @) U5 X
如果文件格式错误,程序也退出。" l: q% V7 Z6 k+ U9 W) A4 Z5 R D! B5 u
8 ~$ U- B) P: \* v* F6 \. T要求:: l4 z, _8 y' V9 |4 V; C4 ?
编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机
$ ~: w I, h; o3 @, \4 r
0 q$ x$ J: w" N. X A地输出字符串,输出N条记录
* `1 q2 C B, z! q
9 r4 T) q" j/ o: a例如:6 R) m1 |9 o: N/ I
输入文件A.txt/ N) q5 d V' w. Q
abc\t20
# m) Y2 L# V/ T+ Y* o! Ea\t30
9 Q7 {/ Q& Q. c5 I3 \de\t50
3 J: F# }9 B, X' K% ^输入为:10
9 V0 ^0 r8 V# f& ?+ o* G* }( d0 K- ]$ g9 N& X
即 abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输出10条记
7 _, U! V$ t2 y& V+ v X: A2 i, @, |$ m8 {" l8 D1 r
录
/ H9 q; u1 H6 a, u( X6 {以下为一次输出的结果,多次输出的结果可能不相同。) ~& h3 i% Z8 _: e% }& Q# m, z$ x
abc6 \1 ^) F0 i) P: {3 ?
a
+ q: p. v6 J/ b$ x Z2 ]de
\ ^( p- \" B. L( s1 Zde+ `# b- }0 a8 K5 Z
abc
7 Y2 [1 u2 c2 |/ Q( p# Yde
8 l: v6 T% O4 F/ s$ Fa
/ j8 ^$ u7 D3 o9 Y4 F) Sde# g; T i) n0 X+ \
a4 B7 G/ D9 I" C" M
de6 R4 }- M, S( }5 _) I$ f2 ~
% P/ S/ G6 e2 u7 n5 Y# O T
二、算法题(35分)
) ?- q, s$ ]2 H! x/ g2 p# c) X题目描述:' Y. r3 y+ M/ u/ y2 a t" _- Y$ B
设有n个正整数,将它们联接成一排,组成一个最小的多位整数。4 m4 u, V6 ^3 o
5 R9 M* P8 Y I# D0 L* k
程序输入:n个数! i7 A$ o# W; i+ I1 P4 t" |/ d. |8 f
程序输出:联接成的多位数
/ b3 b# G! P' G6 ^% r
- J, h# `4 [8 o5 p6 T例如:
2 @. _, e9 Q* o+ s) V7 Tn=2时,2个整数32,321连接成的最小整数为:32132,
( R8 c" u0 X) [! on=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355
: r4 v1 O1 Z- O4 _1 v# O1 @1 I: ]! p% }4 S$ Z
[题目要求]2 ?0 T( `, k( I; [7 \/ X6 D+ c
1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算$ l3 |, B. D+ Z% i1 S. {
- c8 c2 W9 V0 t9 [3 y
法。
$ ]6 [, F" D, S; ?) h/ ~2. 给出算法的时间空间复杂度。1 f0 b4 j2 b5 j# n( }9 V# B: i/ O
3. 证明你的算法。(非常重要)+ R7 W8 m! W* O
7 W, ], x# G! U$ n0 f- k7 O, b
三、系统设计题(35分)
( `% J# F7 g5 _! l在一个有1000万用户的系统中,设计一个推送(feed)系统。以下是一些预定义概6 Y* o, e- C# {% s, X
+ @1 ^- c) b& H4 B6 `
念
$ l" Y0 l, o1 @7 F5 |1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简; o: P8 B: \4 h: b; ]
+ E$ W4 T* ?0 u, |: e3 K% ?; l* m N; F7 r写为uid);则uid的范围是从1到1000万的正整数。
9 N3 U& e; J3 {9 ^2 S; Y) h2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的
6 l6 Y/ Q; Y" z+ [% Q
, W+ O' P i0 |3 @6 h两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以
! I6 Z, y2 I5 @/ p- n) ~
! x0 |6 v- K" A: \被解除
# a7 ]" x3 q# D) J/ Z1 j( t3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发
1 F4 _+ D* Y* x H5 ~5 b- s+ j' g& F5 t. z
表的文章;每篇文章通过一个blogid表示。
) V+ t1 f. U' D0 j. n" ^4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系
! @- }/ l( Z* O$ ~7 E( x F! ]+ s: B4 n
统中就是所有好友的文章更新列表。1 T5 I1 }2 Y- h
5、访问量要求:所有feed访问量每天在1亿量级;所有的blogid增加量每天在百
( Q/ L6 @" ^: M8 w6 n* u: Z, F
! t! g* P+ F6 s; _* U万量级。' P$ h# |# e+ X D7 R1 x
4 N2 v3 F7 K% P* {题目:请在以上限制条件下,设计一个高效的feed访问系统。+ S$ B5 V8 A$ e7 I/ o+ k3 Y
2 f9 h- e- q5 Q9 C
要求:
7 M) V5 \" k! L" p1 [) q) |1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed) Y- Q( K, P- @' x4 V3 Q
* S7 h1 O! i: ?; |& u. f
;feed的展现按照时间倒排序,最新的在最前面& R+ ]' ?! H7 z% S' l- c
2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友. m+ w& C @! |" T! p
& O- a, \6 s; _% bfeed都是未被删除的1 G. Q* h* O' h# t6 }
3、尽可能高效。6 W5 J8 W) ^0 k) K& \3 J$ R
' C! h! I: Y* r- _! b( v0 i百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html9 W( i$ n6 x% x& ]* M5 i
百度历年实习生招聘真题:http://bbs.aftjob.com/thread-606504-1-1.html4 |, u& }# y V( u; Z5 b
百度2010实习生笔试2套:http://bbs.aftjob.com/thread-610484-1-1.html! z4 G! o; k; _& n9 d+ n
百度求职俱乐部:http://bbs.aftjob.com/group-4-1.html |
|