|
|
2009百度实习笔试题* K0 Z4 l' ^( M- S
7 t1 n: m' _* N( x; ] t% G7 \2 \
# R; W0 e" f& h' ^! V8 K) `
' V7 e4 Z# h1 ~' ~一、编程题(30分); @0 R* U! \, E$ L8 F
输入:N(整数)
6 R+ J7 O" k& a# @& h输入:数据文件A.txt,不超过6条记录,字符串长度不超过15个字节5 m/ G- Q5 o. Z0 k8 X5 D
文件格式如下:
+ r6 i0 F+ s" B8 T a字符串\t数字\n
, y5 C8 F I+ L- n
7 Z9 P. M! P+ y; y8 d' V说明:4 Y/ A: d$ o5 W" n1 C
每行为1条记录;字符串中不含有\t。* u& c6 V% \* k) M- ~! F2 m: O" [( i
数字描述的是该字符串的出现概率,小于等于100的整数。
# y5 b! F( h5 w+ z" h" a7 a9 [6 U, j3 G$ l多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;9 g7 l f0 G1 w4 Q0 M% v+ E: v; ^
如果文件格式错误,程序也退出。
3 m( @% S/ H2 I+ Y/ N2 Z* b1 n: b: A/ Y2 G z
要求:6 A- L$ w( n" b, z* m2 k3 _* j
编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机, N4 ?# {: B% V# Y7 Z+ @
% C. r7 O: P% ~% K. A$ Y0 G. s J地输出字符串,输出N条记录) K0 t4 f( ^# L5 F
( n6 S2 V$ q8 F1 S例如:
+ @2 T; Z% G- ^& U, {( g输入文件A.txt
% A5 `7 @1 P* b% c, Aabc\t209 f2 O% J$ b. M/ m1 y0 e) M
a\t30
0 X5 ]5 _; l" Ade\t50
) `" M) o3 @- z, b. ^, P2 j输入为:10
8 x/ C3 G: @+ V6 Z) ?4 B1 \" E8 G* K' C1 H
即 abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输出10条记
, Z5 ?7 ^% a8 a* J2 p/ \3 R4 O: R ~
$ k, w u U, B- g) d录0 _) I' b$ @/ F4 Z( Z6 L) M. b1 _
以下为一次输出的结果,多次输出的结果可能不相同。
$ m4 Z1 J2 R5 s Z: t) S H6 pabc. n# r% G! s& u. @
a
- A Q/ D: l; J9 ~& }0 zde; ~# e4 y. f% |7 @4 Z
de* u; K) c4 {0 ~4 R1 l. ^ Y/ j" ^
abc1 u3 u' a* O, m9 K6 m5 C# ~( y
de
6 K; k8 L% Y# Z' B' z6 ka5 Y' I) o3 C& P2 d/ n; n
de; \# k+ f% X8 T2 B, f5 [6 W+ v: G
a
7 K7 D" q! q" K2 ~9 rde& U+ q! {3 B3 @/ u
% r8 _9 ~& F2 }7 B/ S
二、算法题(35分)
- F- C/ M- ?; O) C) J O题目描述:
+ ?2 \2 B M) C0 f o1 U* F设有n个正整数,将它们联接成一排,组成一个最小的多位整数。5 E( r* F3 s- X
6 g* P/ ?" m1 M. B6 s! u
程序输入:n个数
3 X( }# c! g/ S2 D+ P程序输出:联接成的多位数7 t7 ? q; e- W( o1 b% r+ l
, S4 V) n5 u* }+ w+ X1 W
例如:
7 v% f* E* ~5 v& D1 l G6 N1 Zn=2时,2个整数32,321连接成的最小整数为:32132,4 W) h* j6 P& C0 x' ~
n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355
* w6 z) m! y2 `6 {
: m4 Q) x" B+ a* k[题目要求]
4 B4 u. O! j5 h7 m4 m* g1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算( u5 i+ r9 g9 A( A& [
( l3 Z$ \/ ~; U4 E( G' O7 Z法。' @4 n6 J& G$ j# r, {
2. 给出算法的时间空间复杂度。
5 O1 j9 ~2 ^/ Z1 s+ P1 t+ k3. 证明你的算法。(非常重要)
/ u2 P8 u+ ^. g. m+ L2 I9 ~4 N2 Q9 D" c$ ^" E0 l6 m. ?5 T# C
三、系统设计题(35分)1 N' p0 {! ?" r
在一个有1000万用户的系统中,设计一个推送(feed)系统。以下是一些预定义概
, h$ [) n7 U0 r- [& E9 J; l( ^
5 Z" [) L0 W" o- V" L$ B念# ~: j1 m# b) u; D4 |5 ~
1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简* m' Q1 J N( ? T/ f* L% S+ _0 m
' s1 z0 h" A! F. S# q
写为uid);则uid的范围是从1到1000万的正整数。
$ J# Y4 D! ]" S0 ?5 X1 i% S3 _2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的3 Z: k3 C7 d8 @, x
: F- y& p, V% ?5 ]2 ]
两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以2 n- V; Q" O$ {; p& {4 N J2 h
4 {' G8 L3 |0 D% I被解除
, [: w0 q# Y' @; F: p4 }% W8 k5 ]9 W3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发* A4 D1 `8 [ F* j3 M
4 P$ C0 | p$ e+ W: x' u
表的文章;每篇文章通过一个blogid表示。
7 k: y1 x+ {/ u4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系( B" d- ?+ T% x9 X# j
( j/ b: n. t) v/ m; q统中就是所有好友的文章更新列表。
+ I0 f6 g7 {! B5、访问量要求:所有feed访问量每天在1亿量级;所有的blogid增加量每天在百
' h$ p6 X* k9 X" d N! R4 ~3 M4 G7 G0 @0 X% T5 j
万量级。
6 | C2 y( t& y" |+ x1 Z7 ^' l6 |/ [2 u
题目:请在以上限制条件下,设计一个高效的feed访问系统。2 W* J+ T( i4 ?
& o; y6 P B$ o8 o' C" A7 V1 p/ x6 T
要求:% P0 L, ?6 R9 Q- w4 Z
1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed" E$ r) J, s! u# g% U
6 l* B+ m! W; A8 X e9 e' e3 t
;feed的展现按照时间倒排序,最新的在最前面* h" W( _! D- ^& Y, S& V6 g2 T
2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友6 S( i2 [/ X% d4 R( y/ i7 P
; L0 ~- b$ e) p# u9 j- C
feed都是未被删除的
% Y2 x& i* M' f8 @: T7 b* l% U& |3、尽可能高效。
4 g/ i8 \% A+ p: J; C" h
, `$ K0 }1 a0 N) w$ H, C; @0 c; m百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html
, `4 j& \# b$ `* L' V+ ~8 ]$ c5 T百度历年实习生招聘真题:http://bbs.aftjob.com/thread-606504-1-1.html
* j1 T% |' T) E# j$ B3 K百度2010实习生笔试2套:http://bbs.aftjob.com/thread-610484-1-1.html3 Y- i$ v" o- J, s+ e; g6 `
百度求职俱乐部:http://bbs.aftjob.com/group-4-1.html |
|