|
Microsoft实习生面试时的笔试
R Z& D- O) i& p
% _( k5 m) M1 ^3 qzz5 p# k( k4 t. T& E4 w" a$ k6 @
( _, g- G T; h9 H
(08年微软实习生) - m- z" K* q# V0 `
总共2大题2 [" I+ N4 I# Q8 s8 b. x
第一题 (数据结构题)
3 c- s( S7 U! ]) T/ q. [6 ~2 [读程序 补充程序中缺少的部分 难度不大 & n* ^ ]+ C* J- l* e4 \
; w) G3 S0 A7 X5 N/ {& b2 H
本次笔试程序的内容是数据结构中的线性表的链式存储
5 y6 [9 Q9 |4 k3 _) F程序中出现需要补充的几个主要的函数:线性链表的创建,插入,删除,判断链表是否为循环链表。
T( V- K# C1 ^$ m2 r: H T程序用c语言描述 ,指针一定要掌握好。0 e( c. @; ~. c" S$ Y) x1 f* s' _
/ ~3 b, ?# ~5 f以下程序自己所写: J. a. w( M% v$ m& H
仅供参考:
% Q) U4 d* N* F9 m9 Z9 W(以下程序在vc6.0中编译通过)
- b+ k$ ]2 w' e' U6 n
# R4 O: Q, [* K% C2 N: Z& f; ?9 u, k; L2 R ?# `2 |
//Copyrights huchen 2 K. {. d" X1 W$ d
//. Q- I, p; E, w
//描述:程序描述了单链表的创建,插入,删除 ) j, ?* y. k% A1 P& [
//注意:判断是否循环链表由读者自己实现
! Z7 U- v# ]# n//
9 q! l: p" |7 K( }$ y; F//作者:胡琛 <[email protected]>0 p7 z- c% g- o' o
//日期:2007-7-22, 16:38:25
* h7 L9 ]9 k. I: `! ]#include <stdio.h>' C |2 d( p* q' l! t1 p# m
" e2 X1 m& F5 l#define ERROR_OK 0' F, h- O u$ T7 \0 o( v
#define ERROR_OUT_OF_MEMORY 1( Y2 \) V/ r4 ^5 W0 S2 V" f" [
#define ERROR_OVERFLOW 2
2 f6 ^6 R, q2 Y' z3 y' X
- @& K" e4 f. E/ Kstruct LNode
6 M _7 u$ z$ p* l! a A{- i; D n. b6 i, C m. [2 P
int data;
& _4 i2 l. r- m7 x LNode *next;
6 K! W) {3 e2 }) c6 C8 `2 I};
9 \# f; ^% h- E5 r y _//创建一个链表 length为要创建链表的大小, head为头指针' P6 e; d" _9 Q: t$ g
int CreateList(LNode *&head, int length)8 }1 N; d8 _/ M2 e
{0 ^1 m, I( v7 N$ k
head = new LNode();
% n0 f/ s3 Q' F* u. ]! v if(!head)/ I: P+ D; ]- a
{& l. W2 r( G- z$ J) P
return ERROR_OUT_OF_MEMORY;8 L- r9 B# s9 h; f& e% B
}( B0 l( G. ?, v
head->next = NULL;) \# J; r# }; b; Z
LNode *p;
# ^/ b, C3 U9 L7 a- b printf("please enter the element:\n");# h* c/ |& F" R# R
for(int i = 0; i < length; ++i)
- y$ ]2 ~% F9 z+ E* n8 ]' C4 [' ~+ M- u {0 ~" W' @2 l3 W) x
p = new LNode();7 G5 @: ~' y @0 h! G
if(!p)
" n |( I5 H6 b# m* n+ l+ j {% @! c( C! Q4 i' C1 ]5 V
return ERROR_OUT_OF_MEMORY;( B1 ?- I' D4 K! [
}
2 d5 ?6 G9 i" z* p7 f scanf("%d", &(p->data));# ^4 k/ P6 z* x: q2 u' m
p->next = head->next;
" T2 Y5 C& {) n9 \ head->next = p;
8 F' R8 U1 ^1 V Y9 f }
- |' A8 ^+ J I. J3 T7 _" E, M$ J return ERROR_OK;
8 w# n0 ~# D* f% r3 [" H}
/ h6 R4 O* b$ Q& | K3 M$ V//插入一个节点 + D+ X7 A( p4 E- y- x* [
int Insert(LNode *head, int location)
8 [" v& g( t: n: p{
* P: g. C/ E% r* o int index = 1;9 z* d$ f' r) s2 x, u! {7 Q
while(index < location && head->next) d- T. Z% x9 b3 N2 ^6 j9 [- R
{( K# F5 m ^) v4 c6 @
head = head->next;( r7 C: b7 G5 P2 G8 {) I
++index;9 ? v7 `+ ]' ~. F4 |
}
$ A; z0 Q0 y [5 X- d if(!(head->next))' ^) K7 J8 f7 G; T V
{# T# W9 O! I: z. p8 g
printf("overflow!\n");/ X) u+ I8 x) B7 y- @& } W
return ERROR_OVERFLOW;
! ?, u$ c) E0 c }
0 _1 L7 b) Z' e3 e LNode *p = new LNode();
7 _* k/ f' O: a+ ~- L3 T if(!p)
* O l; a- }. R& E {" I: ]$ N5 s0 B8 j+ ? n9 ~; v
return ERROR_OUT_OF_MEMORY;; D% `; p$ k0 \" Q5 A/ m
}6 i$ n' }, e; c3 B+ p
printf("input an number you want insert:\n");! ~9 I) u8 }* }7 H. F1 {
scanf("%d", &(p->data));
% v/ O6 R9 k. G p->next = head->next;
& J/ Y5 `3 Q+ U6 I! U% t s head->next = p;$ [4 V6 `* Y. C" ?
+ C+ F5 o& S& v! c return ERROR_OK;
1 B9 u; g0 s a' z$ ~, X; z: \}4 H# n4 ]2 q& V
//删除一个节点
; W, z( n7 l) W( W1 Bint Delete(LNode *head, int location)# f9 a2 c6 k7 Q0 k- m- h" E- _7 ^
{
% `* C9 A" p0 y$ t int index = 1;9 T1 H/ t' j$ R$ \* m
while(index < location && head->next) //index 保证指针指向要插入位置的前一个节点, . k6 f, b0 F. p8 c7 o# C
{ // 第2个条件保证指针越界后指向最后一个节点
+ B( c4 [3 s4 Y, N8 r; g0 o head = head->next;* M' b4 i. L# Y, a0 } C3 f- V
++index;/ x4 B4 j2 X! i7 O; ?( C
}
, M" c. B5 P4 A; q if(!(head->next))1 o( E8 \8 V; r& w
{
3 R4 e6 i, }$ ~2 L5 {; f printf("overflow!\n");
$ I3 p5 i# j! M/ c0 ?2 u return ERROR_OVERFLOW;. |- i+ |- _* d) J$ ~3 Y
}5 g! I9 b# W6 z: k% B
LNode *p = head->next;" `" j6 f6 ]$ J$ p- E& T! b7 r" ?
head->next = p->next;7 U5 b" ]" m8 m
delete p;7 i- N" R4 ^) Y O. J
return ERROR_OK;
+ n& \( f" X8 s J. K}
+ y+ j; s4 W! z" yvoid ShowLinkList(LNode *head)0 V- t+ B6 S4 s5 q
{" }4 X9 u0 p* a4 o8 Z3 O; G
printf("LinkList:");" v: W- N2 M4 @- \
LNode *p = head->next;/ b1 Q' l7 {6 u" V4 T, R5 i+ O
while(p)0 K: }$ E4 ?8 `
{
* f+ A2 M l: d G printf("%d ", p->data);
$ e$ @% q0 Q1 r7 n! D* B: c0 ~3 A p = p->next;
! S* z0 y7 U6 l }
& G5 U, N- e9 r, B* [ u printf("\n");: M* t" O; i+ e7 M3 Z0 |" s! U
}
2 ? q" P) D+ ?; w' \( C: m( `" @5 o* |( U( O3 V
void main()2 O" \: ~" W( x7 F5 }& Q
{
5 l7 L6 h8 f, Z; O( @2 u
! L# w9 g9 S+ s# r9 w# G LNode *head = NULL;' I% a/ P% @9 R* h$ \- t
int initialLength,location;9 L# T& t" u+ }( k n; V3 m
( D* J/ g d9 I h8 O O
printf("please input an number to initilize the LinkList:\n"); //初始化链表的元素个数- Y! ~; ]# A. h5 L
scanf("%d", &initialLength);3 t! ~8 @4 n) ?6 U2 d
4 h6 g% r s6 {0 {% ]- k) {
if(!CreateList(head, initialLength))' s0 D k7 l. Y+ a( E
{
5 U2 K8 Z6 h9 y: ` printf("Create LinkList Success! \n");
% x! H5 B/ b% P) M7 l6 w }
0 X/ _9 @9 z% w. h ShowLinkList(head);8 B: q8 Z; ^5 B* b& X. l3 |
- b$ n- ^! |1 D3 C# d. ]1 W
printf("please input an location you want to insert to:\n");; x3 R* z6 d# ~8 o/ G4 A
scanf("%d", &location);+ e5 y: j \6 k5 H7 f, m a* A4 X' ]
0 F% w6 ?9 h- s$ Y
if(!Insert(head, location))
3 z4 R& g0 \5 A: C& N% Q3 F {, ~: ?' g7 r1 d! d: x
printf("Insert success!\n");
$ w( E- F. v8 M( R4 ? G. v" [ }( e9 i( {% s4 a% P% `8 s
ShowLinkList(head);: `- V/ _( E1 p
* }; Z; o" S& ?- m S
printf("please input an location you want to delete:\n");+ w# M$ h) ~- b. Q* m
scanf("%d", &location);
% N% o3 w) A0 q2 }, d
, ^) v# ^# r) w/ J' I+ u: f* P4 e if(!Delete(head, location)), s3 L/ l7 u2 l3 n+ t3 Y. Y* Z
{
+ d, R. }8 c6 m8 A7 P" }% F printf("Delete success!\n");
; P _1 d. R. b; s& l }
3 P; ?1 I' A. O- B7 _ ShowLinkList(head); H( l! |, H3 D: N) q5 ?- o' b8 e
}5 d& n2 i4 H. z" j/ ]" C. `
# M1 y9 ?. j' G第一题总结:把数据结构中的基础打牢(不可能一直考链表) " A: `/ S8 `7 }- r$ c' D
) H7 S4 [1 C1 { T: [$ m第二题
: t5 v F7 ~: F$ D' B英译中
& @2 n2 q, i- l8 a6 i, j英语文章:长度 和难度都跟四级中阅读理解的文章差不多
/ u5 C6 o6 J8 b+ j l4 @& X0 P$ p7 {! m2 ]( y) b
' s$ S, o" }0 \: K Y' G% h……% g3 m+ B0 w! F6 c/ @# r4 C
$ W r9 v( V& r
http://bbs.aftjob.com/thread-607297-1-1.html3 y- j( X" G" h( w% m, b5 y$ R3 k
$ u, |3 E: X* Y2 P( u6 k( L9 u——
) a0 A+ f2 f6 Q' D8 u微软(Microsoft)求职俱乐部
4 a `0 Z1 [" O3 ^/ @http://bbs.aftjob.com/group-100-1.html% ~7 I% y0 E0 z) `- G
2012阿凡提求职手册——IT行业篇
& a7 t7 [! [" U: O# k4 V$ Uhttp://bbs.aftjob.com/thread-607158-1-1.html
' D0 P7 s D% c——
9 t1 B" _- k% {( F$ E! i5 x5 e% X微软笔经篇
9 j* G2 ]# z. ^; n9 L" fhttp://bbs.aftjob.com/thread-469556-1-1.html
# W7 o, q/ ]: W微软2007年笔试题
( L! a# k) l- \1 i! Nhttp://bbs.aftjob.com/thread-607298-1-1.html, c' Y K3 S3 u: V# J
微软今天的笔试题目(12月28日)
( [2 B- p T, Phttp://bbs.aftjob.com/thread-29793-1-1.html
% ^) c+ w6 Z) o. _5 m* v$ m0 x微软笔试题整理- t5 P- T( \; l4 e4 X
http://bbs.aftjob.com/thread-607299-1-1.html
) b" A: h; t: X3 {5 `, C$ G/ K——: p$ X9 x7 c$ y9 z9 w$ P" e4 p; {
阿凡提(aftjob.com)求职社区
! r2 ^7 H) R: d' ]( l6 J' |9 d阿凡提求职俱乐部-国内第一家网络求职俱乐部,提供企业求职俱乐部和高校求职俱乐部交流平台。& T! A# n5 B0 e8 b; L
——
" R) ]$ {2 k, V
& U' o' V& o! f) a" J+ Q9 M; W9 [' P9 b( f7 w. H9 B
|
|