|
|
腾讯2012年校园招聘笔试
: R4 P! y9 S B# H! W6 N; \) f# B
' T; s0 Q, [6 R' S; d b
1.笔试时间
% E) W3 c! Q5 f2 X5 W2011年10月各地区笔试
& @/ D1 D9 `" F% R7 z/ `合肥,重庆,大连,武汉 笔试时间为10月9日 6 ~+ k. l! H- v5 Q" f6 r
北京,深圳,南京,沈阳,长沙,上海,杭州 笔试时间为10月15日 1 u1 O) k0 O r5 \8 ?- Y& t
天津,厦门,香港 笔试时间为10月22日
( g9 |/ t" k; Y4 I
( P8 ~, p* i7 B2 |/ ~' k腾讯2012求职俱乐部:http://bbs.aftjob.com/group-47-1.html
/ q( I k+ b5 R3 U1 y腾讯2012求职手册:http://bbs.aftjob.com/thread-608477-1-1.html! n- h2 }- j t8 }3 u* ^
' W5 v: A9 h1 m( L8 M; a8 Z" E! H5 m
2.宣讲会剩余时刻表3 K# c- J% t3 E! U/ \$ C
学校 宣讲时间 宣讲地点 - o! v% f4 m- e. ~6 y6 G
重庆邮电大学 9月26日 19:00-21:00 第三国际会议厅 ( M/ A. K* t* a" h4 f. D+ R
重庆大学 9月27号 19:00-21:00 B区勤工楼2楼报告厅 b5 n3 Q& d( T- u+ C
中国科学技术大学 9月27日 19:00-21:00 西区学生活动中心2楼学术报告厅
. B6 c& V$ X- T复旦大学 10月13日 18:30-20:30 张江校区行政楼106号报告厅
1 ` c. @0 F# g8 t5 n: a$ d上海交通大学 10月14日 13:00-15:00 闵行校区光彪楼一楼多功能厅 . i8 r0 J( z6 W4 I4 f) ~
浙江大学 10月11日 9:00-11:30 玉泉校区邵逸夫科学馆演讲厅
7 {" g* ^/ R! i) T: ]北京大学 10月10日 15:00-17:00 英杰阳光大厅 8 u% H1 l$ X7 ^5 e
北京航空航天大学 10月8日 19:00-21:00 学术交流厅 # E' a( G3 g" o% Q( d
深圳大学 10月13日 19:00-21:00 科技楼一号报告厅 [2 J( }8 h! a# A" ?' _4 U
南京大学 10月13日 19:00-21:00 科技馆一楼报告厅
2 Q8 K9 |2 g% K% [/ N0 ?东南大学 10月11日 14:00-16:00 逸夫科技馆报告厅
# p: Z5 a9 T* Z x- z: ~# ]; f) A0 h+ I1 b5 h- n# i, J
3.2008年腾讯技术类校园招聘笔试试题(A8卷)
% U$ s" p4 F1 \+ y! ^9 g! T. ehttp://bbs.aftjob.com/thread-93654-1-1.html& ?3 E0 {* l7 T9 Q5 |
姓名:______________ 联系电话:_______________ 简历编号:____________* X3 g6 X. ~& l/ f+ b( L1 z8 Q
学校:______________ 专业:___________________ 学历:________________2 J' _* z3 H* M
一. 单选题(每题4分,15题,共60分)
1 v: @* h; O7 s7 f( _1.考虑函数原型void hello(int a,int b=7,char* pszC="*"),下面的函数调用钟,属于不合法调用的是:
' v+ a6 |4 ^, @5 ? k/ j; hA hello(5) B.hello(5,8) C.hello(6,"#") D.hello(0,0,"#"), E- Y* n5 a! O7 M: q2 P5 z
2.下面有关重载函数的说法中正确的是:, L. S3 v3 s2 A) r2 s
A.重载函数必须具有不同的返回值类型 B.重载函数形参个数必须不同! ^( B% t# Q, Q# P
C.重载函数必须有不同的形参列表 D.重载函数名可以不同) ~% U# @; m }5 p
3.分析一下程序的运行结果:
, {- P4 X- a8 _2 T ?. l9 C#include<iostream.h>! k* u B& y) o' w; K
class CBase
3 j' U( f# }! q6 C{+ K1 _& o1 C% u5 o6 s3 }
public:5 E$ M; v6 T* n1 \! u
CBase(){cout<<”constructing CBase class”<<endl;}
: y% Z9 f, q6 C~CBase(){cout<<”destructing CBase class”<<endl;}% `$ T4 Z2 u# u! N5 @
};( z& b1 X) V9 O9 G/ ~5 s
class CSub : public CBase
" l6 K+ ^) A) w1 T7 l L{
2 B. ]8 C- H# p/ u" O' ^( z1 @' Ipublic:7 X/ I/ ^; B, [# q2 f0 j
CSub(){cout<<”constructing CSub class”<<endl;}, B4 y5 h6 `7 C5 L) }% U2 L% ]
~CSub(){cout<<”destructing CSub class”<<endl;}8 Q b" J/ Q- p8 [; L6 \
};
, }# I; f( ?0 U6 {void main()0 U/ f! l6 G& X/ f$ e5 w, O, `
{. Z$ a) i+ X) n5 I0 s9 v/ |
CSub obj;
, a1 S4 h5 ?0 [: e0 W}
0 t1 ^' ~# T* u! N6 h( D1 W$ c& EA. constructing CSub class B. constructing CBase class
4 e+ P5 p6 P1 d& ?, L% o+ r' W% q7 M, o constructing CBase class constructing CSub class& t% P7 ~. F6 e2 k& P( P V
destructing CSub class destructing CBase class# R" v: v+ ^% z4 d A
destructing CBase class destructing CSub class8 G7 L+ h2 }/ `1 J7 R G
C. constructing CBase class
# A0 @( a) O7 K- ]6 h- _5 |& \+ _ constructing CSub class + ]" \. U+ x1 ]6 a
destructing CSub class 6 B$ c3 d, Z4 L
destructing CBase class / y0 l0 V% n' I$ X; j7 a* N: b/ E, c
D. constructing CSub class
- T9 T3 H0 q' F6 N constructing CBase class
' R: t `1 V3 o& k `8 {. o$ h1 R destructing CBase class
8 Z9 E( e) l9 o/ c! J$ n destructing CSub class
4 X$ X! d* c3 s, s, B" o) M4.在一个cpp文件里面,定义了一个static类型的全局变量,下面一个正确的描述是:
/ [& D g! L$ l; F! jA.只能在该cpp所在的编译模块中使用该变量: s( l0 \" B9 S* F6 T3 R: G# N. c
B.该变量的值是不可改变的$ Q8 U2 I6 ^6 K+ f; b# R
C.该变量不能在类的成员函数中引用
) J% n9 Z, R/ j3 t w/ q& I+ yD.这种变量只能是基本类型(如int,char)不能是C++类型/ Z5 n) N, v( J1 Y
5.观察下面一段代码:* O' Z* ]4 N# m! y8 b
class ClassA; x- E+ Y; s3 H( r! M& A
{3 |8 H a8 K4 W! t
public:/ j* d" \$ G4 M0 H1 a
virtual ~ ClassA(){};
! K A& I( W2 Z0 t6 r, ]1 _& \virtual void FunctionA(){};
4 k+ r) t1 {" `3 Z9 Q};8 X, O `! S$ P3 ]! G
class ClassB
% y: |% Y' m) Y% j& W{: X4 g# d3 s5 k; ^/ M3 I" S; V; ^
public:/ v( ]1 v A# H1 e
virtual void FunctionB(){};% O: n0 q& ~& g! K+ Y+ }( Y& r
};$ m3 F2 v6 d' F* }1 a0 V- ^/ \* Y
class ClassC : public ClassA,public ClassB: g1 Z' z6 I* F2 z3 F
{6 R! s ^! @0 b' H# a
public:
! \: D3 ]5 S' n0 S5 s: J};' p6 M: z# O; i1 j( s
) ?8 g+ c) t) H! b
ClassC aObject;
* O5 H' w4 o0 g4 G* c6 Z$ OClassA* pA=&aObject;
& |% v- P% c- S% l; M; E4 }8 L% dClassB* pB=&aObject;
+ R, b1 P) s5 s: h" PClassC* pC=&aObject;+ f& U* K) |6 @) E% V' y9 G0 S* J* S
关于pA,pB,pC的取值,下面的描述中正确的是:
% Q' z( R% V1 {( NA.pA,pB,pC的取值相同. B.pC=pA+pB
/ N1 h8 y% i r0 a- @* cC.pA和pB不相同 D.pC不等于pA也不等于pB+ y" a" b- W( z+ o3 B% m
6.参照1.5的代码,假设定义了ClassA* pA2,下面正确的代码是:, X! M: E7 R. p1 X q; J8 k
A.pA2=static_cast<ClassA*>(pB);
0 I# r% u% U2 ~! T3 DB.void* pVoid=static_cast<void*>(pB);
9 }2 Q& Q: d& O+ h pA2=static_cast<ClassA*>(pVoid);
) x* x9 C( X8 G; oC.pA2=pB;
7 B* C' E1 q( m: r* C3 s4 |D.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));
" A6 _$ Q- X( t- R6 u+ Z( P7.参照1.5的代码,下面那一个语句是不安全的:
: l' C% }, N2 p! B A.delete pA B.delete pB C.delete pC
& N! F' B) k/ \1 c6 x; \3 w- Z8.下列程序的运行结果为:1 D& {# ]5 N- r/ d1 p
#include<iostream.h>
o. @* H$ n+ H% f$ F% C9 hvoid main()! u. P$ Y2 p$ ^ {7 b/ K! q3 }) G
{
2 J0 O9 {8 M4 _+ ^$ H' dint a=2;
# q9 y2 b% I" H2 q$ yint b=++a;2 C& u5 L, C/ }
cout<<a/6<<endl;, H: F! Y$ J9 r4 g: E/ I
}
" U' f* A% I. D1 } A.0.5 B.0 C0.7 D.0.6666666-
5 u7 y% \& y& ~2 U! K9.有如下一段代码:5 W. R }4 ]0 Q* X1 w
#define ADD(x,y) x+y3 _$ K/ L# M0 l* ^
int m=3;
# l5 B4 E5 |0 ?( K2 rm+=m*ADD(m,m);$ @ d: a1 Z I$ o. F
则m的值为:
. l; N+ ~6 s: p: l3 j) H* R A.15 B.12 C.18 D.58) K* U4 t# e0 ~' w+ O% Y
10.如下是一个带权的图,图中结点A到结点D的关键路径的长度是:
) ]5 ^4 g; `! C- ZA.13 B.15 C.28 D.588 D# ~4 N' B) p( N3 f
( A2 u2 H$ w" n* {9 D0 a5 f+ L! k11.下面的模板声明中,正确的是:
. M. L U. h0 p( x2 }A.template<typename T1,T2>4 S2 e/ {# s8 Z3 C9 X4 o O
B.template<class T1,T2>
+ v+ r% U. U; Y+ r9 E+ ~( vC.template<class T1,class T2>5 v+ ^! m3 ~: L2 g/ F1 z+ R. ]' b
D.template<typename T1;typename T2>0 \2 ^2 z. g% z, P
12.在Windows编程中下面的说法正确的是:) K; m( J, \: r! j2 A
A.两个窗口,他们的窗口句柄可以是相同的 B.两个窗口,他们的处理函数可以是相同的
4 P+ E5 Q& @& \6 O/ M: pC.两个窗口,他们的窗口句柄和窗口处理函数都不可以相同.$ J- k6 g) D* e' F
13.下面哪种情况下,B不能隐式转换为A?, { f5 Q9 {) A0 B% e. ~- R/ J
A.class B:public A{} B.class A:public B{}
% _. B7 J1 b/ P) J% eC.class B{operator A();} D.class A{A(const B&);}
- Q3 J0 c; r. b) T14.某公司使用包过滤防火墙控制进出公司局域网的数据,在不考虑使用代理服务器的情况下,下面描述错误的是”该防火墙能够( )”.
' O2 C5 c/ v4 W( c& m+ S5 vA.使公司员工只能访问Internet上与其业务联系的公司的IP地址.
0 j" s$ I2 w3 i4 `0 ^. \' BB.仅允许HTTP协议通过,不允许其他协议通过,例如TCP/UDP.6 ^$ v4 F: c3 B' @. f
C.使员工不能直接访问FTP服务器端口号为21的FTP地址.
. j4 @* ~' z' k/ F- ~! KD.仅允许公司中具有某些特定IP地址的计算机可以访问外部网络
. z7 }! L. F; E2 v# e" z15.数字字符0的ASCII值为48,若有以下程序:
9 `7 a* I! S1 R* ]+ vmain()
' p+ _( K# q4 X) D{
8 I" H7 A% F2 r: h char a=’1’,b=’2’;. Y; F9 c0 t! L# g- E
printf(“%c,”,b++);6 B8 R- x: z9 k$ s% w
printf(“%d\n”,b-a);, f t6 \9 X" h \; t* ^7 g8 {% R( [
}
6 N7 E/ O' u8 F* Z c程序运行之后的输出结果是:8 E0 I5 v3 z: Q
A.3,2 B.50,2 C.2,2 D.2,50
A! d: J+ F8 s; F二. 填空题(共40分)6 v8 r" k8 {+ Q7 [
本程序从正文文件text.in读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到正文文件word.out中.
' [" D! S0 s6 h- Z$ i) S+ q程序用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立.然后中序遍历该二叉树,将遍历经过的二叉树上的节点的内容输出." w8 O! m( q5 g0 [
程序中的外部函数* R* g3 ~$ m. K4 {% h4 f
int getword(FILE* pFile,char* pszWordBuffer,int nBufferLen);
& ^: Y& O9 {6 a6 `# D8 z从与pFile所对应的文件中读取单词置入pszWordBuffer,并返回1;若单词遇文件尾,已无单词可读时,则返回0.
, ~; N, b( |3 t. P6 `" n1 d#include <stdio.h>! p: B; m# |4 L4 w8 A
#include <malloc.h>. s5 _. s$ t% _4 N: ?" I
#include <ctype.h>" m2 G2 e& l& @9 T, Q( J
#include <string.h>) {- @' t1 J6 k% ^: b
# m( N5 x& k3 P
#define SOURCE_FILE "text.in"
r" i1 c$ u% g#define OUTPUT_FILE "word.out"
l' B# ]) I9 F7 [) Q7 F* \! w#define MAX_WORD_LEN 128
) ]) h q1 o7 w0 h
( e/ p- `. I+ I9 Q4 a w3 Ltypedef struct treenode
) D; H6 n' x5 O* u+ Z8 X{& d9 O# }; P7 t
char szWord[MAX_WORD_LEN];
2 E5 V+ Q2 y0 w: G I int nCount;. g* w7 B" M5 Q5 h# z
struct treenode* pLeft;+ O' [3 N5 O. T: B
struct treenode* pRight;
2 D0 u6 w: _( J( A+ |. A: s}BNODE;) D; c+ I, ?- m9 G0 E. t
! \' [ |6 o- m. [: ~) S
int getword(FILE* pFile,char* pasWordBuffer,int nBufferLen);
: d! |4 d/ y& d' z# e! q5 q% N g # R/ h5 A" k8 ], h8 B }
void binary_tree(BNODE** ppNode,char* pszWord)
7 F. m& R: y1 q{
. }, O6 N; Q! g. t if(ppNode != NULL && pszWord != NULL)% k" x. h2 s! Z& g! l& M
{6 B/ Q) Y% D, V/ O, p, p( u
BNODE* pCurrentNode = NULL;" |' e5 U( Z% s9 w& X
BNODE* pMemoNode = NULL;' g0 Q& ~! b9 N- P% @- F, u
int nStrCmpRes=0;& g! _3 P$ F. z9 Z" s8 X" O
3 b" F0 \$ A1 V8 z7 E" ^ ____(1)_____;pCurrentNode=*ppNode5 P% Y0 L( \$ C
7 S3 K$ ~9 ]2 w0 H1 }% Z while(pCurrentNode), t9 K- d' d' `/ {* J$ i2 n# x( B- ~
{! [9 T2 k- B# N& G- V8 U/ B3 k
/*寻找插入位置*/; c( R7 L2 L! M
nStrCmpRes = strcmp(pszWord, ___(2)___ );pCurrentNode->nCount- p1 }2 d0 {) ]& K, O1 M7 R
1 B" { D! g0 h& ]1 c; |& c) Q% } if(!nStrCmpRes)
; |0 T% H0 p6 G6 }- [ {
" U D1 I8 `' F" Z% W- C& y ___(3)___; pCurrentNode->nCount++
, D6 c& s( x9 p1 w# h3 C2 C# G
$ x9 q3 l) b2 J, h( {1 P return;, y* x, P! }+ y7 T/ _6 Z" G; H
}
. H0 q$ x& w1 D: x9 o% z+ f else
0 c4 b* U/ X X* {) c9 |2 C7 J {! L2 U' `2 }0 }& A, J, ?
___(4)___; pMemoNode=pCurrentNode
% H( @- y" M8 u; J+ C pCurrentNode = nStrCmpRes>0? pCurrentNode->pRight : pCurrentNode->pLeft; M. I8 R: m- h0 m T) v7 r
}
3 w/ b9 N8 a7 q/ V( w }( K3 I* a/ M9 U0 U7 ]$ i ^; m* B
}5 z' w. B2 N/ X/ j
7 N8 k1 Y7 ^* P8 J pCurrent=new BNODE;
! D& |8 Q& k4 A" t! R* C e: D- |- D2 _5 P+ ~
if(pCurrentNode != NULL)
+ P ]" {3 u+ c7 F) s; | {
3 Y! A8 R) F2 e3 p! c' Z) R4 {/ C memset(pCurrentNode,0,sizeof(BNODE));
, v9 d0 B# o4 B2 @4 {9 L strncpy(pCurrentNode->szWord,pszWord,MAX_WORD_LEN-1);
, a+ ]! w6 J$ F' D' A pCurrentNode->nCount=1;
& B9 f1 b! }% @4 a' q$ {4 Z# x( S }
5 G* t7 ^" Y+ U. E 7 o* @; V% {# [ ~/ w
if(pMemoNode==NULL)# B5 g8 G5 k5 A* l" N: y
{# G: p0 s8 _9 I7 u- I# p# w
___(5)___; *ppNode= pCurrentNode8 R' q' |1 \" ]' _- J4 ?9 {
}( k4 L* e; L* G5 J5 u' g2 C
else if(nStrCmpRes>0)
5 q) q% a0 [; c2 n0 | {
: ?/ v( z! R, @/ [$ V" S0 d pMemoNode->pRight=pCurrentNode;4 y$ v# O* z$ I- N/ |/ z
}7 q( q2 Z. y; V. ?& I, e
else
: R1 C& P# I( n) s/ n {/ [1 i8 Y6 x, v8 r) T* o; K
pMemoNode->pLeft=pCurrentNode;/ X4 c7 Y$ l& }! j0 u! R
}
! ]& W& \ e q! R) r}/ t+ p5 [# Z- ~9 `* m% K& t7 B6 F4 j
+ d9 l% b. v2 c6 P0 k6 [" H$ U" b" j7 m
void midorder(FILE* pFile,BNODE* pNode)/ i* c- f6 e7 S' k. x8 e
{" J% O N+ D! a) X) d' d+ D# u, N
if(___(6)___) return;!pNode||!pFile
8 \, Y( _: p) w3 Q& S q; f
- C7 [8 n* J- c midorder(pFile,pNode->pLeft);
m* k, U" [; ]. Y% a0 I0 S3 y fprintf(pFile,"%s %d\n",pNode->szWord,pNode->nCount); D8 W& s) B2 i( J
midorder(pFile,pNode->pRight);$ D3 {# v* H! s
}3 ^8 i: n7 x: p
1 ?* D% }% m, o) e! zvoid main()
1 y, a- u( A- `{
9 \, u$ P3 ?# J; E FILE* pFile=NULL; e- V: y2 v3 N4 F9 l
BNODE* pRootNode=NULL;
# V/ D) A+ ?, m! z2 k# ?2 D6 k char szWord[MAX_WORD_LEN]={0};2 D3 V% p9 |& w9 K
$ [# o- _$ b6 h8 b; B1 a pFile=fopen(SOURCE_FILE,"r");
- _7 J' j$ w4 j0 e! X
% J2 j, t1 ~+ ^ if(pFile==NULL), X2 X! R% n$ v4 ~4 a1 |/ H7 |
{
2 l; g! r: X2 U% p- P, t7 Y printf("Can't open file %s\n",SOURCE_FILE);
& r' w4 B: K! X$ i, f! v$ O! j return;$ e3 H$ O: {) _+ M0 `0 ?
}
; P8 G" {) Z0 i4 L 0 H& `8 K8 b1 h( l" T- Q- _* @
while(getword(pFile,szWord,MAX_WORD_LEN)==1)
$ }: ^" p, z7 c H4 k8 e* M {
- g l5 m! e6 t3 A* |$ K binary_tree(___(7)___);// pRootNode,szWord6 T! l/ ]4 |5 o2 H1 h0 }1 c k% @
}
! P5 u: J" X4 B5 L5 B 6 o5 G5 [/ I( y2 }/ r9 I
fclose(pFile);
) z( {! S* f$ D8 O) @
T" x. [/ r/ f- D2 O pFile=fopen(OUTPUT_FILE,"w");( w; ?- i w7 t$ u. g
midorder(pFile,pRootNode);
9 }; c5 Z- ?' o: Z4 ` fclose(pFile);
2 ^5 F: f, W& `/ e5 h" r$ q: D1 m N% p}
/ t8 e" ?/ h ^5 P) y! T% j, g$ U* }三. 附加题(每题30分,2题,共60分)
6 ]6 f. J d# G. o) E2 }1. 从程序健壮性进行分析,下面的FillUserInfo函数和Main函数分别存在什么问题?
- U v- y$ N8 h1 j#include <iostream>2 Y$ ^. f, p) X$ {% [4 S7 g/ h6 O
#include <string>
; V, N+ Q. \) f+ q0 J' B& J" Y" v2 e + ^% V- L$ j, H' t9 u% y
#define MAX_NAME_LEN 20, p$ ^1 r+ R6 S) Z. R
7 V9 K/ r& o/ _* n" z, T
struct USERINFO ], n7 @1 L! l
{8 I0 n. u! ~$ f5 |) t2 [
int nAge;
6 N* w/ b6 W* h5 e3 N char szName[MAX_NAME_LEN];
; K/ n) [: i4 r+ }! r};
/ m z9 }2 H4 }+ [) g
5 L8 {/ B" n$ U7 Y9 }# L8 Avoid FillUserInfo(USERINFO* parUserInfo)
' T3 w4 w0 [* d{
6 Q+ r* I; I- z# d- {" }4 B/ f stu::cout<<"请输入用户的个数:";
{0 b( X3 o/ ^7 `) H ( f5 [( Q6 ^0 A5 ?, |
int nCount=0;8 v# t; X; K% K' a/ s: q# C
std::cin>>nCount;
& _! S) d1 ?8 Z1 p . o7 r7 L9 _0 H6 ~
for(int i=0;i<nCount;i++)/ D7 D: T, L! i+ D2 u0 A; } C
{
h* |% T( `% Z4 T std::cout<<"请输入年龄:";
! e8 u$ D6 x3 o, [/ r4 Z0 a std::cin>>parUserInfo->nAge;$ v' M4 B! Z$ F/ J- B5 u3 `
y7 c% v' G' F8 X/ w4 F
std::string strName;
& A% t5 u* D" `6 o2 \& H std::cout<<"请输入姓名:";
, n5 W, _% p3 A1 M std::cin>>strName;
6 e% @/ B2 \" A; M) K, \% K strcpy(parUserInfo.szName,strName.c_str());. x7 N6 J" G2 s; q' B# \7 |+ Z& q
}% H, g) h# H7 l1 b. ^8 }8 C4 E
} n1 I: G4 i" W* u2 k h( ^
9 n/ h4 N [3 Q" K5 Tint main(int argc,char* argv[])
0 U2 d& G- g' j" H{
2 Z; A5 z7 h& F e; O USERINFO arUserInfos[100]={0};
. j" s# p6 Y/ K7 `" s6 T3 ~ FillUserInfo(arUserInfos);
/ l3 d; H, ^; f7 e 1 q* G3 \ K( k. \4 D( e
printf("The first name is:");$ N) ^' L# O* D0 d
printf(arUserInfos[0].szName);4 h( o/ }7 i/ E0 ~" k# z$ R: Q
printf("\n");5 G( z& B3 E+ S1 o# k6 z9 U* n
/ s( h' V3 t3 Y
return 0; Q( y' L+ N, [" \5 q) G* G
}$ ~* {0 A N" X/ f5 r _4 D
2. 假设你在编写一个使用多线程技术的程序,当程序中止运行时,需要怎样一个机制来安全有效的中止所有的线程?请描述其具体流程.
- k% W" `; O/ E- p- c) n: P3 _
1 z4 x7 P; N/ I
# i, l1 U! H0 w5 z查看名企2012校园招聘最新进度,请关注阿凡提求职公共日历:http://www.aftjob.com/home.php?mod=space&do=calendar% O ?; ?8 M' o. H5 \
百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html
6 W+ P% n0 _: e z& x+ q" l百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html
( P+ U y/ q+ _ v6 r$ S2012腾讯求职手册:http://bbs.aftjob.com/thread-608477-1-1.html
1 V8 S+ z, M& P2 w& M2012百度求职手册:http://bbs.aftjob.com/thread-608484-1-1.html5 ]% \7 K' p7 e2 |
2012阿凡提求职手册——IT行业篇 :http://bbs.aftjob.com/thread-607158-1-1.html |
|