zoukankan      html  css  js  c++  java
  • 2012.9.15 搜狐笔试

    来源:http://blog.csdn.net/mishifangxiangdefeng/article/details/7982883

     

    一、不定项选择题

    1.C/C++语言:以下打印结果为()。

    1. #include <iostream>  
    2. using namespace std;  
    3.   
    4. void swap_int(int a, int b)  
    5. {  
    6.     int temp = a;  
    7.     a = b;  
    8.     b = temp;  
    9. }  
    10. void swap_str(char *a, char *b)  
    11. {  
    12.     char *temp = a;  
    13.     a = b;  
    14.     b = temp;  
    15. }  
    16.   
    17. int main()  
    18. {  
    19.     int a = 10;  
    20.     int b = 5;  
    21.     char *str_a = "hello world";  
    22.     char *str_b = "world hello";  
    23.     swap_int(a, b);  
    24.     swap_str(str_a, str_b);  
    25.     printf("%d, %d, %s, %s", a, b, str_a, str_b);  
    26.     return 0;  
    27. }  

    A. 10, 5, hello world, world hello

    B. 10, 5, world hello, hello world

    C. 5, 10, hello world, world hello

    D. 5, 10, world hello, hello world

    答:A。都是按值传递,不改变原值


    2. C/C++语言:请问打印的两个字符分别是()。

    1. #include <iostream>  
    2. using namespace std;  
    3.   
    4. typedef struct object object;  
    5. struct object  
    6. {  
    7.     char data[3];  
    8. };  
    9.   
    10. object obj_array[3] = {{'a''b''c'},  
    11.                         {'d''e''f'},  
    12.                         {'g''h''i'},  
    13.                         };  
    14.   
    15. int main()  
    16. {  
    17.     object *cur = obj_array;  
    18.     printf("%c, %c", *(char*)((char*)(cur)+2), *(char*)(cur+2));  
    19.     return 0;  
    20. }  

    A.c, g

    B. b, d

    C. g, g

    D. g, c

    答:A

    cur中存储的是'a‘的地址,当cur是object指针时,cur+1后cur存储是数组下一个元素的首地址,即'd'的地址。当cur是char指针时,cur+1是'a'的下一个字符的地址,即'b'的地址


    3. C/C++语言:请问在64位平台机器下,以下程序的输出结果()

    1. char *string_a = (char*)malloc(100*sizeof(char));  
    2. char string_b[100];  
    3. printf("%d, %d",sizeof(string_a), sizeof(string_b));  

    A. 8, 100

    B. 100, 8

    C. 100, 100

    D. 8, 8

    答:A

    string_a是一个指针,不管它指向的空间有多大,它本身的空间 是固定的。在64位平台机器下,一个指针的大小是8。



    答:B

    要是得到的序列为递增,应先访问左子树,再访问根结点,最后访问右子树,根据定义知为中序遍历


    5. 往一个栈顺序push下列元素:ABCDE,其pop可能的顺序,下列不正确的是()

    A. BACDE

    B. ACDBE

    C. AEBCD

    D. AEDCB

    答:C。


    6. 1100|1010, 1001^1001, 1001&1100分别为()

    A. 1110, 0000, 1000

    B. 1000, 1001, 1000

    C. 1110, 1001, 0101

    D. 1000, 1001, 1000

    答:A

    1 | 1 = 1, 1 | 0 = 1, 0 | 0 = 0

    1 ^ 1 = 0, 1 ^ 0 = 1, 0 ^ 0 = 0

    1 & 1 = 1, 1 & 0 = 0, 0 & 0 = 0


    7.二叉树是一种树形结构,每个节点至多有两颗子树,下列一定是二叉树的是()

    A. 红黑树

    B. B树

    C. AVL树

    D. B+树

    答:AC


    8.int A[2][3] = {1, 2, 3, 4, 5, 6}, A[1][0]和*(*(A+1)+1)的值分别是()。

    A. 4, 5

    B. 4, 3

    C.3, 5

    D.3, 4

    答:A

    数组是A[2][3] = {{1, 2, 3}, {4, 5, 6}},数组下标从0开始计数。前者是第1行第0列,后者是第1行第1列


    9.序列16, 14, 10, 8, 7, 9, 3, 2, 4, 1的说法下面哪一个正确()

    A. 是大顶堆

    B. 是小顶堆

    C. 不是堆

    D. 是二叉排序树

    答:A


    10. 输入若已经是排好序的,下列排序算法最快的是()

    A. 插入排序

    B. Shell排序

    C. 合并排序

    D. 快速排序

    答:A

    插入排序一遍扫描即可

    Shell排序虽不需要交换数据,但也要进行几次插入排序

    合并排序虽不需要交换数据,但也要进行lgn次合并

    快速排序在数列有序的情况下效率是最低的


    11.一种既有利于短作业又兼顾长期作业的调度方法是()。

    A. 先来先服务

    B. 均衡调度

    C. 最短作业优先

    D. 最高响应比优先

    答:B


    12.同一进程下的线程可以共享()

    A. stack

    B. data section

    C. register set

    D. thread ID

    答:B

    A是栈区。同一个进程的线程共享堆区,但是各自维护自己的栈区

    B是数据区。

    C是寄存器

    D线程ID。同一进程的线程共享一进程ID,各自拥有自己的线程ID

    参考http://blog.csdn.net/yang201240/article/details/7243991


    13.系统中的“颠簸”是由()引起的。

    A. 内存容量不足

    B. 缺页率高

    C.交换信息量大

    D. 缺页率反馈模型不正确

    答:D

    “颠簸”是《计算机操作系统》中的“抖动”,A和B会造成抖动,但不是主要原因。主要原因是由于每个进程的页面数没有很好地计算,导致某些页面反复地进出。


    14.8瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得到,而你只有8小时的时间,最少需要()人测试

    A. 2

    B. 3

    D. 4

    D. 6

    答:B。类似不带差错控制的海明码。淘宝出过这种题。



    答:ABD

    TCP的关闭连接是四次握手

    UDP提供的是面向无连接的不可靠服务

    C参考http://blog.csdn.net/zhangjay/article/details/6403076

    客户端不可以调用bind()


    16. 进程间的通讯有哪几种形式()

    A. Socket

    B. Pipe

    C. Shared memory

    D. Signal

    答:ABCD

    参考4-16笔试



    答:AC


    答:ABCDE


    19.10个不同的球,放入3个不同的桶内,共有()种方法

    A. 1000

    B. 720

    C. 59049

    D. 360

    答:C

    3^10


    20.87的100次幂除以7的余数是多少()

    A. 1

    B. 2

    C. 3

    D. 4

    答:D

    由公式(a*b)%c == (a%c)*(b%c)可知(87^100)%7=(87%7)^100=(3^100)%7

    对于任意n(n>=0),(3^n)%7只能6种可能,依次为1,3,2,6,4,5……


    二、简答题

    1. (1)请描述进程和线程的区别?
    (2)多线程程序有什么优点,缺点?
    (3)多进程程序有什么优点,缺点?与多线程相比,有何区别。

    2.写代码:反转一个单链表,分别以迭代和递归形式实现
    1. typedef struct node LinkNode;  
    2. struct node  
    3. {  
    4.     int data;  
    5.     LinkNode *Next;  
    6. };  
    7. //@ret 返回新链表头节点  
    8. LinkNode *reverse_link(LinkNode *head);  
    9. LinkNode *reverse_link_recursive(LinkNode *head);  

    答:

    1. #include <iostream>  
    2. using namespace std;  
    3.   
    4. typedef struct node LinkNode;  
    5. struct node  
    6. {  
    7.     int data;  
    8.     LinkNode *Next;  
    9. };  
    10. //@ret 返回新链表头节点  
    11. LinkNode *reverse_link(LinkNode *head);  
    12. LinkNode *reverse_link_recursive(LinkNode *head);  
    13. //非递归方法  
    14. LinkNode *reverse_link(LinkNode *head)  
    15. {  
    16.     LinkNode *p = head;  
    17.     while(p->Next != NULL)  
    18.         p = p->Next;  
    19.     LinkNode *ret = p;  
    20.     LinkNode *q = head;  
    21.     while(1)  
    22.     {  
    23.         while(q->Next != p)  
    24.             q = q->Next;  
    25.         p->Next = q;  
    26.         p = q;  
    27.         if(q == head)  
    28.         {  
    29.             q->Next = NULL;  
    30.             break;  
    31.         }  
    32.         q = head;  
    33.     }  
    34.     return ret;  
    35. }  
    36. //递归方法  
    37. LinkNode *reverse_link_recursive(LinkNode *head)  
    38. {  
    39.     if(head->Next == NULL)  
    40.         return head;  
    41.     LinkNode *ret = reverse_link_recursive(head->Next);  
    42.     head->Next->Next = head;  
    43.     head->Next = NULL;  
    44.     return ret;  
    45. }  
    46. //输出结果,用于测试  
    47. void Print(LinkNode *head)  
    48. {  
    49.     LinkNode *p = head;  
    50.     while(p)  
    51.     {  
    52.         cout<<p->data<<' ';  
    53.         p = p->Next;  
    54.     }  
    55.     cout<<endl;  
    56. }  
    57. //不是题目要求,用于测试  
    58. int main()  
    59. {  
    60.     int i;  
    61.     LinkNode *p = NULL;  
    62.     for(i = 0; i < 10; i++)  
    63.     {  
    64.         LinkNode *q = new LinkNode;  
    65.         q->data = i;  
    66.         q->Next = p;  
    67.         p = q;  
    68.     }  
    69.     Print(p);  
    70.     p = reverse_link(p);  
    71.     Print(p);  
    72.     p = reverse_link_recursive(p);  
    73.     Print(p);  
    74.     return 0;  
    75. }  


    答:最大和子序列,HDOJ1003

    http://acm.hdu.edu.cn/showproblem.php?pid=1003

    1. #include <iostream>  
    2. using namespace std;  
    3. int main()  
    4. {  
    5.     int n,m,i,j,num,start,end,start1;  
    6.     long max,temp;  
    7.     while(cin>>n)  
    8.     {  
    9.         for(j=1;j<=n;j++)  
    10.         {  
    11.             cin>>m;  
    12.             cin>>num;  
    13.             max=temp=num;  
    14.             start=start1=end=1;  
    15.             for(i=2;i<=m;i++)  
    16.             {  
    17.                 cin>>num;  
    18.                 if(temp>=0) {temp=num+temp;}  
    19.                 else  
    20.                 {  
    21.                     temp=num;  
    22.                     start1=i;  
    23.                 }  
    24.                 if(temp>max)  
    25.                 {  
    26.                     max=temp;  
    27.                     start=start1;  
    28.                     end=i;  
    29.                 }  
    30.             }  
    31.             cout<<"Case "<<j<<':'<<endl;  
    32.             cout<<max<<' '<<start<<' '<<end<<endl;  
    33.             if(j!=n) cout<<endl;  
    34.         }  
    35.     }  
    36.     return 0;  
    37. }  



    三、设计题


    微信公众号: 猿人谷
    如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
    如果您希望与我交流互动,欢迎关注微信公众号
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

  • 相关阅读:
    switch语句
    switch语句
    if语句三种格式
    dowhile语句
    if语句三种格式
    if语句配对
    ansible
    linux系统中网站服务程序(web服务/httpd服务)
    ansible
    ansible
  • 原文地址:https://www.cnblogs.com/heyonggang/p/2986885.html
Copyright © 2011-2022 走看看