|
|
Microsoft实习生面试时的笔试$ L" e, o9 F* \ v( Z# L& L1 |" ]
( C5 | k- h7 m5 g
zz
( O' H: ], n4 d* T* O' B& P; g3 Y) w( k# e
(08年微软实习生)
' T) Q' H- ?9 X% L; U S总共2大题8 F/ S% h# i- m3 h7 E$ F
第一题 (数据结构题)
5 V; Q1 d8 U: n7 H+ g读程序 补充程序中缺少的部分 难度不大
! m S6 }2 p5 t1 @3 J4 M$ o) B! l( ~, F2 q8 B3 T9 s
本次笔试程序的内容是数据结构中的线性表的链式存储 * X9 m9 ^) A6 S+ V7 ^3 y
程序中出现需要补充的几个主要的函数:线性链表的创建,插入,删除,判断链表是否为循环链表。
5 m7 U! t. K9 M! Y程序用c语言描述 ,指针一定要掌握好。7 B- N2 ?8 G. J) W- ^5 @3 |- j0 e
2 k( h ? C$ s, q. W
以下程序自己所写
, a/ w% Z( G) N, p) B6 j( R仅供参考:, u' L& @# [. z9 d
(以下程序在vc6.0中编译通过)
4 v: g! n$ [/ A, z- ^7 `! F \+ ~0 \8 v& k( A
4 F. @# G& p6 a6 N# Y
//Copyrights huchen " l6 {! ^1 d5 Y7 Z' D
//
$ d4 N7 H2 l& n$ E' x//描述:程序描述了单链表的创建,插入,删除
4 q# |, F, `. s8 f//注意:判断是否循环链表由读者自己实现 2 {6 ]: S6 t' R
//
& }" c! \6 B. i& e4 a//作者:胡琛 <huc87@126.com>7 s4 e" T4 B* ?
//日期:2007-7-22, 16:38:25
# v; `( D0 \$ E/ B4 p. Y+ T#include <stdio.h>( w8 h2 L/ x8 V. ^
& O. S9 E5 L% t- B0 ?5 Q#define ERROR_OK 05 ^. I/ s$ }1 n
#define ERROR_OUT_OF_MEMORY 1% {# [: s% D; [
#define ERROR_OVERFLOW 2; ]0 A% S9 K/ e9 Y
' G8 y( e m0 e& t; e# q) U. A# ^
struct LNode ) O/ [! A& r1 A" T" F3 `
{' A4 X' |! \& t" d4 ~3 t
int data;
, Q. E' O% \' m" |2 i LNode *next;
3 W8 K( v4 y+ y1 E" V8 X};+ z& {! \2 z. n- H
//创建一个链表 length为要创建链表的大小, head为头指针
6 F3 S- f# J7 [) i% E+ ^8 ?! B. n& O+ ?int CreateList(LNode *&head, int length)
3 h$ e# O) j6 `' n6 S2 L{
7 {" o0 E" V8 |1 l7 c- O head = new LNode();
5 d: V6 E; ~; H$ f. p. \ if(!head) r7 U$ J! c- G6 i# H: }9 @, @
{+ v% B2 f- N: y9 c' O
return ERROR_OUT_OF_MEMORY;
% ^4 y5 H5 i3 u: b9 c }' ?% @1 e! c! h: }4 S$ I; F7 B
head->next = NULL;0 _. u8 c( A2 ^- r
LNode *p;
/ O* v# @% ?% T+ L, J printf("please enter the element:\n");
& V/ M+ n- A3 {! F for(int i = 0; i < length; ++i)* V5 i+ u/ }, x7 r& n
{
0 n0 E+ i D W- k( I p = new LNode();
1 L& C. e* W5 b$ j) T, t/ A if(!p)
' \6 z$ J: V: [+ y" } {
+ ~$ e8 U6 j2 d. A6 [; [# O return ERROR_OUT_OF_MEMORY;# v3 }7 a7 ]3 y$ Y$ e, w: T( t' j
}+ q3 R e/ k; b' R8 t0 A8 H
scanf("%d", &(p->data));
6 v# A( |- `8 }$ |* M* j+ Q* D: b p->next = head->next;
* z+ D% W" y# M* y7 ]8 Z head->next = p;' v' `# w3 D: Y& J
}1 F; L# p% A2 r1 u
return ERROR_OK;9 @! A% k& a) d5 \5 [/ ^
}' Q" S. ?7 [# ^+ X7 A/ T
//插入一个节点
$ f% ~. {9 j$ ?& w7 Z c3 z' mint Insert(LNode *head, int location)8 X1 Z% g& H) I# Y( Y( ~
{# w, p" m) @" f0 U, T
int index = 1;
7 z5 ~) n1 E( v while(index < location && head->next)
v! l4 G& A" `5 ` W& k. R& _ {
7 g* Z6 S, w5 d8 C( r' r+ A head = head->next;
% i% ~; e3 h$ ^ ++index;$ r: U: W: h& T. T
}
J4 a/ r9 t0 \9 |; c4 P if(!(head->next))
: n8 y# g0 K+ Q! f {
: o4 ?" l3 D F3 p4 y, r! u printf("overflow!\n");
; I8 [7 `( O7 x) N& g! K$ f return ERROR_OVERFLOW;/ ?- Y( G, L+ B0 H
}
9 f. n% T8 |! k! e1 @/ \' g LNode *p = new LNode();- p4 b. w( o# O
if(!p)
/ P6 T; ~6 s# M7 D/ h) ^7 a n {
6 o- M- u. w# }( n u* I return ERROR_OUT_OF_MEMORY;2 e$ }. v) A8 D* V
}# I# m0 I ^9 `
printf("input an number you want insert:\n");8 N( U/ L$ T/ d7 P# e. Y
scanf("%d", &(p->data));' ?% r7 [' ^- B, o! F
p->next = head->next; `$ q. V' X* F: R' M( w1 A
head->next = p;5 y6 e8 |5 n7 L, z
& b0 Z2 |' K) U" K$ H G return ERROR_OK;6 |2 a% Y( M6 j
}
/ m: E# K6 f4 ], _5 b1 s8 U2 X//删除一个节点
7 x4 }0 _2 _" m( s- Sint Delete(LNode *head, int location)$ B- Y1 C. \# h4 P. h
{
' i' R, E0 J9 h: P0 z5 T int index = 1;
4 h. a8 I1 h# Y3 @4 N, s while(index < location && head->next) //index 保证指针指向要插入位置的前一个节点, * N% n( B8 ] I/ m9 `
{ // 第2个条件保证指针越界后指向最后一个节点, A. m, G# {! `6 C6 D
head = head->next;& h5 J: t7 b$ l: S( V9 m
++index;
4 R5 j# }9 v* D }
% O- ^0 _2 y# Q0 a2 ~; \) b) A if(!(head->next))
% p+ z5 o; h7 \- Q4 p8 t {
& }$ M( S. u5 P% X9 A4 ~; {7 B printf("overflow!\n");
3 j- S- t$ @) C: m return ERROR_OVERFLOW;
. M% c" Y9 e/ z$ r& B+ [ }7 ]6 O/ [' @' [
LNode *p = head->next;' I5 v: B- w) p6 k8 w, H
head->next = p->next;
! Q$ e) z$ b. m3 L, Q4 P* |" H! ]. m delete p;
" G. p& O5 E2 L2 Q return ERROR_OK;! z$ D1 j1 ]5 @! N- V! v1 |) Z
}: `* I; w3 \8 w0 _, D$ l
void ShowLinkList(LNode *head)% T0 k9 c, V: M1 _5 ^
{
* n; e+ T/ c) W$ s printf("LinkList:");
}7 S$ s p3 h) o }: Q. s LNode *p = head->next;$ F; I" r3 x8 D) w4 ^8 @0 m
while(p)0 Z' ]- ^8 u0 y) N
{, v: C+ J6 q+ E. y5 F
printf("%d ", p->data);+ L( s! A" r6 ~. v4 W% a. q
p = p->next;
- K' r8 Y0 F( H% n }' |; G$ {' @5 X9 g: {/ P
printf("\n");
( u7 b% q1 T+ G& r) W# _}: K) j5 F9 M) L8 P/ g
* b% S1 `9 R: W' D7 a' \' zvoid main(). v% q- n7 |8 t# h; u0 w
{8 s% D* h9 R/ L
3 ]# X' y0 U2 k LNode *head = NULL;% x2 f2 m' G j$ d/ S( v2 e
int initialLength,location;$ x& K' R1 ^9 I, ?4 c; P, @ t7 _ ~
# J" u8 `7 v ~9 D6 b( i1 p
printf("please input an number to initilize the LinkList:\n"); //初始化链表的元素个数
! m* P- N9 H8 K8 E3 |- t. J; i, @ scanf("%d", &initialLength);4 e' k! L% C0 N, ~) ` v# _* A- Q9 l
( l/ v+ {3 f" Z. O* H
if(!CreateList(head, initialLength))
+ L& y4 ?% |- Z, n! G {
1 Z4 W% A6 ?) E5 H. u printf("Create LinkList Success! \n");4 l! ]2 Y3 L4 e5 k' a
}' P( b! w% I6 F5 w1 X
ShowLinkList(head);. K- ?0 n4 u! \7 C3 X
! H9 e1 R/ K3 E' f' E% E9 q) q printf("please input an location you want to insert to:\n");# g0 G9 C* J5 h5 c
scanf("%d", &location);
! u# _4 x# x+ Q( O2 h# G) l! |0 s8 h6 o/ L2 y
if(!Insert(head, location)) z- k; H4 R/ V2 y; ^
{6 T, @! E0 B0 [
printf("Insert success!\n");* b7 c& [( s3 v7 ?
}9 _8 I' s7 `5 @0 l! |
ShowLinkList(head);) |2 {0 T+ b9 W- }# K( e) B m: f
) C) @! U, A7 \% b' l( u) Z printf("please input an location you want to delete:\n");
`5 U# g% X% g$ X6 U+ A+ m7 F scanf("%d", &location);/ C! t. ~4 m- o- J
( E% L: W) a: C1 d4 V. } if(!Delete(head, location))
6 q7 f- z W8 k7 t w {& Q; i; v C; ^. U T; B/ [
printf("Delete success!\n");
5 I r" t" n- C0 p$ |) n3 ` }
- M, @- b7 ?# T2 v ShowLinkList(head);, O) K; r8 s' ^, a- X& J5 ~$ H. y
}! I8 ]9 @) Q1 e
; U1 Y* B u7 l% ?7 N7 O0 @第一题总结:把数据结构中的基础打牢(不可能一直考链表)
" a- D# a; F7 @& c
7 E4 t% ~3 n6 |第二题
& V1 l1 u4 m+ q" f4 L英译中
$ [' @, Z) ^5 h6 P) E, l英语文章:长度 和难度都跟四级中阅读理解的文章差不多4 E+ |5 ~, i+ \& e$ x
- T3 l' ^( s3 c% n
6 x3 H- {$ Q& O# |2 P" s……
' z3 W7 ^8 [# H3 z$ T
/ Q1 W5 \. W6 d5 n D S- N# fhttp://bbs.aftjob.com/thread-607297-1-1.html
: `" z( I8 `9 y
0 e( P) R* J- Y4 i+ v——
" Y4 q& L9 A' v/ h e微软(Microsoft)求职俱乐部" v d* t7 e# T! `2 p* L0 q
http://bbs.aftjob.com/group-100-1.html
3 d+ ~0 T* Z% ^9 {4 V2012阿凡提求职手册——IT行业篇
G7 N7 l. i- A9 q# r z4 Yhttp://bbs.aftjob.com/thread-607158-1-1.html
0 G# {: ]7 y5 y7 n' Z# T0 S——
; J) Z$ Q$ R' x微软笔经篇
* K \% k/ V$ _; Ohttp://bbs.aftjob.com/thread-469556-1-1.html Q) i7 w6 x* [; J, x
微软2007年笔试题
. Y; ]/ m7 U, R- Hhttp://bbs.aftjob.com/thread-607298-1-1.html" l; J8 V5 m/ b& W9 H
微软今天的笔试题目(12月28日)- D2 `9 E5 t. D$ P) W! k C
http://bbs.aftjob.com/thread-29793-1-1.html/ D/ \: r! {9 G" b
微软笔试题整理
3 z* `0 N2 b. ]4 N& c. ~' Dhttp://bbs.aftjob.com/thread-607299-1-1.html
( O3 }/ K! w& B& t——
l9 T, e; N' ^0 ^阿凡提(aftjob.com)求职社区
! x' y; f3 s4 |7 Z! L阿凡提求职俱乐部-国内第一家网络求职俱乐部,提供企业求职俱乐部和高校求职俱乐部交流平台。5 Z' z: G d5 k
—— 6 H$ a4 b* _! s; x7 i7 O# r3 y: K$ u
) m6 F8 [8 W' W; y# h
p* r3 o7 A o7 G, _( A Y |
|