|
|
Microsoft实习生面试时的笔试
" n! l' P) {' x2 w$ w4 p1 i+ s3 U8 o6 Y
' H+ O3 B* G$ { rzz8 O6 K( m: c( a4 \5 o3 `
+ n4 O& u/ R0 f1 V* m. W (08年微软实习生)
) a. x& U. d7 `' Q$ j3 R. `总共2大题
) I9 c% E! [8 i7 `: G" [第一题 (数据结构题)
+ O" d; d4 v: _2 E1 n$ G读程序 补充程序中缺少的部分 难度不大
! }! n' ~) I2 R( |% r! x. Q$ X) w! h3 S
本次笔试程序的内容是数据结构中的线性表的链式存储
. e! x( F$ ]+ M+ R9 x, f程序中出现需要补充的几个主要的函数:线性链表的创建,插入,删除,判断链表是否为循环链表。' g: I# g( z# V; ^5 c
程序用c语言描述 ,指针一定要掌握好。
* B6 P' |! x+ U7 H! G: A9 ?6 T% P) `# N
以下程序自己所写
) S3 d2 Y& c* }7 e9 n仅供参考:
2 Y5 e5 B* a! D+ k8 r(以下程序在vc6.0中编译通过)
( A" i7 e: x' r8 v
, S0 J2 k% W3 ^2 z& }" C6 O d# m
' S8 h7 b4 L* c; N//Copyrights huchen
& c! \- i: F" f1 ]* i//
/ n3 u F0 d" ]% D//描述:程序描述了单链表的创建,插入,删除
0 W; a. s9 \! p% @//注意:判断是否循环链表由读者自己实现
9 K! F* a* ]# t1 O: S0 v* _//
7 M# B) J; I- D* C) G7 c//作者:胡琛 <huc87@126.com>
+ K# t, b! h" U0 l- n8 } u O* @//日期:2007-7-22, 16:38:25
$ W6 b. \) i! ^( F+ l0 Q! T6 c#include <stdio.h>3 \- I6 D. U, h1 _
8 x" a T C$ i2 Q+ @4 H#define ERROR_OK 00 ~: m6 d4 {, _( O# E
#define ERROR_OUT_OF_MEMORY 1/ f2 b3 Y0 ^* O; y# h7 Y4 `
#define ERROR_OVERFLOW 2% N! D& Y, @3 E, y! }8 s
. L5 ?/ u+ _& d) t
struct LNode : C/ }0 S, S& K; I
{6 V, z0 p f+ D7 q% a* P
int data; f \- s( L1 l' {
LNode *next;+ u: I6 N( }2 \. D
};
: s, \; |7 n% m- y5 p8 M! N, ]1 y) f//创建一个链表 length为要创建链表的大小, head为头指针
) j3 y3 F# b/ H3 n- M8 Vint CreateList(LNode *&head, int length)
( O5 w) @# j% e' M$ z$ |{
- J" t) f# `- H# \' I/ E/ l head = new LNode();: m( ]* E% Z( P2 H
if(!head)
0 Y( D. p) a) A3 V$ `0 a, n1 V {
, X: S& _9 e8 R, ]- _. _ return ERROR_OUT_OF_MEMORY;6 X0 i2 i1 L6 Z3 }+ U
}6 V/ @' A8 a# i$ Z+ |1 l
head->next = NULL;
. p4 Y; e T' n/ Q+ T" \ LNode *p;7 K. R+ S* h2 h, l8 c ?
printf("please enter the element:\n");1 I( M: O) e& ^$ v; O
for(int i = 0; i < length; ++i)' O3 n. V3 G* l5 P6 M O+ ]
{5 t' S- x" {' O3 k; R0 G
p = new LNode();
: B" J' [/ H* n/ t A5 G& e/ ^ if(!p)" Z& p( R+ `9 I
{$ E- s5 Y1 N! I' b' U8 d
return ERROR_OUT_OF_MEMORY;& e3 ~. @6 p( i8 w# E! S. j
}" |. Z0 q. o6 A
scanf("%d", &(p->data));
+ U# o$ n: d: V; S% S, p- U) g0 C1 ? p->next = head->next;9 a/ a% B! E4 k: X" ^& o3 W7 ~
head->next = p;# C/ R' q6 a5 X. v+ d& g: ?+ a+ S
}
( f5 ^/ j8 V: c8 C3 E& p; j return ERROR_OK;
! q. v6 c% @2 u) O, j8 q}2 @ w2 R4 A8 N! l$ x8 H
//插入一个节点 , P3 T; p( B; m C1 t# J( q N, U
int Insert(LNode *head, int location)
+ \6 [0 x. G4 p0 o{3 W' d$ q! L! J4 ~" _5 m3 n4 V: p; i
int index = 1; A% o4 Q$ ~1 _( P% @8 j3 Z
while(index < location && head->next)
4 ]5 B6 j7 r+ ?; J2 @3 {$ B0 j4 `6 A {
2 J c) a; Y# l I7 E( h; k9 r head = head->next;
) e0 A) s2 E, p, p$ \- |, e ++index;
- t) q$ K% O6 U3 Z$ U. Z* C }! o9 p; y/ ?( p, Q4 m/ [
if(!(head->next)). i* J& G5 v- @$ W
{
7 N. F# ]" T; G3 @8 t% @$ i% ` printf("overflow!\n");
# ?* |8 y/ Q4 M) J4 T1 n return ERROR_OVERFLOW;. f6 ]' C. I/ g" n. l
}; O' z! ^$ {" p$ Z" L \
LNode *p = new LNode();
( _4 \+ `6 ?2 Y. ~- A! `8 d if(!p) g- `( \0 a w$ M! M9 r# Z
{
! @( @9 }4 c/ _" b) P5 _; ~: h return ERROR_OUT_OF_MEMORY;
# f$ }1 R2 `7 c8 B$ U) m }6 Z& g0 e( F2 k* P9 s; z
printf("input an number you want insert:\n");
' q; r; z/ c8 k- a2 k scanf("%d", &(p->data));! D+ `. m# @( x h! M
p->next = head->next;4 u, R3 N! T1 I0 G' v) [
head->next = p;
* {5 U* P. t! Z O4 g( [& n$ p" y3 @# e, @0 |9 F# A6 V
return ERROR_OK;
5 C. v" j" R& n V9 D: H1 p}3 o. r9 O& g5 L8 Q6 h4 H& P% `
//删除一个节点
" o- n o' S9 I8 I' e$ h0 Dint Delete(LNode *head, int location), ]: S6 C2 G8 _1 W0 z
{! y4 f8 \& B. S4 l/ a" W: ]& u
int index = 1;3 R2 O: q' `9 e/ F) |3 X# W% ` K' X
while(index < location && head->next) //index 保证指针指向要插入位置的前一个节点,
2 g0 I5 Z) \0 a' o" z( [ { // 第2个条件保证指针越界后指向最后一个节点5 U" c6 u! \) n/ @+ z# ~
head = head->next;
/ a$ h& }2 O" t0 Y4 t! }0 u0 T ++index;
' y4 y. v( K6 A1 k$ H1 a }
9 e c: E5 U% ]) n' n, a: l if(!(head->next))9 Z; r6 K, A7 b) J, L" d
{4 N" e) I0 v( m7 r: ?1 @5 G; `
printf("overflow!\n");% [0 r0 L* ?0 J0 J, s. Q
return ERROR_OVERFLOW;
( }* \9 B: S! w }# l. s/ y. f+ Y* s
LNode *p = head->next;( l' z) B) X$ W( O& @: ?
head->next = p->next;
" E. T# Y7 W3 A7 | delete p;$ @* x) c0 t( [: i7 g+ |' z" q
return ERROR_OK;6 C+ D; q; T: O6 G9 h
}0 g# p2 Y6 s* S; u0 \
void ShowLinkList(LNode *head)( q% }& H6 ~: ?( m3 \* E* m& F8 F6 N
{- \& I' Q8 D/ ]. x0 w& g+ l) Y
printf("LinkList:");
4 T+ d' h) F) w/ Y1 M' A LNode *p = head->next;
3 }6 x- B. Y* C5 R K2 W; V) Y while(p)* n- Y w0 K+ |! y
{9 b2 s8 }4 q$ q# s" g5 ?
printf("%d ", p->data);$ G* J, w/ `. y' i0 K
p = p->next;% y) ~% x! g. q+ ^
}- P1 J3 I+ Z- b- Y/ `
printf("\n");4 N/ p( ]5 T9 x+ n6 F
}$ v. Y9 x/ R; g, u
7 E- B: V$ J1 T* L, r, I; P; H
void main()0 }# I; U5 b2 \7 H; Q9 @- C, }
{
3 U2 k, |+ Z @4 h! d; u / Z- E( v9 i+ u! v, L4 |
LNode *head = NULL;4 Y R$ @! v7 t. A/ q' L
int initialLength,location;
* n5 o4 o8 x: Y7 \% p
& |+ u/ P6 F% |' m$ Z printf("please input an number to initilize the LinkList:\n"); //初始化链表的元素个数: c5 l. e7 v5 ~
scanf("%d", &initialLength);$ b/ R6 b% d, q- u
& e/ `' `& t5 i- v5 O$ g* a, V H if(!CreateList(head, initialLength))
5 _! y) D& w4 K" @" R {
4 H8 `9 t! r5 h$ Z' ]1 v printf("Create LinkList Success! \n");, T# ~; J3 P% K# }/ ~" |
}
1 D. o$ w v- q& N$ C ShowLinkList(head);$ m! g- x2 T2 i0 u( e- m6 v
: w* y$ H4 H U! v6 G' ~ printf("please input an location you want to insert to:\n");
% m7 f+ @1 a0 H scanf("%d", &location);
" e( F4 i* ?1 u% ?# O* J/ \+ |5 c" c& J4 N+ E5 e
if(!Insert(head, location))
2 e/ Q8 r3 L1 G3 @2 I9 d {* j* E' Z3 ^# Q/ t2 K& y5 d
printf("Insert success!\n");% e. q J q; i8 G1 E
}) m4 j- L9 u9 S! V( V! g& \9 Z
ShowLinkList(head);
6 L0 o5 d9 h$ K0 J8 k: F2 \3 m! r( n" R
printf("please input an location you want to delete:\n");
8 Y. Q$ x& s$ k4 y3 h scanf("%d", &location);3 `, P: }$ r2 s& @# [
; Y% Z" @7 k1 L if(!Delete(head, location))+ ~# x H( q* Y4 d* x, k: O
{0 A+ [2 F7 G2 j
printf("Delete success!\n");
% h1 l8 }: E' L' T; D }, z- _/ g5 f+ y$ l& L7 W
ShowLinkList(head);+ t7 M% p) C; V0 p' S( P5 w: A2 l/ o9 f
}
4 \! X2 I4 F3 k) M4 Y" f% O' X! A# x1 _4 U
第一题总结:把数据结构中的基础打牢(不可能一直考链表)
( A' ~& S- n1 x- E+ W% Q5 W
7 n0 W% U% u! s第二题- Z, v8 J0 U6 |3 X, \
英译中
' [( B& m$ H: X- ^! V7 P M n英语文章:长度 和难度都跟四级中阅读理解的文章差不多+ [/ W; P$ Z2 L0 m3 U
1 t# X( J9 O V8 ?; F& R0 p+ Y3 f ?" K- b
……7 P' O4 X& V: G u2 j: e" L" ]
0 S4 N' |4 s9 Q. P) B
http://bbs.aftjob.com/thread-607297-1-1.html# S$ Z# j/ W- v1 |* ?/ ^
/ D6 i- \1 ~1 w5 h3 p N( |
——% M" F4 l H3 b, F- }: O5 g) {9 ^
微软(Microsoft)求职俱乐部
+ w0 l* j, s, m9 Ehttp://bbs.aftjob.com/group-100-1.html
2 }0 I+ h7 a7 ?" l$ S! L5 F8 k# g6 ~2012阿凡提求职手册——IT行业篇 H/ Z' z j) m- z0 k+ x
http://bbs.aftjob.com/thread-607158-1-1.html
) x; x4 `! a; ?+ Z U. p—— ; e, y+ X% \8 W' i
微软笔经篇; Z4 h3 n; I) B/ i+ g' e0 G6 v) L
http://bbs.aftjob.com/thread-469556-1-1.html
. [7 N, c/ d% ~- k4 q* W2 D6 Y3 i W微软2007年笔试题
, o6 E9 C" I& c8 M$ I% H( {http://bbs.aftjob.com/thread-607298-1-1.html
4 J8 `* l/ |( y* c1 T6 _) @. g微软今天的笔试题目(12月28日)
4 a, P, i! [1 Y0 R! t- O# uhttp://bbs.aftjob.com/thread-29793-1-1.html# V; k c1 t1 P' l) h4 R* Q, y1 r4 O
微软笔试题整理4 t6 E: _1 n# V. W
http://bbs.aftjob.com/thread-607299-1-1.html
: C6 H7 H6 y3 K4 l" t——
: r( v4 q/ P& j2 u! r阿凡提(aftjob.com)求职社区
9 w" C3 i9 O+ Z阿凡提求职俱乐部-国内第一家网络求职俱乐部,提供企业求职俱乐部和高校求职俱乐部交流平台。
# W! o' j j( ^% B9 K——
5 K# l9 W; ]' |" N7 B4 Y0 G# p2 j% q8 _# y( Z9 R8 X
0 P0 N' Q0 I p3 p3 [% z
|
|