|
|
Microsoft实习生面试时的笔试 q) s% h4 f8 U: ^
5 k# ~: J' W# ?& ?) b" e
zz# h1 T& B) ~' O* D# T; Q f
x, A$ q% y( Z# k7 p2 z- Z0 z0 r (08年微软实习生) ' H/ p- j/ H/ V$ k1 I
总共2大题
- y+ q7 L9 q& f+ X; t# K第一题 (数据结构题)9 e3 i" f2 \4 Q7 M$ d% T: S; e
读程序 补充程序中缺少的部分 难度不大
7 ^2 }. {" r/ X9 ^# B. F6 A7 q( h5 w+ r$ x! ~3 R/ C5 F( c- ~
本次笔试程序的内容是数据结构中的线性表的链式存储 # d R' l! a7 f/ O7 C" @. r+ A
程序中出现需要补充的几个主要的函数:线性链表的创建,插入,删除,判断链表是否为循环链表。0 p0 I; k1 J+ P8 t1 O( A
程序用c语言描述 ,指针一定要掌握好。4 _) I% u- j1 p( m$ r+ M0 F1 c# v
' ]- N$ a( A0 f- p, y1 {* r以下程序自己所写% O1 g1 D c7 q1 d9 d. A# ?0 }- ^
仅供参考:5 q; l% o0 z, ], x
(以下程序在vc6.0中编译通过)9 w a( d3 y0 t1 I
- U) t4 K8 m1 O* F5 g: \
6 Z7 X& K; ~5 H0 C
//Copyrights huchen
' K& N _* `6 h/ ^4 g//
9 ^. Y7 B9 \+ B: Z/ x6 m$ C* i5 d# J- T//描述:程序描述了单链表的创建,插入,删除
% R6 Y* ]' u& u2 p# q7 ~( F//注意:判断是否循环链表由读者自己实现 8 Z' q) O, {6 V# b& L0 T! I" P& w
//
) t! l* X$ e& i3 M1 c8 a//作者:胡琛 <huc87@126.com>$ v/ P# Q0 D* W: ?# Z- N
//日期:2007-7-22, 16:38:254 z4 o+ ?( T7 \3 e: |
#include <stdio.h> I) U# y& U1 W" ~) g
! {: q- H' ?; _( @" l#define ERROR_OK 0( r T7 l2 t9 h$ r
#define ERROR_OUT_OF_MEMORY 1
2 _1 x h+ c4 o) h6 Z- M0 ^$ V% u! e#define ERROR_OVERFLOW 2
! W% c) d, M: b! A$ D- L% r' H( ?. |/ Y
struct LNode ! _2 v O3 P9 K/ b/ t3 h
{
. T y1 b$ v* K8 { int data;
9 X X5 L+ H8 S) Z LNode *next;) X1 p2 _% }1 r
};* `, B6 [7 X4 h+ i" Q3 R
//创建一个链表 length为要创建链表的大小, head为头指针( I }$ w, z' c
int CreateList(LNode *&head, int length), ~, ~% m6 m! e. z
{
0 ]! M! C) _- `5 O D; Y! G6 M* }! n head = new LNode();
" i/ K& A- L: x0 E4 H, V# H if(!head)
8 h6 U8 J) F3 {) N# Y {
& t8 ~# G ?% O; C return ERROR_OUT_OF_MEMORY;
5 {" n& f# w2 Q" c8 g4 F9 f7 Z }4 q7 U. R" X# V8 V5 I
head->next = NULL;
9 d. V$ n! J: K% n( w% f9 ]* ] LNode *p;; m3 F! g# ]0 i& O1 `# R# g
printf("please enter the element:\n");( O* @+ T( }* }: f* H
for(int i = 0; i < length; ++i); L9 t. R5 h" _( V) g' Z _
{
, i/ X8 u9 P: u; ? p = new LNode();" @( |; [9 N' i0 X$ c. g9 O
if(!p)
% S' h' L: M w/ B% r {
& |3 @1 r# i. C$ D1 }2 Q return ERROR_OUT_OF_MEMORY;+ B2 {: p) X* H! V
}4 N. _4 Y( M9 o3 P- ?) d
scanf("%d", &(p->data));
6 o9 W5 Y7 J/ L0 {) `) K p->next = head->next;; |# y9 w, M+ ~# |' K
head->next = p;
; }# f2 V8 q7 x% R }$ z3 ?- ~ Q/ a: D; T
return ERROR_OK;* |( B& i4 m0 o7 N2 \) ?7 o% G
}7 P$ x# P2 f1 I5 L/ z
//插入一个节点 ( t; K1 u- Q4 y
int Insert(LNode *head, int location)
7 q1 P: Q) z) D" r6 n# d{
9 p% g% }. U* d# c. F int index = 1;
2 I, `, D {; ?0 o+ N: s6 e while(index < location && head->next)
5 }& h6 b" y. ?4 j3 c( C) F {
4 D% K3 a/ ?6 K% B- t head = head->next;) j/ y5 e3 z1 J
++index;
* D3 r1 l8 R# k, K) O2 m/ @ @8 D }
7 U/ H* l5 T: l7 Y if(!(head->next))- k) b8 d3 ?! ]9 ?* [
{5 e. d- @7 U6 S, a# y* h, \( f
printf("overflow!\n");6 q% D- P5 J1 J# w# |+ }
return ERROR_OVERFLOW;
( I9 X+ K8 ^) b% j& l% Q }7 H: }2 _% ?6 t4 ^- [$ ]
LNode *p = new LNode();0 I4 V" h+ U6 C# k7 M g
if(!p)8 e ~! W/ s0 s' {3 p
{) p' Q, b# a/ |! @0 e. S" V
return ERROR_OUT_OF_MEMORY;& O! i1 g) i. }5 J; } Y, _
}# s( Y* A: Y: y7 b9 R( @$ ^' ]% d8 H
printf("input an number you want insert:\n");9 W5 {9 Y; a6 z+ F3 w# `
scanf("%d", &(p->data));
' Q" K2 h* D4 R4 P8 ~ p->next = head->next;$ S/ z0 E* ?7 d% t; Q6 L# P! ^
head->next = p;
% f$ d2 [8 j& ~7 S3 O( `7 I' u: O5 J' A
return ERROR_OK;
( m9 e+ a/ J9 C* F" K" ^}
* M1 ]" T, b* [ R5 p% U, ^//删除一个节点, E+ c! G6 C o. y3 R
int Delete(LNode *head, int location)* ? F+ |+ U% {- x$ h
{+ ^5 m: u5 a$ @+ V3 C/ W8 Q- a
int index = 1;6 i/ B8 _2 }; s4 s0 K. M# p+ F
while(index < location && head->next) //index 保证指针指向要插入位置的前一个节点,
0 @; z8 g( s: P3 [9 w { // 第2个条件保证指针越界后指向最后一个节点
* _+ U5 g. R, W) h head = head->next;7 o& ^) {* |9 m) d
++index;
+ w6 P. a. _$ `9 x) x }! ]. q0 q, d, H; ^. w4 I8 b o
if(!(head->next))
/ D. ~1 B0 H0 ]9 J8 d4 r {
6 D' @( i) s! b5 y- m printf("overflow!\n");
: ]' z, m- E# Y return ERROR_OVERFLOW;
1 A2 B$ V5 ^( R$ |# r9 ^# a1 \8 l( U } ~* r2 P1 y3 J# J7 N
LNode *p = head->next;0 W) D/ J6 n/ J
head->next = p->next;: L# \! h& A h0 \
delete p;4 D7 q7 B' f8 G( z4 o: \
return ERROR_OK;
6 l+ M* ^) F' r* q! B c}- S$ ~5 j+ \3 S/ d4 n
void ShowLinkList(LNode *head)
K0 _3 J, O% q{
" ?/ S7 Z. i' O8 o) e: w/ L& s printf("LinkList:");
! e( [/ a9 B" Y5 ]) ^! p LNode *p = head->next;' P: |* |. e2 C7 S+ |7 B* O& } C
while(p)" M! d( Z# R- L* r# W
{6 B& r- ^7 p: Q$ s+ \% |& _0 T
printf("%d ", p->data);0 D# ^) s' R( c" o
p = p->next;
0 E+ [* x6 U5 C0 y1 T }! G- d! s" X" M+ O6 I: n9 l9 P
printf("\n");
3 V" A$ i& L8 ~7 O8 u9 s, _% s" x8 t}
, _2 U; l8 n( a6 `* y
2 G2 }7 w7 i. Uvoid main()
B7 M$ {2 ?1 g, V- m& o f{6 c) n$ [# S5 K" J% m
" n) v# k4 J: {" Y LNode *head = NULL;
, }7 s: G/ r6 a- E7 U int initialLength,location; ~$ u* l+ q; X( \8 t
L2 O- L% t% B! J7 V R5 z& J
printf("please input an number to initilize the LinkList:\n"); //初始化链表的元素个数
3 ?$ k) o( {. S' q scanf("%d", &initialLength);
1 _3 Y- o+ h! o" R* h$ W1 n) f0 e) T8 Z1 l1 t3 C
if(!CreateList(head, initialLength))
1 [1 w, d& m! j) f3 ~% g- S0 } {$ W' ?8 I. r% `
printf("Create LinkList Success! \n");* C2 G( b$ i2 A7 F2 T. r* i, k) N
}& x' b5 e- L* N* T9 z& M3 V
ShowLinkList(head);
+ E1 P: U! Y2 Z- a" H$ Z, a$ X: \, b" N. ~4 T" D* w2 p
printf("please input an location you want to insert to:\n");
+ b& y, Z F8 x8 e scanf("%d", &location);; }* R5 S# ~9 s4 L
" S% p" m# r8 K* U0 r& C+ L
if(!Insert(head, location)); f B" J6 w! \! T1 o$ K
{3 I6 d$ g& W3 }% [* }& t! U
printf("Insert success!\n");+ x/ X3 O5 b) N
}1 B @5 R% {- o
ShowLinkList(head);
8 { H9 Q, [7 z& V4 G$ `+ c9 B% p" [' _ [
printf("please input an location you want to delete:\n");
3 F: e7 v+ O1 A) _$ I+ h9 L scanf("%d", &location);
7 i$ |1 L7 r2 F1 U. s, s4 i0 U. [; H# `; \ N
if(!Delete(head, location))
& f$ r2 w" d, M/ c {
3 Q3 A" A1 ]$ E3 Y( e2 i printf("Delete success!\n");
- Q, v7 G# S3 ]. q( P1 L/ c }
# ^9 m# A% }# w7 I) R ShowLinkList(head);
! K [; c+ p' }4 p M& L" F" _2 p. Z% L}
: [$ ] W+ v" V- a# l5 d* f7 t% c; |9 L) d. S. A
第一题总结:把数据结构中的基础打牢(不可能一直考链表) 5 X% d/ M+ j& v9 C* b/ a' {) [6 p
8 k, h% |. A& U. n0 U
第二题! r: s s( C$ G2 u2 w. U. S
英译中
" ]/ V+ b# Y; Y) \ R英语文章:长度 和难度都跟四级中阅读理解的文章差不多
2 ~- G# X# U0 A2 A+ m2 H9 L( F8 x0 U0 _
$ E# u n7 c# a/ r7 j9 _
……4 ^* E; A. K$ B9 @5 m$ Y
1 n" S' H: |. T" @
http://bbs.aftjob.com/thread-607297-1-1.html
6 }1 ^# B t) ^% v0 f( I# j' s5 _! a+ h4 ^
——
* ?, N3 _/ m/ J" ]$ y. B! f$ J! E微软(Microsoft)求职俱乐部* ~4 Q$ P) K+ r- d
http://bbs.aftjob.com/group-100-1.html% E0 m4 \7 ~0 I& w
2012阿凡提求职手册——IT行业篇 ; ?) R1 e/ V! p+ a4 O( m
http://bbs.aftjob.com/thread-607158-1-1.html' e' O8 Z. W" r/ W- Y4 e
—— 6 H8 M3 b( d: Y$ Y
微软笔经篇. w' @1 \2 `; p8 a
http://bbs.aftjob.com/thread-469556-1-1.html) V! |, h) F {3 ~& E. x# S
微软2007年笔试题
3 y; J7 I6 }/ w6 m( p4 C0 Thttp://bbs.aftjob.com/thread-607298-1-1.html
8 p1 M0 H) b8 M; F微软今天的笔试题目(12月28日)
/ M2 T' l0 S' k4 S8 P1 Shttp://bbs.aftjob.com/thread-29793-1-1.html2 M/ N# f( n9 V- B4 x5 ]( G$ s
微软笔试题整理2 p4 k! V' h3 }" ^
http://bbs.aftjob.com/thread-607299-1-1.html
4 b, k. z: s5 x—— X' y: B- I y* h" e
阿凡提(aftjob.com)求职社区5 `2 _! y$ q& w' S `; X3 o) l1 P
阿凡提求职俱乐部-国内第一家网络求职俱乐部,提供企业求职俱乐部和高校求职俱乐部交流平台。) D, d) e6 @- V; _, l3 ]
——
- h! V+ C9 E" ~. t) l; F' t5 @0 n2 u* c; z5 m
. @5 s5 _( s) @& x" s% E |
|