一、不定项选择题
1、以下程序的打印结果是()

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

A、10 5 hello world world hello      B、10 5 world hello hello world

C、5 10 hello world world hello     D、5 10 hello world world hello

这里二级指针的写法是这样的:

#include <stdio.h>
void swap_str(char **a, char **b)
{char *temp = *a; *a = *b; *b = temp;
}
int main(void)
{char *str_a = "hello world";char *str_b = "world hello";swap_str(&str_a, &str_b);printf("%s %s\n",str_a, str_b);return 0;}

2、以下程序打印的两个字符分别是(A)

[cpp]  view plain copy
  1. typedef struct object object;
  2. struct object
  3. {
  4. char data[3];
  5. };
  6. int main(void)
  7. {
  8. object obj_array[3] = { {'a','b','c'},
  9. {'d','e','f'},
  10. {'g','h','i'} };
  11. object* cur =  obj_array;
  12. printf("%c %c\n", *(char*)((char *)(cur)+2) , *(char*)(cur+2));
  13. return 0;
  14. }

A、c g           B、b d          C、g g          D、g c

这题不难:看这篇帖子http://blog.csdn.net/zpxly/article/details/11632293的最后

3、C/C++语言:请问在64位平台机器下 sizeof(string_a) , sizeof(string_b)大小分别是(A)

[cpp]  view plain copy
  1. char *string_a = (char *)malloc(100*sizeof(char));
  2. char string_b[100];

A、8 100      B、100 8      C、100 100      D、8 8

sizeof第一个是指针,所以X64下是8个字节,基本题目

4、假设二叉排序树的定义是:1、若它的左子树不为空,则左子树所有节点均小于它的根节点的值;2、若右子树不为空,则右子树所有节点的值均大于根节点的值;3、它的左右子树也分别为二叉排序树。下列哪种遍历之后得到一个递增有序数列(B)

A、前序遍历    B、中序遍历     C、后序遍历      D、广度遍历

这个定义其实是二叉搜索树的定义,看这个帖子:http://blog.csdn.net/zpxly/article/details/11529541

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

A、BACDE    B、ACDBE     C、AEBCD   D、AEDCB

基本题目:出栈入栈

6、1100|1010 , 1001^1001 , 1001&1100分别为(A)
A、1110  0000   1000   B、1000  1001  1000

C、1110  1001   0101   D、1000  1001  1000

基本题目

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

A、红黑树     B、B树      C、AVL树      D、B+树

红黑树和AVL树是高级的数据结构,也是常考的数据结构,它们都是二叉搜索树的改进

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

A、4 5     B、4 3        C、3 5       D、3 4

基本题目

9、序列16 14 10 8 7 9 3 2 4 1的说法下面哪一个正确(A)
A、大顶堆   B、小顶堆  C、不是堆   D、二叉排序树 
10、输入若已经是排好序的,下列排序算法最快的是(A)

A、插入排序   B、Shell排序   C、合并排序   D、快速排序

最慢的是快速排序,每次都不能平均划分区间

11、一种既有利于短作业又兼顾长期作业的调度方式是(D)

A、先来先服务     B、均衡调度      C、最短作业优先      D、最高响应比优先

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

A、stack        B、data section        C、register set      D、thread ID

线程自己拥有的包括:线程ID,线程自己的堆栈,线程的返回码,线程优先级,信号屏蔽字,寄存器组的值(6个)

线程间共享的有:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件

描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。

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

A、内存容量不足      B、缺页率高      C、交换信息量大       D、缺页率反馈模型不正确

还记得虚拟内存调度的一些算法吗?FIFO,OPT,LRU

14、8瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要(B)人测试?
A、2         B、3         C、4            D、6
是3个人,如果你学过数的2进制编码,就容易说了:
8瓶酒的编码如下:
0: 000
1: 001
2: 010
3: 011
4: 100
5: 101
6: 110
7: 111
3个人分别喝3个位上为1的编码,所以:
第一个:1,3,5,7
第二个:2,3,6,7
第三个:4,5,6,7

把中毒的人的位填1的二进制数,就是毒酒的编号。

这个题目很有思想,刚开始还以为用二分法

15、下列关于网络编程错误的是(AB)
A、TCP建立和关闭连接都只需要三次握手
B、UDP是可靠服务
C、主动关闭的一端会出现TIME_WAIT状态

D、服务端编程会调用listen(),客户端也可以调用bind()

基本题目,注意D中,客户端也可以调用bind

16、进程间通讯有哪几种形式(ABCD)
A、Socket
B、Pipe
C、Shared memory

D、Signal

总结一下:有7中方式:管道(pipe) 命名管道(named pipe)  消息队列(message queue) 共享内存(shared memory) 信号量(semophore)

信号(signal) 套接字(socket) 推荐看《unp2》

17、TCP/UDP下面正确的是(AC)

A、TCP provide connection-oriented,byte-stream service;

B、Both TCP and UDP provide reliability service;

C、TCP also provides flow control;

D、Both TCP and UDP provide retransmission mechanism;

我记得这好像是 tcp/ip1上面的原话,那就去看《tcp/ip1》推荐看英文版的,写的很好

18、分布式系统设计包括(ABCDE)

A、容错,design for fault

B、多数据中心的数据一致性

C、数据/服务可靠性

D、可扩展性

E、要满足ACID特性

分布式:目前还没有涉及这个领域

19、10个不同的球,放入3个不同的桶内,共有(C)种方法。  3^10

A、1000      B、720     C、59049     D、360

简单的高中数学题

20、87的100次幂除以7的余数是多少(D)

A、1     B、2     C、3     D、4

看了一个人给出的解法:87^100%7=3^100%7=9^50%7=2^50%7=32^10%7=4^10%7=16^5%7=2^5%7=32%7=4,算是比较正规的

二、简答题:
1、

(1)请描述进程和线程的区别?

1.进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在

2. 线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。

3. 系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。

4.进程切换比线程切换开销大是因为进程切换时要切页表

(2)多线程程序有什么优点、缺点?
(2)多进程程序有什么优点、缺点?与多线程相比,有何区别?

2、编程题:
写代码,反转一个单链表,分别以迭代和递归的形式来实现

[cpp]  view plain copy
  1. typedef struct node LinkNode;
  2. struct node
  3. {
  4. int data;
  5. LinkNode* next;
  6. };

// 返回新链表头节点
LinkNode *reverse_link(LinkNode *head)
LinkNode *reverse_link_recursive(LinkNode *head)

[cpp]  view plain copy
  1. // 返回新链表头节点
  2. LinkNode *reverse_link(LinkNode *head)
  3. {
  4. if(head == NULL)
  5. return NULL;
  6. LinkNode *prev , *curr , *reverse_head , *temp;
  7. prev = NULL , curr = head;
  8. while(curr->next)
  9. {
  10. temp = curr->next;
  11. curr->next = prev;
  12. prev = curr;
  13. curr = temp;
  14. }
  15. curr->next = prev;
  16. reverse_head = curr;
  17. return reverse_head;
  18. }
  19. LinkNode *reverse_link_recursive(LinkNode *head)
  20. {
  21. if(head == NULL)
  22. return NULL;
  23. LinkNode *curr , *reverse_head , *temp;
  24. if(head->next == NULL)    // 链表中只有一个节点,逆转后的头指针不变
  25. return head;
  26. else
  27. {
  28. curr = head;
  29. temp = head->next;    // temp为(a2,...an)的头指针
  30. reverse_head = reverse_link_recursive(temp);   // 逆转链表(a2,...an),并返回逆转后的头指针
  31. temp->next = curr;    // 将a1链接在a2之后
  32. curr->next = NULL;
  33. }
  34. return reverse_head;      // (a2,...an)逆转链表的头指针即为(a1,a2,...an)逆转链表的头指针
  35. }

3、给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列。
如:1、-2、3、5、-4、6 连续序列3、5、-4、6的和最大。
如元素全为负数,则最大的和为0,即一个也没有选。
/*
array[]     输入数组
n           数组元素个数
            返回最大序列和
*/
int find_max_sum(int array[] , int n)

[cpp]  view plain copy
  1. int find_max_sum(int array[] , int n)
  2. {
  3. int i , max , sum;
  4. sum = max = array[0];
  5. for(i = 1 ; i < n ; ++i)
  6. {
  7. if(sum < 0)
  8. sum = array[i];
  9. else
  10. sum += array[i];
  11. if(sum > max)
  12. max = sum;
  13. }
  14. if(max < 0)
  15. max = 0;
  16. return max;
  17. }

三、设计题

1、设计一个图片存储系统:假设有一个相册系统,每个用户不限制上传的图片数目,每张相片压缩后都在1M以内,需求如下:

(1)文件数量太大,采用传统的文件系统存储导致目录系统非常臃肿,访问速度变得缓慢;

(2)单机存储容量已经远远不能承载所有的文件;

(3)上传之后,用户只有读取操作和删除操作,不支持修改,整个系统读写比例10:1

搜狐2012年校园招聘会笔试题解析相关推荐

  1. 腾讯校园招聘会笔试题 难题解析

    1. 数据存储在磁盘上的排列方式会影响I/O服务的性能,一个圆环的磁道上有10个物理块,10个数据记录R1------R10存放在这个磁道上,记录的安排顺序如下表所示: 物理块 1 2 3 4 5 6 ...

  2. 搜狐2012.9.15校园招聘会笔试题

    一.不定项选择题 1.以下程序的打印结果是() #include<iostream> using namespace std;void swap_int(int a , int b) {i ...

  3. 搜狐2012 9 15校园招聘会笔试题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一.不定 ...

  4. 优酷土豆2012.9.12校园招聘会笔试题

    选择题 1.已知中国人的血型分布约为A型:30%,B型:20%,O型:40%,AB型:10%,则任选一批中国人作为用户调研对象,希望他们中至少有一个是B型血的可能性不低于90%,那么最少需要选多少人? ...

  5. 搜狗2012.9.23校园招聘会笔试题

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/8016173 C/C++类 1.以下程序的输出是(12) class Ba ...

  6. 搜狗2012 9 23校园招聘会笔试题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 转载请标 ...

  7. 腾讯2012.9.23校园招聘会笔试题答案

    1 表的设计最合理 数据库里面 一般是 学生,学科,分数 分开放. 因此A合理 2 数据库系统产生不一致的根本原因 数据库完整性是为了保证由授权用户对数据库所做的修改不会影响数据一致性的损失 觉得C合 ...

  8. 2012搜狗校园招聘笔试题(1)

    本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 最近发现了几个公司招聘的笔试机试题,虽然是两年前的,但是题目还不错,所以做了做, ...

  9. 2012迅雷校园招聘笔试题——厦门大学站

    迅雷厦门大学校园招聘C++岗位,笔试分为主观题和客观题:客观题就是选择和填空.都是些C++的基础知识. 客观题两道: memcpy和memmove的区别 ANIC库中为什么有相似的函数 实现memcp ...

最新文章

  1. 4、列举你工作中遇到的IE6 BUG,谈谈解决方案
  2. XamarinAndroid组件教程RecylerView适配器设置动画示例
  3. linux history 命令 shell历史记录显示 HISTSIZE
  4. Linux内核的namespace机制分析
  5. [Xcode 实际操作]二、视图与手势-(12)UITapGestureRecognizer手势之双击
  6. Python中如何修改字符串的值
  7. 【机器学习算法专题(蓄力计划)】十一、特征数据预处理
  8. java 第十一章总结
  9. SQLSERVER 日志收缩
  10. Hamcrest Matchers的高级创建
  11. time datetime的时间--python
  12. attachEvent传递给其handler的一个默认参数
  13. html正方形框架,长方形框架的制作方法
  14. 中国富豪第一桶金挖掘的九大方式
  15. 这些SEO搜索技巧你会不会用?
  16. ADVPT-C++复习准备
  17. 宏名字不规范,与结构体的成员重名
  18. 如何在代码中判断当前设备是iPhone 4/4S还是iPhone 5?
  19. CSS 中颜色如何表示?
  20. linux wget 安装mysql5.7

热门文章

  1. Angular2 ngOnChanges用法
  2. 微信误删了好友,4招,偷偷把好友加回来!
  3. 7.0android版本点三下,StarStar
  4. Exhaustive search 和 Beam search 详解(图文并茂)
  5. mysql 获取下级_mysql 获取下级成员函数
  6. ios刮刮卡效果_iOS基础-小Demo--刮开涂层(刮刮乐效果)
  7. 确定你的台式计算机支持的内存类型,怎么查看电脑主板支持多大内存?教你看主板支持多大内存2种方法...
  8. AB Test 压力测试工具使用整理
  9. 认清sizeof()——远离Bug
  10. 良心建议,生活中远离这种人