|
|
2009百度实习笔试题, I4 p% ]2 ]0 C, W# [* a4 K% s3 ~1 `
/ Z0 p- v6 J9 v. g- ^4 m1 a0 }! o
. f9 p! D5 J2 X2 Q/ Z1 A
. z& m3 o0 V* A3 K7 n, ]
6 L0 L* h6 Y1 ~5 i. V! t; f3 u. ?一、编程题(30分)# D: M* p9 w/ x, u; F2 R
输入:N(整数)
$ R/ i3 z4 Y1 J+ |. A# P输入:数据文件A.txt,不超过6条记录,字符串长度不超过15个字节
) ?% g. U' C9 P" }文件格式如下:
. j% r5 M4 ~4 m! b' c+ K字符串\t数字\n3 P, h& x- \* q: L' Q3 G* J
# f- N" a Z1 q1 _
说明:7 b# |( w0 H4 h6 Q$ B: C# }
每行为1条记录;字符串中不含有\t。
1 I! S9 _3 j0 _* o6 n数字描述的是该字符串的出现概率,小于等于100的整数。6 s9 d; f; z5 @- ^9 Q+ |" {- l& K
多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;
( Q4 P7 {4 J6 X7 [3 f6 B4 S9 @如果文件格式错误,程序也退出。) z4 G" ?. ~( U$ P+ x
8 q/ N2 L& C: H& q$ |
要求:" Q8 o. N1 [$ e; v: u' M
编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机
9 p$ s& s% R& I" Y; w c
; ?' d" c/ m+ `8 ]/ i地输出字符串,输出N条记录
& o3 C% A# \% R Q9 k) d9 o8 d; N
例如:5 Y& @6 Z S2 p, |6 P2 x
输入文件A.txt
% i/ |. y& x, q5 Q5 }1 mabc\t20
3 d7 F* f* o$ q; V( T* ba\t30
8 w [4 l6 K* B* lde\t50" g7 P9 l7 S4 O& s4 F g
输入为:10
9 V, U( v$ P! s; A" B7 u; ?, O3 F' Y9 r) X- z
即 abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输出10条记
4 t) r8 q- s: s R2 ]* T3 ^: i* I5 z* p. e: R
录3 ~4 W( f: _$ K, B
以下为一次输出的结果,多次输出的结果可能不相同。4 w0 y3 L& V. d; D4 j
abc) M/ l; e: F. x2 z& X# R% \$ a8 q
a' U9 ` ], h+ v# J1 E
de
4 V1 ]9 r% y p% ade0 m$ ?- G( x4 Y1 m. X
abc
! @; t: L/ f7 Q7 R0 D Pde# L: t& Q8 s7 ~9 q# D8 d% @: x
a n$ V: F- }4 F; m3 w+ g% ]
de' h7 F5 \2 Y! N! n' i
a W* F @& C; a+ D) P' r
de! a/ h+ }- X& S+ {, ~: o
. H" ~2 J5 i1 M4 k6 `0 @- x; D9 b
二、算法题(35分): G+ G# y5 M9 u2 \; G9 h! U
题目描述:
' H* e9 ]) e+ ?) J, X8 ~& F1 s3 u设有n个正整数,将它们联接成一排,组成一个最小的多位整数。
% q1 C! O, l3 p/ U
$ w6 \, K1 M, Q% J ]& c程序输入:n个数
, ]5 E0 A: T. S: B程序输出:联接成的多位数
5 W/ w: ]; C2 g& k e. o6 \) e
' L+ P& [$ e5 c8 {例如:9 i6 d0 X' M2 I! b; J# t
n=2时,2个整数32,321连接成的最小整数为:32132,
3 E2 B+ J- h( O! v- Rn=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355; [1 I! u- w" m$ s% v( ^
( H) y5 i! m9 U" X6 c' W( X$ l[题目要求]
; T* `# d" K( i% z& Z t: `1 O1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算
+ q. l8 z) d+ F$ z2 [4 W# F6 \" ?. g( L" r
法。; l2 B, |" }! E7 h& x
2. 给出算法的时间空间复杂度。9 z5 m9 v4 d! E" N" s4 g3 @. _6 {
3. 证明你的算法。(非常重要)6 o, E3 G' y9 c& [
2 r* M* c! a8 V% b/ z2 b
三、系统设计题(35分)/ Q5 ?6 c1 Q$ }( S7 c$ K5 a& I! n
在一个有1000万用户的系统中,设计一个推送(feed)系统。以下是一些预定义概# f$ L# }# V# A) T7 H
( J% y- F, { R" W( |
念9 @ b# G, Q' ?% z; v8 {( S! Q$ l
1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简
% u8 v9 k- s: B
/ |/ k5 h/ h" {! S+ z写为uid);则uid的范围是从1到1000万的正整数。& _/ Y; }6 Z+ i3 C4 \( T
2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的3 K' V- E: |9 M. P
) M# ^( A' i3 \8 b7 Y4 @8 i* ], P
两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以; }% g) `; \9 P" V' q+ \' @0 c2 N* m
, M# r' m) X' g; `/ P被解除
, J' K) J, p; n. o ^7 C( h3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发
* S! ~' N; G2 Q1 r5 {! ~6 `
9 M, @3 Z" T& O& N9 c4 g表的文章;每篇文章通过一个blogid表示。6 R* v0 q i4 X1 o
4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系
" P, k7 f4 Y! L7 S) o" L I& _1 W: Y0 r/ S' B0 h
统中就是所有好友的文章更新列表。
; X2 I3 B$ t9 j) M$ r1 z r5、访问量要求:所有feed访问量每天在1亿量级;所有的blogid增加量每天在百- \ U$ {- T9 o* R) G9 c
: o4 ^% B$ p3 I4 f- E7 l
万量级。
8 n( a! Z P! Y @- C' w0 X+ s/ a4 Y/ p( o
题目:请在以上限制条件下,设计一个高效的feed访问系统。
$ v0 K3 P7 M. l, W
5 R8 {: Z5 N$ M( m, u' w% E, f要求:, f/ |0 O1 _- v5 `
1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed$ k: O# w' u5 L0 I; q4 ~
5 ~* @/ f; b7 Y& Z, A$ w" R8 C
;feed的展现按照时间倒排序,最新的在最前面6 w+ O0 }* v# j
2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友% y: x3 |: S3 m6 n, B) Y: {( F
R' C1 s# I7 x+ H6 p
feed都是未被删除的/ }4 H4 |( s% N2 g7 Y4 I
3、尽可能高效。
b! |! A7 p6 |$ \' i9 b8 h6 d: Y6 z2 I m
百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html
- T( Q+ s P4 J x百度历年实习生招聘真题:http://bbs.aftjob.com/thread-606504-1-1.html
A3 `9 y% y0 d; @1 {# R! A百度2010实习生笔试2套:http://bbs.aftjob.com/thread-610484-1-1.html. a {8 a2 i$ {9 i6 D) s
百度求职俱乐部:http://bbs.aftjob.com/group-4-1.html |
|