|
|
Microsoft实习生面试时的笔试2 z4 p n1 F2 S* e4 `
! G3 O5 X& E! j/ `% \4 `+ ^$ ezz0 x- r2 b5 p2 y) a
! p: O n4 q7 ^, s: D: R# B0 @8 r
(08年微软实习生) # g+ f; q/ I$ V( |- J0 ?( x% n% H
总共2大题9 `3 Q5 F0 M! H: Z! u: o* {. n5 {
第一题 (数据结构题)
0 G; q1 _9 l6 ^" g( x. R1 w读程序 补充程序中缺少的部分 难度不大
2 L& @) E; D& y& H& I
) q" }7 N( Y6 {! N* H/ m6 w4 `, |2 b! b本次笔试程序的内容是数据结构中的线性表的链式存储
Q2 x) X# b; i+ Z0 y$ ^$ n2 C程序中出现需要补充的几个主要的函数:线性链表的创建,插入,删除,判断链表是否为循环链表。
$ C% @5 S! K* m* n" a" V9 R' g& g程序用c语言描述 ,指针一定要掌握好。
7 D4 q! u( _' w/ f4 f, {& `- i) y) e' @( {* d* B; e
以下程序自己所写
" `' g, R, C& j2 A仅供参考:
7 c0 G6 |( s5 |3 `(以下程序在vc6.0中编译通过)
) l6 m* g* F7 |4 }, q5 `9 J* ^' z% L% B
0 [! C: Y7 I0 y. |% z& _# E3 |//Copyrights huchen
2 D" X c& y) e* J//
5 `5 {) l0 E5 [3 j0 l1 i//描述:程序描述了单链表的创建,插入,删除
; E2 C$ h8 a0 c' C2 w4 z0 {- p//注意:判断是否循环链表由读者自己实现 ) x! H5 B) j4 ^" q. U- w. m
//
2 B) B1 E J1 `7 Q. O0 d//作者:胡琛 <huc87@126.com>- e% F3 ]/ B$ c6 O2 D' i2 [
//日期:2007-7-22, 16:38:25; k: D" a+ m' L$ R
#include <stdio.h>
6 a# [- G: r# K7 j2 Z" ]" d; k
[/ X8 w& }2 H#define ERROR_OK 0
" f% E4 t5 V( d6 |, z7 A- C#define ERROR_OUT_OF_MEMORY 1
; ]5 n2 h$ E4 y#define ERROR_OVERFLOW 25 j) u& ?: H9 x! n
1 O S4 y' ^% g; I) E" A( Q* @struct LNode
6 h4 b: J4 P& W2 p1 G" M& M{
) {5 g6 r' F+ ~# F+ U) q; w3 ~ int data; - L3 ?: Y k6 U- X7 p
LNode *next;
7 E: p6 S7 ]5 I2 ~) ?$ C" I; H};
: l9 v0 _, m/ y; D//创建一个链表 length为要创建链表的大小, head为头指针9 u/ y% t: O5 {
int CreateList(LNode *&head, int length)
4 r+ w0 x# {, _( p( O/ x4 {{( _1 g/ }* E' P) w5 Z
head = new LNode();
) L3 _! N' Q) O" \9 |( N) a9 z/ B if(!head)
+ i8 R7 \3 V$ ]* c, `' W {
( n. u6 l6 u5 }) B4 y" O- B* F" j return ERROR_OUT_OF_MEMORY;: z3 g( S, W7 _7 N
}* y5 h$ G% P. v9 r- `: L
head->next = NULL;
/ F/ O" \: g( r7 U$ _( H' V W. B LNode *p;
! x' p( W% Z% n0 E. U0 k/ S7 z4 Z# i printf("please enter the element:\n"); ~6 r! ~- D3 ?
for(int i = 0; i < length; ++i)- z7 V: T2 ?& O0 i
{' r4 d$ p. I. E% n9 n' a/ h: }+ j
p = new LNode();
" R8 U7 i% I9 V& M, D& I* B3 _ ` if(!p)' M. O! X0 l7 i* h, u
{6 E9 q* ?1 g6 \; I( a
return ERROR_OUT_OF_MEMORY;
; x3 i9 O2 g; A, {+ I+ G }% D* u! j* U, B$ a( @& m* V; r
scanf("%d", &(p->data));4 b/ o8 e* H6 C/ X- W
p->next = head->next;
* {& _1 t" f& s" R/ }: D" M head->next = p;
_6 a' D Y1 W9 ?/ a* w( X }
9 j8 V5 j( L5 G return ERROR_OK;
8 q& ~6 P/ {7 B) D}( ~5 K* y! j1 X2 E& v$ L9 e. G. {
//插入一个节点
* b, e4 z3 ^+ n2 f4 _int Insert(LNode *head, int location)
# a# n# t& e/ U$ t: B: n{8 \0 C- W0 w2 _# l
int index = 1;; V9 B: l0 q% i0 ?' E0 q/ V
while(index < location && head->next)/ z0 }1 i5 G/ t" V+ y9 t9 W
{
* Q2 x& j0 X' P' e5 o$ C* N/ \* t head = head->next;
1 h1 j9 w# u: m* t S4 n% L# C6 z2 | ++index;
# k0 D T, J2 Q9 d7 y }
" j1 q1 J: k1 k9 ]# u if(!(head->next))
) h, {# p7 r7 Q# v3 t3 Q {( m9 \& J, N N% w. m$ q
printf("overflow!\n");9 G- j6 k6 k4 a4 e5 l
return ERROR_OVERFLOW;7 s* w& z$ {' i1 k
}
( D5 w- q O" _. L' M& ` LNode *p = new LNode();
+ ?9 c7 l5 V) H2 O- G; r. V if(!p)
. c* [9 \8 `) i {
4 N! }- _1 O) d3 W0 f$ Y2 z0 w8 _) l return ERROR_OUT_OF_MEMORY;& ~: z. B; P7 b: H: s6 U
}
2 O9 W! q+ _0 P printf("input an number you want insert:\n");+ k0 K' o' l$ C G/ |7 H+ O
scanf("%d", &(p->data));
& | S# |" h# S, B- n p->next = head->next;: e8 J- J E7 Q+ e5 o
head->next = p;, X7 s1 I) s9 z6 C! ?# G: y
7 z6 H# C2 \0 A; b! f4 f
return ERROR_OK;
/ a* B! A4 R2 c. N4 B! H5 i* Z8 k}
3 q5 c( t9 B& L9 a( ?9 |' \//删除一个节点( E) z. P* u* V& J& P
int Delete(LNode *head, int location)% y+ \/ d+ E1 r
{9 G4 `% a' i1 G& C& {
int index = 1;: ] e: b' W$ E; [8 R1 P' \0 M& f
while(index < location && head->next) //index 保证指针指向要插入位置的前一个节点,
3 o, O% d5 k% _4 \$ |4 d# S9 p! Y { // 第2个条件保证指针越界后指向最后一个节点
# H0 e( Q& s2 T# T Q7 } head = head->next;
: i( i4 C! k' |0 `0 j$ ] ++index;& [* {9 J* D& l
}. r& P- t! O" M8 _$ t d& w
if(!(head->next))7 X; h" O2 V" w" b h
{
) f& c+ @, W$ P- K- F: M4 Q printf("overflow!\n");9 y( B* R( P) y% ?# a
return ERROR_OVERFLOW;$ @( u1 A8 u7 [6 }$ P
}9 n8 Z0 o% Z0 v0 c7 v* w! `6 p3 v0 I
LNode *p = head->next;
9 L- E* ]" A" C+ T# n head->next = p->next;
# E; t/ ^% a8 [3 l: a1 L3 a delete p;9 G" k2 d+ ^' K6 z2 j
return ERROR_OK;
n/ g' T0 X8 v: {. V}
0 O& A8 p, l" Q% m% U- u' b9 hvoid ShowLinkList(LNode *head)
9 @9 a! j, z7 C- a9 Z; J' D+ h{
, n' C7 ]. e3 }# J- E printf("LinkList:");3 `! ]8 y- d2 @# |
LNode *p = head->next;
" o& e# _$ @2 g7 _ while(p)
, u% {. `0 B: p9 D/ P {
( o: ~% p' ?) L" Q& z printf("%d ", p->data);4 a# v* g& W4 u7 d4 r
p = p->next;# N. W# j! u2 W; L7 g. c/ Q
}( n: s! y5 U8 y$ Z8 Y
printf("\n");
( A8 B5 v' I+ j}
, P0 F. c! C k8 s G" O8 Q
, U1 V$ G. ` tvoid main()
6 `5 K" g; d8 z7 i( @7 Y{
) V. q- b' N/ s, T& n/ O9 x7 g 7 z& w3 T/ W. g# r) Z, T
LNode *head = NULL;
4 K$ W& s- R1 r' [0 t int initialLength,location;
% ]/ B" S4 B' H5 J - ^& S& S W, f2 v) ~3 {
printf("please input an number to initilize the LinkList:\n"); //初始化链表的元素个数
( f# s9 J5 c0 q2 o& j1 s/ k9 d scanf("%d", &initialLength);
{6 ` W1 J6 w8 ]7 n- I* z! i6 P4 T- }2 U8 {! @; b" z
if(!CreateList(head, initialLength))
: K* u1 r& z7 A6 j0 D. C6 t {
0 G: D* z: c2 ]& U) N4 }& k/ H( G printf("Create LinkList Success! \n");
; T+ p) `9 Y# g" G& f; i }
3 n7 e0 P& ?* V6 {, h ShowLinkList(head);6 z1 g E% J+ {: l; H5 @
% Q. s6 k5 u; {- r9 R6 v& K; w1 J printf("please input an location you want to insert to:\n");
2 |4 T0 @+ W/ |& Z. A' i scanf("%d", &location);7 O9 q6 d& d2 g P8 @
9 F$ {% G2 W6 B& G9 |( r if(!Insert(head, location))
0 S+ ?0 K: ]0 C- _ {
' i: p' l9 ]# Z6 ]5 a, t/ f: ~ printf("Insert success!\n");, R* j8 z% l% q7 [+ M3 T
}
L# n' c* ^, ?+ l, b# U ShowLinkList(head);, S7 a8 Z$ E4 d, b" G
3 @- v; M4 c7 Y% S; S P: l printf("please input an location you want to delete:\n");, l% e" y- m$ t, [ A) z5 @* d& g
scanf("%d", &location);2 ?2 @0 r7 Y8 J
) l6 ?- O7 j1 H3 @
if(!Delete(head, location))5 `7 l" a4 D6 C, H8 n
{
4 z; I% A% P- I6 J p; v" c& X printf("Delete success!\n");
& B) x3 G+ E7 g U' x$ ] }
5 D: x V& y) r" ? ShowLinkList(head);. k7 A; a: H: w4 ]6 t0 q2 ]
}! `2 P, H1 e- Q. y8 w* f
0 P/ \$ @, K5 a! @( W P( U. O N第一题总结:把数据结构中的基础打牢(不可能一直考链表)
! P. C1 ~7 w* Y: x
! Y1 }& O9 S* o4 N( O3 }3 Y第二题/ E! V; c- F/ F
英译中
/ c6 d) s4 @, e英语文章:长度 和难度都跟四级中阅读理解的文章差不多7 g8 c3 m7 f( Q6 @
% K. r& ]8 y8 j
/ Z# J1 e. z8 k……3 s. m+ `! U; S" t
3 R7 K, G* W. @7 @- a& }2 nhttp://bbs.aftjob.com/thread-607297-1-1.html: u( N3 d% A/ M% y( m' `
5 F( a4 v% l( x% m6 ? T——
* f5 L* ^; L7 V7 H+ z微软(Microsoft)求职俱乐部( `+ ^9 J8 L+ A) ^! _& V
http://bbs.aftjob.com/group-100-1.html6 K: w$ o8 ~ N1 @( d
2012阿凡提求职手册——IT行业篇 , P0 F3 r0 j* D
http://bbs.aftjob.com/thread-607158-1-1.html0 @* @2 U) d' r& \: d3 |, {: z8 I" L
—— $ T& K2 B/ c& j2 ], W$ H6 z
微软笔经篇
) z: D2 c8 k8 u" m) @! W ?http://bbs.aftjob.com/thread-469556-1-1.html3 q- c! X' ^) P/ {" [
微软2007年笔试题
9 t5 R# U$ t8 R1 S6 t! n: V, x4 F8 Jhttp://bbs.aftjob.com/thread-607298-1-1.html7 S+ P: A! @5 @6 B2 D
微软今天的笔试题目(12月28日)& D: l# D4 m3 b1 Q
http://bbs.aftjob.com/thread-29793-1-1.html
3 Y: h% F) C) K. E8 j9 L# u( e微软笔试题整理7 R" q- j0 |7 e4 g& D
http://bbs.aftjob.com/thread-607299-1-1.html
" Z$ C" {, ^6 o/ i——
/ g2 q( O% ^ M- Y阿凡提(aftjob.com)求职社区
- [1 |7 q4 j% R9 o. E阿凡提求职俱乐部-国内第一家网络求职俱乐部,提供企业求职俱乐部和高校求职俱乐部交流平台。
0 {( y7 `5 R ^2 `! W8 E——
, v) ]) N: Z8 V' \9 ~1 B" C# l: w+ u& i+ i
/ S( c' y( |7 o/ r8 q# @ |
|