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,如需转载请自行联系原作者

目录
相关文章
|
存储 前端开发 JavaScript
🍪前端笔试系列 | 小米2020校招前端工程师笔试题
🍪前端笔试系列 | 小米2020校招前端工程师笔试题
431 9
🍪前端笔试系列 | 小米2020校招前端工程师笔试题
|
机器学习/深度学习 分布式计算 算法
校招面经 | 一位90后少年面试支付宝后的“肺腑之言”
听说,那个立志要“代码好/BUG少/发量高”的支付宝技术团队在招人~
3027 0
校招面经 | 一位90后少年面试支付宝后的“肺腑之言”
|
Java 关系型数据库 Linux
搜狐面经
自我介绍 排名 学习情况 网站上线情况 进程线程 linux 查看进程端口cpu磁盘等命令 java查看进程等调优命令 集合框架源码hashmap还有并发类型的为什么是红黑树改进 同步机制synchronize VS lock实现一些类的原理 CAS原...
1236 0
2013百度校招笔试真题以及解析(二)
1、一个单词单词字母交换,可得另一个单词,如army->mary,成为兄弟单词。提供一个单词,在字典中找到它的兄弟。
892 0
|
C++ 算法 容器
2015百度校招笔试真题以及解析(一)
1、为分析用户行为,系统常需存储用户的一些 query ,但因 query 非常多,故系统不能全存,设系统每天只存 m 个 query ,现设计一个算法,对用户请求的 query 进行随机选择 m 个,请给一个方案,使得每个 query 被抽中的概率相等,并分析之,注意:不到最后一刻,并不知用户的总请求量。
944 0
|
存储 NoSQL 数据库
2015百度校招笔试真题以及解析(二)
1、static关键字,static全局变量与普通全局变量的区别,static局部变量与普通变量的区别,static函数与普通函数的区别。
1016 0
|
算法 Android开发
网易面试
网易今年的笔试好像遭到了很多吐槽啊,不过值得注意一点的事,网易Android岗位的笔试最后一题是一道简答题“介绍一个你使用过的第三方库并详细说明其原理”。 这个问题在我之前的文章反复提到过,面试中一定会有,现在连笔试中都出现了,所以大家一定要好好准备一下。 OK,现在我们看看,网易电面中出现了哪些问题吧。项目经历这个是重点,大家可以好好准备下,特别是项目中用到的技术,遇到的难点。 1
1574 0
动态规划 - 腾讯2016实习生笔试
mean 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。 analyse 对于这题来说,插入字符和删除字符使其成为回文串,答案是一样的.
793 0
|
C++ 算法 C语言
Google 历年笔试面试30题
1、正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12(1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项(2)、设计测试数据来验证函数程序在各种输入下的正确性。
772 0