微软2012暑期实习笔试题(附答案)

来源:互联网 发布:pc蛋蛋app源码 编辑:程序博客网 时间:2024/06/05 04:33

1. Suppose that a Selection Sort of 80 items has completed 32 iterations of the main loop. How many items are now guaranteed to be in their final spot (never to be moved again)?
对80个数进行选择排序,执行32个循环后,有多少个数已经固定位置?
(A) 16 (B) 31 (C) 32 (D) 39 (E) 40
Ans: C,考虑逆序的情况

2. Which synchronization mechanism(s) is/are used to avoid race conditions among processes/threads in operating system?
下列哪些机制可以避免进程(线程)间的竞争条件?
(A) Mutex (B) Mailbox (C) Semaphore (D) Local procedure call
Ans: A C,互斥量和信号量

3. There is a sequence of n numbers 1,2,3, ...,n and a stack which can keep m numbers at most. Push the n numbers into the stack following the sequence and pop out randomly. Suppose n is 2 and m is 3, the output sequence maybe 1,2 or 2,1, so we get 2 different sequence. Suppose n is 7 and m is 5, please choose the output sequence of the stack.
(A) 1,2,3,4,5,6,7
(B) 7,6,5,4,3,2,1
(C) 5,6,4,3,7,2,1
(D) 1,7,6,5,4,3,2
(E) 3,2,1,7,6,5,4
Ans: A C E

4. What is the result of binary number 01011001 after multiplying 0111001 and adding 1101110?
(A) 0001010000111111
(B) 0101011101110011
(C) 0011010000110101
Ans: A

5. What is output if you compile and execute the following C code?

[cpp] view plaincopyprint?
  1. int main()  
  2. {  
  3.     int i = 11;  
  4.     int const * p = &i;  
  5.     p++;  
  6.     printf("%d", *p);  
  7.     return 0;  
  8. }  
(A) 11 (B) 12 (C) Garbage value (D) Compile error (E) None of above
Ans: C,p指向i后的四字节内存,为任意值。

6. Which of following C++ code is correct?
(A)

[cpp] view plaincopyprint?
  1. int f()  
  2. {  
  3.     int *a = new int(3);  
  4.     return *a;  
  5. }  

(B)

[cpp] view plaincopyprint?
  1. int *f()  
  2. {  
  3.     int a[3] = [1, 2, 3];  
  4.     return a;  
  5. }  
(C)

[cpp] view plaincopyprint?
  1. vector<int> f()  
  2. {  
  3.     vector<int> v[3];  
  4.     return v;  
  5. }  
(D)

[cpp] view plaincopyprint?
  1. void f(int * ret)  
  2. {  
  3.     int a[3] = {1, 2, 3};  
  4.     ret = a;  
  5.     return;  
  6. }  
(E) none of above
Ans: C,(A)申请内存后没有初始化,返回的是任意值;(B)返回a的地址,但数组a在栈区,返回后栈就释放了;(C)印象中vector是在堆区,可行;(D)的问题同B

7. Given that the 180-degree rotated image of a 5-digit number is another 5-digit number and the difference between the number is 78633, what is the original 5-digit number?
(A) 60918   (B) 91086   (C) 18609   (D) 10968   (E) 86901
Ans: D, 89601-10968 = 78633

8. Which of the following statements are true
(A) We can create a binary tree from given inorder and preorder traversal seqences
(B) We can create a binary tree from given preorder and postorder traversal sequences
(C) For an almost sorted array, insertion sort can be more effective than Quicksort
(D) Suppose T(n) is the runtime of resolving a problem with n elements, T(n)=O(1) if n=1; T(n)=2T(n/2)+O(n) if n>1; so T(n) is O(nlogn)
(E) None of the above
Ans: A D

9. Which of the following statements are true?
(A) Insertion sort and bubble sort are not eficient for large data sets.
(B) Quick sort makes O(n2) comparisons in the worst case
(C) There is an array: 7,6,5,4,3,2,1. If using selection sort(ascending), the number of swap operation is 6
(D) Heap sort uses two heap operations: insertion and root deletion
(E) None of above
Ans: A B, C只需要3次交换

10. Assume both x and y are integers, which one of the following returns the minimun of the two integers?
(A) y^((x^y) & -(x<y))
(B) y^(x^y)
(C) x^(x^y)
(D) (x^y)^(y^x)
(E) None of the above
Ans: A

11. The Orchid Pavilion(兰亭集序) is well known as the top of “行书” in history of Chinese literature. The most fascinating sentence is "Well I know it is a lie to say that life and death is the same thing, and that longevity and early death make no difference! Alas!" (“故知一死生为虚诞,齐彭殇为妄作”). By counting the characters of the whole content (in Chinese version), the result should be 391 (including punctuation). For these characters written to a text file, please select the possible file size without any data corrupt.
(A) 782 bytes in UTF-16 encoding
(B) 784 bytes in UTF-16 encoding
(C) 1173 bytes in UTF-8 encoding
(D) 1176 bytes in UTF-8 encoding
(E) None of the above
Ans: 不太熟悉编码

12. Fill the blanks inside class definition

[cpp] view plaincopyprint?
  1. class Test  
  2. {  
  3. public:  
  4.     __ int a;  
  5.     __ int b;  
  6. public:  
  7.     Test::Test(int _a, int _b): a(_a)  
  8.     {  
  9.         b = _b;  
  10.     }  
  11. };  
  12. int Test::b;  
  13. int _tmain(int argc, _TCHAR * argv[])  
  14. {  
  15.     Test t1(0, 0), t2(1, 1);  
  16.     t1.b = 10;  
  17.     t2.b = 20;  
  18.     printf("%u %u %u %u", t1.a, t1.b, t2.a, t2.b);  
  19.     return 0;  
  20. }  

Running result: 0 20 1 20
(A) static/ const   (B) const/ static   (C) -/ static   (D) const static/ static   (E) None of the above
Ans: C

13. A 3-order B-tree has 2047 key words, what is the maximum height of the tree?
(A) 11   (B) 12   (C) 13   (D) 14
Ans: 不太了解B树,看完书在作答案

14. In C++, which of the following keyword(s) can be used on both a variable and a function?
(A) static   (B) virtual   (C) extern   (D) inline   (E) const
Ans: A C E

15. What is the result of the following program?

[cpp] view plaincopyprint?
  1. char* f(char* str, char ch)  
  2. {  
  3.     char* it1 = str;  
  4.     char* it2 = str;  
  5.     while(*it2 != '\0')  
  6.     {  
  7.         while(*it2 == ch)  
  8.         {  
  9.             it2++;  
  10.         }  
  11.         *it1++ = *it2++;  
  12.     }  
  13.     return str;  
  14. }  
  15.   
  16. void main(int argc, char* argv[])  
  17. {  
  18.     char* a = new char[10];  
  19.     strcpy(a, "abcdcccd");  
  20.     cout<<f(a, 'c');  
  21. }  
(A) abdcccd   (B) abdd   (C) abcc   (D) abddcccd   (E) Access violation
Ans: B,函数的作用是把字符串中特定字符去掉

16. Consider the following definition of a recursive function, power, that will perform exponentiation.

[cpp] view plaincopyprint?
  1. int power(int b, int e)  
  2. {  
  3.     if(e == 0)  
  4.         return 1;  
  5.     if(e % 2 == 0)  
  6.         return power(b*b, e/2);  
  7.     return b*power(b*b, e/2);  
  8. }  
Asymptotically(渐近地) in terms of the exponent e, the number of calls to power that occur as a result of the call power(b, e) is
(A) logarithmic   (B) linear   (C) quadratic   (D) exponential
Ans: A,以2为底的对数

17. Assume a full deck of cards has 52 cards, 2 black suits(spade and club) and 2 red suits(diamond and heart).
If you are given a full deck, and a half deck(with 1 red suit and 1 black suit), what's the possibility for each one getting 2 red cards if taking 2 cards?
(A) 1/2, 1/2   (B) 25/102, 12/50   (C) 50/51, 24/25   (D) 25/51, 12/25   (E) 25/51, 1/2
Ans: B, a full deck: 26*25/(52*51), a half deck: 13*12/(26*25)

18. There is a stack and a sequence of n numbers(i.e. 1, 2, 3, ..., n). Push the n numbers into the stack following the sequence and pop out randomly. How many different sequences of the number we may get?
Suppose n is 2, the output sequence may 1, 2 or 2, 1, so we get 2 different sequences.
(A) C_2n^n   (B) C_2n^n-C_2n^(n+1)   (C) ((2n)!)/(n+1)n!n!   (D) n!   (E) None of the above
Ans: B C, 特殊值试出来的,B化简后就是C

19. Longest Increasing Subsequence (LIS) means a sequence containing some elements in another sequence by the same order, and the values of elements keeps increasing.
For example, LIS of (2, 1, 4, 2, 3, 7, 4, 6) is (1, 2, 3, 4, 6), and its LIS length is 5.
Considering an array with N elements, what is the lowest time and space complexity to get the length of LIS?
(A) Time: N^2, Space: N^2   (B) Time: N^2, Space: N   (C) Time: NlogN, Space: N   (D) Time: N, Space: N   (E) Time: N, Space: C
Ans: C,见《编程之美》最长上升子序列的讨论

20. What is the output of the following piece of C++ code?

[cpp] view plaincopyprint?
  1. #include <iostream>   
  2. using namespace std;  
  3.   
  4. struct Item  
  5. {  
  6.     char c;  
  7.     Item *next;  
  8. };  
  9.   
  10. Item *Routine1(Item *x)  
  11. {  
  12.     Item *prev = NULL, *curr = x;  
  13.     while(curr)  
  14.     {  
  15.         Item *next = curr->next;  
  16.         curr->next = prev;  
  17.         prev = curr;  
  18.         curr = next;  
  19.     }  
  20.     return prev;  
  21. }  
  22.   
  23. void Routine2(Item *x)  
  24. {  
  25.     Item *curr = x;  
  26.     while(curr)  
  27.     {  
  28.         cout<<curr->c<<" ";  
  29.         curr = curr->next;  
  30.     }  
  31. }  
  32.   
  33. void _tmain(void)  
  34. {  
  35.     Item *x,  
  36.         d = {'d', NULL},  
  37.         c = {'c', &d},  
  38.         b = {'b', &c},  
  39.         a = {'a', &b};  
  40.     x = Routine1(&a);  
  41.     Routine2(x);  
  42. }  
(A) c b a d   (B) b a d c   (C) d b c a   (D) a b c d   (E)d c b a
Ans: E,函数的作用是将链表反转
原创粉丝点击