|
|
2009百度实习笔试题
2 n2 R3 R& b* X- }- o$ a" _- P! Y! _8 p& g! B0 s
: E# X; C! n9 I G
9 K, y4 f# ` n- I1 R
9 _8 r1 G$ g- o. K+ @* R) u7 J a
一、编程题(30分)# o5 {) k2 _- v" X9 l2 j
输入:N(整数)
: d; l7 O0 z: l' p5 F, t4 [% z输入:数据文件A.txt,不超过6条记录,字符串长度不超过15个字节, P7 e! x+ n" D# P9 t/ ~' t
文件格式如下:
# X* P O7 c W* S! G字符串\t数字\n
- R; B6 g% E6 Z4 \0 [6 H$ T! m. x; M0 n5 h2 E1 p1 m, s
说明:! O4 E* \2 [' Z( Z! Q2 r9 r3 @9 C
每行为1条记录;字符串中不含有\t。$ Z+ w( M6 f @+ t
数字描述的是该字符串的出现概率,小于等于100的整数。" R( B! |9 o- \: g( ~. \" b; v
多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;
: m4 z5 y; u; y" t8 R6 V# x1 h如果文件格式错误,程序也退出。& U( r9 \8 P+ X" [
- Q4 y. O6 L Z6 Q1 Z6 G+ P( d) O. {要求:; U3 y) u: Y- h- k0 _* c9 N
编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机
1 @" m9 A3 u3 Q/ Q/ @1 l; X$ T" Y2 g N7 b$ E, i
地输出字符串,输出N条记录7 q' c; I% `+ }- O0 m8 S
6 J' v2 Z8 J" y2 D例如:
3 v# N, o& V- U% Q+ u8 l+ G# e/ N输入文件A.txt
/ \1 r$ g& q* U: ?0 Habc\t20
2 V4 ^* Q* |3 X0 {' ca\t30
' y% V& e" ~$ X) t o4 Wde\t50
8 ^! Y' f" Y; [* p* y0 o输入为:10
* @1 X- @/ F8 W. o2 f8 @: z! i% I' x/ T, ~
即 abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输出10条记
3 \. c5 t) L4 h3 _) B L
" ^& _1 ?" u- M2 C录8 W5 N# M* k* K$ ]; J+ W7 Z5 C- b
以下为一次输出的结果,多次输出的结果可能不相同。
$ T, g, M$ e d3 Mabc) ]! \4 a' d c: j8 W
a+ R9 Z' k3 V9 g
de
) g% s; l# V2 r X, a$ h! Ide
" p- w Q; u% D9 g" tabc9 y' t6 ?' s7 w
de( n2 l6 a0 U/ ~7 @
a' U4 l* w x! M$ w2 E1 W( {1 ]
de, R7 G: G0 q5 r4 ]1 e# z1 e$ e6 t
a2 e- W/ @0 W: R- e
de9 y. F; f( M' Q; z' |5 d& t6 ~
3 ]2 m( U2 M& W3 C二、算法题(35分)
1 j* h/ S1 C1 U! q9 e% N题目描述:. x0 U4 O7 ?1 I2 p4 U5 M: E/ T& F
设有n个正整数,将它们联接成一排,组成一个最小的多位整数。
) ~& ^8 E0 i/ R; D
3 }/ G% }( B, t5 t# `6 ?" b- A程序输入:n个数1 G* `, [; Q8 G0 T7 M
程序输出:联接成的多位数
( J( c6 X0 Y, F( n
2 x. S @* v7 P% T例如:3 o2 I6 {% H( ^" P& V7 W
n=2时,2个整数32,321连接成的最小整数为:32132,
$ X4 H# D- m, V. K* h# e7 Vn=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355
/ _3 m9 Q' n8 B9 D" m) A& x% |
1 E9 a/ i: k+ U* }[题目要求]+ B# R% [8 o0 }4 V% k
1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算+ R: [/ g- l; T# M" k" U0 S9 l7 b
2 Q# ?: A& @! q法。8 O: N' _+ u0 R0 J) S
2. 给出算法的时间空间复杂度。- z1 Y0 {/ g+ d% r
3. 证明你的算法。(非常重要)
8 U3 e/ I! W9 E, g V
7 S# _' j; P$ G三、系统设计题(35分)4 c) O! T+ p! x9 C
在一个有1000万用户的系统中,设计一个推送(feed)系统。以下是一些预定义概
5 k# x! i( o* {1 z! X
6 e( ~$ \% i m" A念
: f: A. A% L" S6 _/ p- F1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简# S+ N7 z, r- W* } _8 n, V& D. M
, X$ ?. r+ J4 G" J; q' Y
写为uid);则uid的范围是从1到1000万的正整数。! [3 o/ A D( ]6 @3 t& K$ G& ]
2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的
" w) i H' v( Q) m M$ q
% [' i4 h4 e. U6 ]; f/ W; O两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以
$ }" u8 s- R. L* u+ ~
& O6 V6 W* S9 [6 c被解除
# v) \6 X0 S; r3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发+ f: x' `$ |: U# a/ ]0 G
( [# U' _' w3 \( Y% G, `
表的文章;每篇文章通过一个blogid表示。
5 j! j+ b! p- h4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系
0 r) H+ x8 `! y3 I/ v
6 N' }2 b! I; q% A% p$ p( \4 }统中就是所有好友的文章更新列表。
2 [* _: }4 ^, @, Q+ @! {6 L5、访问量要求:所有feed访问量每天在1亿量级;所有的blogid增加量每天在百
2 H B1 v% `; n2 j2 q; e4 A, w& q2 O7 l4 F
万量级。4 i u" t6 u, F5 w* a; e
/ K6 [ }, a1 m+ Q
题目:请在以上限制条件下,设计一个高效的feed访问系统。, @% ], B- n* O: Q0 E5 Z
) R/ J7 f1 z0 N7 V' ?. H* p+ d( t要求:
8 i, }7 p* o; ~1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed P: S0 |. r W( y
6 p; J4 a7 w, U N
;feed的展现按照时间倒排序,最新的在最前面" Z5 v: P! s7 ?5 q& D8 C
2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友# W' \+ O5 ?% R: Z6 _
' z; q+ c4 ~2 h3 ]6 a; Z$ {* hfeed都是未被删除的, k6 ]6 C1 O. B+ X4 D- Y# _' e
3、尽可能高效。
( o. Z& b+ e. \, q* s" {. z$ `
百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html
+ a0 ]" K# m$ D& h' w百度历年实习生招聘真题:http://bbs.aftjob.com/thread-606504-1-1.html. i' q: l6 x+ t }# i5 ]% s6 S7 @
百度2010实习生笔试2套:http://bbs.aftjob.com/thread-610484-1-1.html$ `7 k& e% U2 v: W
百度求职俱乐部:http://bbs.aftjob.com/group-4-1.html |
|