|
|
腾讯2012年校园招聘笔试
2 \# Q& d C! p5 k% }. a
( o) f1 _- p$ ?& y
8 H0 `! x6 x7 K) h1.笔试时间
, O& H- g# E6 B2011年10月各地区笔试 0 Z0 ?" O* c% _( h, t- S
合肥,重庆,大连,武汉 笔试时间为10月9日 2 b7 d+ X0 H/ L( S
北京,深圳,南京,沈阳,长沙,上海,杭州 笔试时间为10月15日
+ M# p- [/ ? w+ W; h& z9 X天津,厦门,香港 笔试时间为10月22日 / }1 Z3 y$ P0 w1 ^' p
( }7 }8 ?$ a; M" s/ _4 m! B& d
腾讯2012求职俱乐部:http://bbs.aftjob.com/group-47-1.html
$ k9 u" g; B+ x1 a腾讯2012求职手册:http://bbs.aftjob.com/thread-608477-1-1.html0 k% l0 @+ {% I5 l
, y H, Z; ]7 _, G' m) W4 L2.宣讲会剩余时刻表
9 L$ _5 z) X! ~4 Q! B6 k学校 宣讲时间 宣讲地点
( k" d+ V2 I {7 O重庆邮电大学 9月26日 19:00-21:00 第三国际会议厅
% V5 |/ S& E& ^重庆大学 9月27号 19:00-21:00 B区勤工楼2楼报告厅
) ^: I2 j5 F: ~8 U; B1 h! z中国科学技术大学 9月27日 19:00-21:00 西区学生活动中心2楼学术报告厅 4 a$ _9 O, h8 j1 \5 C
复旦大学 10月13日 18:30-20:30 张江校区行政楼106号报告厅 B; e1 j0 I+ m! }& t
上海交通大学 10月14日 13:00-15:00 闵行校区光彪楼一楼多功能厅
& j2 Q B/ X( l9 Y+ y; |浙江大学 10月11日 9:00-11:30 玉泉校区邵逸夫科学馆演讲厅
% Q$ h6 [: W# z1 o3 k北京大学 10月10日 15:00-17:00 英杰阳光大厅
: c# L- m! K3 N9 Z+ h, h2 O! z3 W4 F北京航空航天大学 10月8日 19:00-21:00 学术交流厅 3 V1 x6 C; t1 Q& M) H; X# P
深圳大学 10月13日 19:00-21:00 科技楼一号报告厅
7 P p6 y8 U5 }, ]5 a+ G+ x南京大学 10月13日 19:00-21:00 科技馆一楼报告厅 7 `9 }, g" F% ^- z
东南大学 10月11日 14:00-16:00 逸夫科技馆报告厅
( p& i, g& J' k, w n. o9 |( s! q* X* Q R
3.2008年腾讯技术类校园招聘笔试试题(A8卷)
, q1 \" ^& n' T- \! M+ }http://bbs.aftjob.com/thread-93654-1-1.html3 E v2 K. a9 H8 h' f( F
姓名:______________ 联系电话:_______________ 简历编号:____________' S7 s0 E K p
学校:______________ 专业:___________________ 学历:________________; W# X3 b2 e6 k! [
一. 单选题(每题4分,15题,共60分)
4 ]2 E. {) \ v. X6 L1 Y1.考虑函数原型void hello(int a,int b=7,char* pszC="*"),下面的函数调用钟,属于不合法调用的是:& e" p" i, U* _- J/ a/ h: X. A
A hello(5) B.hello(5,8) C.hello(6,"#") D.hello(0,0,"#")
, k! U3 k6 a& j3 Y2.下面有关重载函数的说法中正确的是:+ q% u7 J( P% L& g1 i8 n" b" l
A.重载函数必须具有不同的返回值类型 B.重载函数形参个数必须不同
. S7 k8 o; n$ o: v+ c4 t$ p* [' R r C.重载函数必须有不同的形参列表 D.重载函数名可以不同
! o' y* [/ E# h6 f/ \3.分析一下程序的运行结果:
7 }+ q. x8 ?- U( g3 _#include<iostream.h>
' L+ ]4 Y( [" P9 c6 X; I0 a0 Nclass CBase
: N; D, L: K. z% u; K+ E; }8 S{
/ j( M! z5 I9 ^& `+ epublic:
' N- p8 E4 Y' i7 k9 q! O* w* eCBase(){cout<<”constructing CBase class”<<endl;}
; V( G. X$ W! l" t. x; h# T. J1 w~CBase(){cout<<”destructing CBase class”<<endl;}9 j& b, U. w' ]* h4 n
};$ s$ I2 F/ U5 E* Q A
class CSub : public CBase' h% ]. X1 h( P2 J. { P3 T
{
# v& |+ m, z7 \4 i; w- rpublic:
9 I. d+ \& n# X4 RCSub(){cout<<”constructing CSub class”<<endl;}
2 X4 e) k$ q+ M5 [~CSub(){cout<<”destructing CSub class”<<endl;}
7 t2 T: Z( k# L3 k9 o# i};* |1 }- U7 N- e6 K' r" v
void main()% q4 E* d; F! |; y/ a# Y, T6 A
{
6 u$ C; O& Y, r! T b( [. J0 ~ CSub obj;
5 A0 h: e& J$ ]+ W. p$ B- o}
5 x2 W' I6 F! I7 AA. constructing CSub class B. constructing CBase class& R0 u; d. N: S) k2 W( b. u
constructing CBase class constructing CSub class4 ]) E# y& y1 h+ J9 H+ f
destructing CSub class destructing CBase class( r# Z" ^9 p8 ]2 D# w9 q
destructing CBase class destructing CSub class' I9 [2 j5 j" Y& _) F' X8 @
C. constructing CBase class
L: `8 g5 L+ H5 j; m% o constructing CSub class / S# R6 U4 K" _% d( g- N
destructing CSub class : l: a/ ~3 m1 m6 D3 Y
destructing CBase class 8 h. T0 ^. I# P: w' H+ l3 @5 ^
D. constructing CSub class z8 k# V! h, p
constructing CBase class* J' V1 Q, O: b4 J* ?: P
destructing CBase class, v0 T: w ~# j1 T4 x
destructing CSub class
! B1 U& m& o- D% c: X4.在一个cpp文件里面,定义了一个static类型的全局变量,下面一个正确的描述是:
' V8 A* H- w2 c- \6 o& M2 F+ H' h- PA.只能在该cpp所在的编译模块中使用该变量, @! t9 u" g/ x
B.该变量的值是不可改变的, L ~8 ?# v8 J( l* r
C.该变量不能在类的成员函数中引用; J6 s/ o1 C* I& X
D.这种变量只能是基本类型(如int,char)不能是C++类型; M4 `% _ c/ o3 c+ v) L2 e, K
5.观察下面一段代码:& C/ F' d% v7 a4 U! Y N3 s
class ClassA' T* F3 M) I( T) w( i3 W9 u
{
+ n# c+ F/ [+ h5 O1 @. }$ Mpublic:
/ G# C; P; @5 cvirtual ~ ClassA(){};
) K" r( M( C6 H4 \; |" [) ^7 U1 Lvirtual void FunctionA(){};
( n0 n/ s. O/ K% U% j};" V1 H# t2 d$ B1 q
class ClassB
7 Q6 _, Q) n+ T{
9 ^- ]0 f* J" j0 Z6 U6 ?public:5 ]* @/ U0 p5 O/ F* I. q
virtual void FunctionB(){};+ w& c: }, o2 v5 e$ g& \
};' H2 ?3 r- H' U4 ?+ Z
class ClassC : public ClassA,public ClassB
8 r5 V* X3 k) q0 A6 s{
d9 d' R! g" ?0 T/ }- ppublic:7 Q% P/ B4 X0 B2 M
};
; ?& P6 j( d5 e( {' |/ u, Y) G* t
" }7 |& V: A$ _ }, {5 x' i& K+ q. KClassC aObject;
: i1 }; K) M) l) n- G$ i# EClassA* pA=&aObject;
s$ C# a; p4 _7 SClassB* pB=&aObject;
( {5 Z$ l* N, c# ~( dClassC* pC=&aObject;
5 G/ O1 {- V* L% i0 b关于pA,pB,pC的取值,下面的描述中正确的是:
6 c/ r" R/ k% ^3 v M( \A.pA,pB,pC的取值相同. B.pC=pA+pB
. e, B0 O& _- _% D% a/ `C.pA和pB不相同 D.pC不等于pA也不等于pB- w0 y$ ~2 z# m, s! {( m# P7 Z! Z5 G; v
6.参照1.5的代码,假设定义了ClassA* pA2,下面正确的代码是:" ? Q- m: s, s9 i
A.pA2=static_cast<ClassA*>(pB);$ Q+ ]! \5 e) f8 K
B.void* pVoid=static_cast<void*>(pB);/ i) _* H( B+ g" K' e' n
pA2=static_cast<ClassA*>(pVoid);* n2 q2 ^( d; g# U
C.pA2=pB;
) p$ N# n* I9 Q8 P: OD.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));
$ T/ s. R) ]9 U* {! E2 y7.参照1.5的代码,下面那一个语句是不安全的:
2 K i+ P0 ?1 T1 ]% J7 y A.delete pA B.delete pB C.delete pC
( I6 T) o \5 D [8.下列程序的运行结果为:
6 }, x) v9 [8 i0 f) C6 C#include<iostream.h># r" w5 Q5 N7 R# C* h: T9 r
void main()# b$ v" K; R( c% b; ^( b K' r( o
{
1 v( Q% }! f0 c9 n% {int a=2;$ o' [$ c( ~# m$ ]" o4 H4 Y7 b& U- [8 s
int b=++a; T8 j6 |6 { n4 e( ?- v- h* _
cout<<a/6<<endl; n* H- \5 i+ v5 v8 w7 x- ~
}% ]5 w4 K1 Q. ~: O. ~# ]
A.0.5 B.0 C0.7 D.0.6666666-
4 D, c. u7 O/ t1 ]. F7 K9.有如下一段代码:
) D9 R6 }8 b# N1 T- ^- Q8 R+ ~. C5 M#define ADD(x,y) x+y4 l& P |4 I0 I# n2 C3 j6 w
int m=3;
0 a) i4 w% \3 }/ N2 j: O: em+=m*ADD(m,m);: s h- D* ~0 T' t" T: H( ]
则m的值为:; C# o: Q3 n$ h5 ^
A.15 B.12 C.18 D.58! u# z6 `" _4 X
10.如下是一个带权的图,图中结点A到结点D的关键路径的长度是:3 ^( G, N& j, e; u6 A `6 A0 \
A.13 B.15 C.28 D.582 }! V ^ e! [6 z+ b. e
( J2 d( t; B" Q4 I" R
11.下面的模板声明中,正确的是:2 b( t6 e% n B' I
A.template<typename T1,T2>
' l# G0 W0 ~/ V- q6 o( F* LB.template<class T1,T2>. s& j6 F* \4 X+ T
C.template<class T1,class T2>3 x Q/ @4 o' m+ _ V
D.template<typename T1;typename T2>: h% a, L! F* a" g3 }
12.在Windows编程中下面的说法正确的是:
1 R' ]4 K P1 O( K5 s% w4 |. fA.两个窗口,他们的窗口句柄可以是相同的 B.两个窗口,他们的处理函数可以是相同的
" L8 V# P/ @) q7 V. J) LC.两个窗口,他们的窗口句柄和窗口处理函数都不可以相同.5 A9 Q" K1 }! t
13.下面哪种情况下,B不能隐式转换为A?
9 F, o; Y: k3 AA.class B:public A{} B.class A:public B{}
) P0 X2 |% q6 I' B- S) g2 |) l' y1 B$ XC.class B{operator A();} D.class A{A(const B&);}
, Y8 y4 X& ~, N& z( O4 ]14.某公司使用包过滤防火墙控制进出公司局域网的数据,在不考虑使用代理服务器的情况下,下面描述错误的是”该防火墙能够( )”.- n: w& S0 r6 |( f4 T$ V
A.使公司员工只能访问Internet上与其业务联系的公司的IP地址.0 c2 {! y0 H" L7 ]$ H1 d
B.仅允许HTTP协议通过,不允许其他协议通过,例如TCP/UDP.( j: l7 i' b7 h) \3 @- o* w0 A
C.使员工不能直接访问FTP服务器端口号为21的FTP地址.' L9 g5 d' A! C+ }
D.仅允许公司中具有某些特定IP地址的计算机可以访问外部网络
* L6 y4 j. m( n* o15.数字字符0的ASCII值为48,若有以下程序:) s9 n, z0 k5 p- H' ~
main()$ ~7 j ^/ N( N/ ]$ E7 h3 k
{
' a. D A4 ?7 N0 }$ F# \ char a=’1’,b=’2’;
; q7 w8 ]4 x$ G" Z! B& ^4 `8 v" Uprintf(“%c,”,b++);
" a4 ^4 D4 K% Xprintf(“%d\n”,b-a);3 W) l3 ]0 N9 T4 g
}
" V8 w7 |; \- g) w* h, ~4 ~程序运行之后的输出结果是:4 e' Y9 d2 s+ q8 ]# H8 F# f$ H
A.3,2 B.50,2 C.2,2 D.2,50
) }& L6 j B9 \% ?& a$ E: o) M二. 填空题(共40分)1 r! Q0 D! j2 V: c+ { ^$ E
本程序从正文文件text.in读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到正文文件word.out中.
" [; o* v3 c( p; r5 H, t- D程序用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立.然后中序遍历该二叉树,将遍历经过的二叉树上的节点的内容输出.
; q) `0 h( b- E( ^程序中的外部函数
+ ]/ k) V5 F2 bint getword(FILE* pFile,char* pszWordBuffer,int nBufferLen);
0 D- ^6 c) n5 d9 |9 {从与pFile所对应的文件中读取单词置入pszWordBuffer,并返回1;若单词遇文件尾,已无单词可读时,则返回0.
1 b( j8 b$ {: k3 L#include <stdio.h>- X( v. s; m3 E3 B- A, ^
#include <malloc.h>
5 q9 X, B- N- ` ^# F#include <ctype.h>) E. W: D, C9 a
#include <string.h>
( x! N- C& \. d2 u" @8 i
2 R" }& Q& }/ ~- u# I" I7 |9 n$ `#define SOURCE_FILE "text.in"
9 M3 U; e' S& i7 F* y#define OUTPUT_FILE "word.out"
! x `1 y+ w) v, J5 K#define MAX_WORD_LEN 128
, m5 W' h5 M& V
! @; H8 p+ z& m, _# Z# H0 Vtypedef struct treenode
2 I/ Z) Y3 P$ r' n8 b6 Z- P6 _{1 m5 l; P6 N9 A( p8 P
char szWord[MAX_WORD_LEN];
1 ~7 n, T T2 v: D$ i int nCount;* B& J) ^* q; I$ O
struct treenode* pLeft;
/ U4 q, S0 }" j7 B4 D! ]2 h0 w struct treenode* pRight; i* G3 h- s5 w1 u
}BNODE;2 R/ \4 o4 q% x4 G* U! ^: P
; J: h5 ?9 `6 U
int getword(FILE* pFile,char* pasWordBuffer,int nBufferLen);
$ g1 z+ N- D$ c6 D' y ! o- \; j" L; r
void binary_tree(BNODE** ppNode,char* pszWord)' e& g+ t+ R: {+ I$ w u$ m* e& Q% F
{
, l! Q; S4 B$ ^ Q- F5 R: \ if(ppNode != NULL && pszWord != NULL)% l' [$ G i1 Y
{# c( C3 W! @% I
BNODE* pCurrentNode = NULL;
, m$ f* r( m' w( B! A; d BNODE* pMemoNode = NULL;
0 q( Y3 R4 L' H/ n int nStrCmpRes=0;9 A) S/ C' R" Z6 |4 O
* k5 ?: k* [8 }5 K! \! v1 A ____(1)_____;pCurrentNode=*ppNode3 J% V5 m) [, c! U$ R
6 G2 R6 `& T$ h3 m while(pCurrentNode)
; I( R# b' L- ?9 c0 k {- ?) l* Z' w' ^7 {+ @
/*寻找插入位置*/
: ~) X/ b4 {3 {+ p" [ nStrCmpRes = strcmp(pszWord, ___(2)___ );pCurrentNode->nCount
2 |4 o: O; C# y: T 0 @, {; \2 c& f& v) q+ Q
if(!nStrCmpRes)6 J' `6 Z& C3 G# J& c }
{
7 q$ t5 L1 }4 a ___(3)___; pCurrentNode->nCount++
, Y+ D4 j8 A/ G3 O. V" j) p
5 T* t$ f N' l return;7 m2 K5 |+ ^3 D. G# ?- D0 o% d
}0 ^/ o/ H% A C
else
, a. I: r' n3 e0 u C( b, C) p {
, d8 ]8 Y, _4 g( g* M/ T8 Z ___(4)___; pMemoNode=pCurrentNode
( e7 {6 a5 V5 d) U4 P& Z pCurrentNode = nStrCmpRes>0? pCurrentNode->pRight : pCurrentNode->pLeft;+ z" c5 @2 y; x% H
}
, K" T6 |: b f" n" A }* L* } O- s! O& g+ ?5 x
}
( b) C* X0 W# M- G 6 ~) q, J4 F- ]
pCurrent=new BNODE;
! [; ^) Y1 Z) _1 ~- z
( A" b7 c) C+ z) ?* U ~6 } if(pCurrentNode != NULL)
6 [% b. c& @" X' D2 Q5 i {
7 I; O" _! Y# K4 ^4 u. E6 } memset(pCurrentNode,0,sizeof(BNODE));0 f& p0 e2 g$ b, q
strncpy(pCurrentNode->szWord,pszWord,MAX_WORD_LEN-1);
9 S- x/ \! ?+ H9 S pCurrentNode->nCount=1;
( N& y9 L. D- ], ~ }& I3 U G' m+ I+ `+ o Y+ H
, f( S) E2 ?- W5 P5 Y9 U! s
if(pMemoNode==NULL)
7 P/ S5 p: c& F8 b' f: T5 r, Y {
: }0 H0 f3 k* o! i* i. p4 W ___(5)___; *ppNode= pCurrentNode
% ]( D/ X# d$ X7 J c6 f& p }
. S' {/ u4 V1 |5 H. b else if(nStrCmpRes>0)
" p' w; m/ r! a+ J8 H- Y r7 b {
A1 k/ g; Q- ` pMemoNode->pRight=pCurrentNode;
+ @2 w$ A( ^& t6 Q" Q$ H! S }" }+ z6 V2 q# U8 l
else
8 `( x) G6 _& A/ b- l$ T {
- k3 o8 l, G; p8 |* V pMemoNode->pLeft=pCurrentNode;
* ~0 b1 A2 h0 ]: |6 m* S; U }3 Y% V5 h5 B2 w* \6 A/ Z
}
" i1 h. z& b! J9 R8 }" ]/ b6 Z
9 J/ Z* ~' Y* m7 J9 U8 t! g( v/ W, T! Uvoid midorder(FILE* pFile,BNODE* pNode)
; b6 J: z' w% w- `0 u{/ S E+ T, k+ x+ w6 o* v4 M2 {
if(___(6)___) return;!pNode||!pFile" v+ a, q& A3 }2 h5 q
0 t: h( y9 Y5 J9 M% e! t6 U
midorder(pFile,pNode->pLeft);3 E6 p* s( x' O0 b: Q
fprintf(pFile,"%s %d\n",pNode->szWord,pNode->nCount);
# v3 L/ P& y9 A! a0 s/ t midorder(pFile,pNode->pRight);
9 @" |7 k$ a, V( N2 e}; f7 P n+ f. Q' x$ y7 a5 }: Z
. f2 O5 F- s2 o3 c, Avoid main()
% `- x* a+ X, I2 i# h: n% C; d{5 h; Z) f9 q. w6 g0 ]6 W2 d
FILE* pFile=NULL;
0 D p& v; M# w/ |% F BNODE* pRootNode=NULL;
; y+ C: D5 {( M$ p( J! c. ^ char szWord[MAX_WORD_LEN]={0};
4 N; b7 Z; ?1 H , Q6 X6 b+ M: E* @! l( `
pFile=fopen(SOURCE_FILE,"r");1 d: c% U# c' p! p" H
, S) w" H- J7 S( ?. U/ t0 N
if(pFile==NULL)
: X7 f, `" B; L1 d1 p' |; E6 `. ? {
! ]4 m. R! k/ v4 k4 y7 u/ [% ` printf("Can't open file %s\n",SOURCE_FILE);
, u7 F8 d0 p" k7 ]# W' } return;2 j4 |- Y% k9 [( @6 a& I
}$ w& C" n9 F0 I* J% x& c
3 \" u4 F$ A" P! f$ A8 j
while(getword(pFile,szWord,MAX_WORD_LEN)==1)" P; `6 M8 j& i9 g3 a2 K
{' f- {7 }3 V& h( E6 R' R
binary_tree(___(7)___);// pRootNode,szWord+ \ X3 G; K e: c( m
}( B* Z5 y( q7 @" e1 o$ i
; ?" g& J0 ~* `2 E/ [ fclose(pFile);1 r, ]# @2 [8 c
0 C3 c \' G' z& h+ T& _9 g
pFile=fopen(OUTPUT_FILE,"w"); E8 O; t; v" G1 M0 a! W( }' ?
midorder(pFile,pRootNode);
" J' Y5 v5 Z+ \; s) B1 u" } fclose(pFile);
4 s6 w* W+ k% i( G( E( T" J* m$ c( F}/ _8 Z. _5 B, l2 o% p% v9 A
三. 附加题(每题30分,2题,共60分)4 S+ B3 M+ {' S0 i
1. 从程序健壮性进行分析,下面的FillUserInfo函数和Main函数分别存在什么问题?$ T" L" p9 P- t4 c. C7 m" f1 u
#include <iostream>1 I2 H1 g+ H/ w2 u5 F5 K; t
#include <string>9 P$ ^# f8 f+ y& @) D( \7 b' {
% q/ H# f" P! j3 j2 ^( U
#define MAX_NAME_LEN 20
+ l0 ]" j$ i/ x0 @7 F& z$ P# u 3 L7 x- d) x. p& M9 v5 |: V& E: U& r
struct USERINFO0 @) g$ x1 E1 j/ [: M4 i; l; D
{; |' ^$ |# U& i4 ~
int nAge;
) a u- [: A# h% d8 D char szName[MAX_NAME_LEN];( Y1 [3 Y. H- x/ n5 a0 H$ ?
};/ ~8 P1 w5 x9 X# _$ l
6 G7 z$ j" W! B' M3 P0 lvoid FillUserInfo(USERINFO* parUserInfo)
1 q$ t' \* j0 c# P+ L{
- G/ ^% I8 y' o8 f1 A1 H stu::cout<<"请输入用户的个数:";4 ]2 ]: t6 @6 X# d6 ~+ w
0 l9 q0 A* q1 k. X0 u int nCount=0;
$ c" C; R6 L# q+ g9 G! [: ?& P: u std::cin>>nCount;- z1 V a. X8 Y+ m. i, f' C6 X' `& U, k% }
6 B" \* c( }. F
for(int i=0;i<nCount;i++)
4 I& d" ?, ?) t2 z {
2 S7 C( M6 R0 G* w8 N3 |8 a std::cout<<"请输入年龄:";; B0 N- c7 O; r
std::cin>>parUserInfo->nAge;8 h4 `1 l$ |* w, i6 n
( W4 t2 |3 T# n" D
std::string strName;
/ { ^: C( h* `/ ]8 h( n& a8 X std::cout<<"请输入姓名:";/ r( G& K& s: | [1 F; T4 F
std::cin>>strName;7 J& \- t# j# u% `1 S8 c. J& _
strcpy(parUserInfo.szName,strName.c_str());
7 c* c) _# {& ?4 i( {+ v1 M }
( H5 ?, N" e& m}7 M+ J" `' W/ [* I
$ W, K& g) V8 R! N$ q3 _
int main(int argc,char* argv[])
. k7 Z% C9 V5 @- v{
$ n* [" G7 L8 ^! e. j+ B& _ USERINFO arUserInfos[100]={0};
& U# _! v& _% h9 {9 c FillUserInfo(arUserInfos);+ A6 q" m5 ^* m: h& q+ j$ O( A- f: F
R9 ]& y% \$ U6 j( X
printf("The first name is:");- e; J( o" L$ ^5 M% G7 ]
printf(arUserInfos[0].szName);9 p7 i5 `7 d& M5 X; f |: G
printf("\n");$ ~4 F* f/ @0 B
* ?* E1 t! |2 v& k" J6 P
return 0;
1 t" D. o# r3 J}
- u7 T$ V1 t7 E+ _3 z1 {+ r t. g8 R2. 假设你在编写一个使用多线程技术的程序,当程序中止运行时,需要怎样一个机制来安全有效的中止所有的线程?请描述其具体流程.$ ]9 I X) ^8 a: L: e
. u/ l5 W* G3 L1 f, R) r, v3 ^9 O3 T# {4 y
查看名企2012校园招聘最新进度,请关注阿凡提求职公共日历:http://www.aftjob.com/home.php?mod=space&do=calendar
) c, L9 n4 W. K. ?- i3 L, x* z百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html6 g2 l: y1 M3 {0 M' E6 X+ y
百度历年校园招聘笔试题:http://bbs.aftjob.com/thread-417000-1-1.html# k) m: Y7 |: C% j8 ^
2012腾讯求职手册:http://bbs.aftjob.com/thread-608477-1-1.html
! n5 |/ L2 v6 Z) P9 v2012百度求职手册:http://bbs.aftjob.com/thread-608484-1-1.html
# S9 ~4 K6 u3 }) L& ?3 w+ R2012阿凡提求职手册——IT行业篇 :http://bbs.aftjob.com/thread-607158-1-1.html |
|