|
|
Microsoft实习生面试时的笔试
( s% p- `+ B5 ]' m1 h6 u1 R# B6 {! Y( | ?0 o6 u" I
zz3 R9 b3 M8 p% |8 T3 [
1 C& I( o( N3 Q
(08年微软实习生) % l+ V0 ?0 D3 ]& Q
总共2大题 W' {6 Y" H1 a. D0 Q: a6 X
第一题 (数据结构题)) }& Y$ B7 N, a6 g8 ?
读程序 补充程序中缺少的部分 难度不大
4 u; x2 @* ?& W2 g3 ~( U
$ L; F3 x' \0 U& B: C# @ v本次笔试程序的内容是数据结构中的线性表的链式存储 ) e. h7 x) a+ Q) T
程序中出现需要补充的几个主要的函数:线性链表的创建,插入,删除,判断链表是否为循环链表。 ?$ a) Z" X, S' m& m
程序用c语言描述 ,指针一定要掌握好。1 R7 u. u. @& H2 D) }
8 Z. }" ^- n3 k. T( F
以下程序自己所写
! _: l$ P! Y; \0 _# S仅供参考:
0 b8 j: c4 Z8 m, }! z4 i9 i0 h(以下程序在vc6.0中编译通过)/ A4 Y2 m" j9 q1 w& k6 ]1 E; K' T
! A8 y* S# B; X4 N+ z3 Q- i# j9 Y; A- @; H9 [6 ^3 P
//Copyrights huchen
6 E9 h K7 e8 m+ X7 X6 d4 E$ Y, r//( V; P, P, N& N$ u
//描述:程序描述了单链表的创建,插入,删除 , q4 y1 k E4 e+ N0 A* s# D
//注意:判断是否循环链表由读者自己实现
$ Y, D$ n: ~) @//( B* d+ ]8 B& Y" b. j7 E
//作者:胡琛 <huc87@126.com>$ {) V, s2 Q9 M7 t4 @/ a7 y' W
//日期:2007-7-22, 16:38:259 Q/ c( R+ }% M N4 x' B
#include <stdio.h>" a9 P( T7 {! }" w5 `) k
6 y, [5 U5 H6 m* d2 q. _, ^#define ERROR_OK 0
9 H4 e9 i, C5 H: ~7 u, t- ^#define ERROR_OUT_OF_MEMORY 1+ n! e. ~$ [: L1 r$ |: m
#define ERROR_OVERFLOW 2; N5 p2 J* g! t' q% |. Y% ]
( @. [, E& c: Q4 S- ]struct LNode
0 A4 {! b6 z# c9 `: k{
) }/ H. }1 M1 V int data;
- u4 g9 b& {4 @; A LNode *next;
' ?: I2 a5 N! l/ R- n};
* \5 ~: I. d: k {% A& c$ p//创建一个链表 length为要创建链表的大小, head为头指针 j/ a# ?& `" J4 i# m
int CreateList(LNode *&head, int length)
( l- ]' t6 v! _8 Q4 G" ]{
1 F7 I* C. g+ K q4 P) d head = new LNode();
- j# A3 E3 J6 y9 i2 G if(!head)
! `5 @6 q3 q8 T6 ?! g+ g! H {
, }* `4 @% t$ a j return ERROR_OUT_OF_MEMORY;3 u; Z3 \) E) \) J, t1 H
}
7 k. \1 c7 t9 Z1 U' ]1 f head->next = NULL;
# _* s P# n8 g! ~+ B) k9 d LNode *p;
8 x+ R; R- g6 y printf("please enter the element:\n");
; b& I. M3 q& m g( y- L& E) o for(int i = 0; i < length; ++i)
7 m8 p% Q* B' i {
+ r& X* h; y! t( g p = new LNode();
, _! X8 b9 Q# T% h- k if(!p)) l3 p# W' x6 i/ Q/ {. s- h& q/ q* H
{
! f# d; Z, L* h# [ return ERROR_OUT_OF_MEMORY;3 p2 e8 e) J* O/ Q( t3 U! n
}& R8 C/ E0 B! k3 T9 Z) a
scanf("%d", &(p->data));% z V* M o' Y6 u7 b% O2 Q
p->next = head->next;
: S4 y9 e. u8 A6 y0 @ head->next = p;. G# R* B1 \* \) C! I7 f% \
}( D( `& \, o8 v& i# _# _0 F
return ERROR_OK;
) {$ ^% @: |8 X* @' n1 x2 f8 G6 I}) A/ v }% e9 w: i
//插入一个节点 & Q7 N, B3 c) b& i9 r; q( v7 ?. `
int Insert(LNode *head, int location)2 X) Q3 q. z% ]) C; l2 i' [- D! N
{
7 Z3 P6 B9 j7 B( g2 L1 V- C8 y" l int index = 1;9 K5 [1 ? k/ t& A4 W
while(index < location && head->next)/ d# q' S; V9 u- P3 Q4 w
{
- P S* \- V/ C/ _. q* |$ ?2 w head = head->next;2 r& V N* Z% `
++index;
0 f! z" G5 u7 i) j2 h: l }
, v( {: z' x( t if(!(head->next))
6 g3 _) V0 a& {) ^ {3 ?$ u6 I+ Y, P# ]
printf("overflow!\n");9 ~6 o) h3 n' I5 K; @0 a
return ERROR_OVERFLOW;
- J, w& t0 u8 s3 o0 I }. |2 ^" C1 w9 ]* I4 d. y4 L& j6 X* r
LNode *p = new LNode();
9 W3 c, p' H m( U. p if(!p): \! m7 n* }+ L0 v, f
{# h+ X0 U# Y# @3 a3 B- E" }
return ERROR_OUT_OF_MEMORY;
# ^( k6 T2 H, v' k5 D# F8 O }
?4 l0 M% @, C4 {7 ~/ ^" D0 ~+ ` printf("input an number you want insert:\n");$ R2 ^* J. k! A# X- [
scanf("%d", &(p->data));; S( M& [0 B( e1 A0 \
p->next = head->next;# A9 ^! t. P9 z4 L1 b/ o0 X! g
head->next = p;
7 o4 r% p2 T- _ ~: H
* I1 ^) S& q5 [: L+ l0 y$ Z7 L return ERROR_OK;
" ~4 I" V4 u, B6 y}
, n( E" j- C' J! {; k//删除一个节点: @, z- q( W+ r; F& y5 X( d
int Delete(LNode *head, int location)
" T8 Z+ z( F- l' P{9 _; p3 U7 @% q: J# p
int index = 1;1 @2 Y X, Y ~- x" F: B$ M
while(index < location && head->next) //index 保证指针指向要插入位置的前一个节点, : m$ }7 [$ w4 [1 Q3 B3 Q
{ // 第2个条件保证指针越界后指向最后一个节点5 T+ A1 P' k3 f! c! O8 T& e
head = head->next;
" {2 E/ q: o/ O' `) J6 v6 h ++index;" m# h7 |' R/ B6 D# ?9 b* `& S! p
}% I: x; A H. r2 F( T
if(!(head->next))* d: q2 v, c8 \
{! L) J+ ?# d; I
printf("overflow!\n");$ q0 _' x) {0 n/ W4 g' a, j* c
return ERROR_OVERFLOW;9 E( J t4 q9 X, V U
}
. m/ I% ?: w& ?7 z# [2 O8 h+ ?& U LNode *p = head->next;
5 k8 \% Y! H- m5 B. c head->next = p->next;8 m2 i( D$ \9 H% a, j" q* [
delete p;
1 ^/ W- `$ s8 R7 x3 G) m return ERROR_OK; \1 U9 g+ Q) G) B0 @+ ^
}! G8 ^* n6 o# q9 k
void ShowLinkList(LNode *head)% m& L3 ^; i! @; r- h# O/ D, n) m
{
7 y) U3 _# w, H' r7 N printf("LinkList:");1 {0 m: B5 c- Z3 V/ S1 C$ U# {
LNode *p = head->next;' ~$ Y' }8 V' e" j# ?
while(p). n3 v8 p& U8 r% n# r9 A2 Q& F$ G/ \
{
% [% g9 H$ L! R/ y3 | printf("%d ", p->data);
6 O4 b9 J% p* `5 l p = p->next;
; A2 q$ @! T( X S }: G* K, ~" C& ^4 d, h u
printf("\n");' h& N* k) ^# Q& s a. ?
}# |: m S1 i* m7 s
" T+ H/ p- G" u( _& J8 `* G1 ^void main()
/ [7 d$ b! D1 J) e& e! [{ r. D9 s* Z7 U( [: u) h
9 S) i9 I, K0 v9 w5 c
LNode *head = NULL;
# Z: D- z: W1 W% C* M; D int initialLength,location;
4 R" g) n1 \/ a) X
" x \! k# h0 F/ g" ?$ D printf("please input an number to initilize the LinkList:\n"); //初始化链表的元素个数
- e. M$ z8 F- M D3 T scanf("%d", &initialLength);
2 v9 \ x ~5 F% [0 v1 l/ H; ^% K$ v2 g+ P! ^& g# E
if(!CreateList(head, initialLength))! _7 e1 [3 n( H+ r) D
{
M& ~. y" b3 r6 R8 m: X( j f7 } printf("Create LinkList Success! \n");% C( _3 k4 k- u0 T" [, R' Z: b
}5 z( i6 w( @* x
ShowLinkList(head);
: Z6 u! n2 Y: T$ V0 o( m% D0 W
printf("please input an location you want to insert to:\n");4 x O- e, r _+ }# @& H- M% y0 U! R
scanf("%d", &location);
Y& y6 s* c1 i2 N1 Q/ s6 K* @
* m6 b4 v' ~% j! x- Z if(!Insert(head, location))
' F* X! f5 d' n {/ k. x/ b1 x( E- Z& a1 ^- P5 N. J
printf("Insert success!\n");
# K1 h8 J) I5 u: ?5 m0 [ }" i. i5 s1 A9 F H1 {+ G5 v
ShowLinkList(head);
: W5 f k, @0 g0 n9 w% l* X" }
; Y+ O5 h, Y" ?$ z/ |6 z4 |7 k printf("please input an location you want to delete:\n");! z' x4 d- F. x5 {
scanf("%d", &location);
% ]9 s+ M! W: v# Z# e1 Z9 Y% y+ Y3 |' O, E6 J/ w8 ~
if(!Delete(head, location))
. m3 K% Z/ T9 b$ } {& _ N5 M0 L4 W- M
printf("Delete success!\n");) x9 n3 U$ |5 H& g/ p) }% }8 ?7 X* o
}
' N. T2 p& Y1 w+ H/ Q% J+ }$ ~ ShowLinkList(head);# R% S3 h6 S+ H6 Z
}
0 G$ `+ e; g( K3 J& j Y a6 [6 ~6 y- S, l# h
第一题总结:把数据结构中的基础打牢(不可能一直考链表) $ ~8 b; s5 Q7 N7 @# |4 @0 X: f3 l
; Y- ^) s; S) Q* l第二题; k3 `0 I) Z. [+ q/ l) c- I
英译中5 L+ E% ]" S+ W% _
英语文章:长度 和难度都跟四级中阅读理解的文章差不多
, ?& d1 H' s9 b3 g. K- u* c. |; q" T( D- j: B0 y1 M( t
/ L; P5 A6 t9 H/ o, L; r: V5 I
……
2 @8 Q0 P2 R; t! T; e: s( Q. R* f; S! ^/ R$ V- D1 O
http://bbs.aftjob.com/thread-607297-1-1.html
+ F6 ?0 K! g: @' [5 D* c7 a2 z8 f$ z6 z& [' ]
——" Q w. l+ i$ R. [" g5 o4 Y# @
微软(Microsoft)求职俱乐部- O- C, f0 Y/ m" J& N4 F
http://bbs.aftjob.com/group-100-1.html
( ^# c3 `0 }3 h% f9 p- I8 \, a+ I2012阿凡提求职手册——IT行业篇 $ D8 o" s) G) J m) `
http://bbs.aftjob.com/thread-607158-1-1.html2 X0 a G1 o' {* R
—— ! s( I. q$ u. h* C
微软笔经篇
; F* `( {0 g t" b* H- u" T' Bhttp://bbs.aftjob.com/thread-469556-1-1.html
: y W' o3 S6 E- } |" m微软2007年笔试题: b( P+ K, L' j! a i
http://bbs.aftjob.com/thread-607298-1-1.html4 L% { ]! q. Y! I& I8 E9 i
微软今天的笔试题目(12月28日)
3 m c3 p7 P- W8 D8 Zhttp://bbs.aftjob.com/thread-29793-1-1.html t0 @( ~ A8 v! D& s$ q' q
微软笔试题整理
5 j/ G M6 P, Qhttp://bbs.aftjob.com/thread-607299-1-1.html
/ _- ]2 @9 o4 H# F; p) r——+ ~7 t& h+ z; ~4 i# [* g# |2 X
阿凡提(aftjob.com)求职社区
( b' G# ^1 u: _" o+ ^7 V& ? G阿凡提求职俱乐部-国内第一家网络求职俱乐部,提供企业求职俱乐部和高校求职俱乐部交流平台。
. A7 d: q9 q* o8 _$ X—— ' ]( X$ v# _# u/ t* c U
: C7 r$ C# z6 P3 f' p
) f$ H$ }' |: a; F- j+ \$ }4 d |
|