|
|
Microsoft实习生面试时的笔试- K6 H' {# R3 _9 S; U
: e; h$ c+ V0 m1 w+ p: M8 j
zz1 a2 j% i/ d" c& ]6 }3 c5 y
5 b; T }& y) o- @. X9 v (08年微软实习生) - ~: @' g. c8 r ^3 v4 V
总共2大题* N% `1 Y( V* `5 s' \. T5 O/ D
第一题 (数据结构题)- h: K( h# E4 Z
读程序 补充程序中缺少的部分 难度不大 4 `* s" [8 A1 K. Z) J* n8 u* P3 M
4 p- P9 B4 j+ R4 H" B5 V3 L
本次笔试程序的内容是数据结构中的线性表的链式存储
% s+ t& i. R3 s. f程序中出现需要补充的几个主要的函数:线性链表的创建,插入,删除,判断链表是否为循环链表。
' Y6 z `1 ?) I程序用c语言描述 ,指针一定要掌握好。& w( k) {& k6 r8 u- ]- V9 W: m7 Y
( c9 B8 g p6 a5 |7 L# C y
以下程序自己所写* K _+ B E9 g& B
仅供参考:% N+ t: d4 {1 e. w9 E
(以下程序在vc6.0中编译通过)
" O8 N2 p3 `+ g( P% M$ M/ y$ G/ ^- M3 B: b) t% V d) R$ E
) x0 h' G. L9 t! W, p; W
//Copyrights huchen ( t8 V' q' Z% M4 w
//3 E2 U8 @9 r9 v7 Q3 v
//描述:程序描述了单链表的创建,插入,删除
4 p/ y4 C; }; A: P; I' s4 U) u//注意:判断是否循环链表由读者自己实现
% c" F/ i9 y1 P2 t6 A0 k% i//
4 a0 Z! B1 i) `& h( J; l# l//作者:胡琛 <huc87@126.com>
; o- v% K& U8 U5 l: D; s3 a3 e//日期:2007-7-22, 16:38:25, I. m ]+ ?/ J/ Z
#include <stdio.h>) d# X5 U, X; N/ l# \) `
( P5 t3 e5 M; t- g1 y" y: h#define ERROR_OK 08 U! o: g) H+ n5 [. y% k3 F- [
#define ERROR_OUT_OF_MEMORY 19 c9 X# g! I& f0 f {) s
#define ERROR_OVERFLOW 2
7 o# o: C+ u- C, f; Y9 T) B3 e* U
6 P/ k; p, k% ]struct LNode $ \5 E0 Y* c) v3 v I" y9 v$ |, v. `. Q
{
* g; U& D( Z+ T b5 H. i, Q3 T int data; + a! i5 e2 T3 g" B! I
LNode *next;5 j3 L4 A5 P- t% g2 Q4 w: V
};! J6 ?% D/ d$ n. b# ^2 K2 Y3 X( N
//创建一个链表 length为要创建链表的大小, head为头指针- v7 O8 I( Y u" |: {6 N A* K
int CreateList(LNode *&head, int length)
2 O% m7 }7 j$ W) I5 e, R{2 M4 o0 F" P% J! `/ i
head = new LNode();6 w: q6 k" E3 _; z4 I
if(!head)
& l# V) S8 e" P* V* I {
1 N C7 O8 L/ i0 e+ {( i8 K) z5 m2 D return ERROR_OUT_OF_MEMORY;# L# }0 e2 O2 v; \4 U/ y. O
}
: d" G* Q9 C1 y% a5 [2 r8 j head->next = NULL;6 O1 j# a* \. k: _# h8 R8 \& D
LNode *p;" ?8 u* I2 [ I
printf("please enter the element:\n");) q" k" l+ j c {$ G7 G
for(int i = 0; i < length; ++i)
# K, B, n, j \ {
- U1 M' f6 ` U$ V p = new LNode();" P9 C2 J- k7 V/ A3 E' o K1 u% H
if(!p)
( J0 ?! a) Q. L9 x% r) Y" b {- e' u/ u* G& T9 C8 E; Z
return ERROR_OUT_OF_MEMORY;
: n+ d& Y# P* k. o! k; r8 r+ n }2 w% E3 i8 H1 R* e1 p* N% w% u9 `
scanf("%d", &(p->data));# S# u6 w! ^+ q& R5 Q6 I7 k
p->next = head->next;& j5 v. s; y0 a$ x& K0 s# b1 J
head->next = p;
$ ^. r0 s- o+ n2 k }
8 ?9 s1 `2 @+ k) T' N, h w$ k$ ^5 R$ u return ERROR_OK;: H2 w" V$ X) l4 s7 P
} W4 U3 M- A" D4 r: ^
//插入一个节点
; q' M& q& G2 u; q Tint Insert(LNode *head, int location)* s- Z: {5 B9 l, c7 f; q! ?8 X
{
8 ~, e- S9 T! I& w" Q3 V int index = 1;
! `( W# \1 |: N: n T7 E$ x+ B while(index < location && head->next)
$ _+ r" R- @5 g2 R. d J: _! L9 x6 S {
$ M/ q" n6 i- O# X head = head->next;1 V8 m. ]8 Q' @; c, |
++index;- |* i' t! w) J. j7 g
}$ |. h. R3 \- |2 H- p! c
if(!(head->next))" {( x2 ~/ t0 ?# J
{' Z6 ~: m* t4 W9 H
printf("overflow!\n");
3 U. P! T, a4 X& d1 q1 ~3 e return ERROR_OVERFLOW;
! z; ~- l/ v$ _3 L0 f& v: N, }. m }0 Z% }0 j% X# Y. b, g6 X, A H5 N
LNode *p = new LNode();
3 O& L# z0 W- y/ e l if(!p)" j: \; z: m. y% J
{4 l! Q5 w" t, [/ [
return ERROR_OUT_OF_MEMORY;
O' J+ U6 j5 N( _% r }
0 z6 C7 |' _3 P, C1 } printf("input an number you want insert:\n");
. x6 {4 O5 j7 B. H" {- M- W3 G, u scanf("%d", &(p->data));% A* d* ?9 Y2 g0 D. A
p->next = head->next;
" R7 H5 y' q& d/ o head->next = p;' t; V$ {% I. N0 }7 h1 y, W
( m+ e( A2 ~/ N8 C* s5 U
return ERROR_OK;
. W3 K6 Y/ v, E/ U2 r2 i9 C# ?! s) a- g}
% ~& d4 J1 X8 v* a5 E3 V6 ~+ u$ \//删除一个节点
: O; X2 u* M- F0 G) l1 T3 f: p. X% {int Delete(LNode *head, int location)
5 B f4 ^8 w& A{- G0 B' D& l1 J. A
int index = 1;
0 ~9 u/ ^, S& l0 F1 A: P$ D while(index < location && head->next) //index 保证指针指向要插入位置的前一个节点, ) f' t5 ^" i) r1 \, a! e
{ // 第2个条件保证指针越界后指向最后一个节点8 e9 V6 {# `& d
head = head->next;
J* E# N" o' F. t7 I ++index;
) r: s0 r5 L* l S' R' O% p }
) W2 {1 I6 a9 w if(!(head->next))3 f0 j0 ^1 z# h* i2 B6 E0 @" r
{
: w' C0 A6 V8 o2 \ printf("overflow!\n");
. e; @2 s2 ?9 J5 S8 R return ERROR_OVERFLOW;* n+ \. @# g3 _; x' u, u. Y6 q( f
}8 o: n: O+ @4 ^! t; j U6 X/ i) c+ A4 _
LNode *p = head->next;8 g* C( F# T. ^+ e+ P- n3 F
head->next = p->next;. _. ~' q* J5 T# x! `& @
delete p;1 J2 I6 Y! v1 i6 x0 Z
return ERROR_OK;
+ h& s. Y' }' R}
% R3 B7 g4 E( E+ Xvoid ShowLinkList(LNode *head)) @! m/ q( @2 @% X7 v" S( u
{
+ @1 U1 K; U1 k printf("LinkList:");
. {& f# q: a4 H# q* V: y LNode *p = head->next;& V/ x4 O5 ?9 t" t ^% ]
while(p)9 V& Y) t, ?! S
{
- Z9 V* X# B H( l I printf("%d ", p->data);" o* v* C) P, D( y$ W2 }) f
p = p->next;% [: ?9 d: |' ]7 t( M
}2 i! j7 H* P+ B
printf("\n");
Q$ u( U4 c& N9 H}
, C1 o9 R; |0 n: Q
2 u% ~3 F! E+ Y O& ]8 Gvoid main()2 C- M. N& t& W
{
7 v# h; O8 f8 ^& x! G& p1 j4 v* E , Z, t: i2 m, E% g+ p
LNode *head = NULL;
- U- ]! K$ X2 g1 v+ n x* d int initialLength,location;$ ?7 s3 g; R: o6 f+ Z& L
6 h! e- i" w" k
printf("please input an number to initilize the LinkList:\n"); //初始化链表的元素个数
5 z# C/ a5 K8 L) Z k% s scanf("%d", &initialLength);
" f* M4 `' S$ d. D; h6 l" Z" q; p
. w& N2 m+ z" X9 y- e if(!CreateList(head, initialLength))4 v# l/ |0 ~# q3 S( [
{
. N# w: z& f! ^ N$ M7 R0 F% v printf("Create LinkList Success! \n");
+ a# H3 a9 L5 \# U ]9 B }
. y. q% Y6 J4 o/ `' E ShowLinkList(head);- a+ s2 _0 f9 a5 P& ?
2 E/ ^1 v2 ~. V4 a printf("please input an location you want to insert to:\n");
5 A& j2 {" W+ N- B& g scanf("%d", &location);
3 Q/ W4 W- N2 R- S( _7 i; W" \6 J* u; {6 J: M# [
if(!Insert(head, location))" s: u* B" Z/ X' f8 Z" Z7 N, {, }
{3 }; `& s0 o9 ]1 d- d
printf("Insert success!\n");
) E1 a( O! j* y/ g1 n1 R }2 P5 t1 j' T( L) j. p
ShowLinkList(head);; T% h) A$ U: N+ ~
+ H4 v5 ?, ~$ A0 N
printf("please input an location you want to delete:\n");* Z v9 c: s8 R& ~/ U
scanf("%d", &location);
8 q' D0 ]* O9 h6 V1 h! L7 w: J2 n8 s0 r+ W% T2 w+ P
if(!Delete(head, location)); ?$ z6 K: w& Z) l
{2 k, h, R6 d, K* a
printf("Delete success!\n");
: x1 A, ^: A: K# a }8 U7 I/ \9 {* j
ShowLinkList(head);
4 ^7 W: u8 g, h) C# Z: b- l& B}
9 t3 x" X0 {. }2 u0 p8 c8 B: Q7 W( a/ O, l" t
第一题总结:把数据结构中的基础打牢(不可能一直考链表)
6 X. @7 } Q; t- B) y6 o
2 B' R$ {7 L$ n4 B1 A第二题$ o$ W: a/ I7 g
英译中1 i- o2 \& X+ K6 w
英语文章:长度 和难度都跟四级中阅读理解的文章差不多2 X4 i4 _2 c. }. S% q m1 N6 L
9 H% b; e/ n8 v% r
7 f6 ~8 C8 x/ [' W. n2 g……
0 a1 O1 u, ]6 |3 ]2 i9 E
7 Q# d+ }0 G) r! `+ @http://bbs.aftjob.com/thread-607297-1-1.html% r$ `+ q0 f8 g l7 F
& P$ T' @! g/ b* w
——- q% p* L3 C$ W+ k! u
微软(Microsoft)求职俱乐部
. t$ _, `* f4 @3 v% P* L( Nhttp://bbs.aftjob.com/group-100-1.html
6 A+ g. Q; J, ?& D. p4 E2012阿凡提求职手册——IT行业篇 2 i8 S6 z/ P }5 |, D
http://bbs.aftjob.com/thread-607158-1-1.html
6 ?* R3 k( B6 r——
- p+ M$ J: P0 O" o0 ]微软笔经篇0 Q" z6 F( F( v+ F% f
http://bbs.aftjob.com/thread-469556-1-1.html9 s1 V& K+ i# P
微软2007年笔试题! Y4 {5 E4 J' g2 o: T, }0 E$ k
http://bbs.aftjob.com/thread-607298-1-1.html- n, R4 z, D7 `7 I; O7 D- \. M
微软今天的笔试题目(12月28日)0 i3 |5 g- O5 r z& R6 \0 h
http://bbs.aftjob.com/thread-29793-1-1.html
* ?) j5 D5 q5 m. ?微软笔试题整理
P1 x* ] J2 p( B# Bhttp://bbs.aftjob.com/thread-607299-1-1.html
4 s& }4 o2 A B1 [- I2 F——
% j4 O& [3 j- d' \% S, v7 y: H阿凡提(aftjob.com)求职社区
+ @3 W% P9 U- _+ Z6 K阿凡提求职俱乐部-国内第一家网络求职俱乐部,提供企业求职俱乐部和高校求职俱乐部交流平台。5 N4 }/ `, [7 s
—— 2 V7 I6 K' F6 g' m7 }, s
% H0 P( c6 X- e' @ m0 M H l& T# M$ o0 ?, q3 L
|
|