2012.9.15 搜狐笔试

简介:

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

 

一、不定项选择题

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

[cpp]  view plain copy
  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++语言:请问打印的两个字符分别是()。

[cpp]  view plain copy
  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位平台机器下,以下程序的输出结果()

[cpp]  view plain copy
  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)请描述进程和线程的区别?
4-16笔试第七题和 Linux2.6进程
(2)多线程程序有什么优点,缺点?
(3)多进程程序有什么优点,缺点?与多线程相比,有何区别。

2.写代码:反转一个单链表,分别以迭代和递归形式实现
[cpp]  view plain copy
  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);  

答:

[cpp]  view plain copy
  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

[cpp]  view plain copy
  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. }  



三、设计题





本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/archive/2013/03/28/2986885.html,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
消息中间件 NoSQL 算法
涨薪50%,从小厂逆袭,坐上美团L8技术专家(面经+心得)
大多数情况下,程序员的个人技能成长速度,远远大于公司规模或业务的成长速度。所以,跳槽成为了这个行业里最常见的一个词汇。
|
设计模式 网络协议 Java
字节跳动-游戏客户端实习生-面经
字节跳动-游戏客户端实习生-面经
|
存储 算法 网络协议
|
算法 Java 关系型数据库
圆梦腾讯之后,我收集整理了这份“2023春招常见面试真题汇总”
大家看我前几天的文章就能够知道,我在今年春招中成功拿到了腾讯Java工程师的Offer!在我拿到Offer之后,我就在想,能不能够把我和几个哥们这两个月面试过程中经常被问到的面试进行一个收集整理,能够帮助大家在面试的时候更加得心应手,也能少走一些弯路!
|
算法 Java 关系型数据库
Java后端面经总结:拿下蚂蚁金服美团头条 offer 秘诀
笔者在面过 猿辅导,去哪儿,旷视, 陌陌,头条, 阿里, 快手, 美团, 腾讯之后,除了收获一大堆面试问题,还思考到如何成为面试官眼中的"爱技术,爱思考,靠谱,有潜力候选人的"一些"套路". 面试问题(Java 后端)猿辅导1.
3342 0
叮!阿里巴巴2020届毕业生笔试攻略来了,请查收!
工程师的世界,不止代码,还应该有对未来的洞察与从容。2020届毕业生笔试攻略来了,请查收~
|
算法 Java 关系型数据库
我的2019校招面经大全(包含BAT头条网易等大厂面经)
本文出自微信公众号【程序员江湖】 作者How 2 Play Life,985 软件硕士,阿里 Java 研发工程师,在技术校园招聘、自学编程、计算机考研等方面有丰富经验和独到见解,目前致力于分享程序员干货和学习经验,同时热衷于分享作为程序员的一些成长心得和生活感悟。
|
Java 关系型数据库 Linux
搜狐面经
自我介绍 排名 学习情况 网站上线情况 进程线程 linux 查看进程端口cpu磁盘等命令 java查看进程等调优命令 集合框架源码hashmap还有并发类型的为什么是红黑树改进 同步机制synchronize VS lock实现一些类的原理 CAS原...
1248 0
2013百度校招笔试真题以及解析(二)
1、一个单词单词字母交换,可得另一个单词,如army->mary,成为兄弟单词。提供一个单词,在字典中找到它的兄弟。
914 0
下一篇
无影云桌面