|
|
2009百度实习笔试题+ J% k+ x6 A) S/ H, r
$ O: K; [2 T* j9 t/ Y* _
8 l& \3 F. X j, u1 R# n! I- D, z6 H; G! a( y1 U T& X, c
4 n3 @1 f2 w( p1 a8 e
一、编程题(30分)4 v1 q" i; | T T
输入:N(整数)
( I0 M9 K: C$ `( z( c) ?9 G输入:数据文件A.txt,不超过6条记录,字符串长度不超过15个字节
. E' |, h/ Y4 |% M' l1 p文件格式如下:! Z7 Q0 P( h( w" \9 P. r
字符串\t数字\n$ B$ R/ x- w; ]5 R
9 K: y, Y# [% l' C
说明:
" O5 N" _, z6 [每行为1条记录;字符串中不含有\t。- ]$ r2 s3 H9 l! e* w5 W- i
数字描述的是该字符串的出现概率,小于等于100的整数。& z/ B* @: p& g& [; B0 B& H
多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;# Z$ N5 D1 b+ O( ]. p2 G+ S8 \& W
如果文件格式错误,程序也退出。
. q# E' K: n* t: T7 C I
% r; }9 ~* e" l( `& z要求:
; @/ T0 A7 T, J7 }4 F0 f/ h' d" L% o编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机
) e) y+ E; ^( p" J; I. s0 U0 i# T
# q# n9 V, B( ?- _9 }( H地输出字符串,输出N条记录
) A: r# P% h8 g& q- H/ y0 i' O/ \
& k# F$ k4 l; Y( R例如:' `' t7 g) Z# g8 p
输入文件A.txt
9 s/ h/ v5 p1 `3 v- iabc\t20" `2 B- z. `! W
a\t30
9 @& k6 i6 I0 {3 A0 M: c; Qde\t502 t$ l; W% q1 w2 E- v9 z
输入为:10+ v2 v$ N. q- k& a! @7 `% e
( Y& J$ W: L. O% R7 |$ K& q5 {# ~
即 abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输出10条记
/ G g6 a; M4 ]) [$ v# T! a. k8 `1 V( f4 Y# v3 G. [( M
录' c2 x& a) T7 ~( u9 u2 S5 {
以下为一次输出的结果,多次输出的结果可能不相同。
9 a9 X# B+ S; Z9 o% @ G+ `* z" ]abc
$ n: x" o$ u3 U# Ja
- ^& J1 i8 f. [5 y' Gde' \+ `6 ~2 {) n
de& a4 H8 z; Q: W; K7 V
abc! {3 J4 e& M4 X" S0 |$ |- \4 N
de; p% Z* E& b$ t. J7 m; V
a- L4 G6 k Q* E/ F o- y U
de: X1 b3 F; O: F$ t% v
a
, p, y" p5 A6 qde: |6 x# g& u; V; z% S# Z1 l D" j
; D0 W8 n. ~0 I% z2 q6 J: v8 [二、算法题(35分)3 F: P& K1 k2 \& K4 M% N8 m0 Z
题目描述:9 V8 V. ^ ]9 X0 o' ` V
设有n个正整数,将它们联接成一排,组成一个最小的多位整数。6 F) @. w1 n! i% C! K
- {& r- ^3 r) R6 m, l程序输入:n个数* x$ r; r( w& H0 X: ~! A
程序输出:联接成的多位数, G; t- z7 ^- h7 {. u$ B
9 q$ H7 a( y2 n9 g例如:
9 ~3 W5 b) @ o ], ]6 Rn=2时,2个整数32,321连接成的最小整数为:32132,
# L9 T% X) L( I/ kn=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355' d6 f% r( x+ Y% b5 ]
6 \& P3 z3 i' e5 v5 g7 E, ?[题目要求]
( k7 x+ H) X5 F- P! q) {1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算( b5 y: Z4 m/ l: P: c( t- f) O5 U/ @
' l' a8 S5 l% m& k法。6 I0 t2 ~3 \' o- N/ A
2. 给出算法的时间空间复杂度。/ v7 p6 O( G: S! X
3. 证明你的算法。(非常重要)! @ {& A4 N \5 h" b# P
' x2 p* T3 u$ g9 n! ~+ ]三、系统设计题(35分)- q5 n5 h* }$ l& q. H5 z
在一个有1000万用户的系统中,设计一个推送(feed)系统。以下是一些预定义概
1 C( ^& [# _6 n6 X% G% h& }. B# w
念( ]7 h+ f8 W! ]4 s2 F
1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简
. Z+ C( I5 ]5 m3 Z! M& k
) p+ I& h; M" b写为uid);则uid的范围是从1到1000万的正整数。
9 r+ ]* S5 }% J: U# |2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的$ T0 f o j/ O0 K4 _3 A; h' e3 p
9 a8 g& y$ B* \两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以4 Q- V9 b# y4 w3 ^( H) P
4 r! W6 }7 m& L$ C3 ^被解除
4 d/ c6 [2 }) U6 Y+ h2 m0 b3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发
+ i6 u! K) L+ J" y! k/ w) k' n ?: H8 k6 E0 Y3 T4 V' ~+ h
表的文章;每篇文章通过一个blogid表示。2 H1 {$ G |' s. \6 d& X: s
4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系
0 i; q3 t) v6 B) y0 X4 E: y. {9 V b9 |6 I( a7 w
统中就是所有好友的文章更新列表。' ^6 ~0 ^2 ^9 E G$ `
5、访问量要求:所有feed访问量每天在1亿量级;所有的blogid增加量每天在百9 p8 H* n# w- f9 ~4 |$ \, \5 u0 y; V
( s$ c: v; K1 ]( M万量级。& _( f9 P* u3 | Q# m
: |, N" x$ F& @& c% U* F; G0 l题目:请在以上限制条件下,设计一个高效的feed访问系统。
4 E) }3 \, m |' n. B; g$ `
( ]1 V3 Z0 E# u. S7 X, r/ q要求:, }0 O8 c$ H; ~$ j
1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed
8 i1 _" k% B4 f4 z! Y: G9 e3 h% K: m& N
;feed的展现按照时间倒排序,最新的在最前面
9 J) H9 T6 d% i f4 j! ]2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友/ U4 w2 B: U8 n T+ @# Q
6 q$ k* V4 ^, T/ N+ \ L( |
feed都是未被删除的
; w1 f0 u& P$ |; ?9 I M3、尽可能高效。+ b+ z7 H5 h- v! a
5 Z* D. M+ {. [& j- N4 N; e, k o
百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html- \9 k1 K& ?5 J& f( e0 n1 n
百度历年实习生招聘真题:http://bbs.aftjob.com/thread-606504-1-1.html# S: `2 m4 z; X, W6 D. L7 y
百度2010实习生笔试2套:http://bbs.aftjob.com/thread-610484-1-1.html2 V5 Z& R0 Z/ ]9 D9 J& q
百度求职俱乐部:http://bbs.aftjob.com/group-4-1.html |
|