找回密码
 加入后院

QQ登录

只需一步,快速开始

搜索
查看: 1072|回复: 0

[面筋] Microsoft实习生面试时的笔试

[复制链接]
发表于 2011-5-19 10:33 | 显示全部楼层 |阅读模式
Microsoft实习生面试时的笔试
( s% p- `+ B5 ]' m1 h6 u1 R# B6 {! Y( |  ?0 o6 u" I
zz3 R9 b3 M8 p% |8 T3 [
1 C& I( o( N3 Q
                  (08年微软实习生)             % l+ V0 ?0 D3 ]& Q
总共2大题  W' {6 Y" H1 a. D0 Q: a6 X
第一题 (数据结构题)) }& Y$ B7 N, a6 g8 ?
读程序 补充程序中缺少的部分 难度不大
4 u; x2 @* ?& W2 g3 ~( U
$ L; F3 x' \0 U& B: C# @  v本次笔试程序的内容是数据结构中的线性表的链式存储 ) e. h7 x) a+ Q) T
程序中出现需要补充的几个主要的函数:线性链表的创建,插入,删除,判断链表是否为循环链表。  ?$ a) Z" X, S' m& m
程序用c语言描述 ,指针一定要掌握好。1 R7 u. u. @& H2 D) }
8 Z. }" ^- n3 k. T( F
以下程序自己所写
! _: l$ P! Y; \0 _# S仅供参考:
0 b8 j: c4 Z8 m, }! z4 i9 i0 h(以下程序在vc6.0中编译通过)/ A4 Y2 m" j9 q1 w& k6 ]1 E; K' T

! A8 y* S# B; X4 N+ z3 Q- i# j9 Y; A- @; H9 [6 ^3 P
//Copyrights  huchen
6 E9 h  K7 e8 m+ X7 X6 d4 E$ Y, r//( V; P, P, N& N$ u
//描述:程序描述了单链表的创建,插入,删除 , q4 y1 k  E4 e+ N0 A* s# D
//注意:判断是否循环链表由读者自己实现
$ Y, D$ n: ~) @//( B* d+ ]8 B& Y" b. j7 E
//作者:胡琛 <huc87@126.com>$ {) V, s2 Q9 M7 t4 @/ a7 y' W
//日期:2007-7-22, 16:38:259 Q/ c( R+ }% M  N4 x' B
#include <stdio.h>" a9 P( T7 {! }" w5 `) k

6 y, [5 U5 H6 m* d2 q. _, ^#define ERROR_OK 0
9 H4 e9 i, C5 H: ~7 u, t- ^#define ERROR_OUT_OF_MEMORY 1+ n! e. ~$ [: L1 r$ |: m
#define ERROR_OVERFLOW 2; N5 p2 J* g! t' q% |. Y% ]

( @. [, E& c: Q4 S- ]struct LNode
0 A4 {! b6 z# c9 `: k{
) }/ H. }1 M1 V    int data;
- u4 g9 b& {4 @; A    LNode *next;
' ?: I2 a5 N! l/ R- n};
* \5 ~: I. d: k  {% A& c$ p//创建一个链表 length为要创建链表的大小, head为头指针  j/ a# ?& `" J4 i# m
int CreateList(LNode *&head, int length)
( l- ]' t6 v! _8 Q4 G" ]{
1 F7 I* C. g+ K  q4 P) d    head = new LNode();
- j# A3 E3 J6 y9 i2 G    if(!head)
! `5 @6 q3 q8 T6 ?! g+ g! H    {
, }* `4 @% t$ a  j        return ERROR_OUT_OF_MEMORY;3 u; Z3 \) E) \) J, t1 H
    }
7 k. \1 c7 t9 Z1 U' ]1 f    head->next = NULL;
# _* s  P# n8 g! ~+ B) k9 d    LNode *p;
8 x+ R; R- g6 y    printf("please enter the element:\n");
; b& I. M3 q& m  g( y- L& E) o    for(int i = 0; i < length; ++i)
7 m8 p% Q* B' i    {
+ r& X* h; y! t( g        p = new LNode();
, _! X8 b9 Q# T% h- k        if(!p)) l3 p# W' x6 i/ Q/ {. s- h& q/ q* H
        {
! f# d; Z, L* h# [            return ERROR_OUT_OF_MEMORY;3 p2 e8 e) J* O/ Q( t3 U! n
        }& R8 C/ E0 B! k3 T9 Z) a
        scanf("%d", &(p->data));% z  V* M  o' Y6 u7 b% O2 Q
        p->next = head->next;
: S4 y9 e. u8 A6 y0 @        head->next = p;. G# R* B1 \* \) C! I7 f% \
    }( D( `& \, o8 v& i# _# _0 F
    return ERROR_OK;
) {$ ^% @: |8 X* @' n1 x2 f8 G6 I}) A/ v  }% e9 w: i
//插入一个节点 & Q7 N, B3 c) b& i9 r; q( v7 ?. `
int Insert(LNode *head, int location)2 X) Q3 q. z% ]) C; l2 i' [- D! N
{
7 Z3 P6 B9 j7 B( g2 L1 V- C8 y" l    int index = 1;9 K5 [1 ?  k/ t& A4 W
    while(index < location && head->next)/ d# q' S; V9 u- P3 Q4 w
    {
- P  S* \- V/ C/ _. q* |$ ?2 w        head = head->next;2 r& V  N* Z% `
        ++index;
0 f! z" G5 u7 i) j2 h: l    }
, v( {: z' x( t    if(!(head->next))
6 g3 _) V0 a& {) ^    {3 ?$ u6 I+ Y, P# ]
        printf("overflow!\n");9 ~6 o) h3 n' I5 K; @0 a
        return ERROR_OVERFLOW;
- J, w& t0 u8 s3 o0 I    }. |2 ^" C1 w9 ]* I4 d. y4 L& j6 X* r
    LNode *p = new LNode();
9 W3 c, p' H  m( U. p    if(!p): \! m7 n* }+ L0 v, f
    {# h+ X0 U# Y# @3 a3 B- E" }
        return ERROR_OUT_OF_MEMORY;
# ^( k6 T2 H, v' k5 D# F8 O    }
  ?4 l0 M% @, C4 {7 ~/ ^" D0 ~+ `    printf("input an number you want insert:\n");$ R2 ^* J. k! A# X- [
    scanf("%d", &(p->data));; S( M& [0 B( e1 A0 \
    p->next = head->next;# A9 ^! t. P9 z4 L1 b/ o0 X! g
    head->next = p;
7 o4 r% p2 T- _  ~: H
* I1 ^) S& q5 [: L+ l0 y$ Z7 L    return ERROR_OK;
" ~4 I" V4 u, B6 y}
, n( E" j- C' J! {; k//删除一个节点: @, z- q( W+ r; F& y5 X( d
int Delete(LNode *head, int location)
" T8 Z+ z( F- l' P{9 _; p3 U7 @% q: J# p
    int index = 1;1 @2 Y  X, Y  ~- x" F: B$ M
    while(index < location && head->next) //index 保证指针指向要插入位置的前一个节点, : m$ }7 [$ w4 [1 Q3 B3 Q
    {                                      // 第2个条件保证指针越界后指向最后一个节点5 T+ A1 P' k3 f! c! O8 T& e
        head = head->next;
" {2 E/ q: o/ O' `) J6 v6 h        ++index;" m# h7 |' R/ B6 D# ?9 b* `& S! p
    }% I: x; A  H. r2 F( T
    if(!(head->next))* d: q2 v, c8 \
    {! L) J+ ?# d; I
        printf("overflow!\n");$ q0 _' x) {0 n/ W4 g' a, j* c
        return ERROR_OVERFLOW;9 E( J  t4 q9 X, V  U
    }
. m/ I% ?: w& ?7 z# [2 O8 h+ ?& U    LNode *p = head->next;
5 k8 \% Y! H- m5 B. c    head->next = p->next;8 m2 i( D$ \9 H% a, j" q* [
    delete p;
1 ^/ W- `$ s8 R7 x3 G) m    return ERROR_OK;  \1 U9 g+ Q) G) B0 @+ ^
}! G8 ^* n6 o# q9 k
void ShowLinkList(LNode *head)% m& L3 ^; i! @; r- h# O/ D, n) m
{
7 y) U3 _# w, H' r7 N    printf("LinkList:");1 {0 m: B5 c- Z3 V/ S1 C$ U# {
    LNode *p = head->next;' ~$ Y' }8 V' e" j# ?
    while(p). n3 v8 p& U8 r% n# r9 A2 Q& F$ G/ \
    {
% [% g9 H$ L! R/ y3 |        printf("%d ", p->data);
6 O4 b9 J% p* `5 l        p = p->next;
; A2 q$ @! T( X  S    }: G* K, ~" C& ^4 d, h  u
    printf("\n");' h& N* k) ^# Q& s  a. ?
}# |: m  S1 i* m7 s

" T+ H/ p- G" u( _& J8 `* G1 ^void main()
/ [7 d$ b! D1 J) e& e! [{  r. D9 s* Z7 U( [: u) h
    9 S) i9 I, K0 v9 w5 c
    LNode *head = NULL;
# Z: D- z: W1 W% C* M; D    int initialLength,location;
4 R" g) n1 \/ a) X   
" x  \! k# h0 F/ g" ?$ D    printf("please input an number to initilize the LinkList:\n"); //初始化链表的元素个数
- e. M$ z8 F- M  D3 T    scanf("%d", &initialLength);
2 v9 \  x  ~5 F% [0 v1 l/ H; ^% K$ v2 g+ P! ^& g# E
    if(!CreateList(head, initialLength))! _7 e1 [3 n( H+ r) D
    {
  M& ~. y" b3 r6 R8 m: X( j  f7 }        printf("Create LinkList Success! \n");% C( _3 k4 k- u0 T" [, R' Z: b
    }5 z( i6 w( @* x
    ShowLinkList(head);
: Z6 u! n2 Y: T$ V0 o( m% D0 W
    printf("please input an location you want to insert to:\n");4 x  O- e, r  _+ }# @& H- M% y0 U! R
    scanf("%d", &location);
  Y& y6 s* c1 i2 N1 Q/ s6 K* @
* m6 b4 v' ~% j! x- Z    if(!Insert(head, location))
' F* X! f5 d' n    {/ k. x/ b1 x( E- Z& a1 ^- P5 N. J
        printf("Insert success!\n");
# K1 h8 J) I5 u: ?5 m0 [    }" i. i5 s1 A9 F  H1 {+ G5 v
    ShowLinkList(head);
: W5 f  k, @0 g0 n9 w% l* X" }
; Y+ O5 h, Y" ?$ z/ |6 z4 |7 k    printf("please input an location you want to delete:\n");! z' x4 d- F. x5 {
    scanf("%d", &location);
% ]9 s+ M! W: v# Z# e1 Z9 Y% y+ Y3 |' O, E6 J/ w8 ~
    if(!Delete(head, location))
. m3 K% Z/ T9 b$ }    {& _  N5 M0 L4 W- M
        printf("Delete success!\n");) x9 n3 U$ |5 H& g/ p) }% }8 ?7 X* o
    }
' N. T2 p& Y1 w+ H/ Q% J+ }$ ~    ShowLinkList(head);# R% S3 h6 S+ H6 Z
}
0 G$ `+ e; g( K3 J& j  Y  a6 [6 ~6 y- S, l# h
第一题总结:把数据结构中的基础打牢(不可能一直考链表) $ ~8 b; s5 Q7 N7 @# |4 @0 X: f3 l

; Y- ^) s; S) Q* l第二题; k3 `0 I) Z. [+ q/ l) c- I
英译中5 L+ E% ]" S+ W% _
英语文章:长度 和难度都跟四级中阅读理解的文章差不多
, ?& d1 H' s9 b3 g. K- u* c. |; q" T( D- j: B0 y1 M( t
/ L; P5 A6 t9 H/ o, L; r: V5 I
……
2 @8 Q0 P2 R; t! T; e: s( Q. R* f; S! ^/ R$ V- D1 O
http://bbs.aftjob.com/thread-607297-1-1.html
+ F6 ?0 K! g: @' [5 D* c7 a2 z8 f$ z6 z& [' ]
——" Q  w. l+ i$ R. [" g5 o4 Y# @
微软(Microsoft)求职俱乐部- O- C, f0 Y/ m" J& N4 F
http://bbs.aftjob.com/group-100-1.html
( ^# c3 `0 }3 h% f9 p- I8 \, a+ I2012阿凡提求职手册——IT行业篇 $ D8 o" s) G) J  m) `
http://bbs.aftjob.com/thread-607158-1-1.html2 X0 a  G1 o' {* R
—— ! s( I. q$ u. h* C
微软笔经篇
; F* `( {0 g  t" b* H- u" T' Bhttp://bbs.aftjob.com/thread-469556-1-1.html
: y  W' o3 S6 E- }  |" m微软2007年笔试题: b( P+ K, L' j! a  i
http://bbs.aftjob.com/thread-607298-1-1.html4 L% {  ]! q. Y! I& I8 E9 i
微软今天的笔试题目(12月28日)
3 m  c3 p7 P- W8 D8 Zhttp://bbs.aftjob.com/thread-29793-1-1.html  t0 @( ~  A8 v! D& s$ q' q
微软笔试题整理
5 j/ G  M6 P, Qhttp://bbs.aftjob.com/thread-607299-1-1.html
/ _- ]2 @9 o4 H# F; p) r——+ ~7 t& h+ z; ~4 i# [* g# |2 X
阿凡提(aftjob.com)求职社区
( b' G# ^1 u: _" o+ ^7 V& ?  G阿凡提求职俱乐部-国内第一家网络求职俱乐部,提供企业求职俱乐部和高校求职俱乐部交流平台。
. A7 d: q9 q* o8 _$ X—— ' ]( X$ v# _# u/ t* c  U
: C7 r$ C# z6 P3 f' p

) f$ H$ }' |: a; F- j+ \$ }4 d
您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2026-6-11 15:22

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表