Yahoo笔试题

来源:互联网 发布:cisco2960g 端口闪黄灯 编辑:程序博客网 时间:2024/05/16 10:09

http://kb.cnblogs.com/page/51739/4/

Question 1. (单选)

在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比
较次数为(3)

1. 2
2. 3
3. 4
4. 5

Question 2. (单选)
设散列表的存储空间大小为19,所用散列函数为h(key)=key mod 19,用开地址线性探查法解
决碰撞。散列表的当前

状态如下:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 190 194 768 559 582 39
3 208.现要将关键码

值75插入到该散列表中,其地址应为 (1)

1. 1
2. 11
3. 5
4. 15

Question 3. (单选)
作业管理的主要任务包括作业输入、作业处理和作业输出。其中作业处理的工作是Ⅰ.作业
调度 Ⅱ.作业控制 Ⅲ.

作业后备 (3)

1. 只有Ⅰ
2. 只有Ⅱ
3. Ⅰ和Ⅱ
4. 都是

Question 4. (单选)
系统为了管理文件,设置了专门的数据结构----文件控制块(FC。FCB是在执行下列哪一个系统调用时建立的? (1)

1. create
2. open
3. read
4. write

Question 5. (单选)
下面关于通道的叙述中,正确的是Ⅰ.通道相当于一个功能简单的处理机Ⅱ.通道完成数据输入输出工作Ⅲ.通道与CPU共用一个内存 (4)

1. Ⅰ和Ⅱ
2. Ⅰ和Ⅲ
3. Ⅱ和Ⅲ
4. 都是


Question 6. (单选)
互操作性是指在不同环境下的应用程序可以相互操作,交换信息。要使采用不同数据格式的
各种计算机之间能够相

互理解,这一功能是由下面哪一层来实现的? (2)

1. 应用层
2. 表示层
3. 会话层
4. 传输层

Question 7. (单选)
在UNIX的Shell程序中,可以使用位置变量。若要指明Shell引用的最近后台进程的号码,可
以使用位置变量 (2)

1. $$
2. $!
3. $#
4. $-



Question 11. (单选)
某二叉树结点的对称序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E。
该二叉树对应的树林包括多少棵树? (2)

1. 1
2. 2
3. 3

4. 4

解析:B。先画出这个二叉树的结构,根是E,左孩子是A,A只有右孩子C,C的左孩子是B,右孩子是D,E的右孩子是G,G的左孩子是F。再将之转成树林。转换方法:断开根结点与右孩子的连线,以及右孩子与右孩子的连线……,得到若干棵根结点无右孩子的二叉树。这里断开后可以得到两棵树。



Question 13. (单选)
假设就绪队列中有10个进程,系统将时间片设为200ms, CPU进行进程切换要花费10ms。则
系统开销所占的比率约为 (2)

1. 1%
2. 5%
3. 10%
4. 20%

Question 14. (单选)
长度相同但格式不同的2种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其它
规定均相同,则它们可表示的数的范围和精度为: (2)

1. 两者可表示的数的范围和精度相同
2. 前者可表示的数的范围大但精度低
3. 后者可表示的数的范围大且精度高
4. 前者可表示的数的范围大且精度高


浮点数是用来表示实数的一种方法,它用

 M(

尾数

) * B( 

基数

)

E(

指数)次方来表示实数

 

浮点数是用来表示实数的一种方法,它用

 M(

尾数

) * B( 

基数

)

E(

指数)次方来表示实数

 

浮点数是用来表示实数的一种方法,它用

 M(

尾数

) * B( 

基数

)

E(

指数)次方来表示实数

浮点数是用来表示实数的一种方法,它用

 M(

尾数

) * B( 

基数

)

E(

指数)次方来表示实数

解析:浮点数是用来表示实数的一种方法,它用 M(尾数) * B( 基数)的E(指数)次方来表示实数;尾数长则精度高,阶码长则范围大


浮点数是用来表示实数的一种方法,它用

 M(

尾数

) * B( 

基数

)

E(

指数)次方来表示实数


浮点数是用来表示实数的一种方法,它用

 M(

尾数

) * B( 

基数

)

E(

指数)次方来表示实数


Question 15. (单选)
所谓“变号操作”是指将一个整数变成绝对值相同但符号相反的另一个整数。假设使用补码表示的8位整数
X=10010101,则经过变号操作后结果为:(D)

A)01101010 B)00010101 C)11101010 D)01101011

Question 16. (单选)
设有一个用数组Q[1..m」表示的环形队列,约定f为当前队头元素在数组中的位置,r为队
尾元素的后一位置(按顺时针方向),若队列非空,则计算队列中元素个数的公式应为:(2)

1. r-f

2. (m+r-f) mod m

3. (m-r+f)mod m
4. (m-r-f) mod m


Question 18. (单选)
计算机中数据的表示形式是(3)

1. 八进制
2. 十进制
3. 二进制
4. 十六进制

Question 19. (单选)
下面列出的四种存储器中,易失性存储器是(1)

1. RAM
2. ROM
3. PROM
4. CD-ROM

Question 20. (单选)
I/O接口位于 (2)


1. 总线和设备之间
2. CPU和I/O设备之间
3. 主机和总线之间
4. CPU和主存储器之间

Question 21. (单选)
计算机硬件能直接识别和执行的只有(4)

1. 高级语言
2. 符号语言
3. 汇编语言
4. 机器语言

Question 22. (单选)
具有多媒体功能的微型计算机系统中,常用的CD-ROM是(2)

1. 只读型大容量软盘
2. 只读型光盘
3. 只读型硬盘
4. 半导体只读存储器

Question 23. (单选)
微机中1K字节表示的二进制位数是(4)

1. 1000
2. 8x1000
3. 1024
4. 8x1024

Question 24. (单选)
下列字符中,ASCII码值最小的是(2)

1. a
2. A
3. x
4. Y

解析:大写比小写的小


Question 31. (单选)
假定a和b为int型变量,则执行以下语句后b的值为 (4)
a=1; b=10;
do { b-=a; a++; } while (b--<0);  //--这里还有一次

1. 9
2. -2
3. -1
4. 8


Question 32. (单选)
设有以下宏定义:
#define N 3
#define Y(n) ( (N+1)*n)
则执行语句:z=2 * (N+Y(5+1));后,z的值为 (3)

1. 出错
2. 42
3. 48
4. 54
解析:简单替换


Question 33. (单选)
执行以下程序段后,m的值为 (1)
int a[2][3]={ {1,2,3},{4,5,6} };
int m,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));

1. 15
2. 14
3. 13
4. 12


Question 38. (单选)
以下叙述正确的是 (3)

1. 在C程序中,main函数必须位于程序的最前面
2. C程序的每行中只能写一条语句
3. C语言本身没有输入输出语句
4. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误

printf和scanf都是库里实现的,并不是C语法里面规定的,不是C的关键字


Question 41. (单选)
某文件中定义的静态全局变量(或称静态外部变量)其作用域是 (2)

1. 只限某个函数
2. 本文件
3. 跨文件
4. 不限制作用域

Question 43. (单选)
设int x=4; 则执行以下语句: x+=x-=x-x;后,x的值为 (3)

1. 0
2. 4
3. 8
4. 12

解析:赋值运算是右结合的。


Question 45. (单选)
已知int i,a;执行语句: i=(a=2*3,a*5),a+6;后,变量i的值是 (3)

1. 6
2. 12
3. 30
4. 36

解析:逗号的优先级是小于赋值运算符的。


Question 49. (单选)
char x=3,y=6,z;
z=x^y<<2;
则z的二进制值是 (2)

1. 10100
2. 11011
3. 11100
4. 11000

解析:<<的优先级高于位与,位或和异或。


Question 50. (单选)
若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是 (2)

1. i=*p;
2. *p=*&j;
3. i=&j;
4. i=**p;


Question 52. (问答)
有双向循环链表结点定义为:
struct node
{ int data;
struct node *front,*next;
};
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中dat
a值相同的结点删除

解析:用两个向量A_vec、B_vec分别存储链表A、B的元素值,将A_vecB_vec排序,用类似归并排序的方法把A_vecB_vec中值相同的元素放到向量common_vec中。分别遍历链表A、B,用二分查找法查看每个节点元素是否在common_vec中。


3,求1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3);求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,能被625整除的数的个数n4.1000!末尾的零的个数=n1+n2+n3+n4;

#include<stdio.h>#define NUM 1000int find5(int num){int ret=0;while(num%5==0){num/=5;ret++;}return ret;}int main(){int result=0;int i;for(i=5;i<=NUM;i+=5){result+=find5(i);}printf(" the total zero number is %d\n",result);return 0;}


3. 编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数

4.输入N, 打印 N*N 矩阵
比如 N = 3,打印:
1 2 3
8 9 4
7 6 5

N = 4,打印:
1    2    3  4
12 13 14 5
11 16 15 6
10   9   8  7
解答:

1、

#define N 15int s[N][N];void main(){int k = 0, i = 0, j = 0;int a = 1; for( ; k < (N+1)/2; k++ ){while( j < N-k ) s[i][j++] = a++; i++; j--;while( i < N-k ) s[i++][j] = a++; i--; j--;while( j > k-1 ) s[i][j--] = a++; i--; j++;while( i > k ) s[i--][j] = a++; i++; j++; }for( i = 0; i < N; i++ ){for( j = 0; j < N; j++ )cout << s[i][j] << '\t';cout << endl;}}

2、

define MAX_N 100int matrix[MAX_N][MAX_N];/**(x,y):第一个元素的坐标* start:第一个元素的值* n:矩阵的大小*/void SetMatrix(int x, int y, int start, int n) {int i, j;if (n <= 0) //递归结束条件return;if (n == 1) { //矩阵大小为1时matrix[x][y] = start;return;}for (i = x; i < x + n-1; i++) //矩阵上部matrix[y][i] = start++;for (j = y; j < y + n-1; j++) //右部matrix[j][x+n-1] = start++;for (i = x+n-1; i > x; i--) //底部matrix[y+n-1][i] = start++;for (j = y+n-1; j > y; j--) //左部matrix[j][x] = start++;SetMatrix(x+1, y+1, start, n-2); //递归}void main() {int i, j;int n;scanf("%d", &n);SetMatrix(0, 0, 1, n);//打印螺旋矩阵for(i = 0; i < n; i++) {for (j = 0; j < n; j++)printf("%4d", matrix[i][j]);printf("\n");}}

斐波拉契数列递归实现的方法如下:

int Funct( int n ){if(n==0) return 1;if(n==1) return 1;retrurn Funct(n-1) + Funct(n-2);}请问,如何不使用递归,来实现上述函数?请教各位高手!解答:int Funct( int n ) // n 为非负整数{int a=0;int b=1;int c;if(n==0) c=1;else if(n==1) c=1;else for(int i=2;i<=n;i++) //应该n从2开始算起{c=a+b;a=b;b=c;}return c;}

解答:
现在大多数系统都是将低字位放在前面,而结构体中位域的申明一般是先声明高位。
100 的二进制是 001 100 100
低位在前 高位在后
001----s3
100----s2
100----s1
所以结果应该是 1
如果先申明的在低位则:
001----s1
100----s2
100----s3
结果是 4
1、原题跟little-endian,big-endian没有关系
2、原题跟位域的存储空间分配有关,到底是从低字节分配还是从高字节分配,从Dev C++和VC7.1上看,都是从低字节开始分配,并且连续分配,中间不空,不像谭的书那样会留空位
3、原题跟编译器有关,编译器在未用堆栈空间的默认值分配上有所不同,Dev C++未用空间分配为
01110111b,VC7.1下为11001100b,所以在Dev C++下的结果为5,在VC7.1下为1。

注:PC一般采用little-endian,即高高低低,但在网络传输上,一般采用big-endian,即高低低高,华为是做网络的,所以可能考虑big-endian模式,这样输出结果可能为4


Question 1. (单选)
ping命令是主要使用下列哪个协议实现的?
1. ARP
2. ICMP
3. IP
4. TCP
5. UDP
解:使用的是ICMP协议,是“Internet Control Message Protocol”(Internet控制消息协议)的缩写,是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

Question 2. (单选)
OSI模型的哪一层提供文件传输服务
1. 应用层
2. 数据链路层
3. 传输层
4. 表示层
  
Question 3. (单选)
TCP/IP的网络通信模型哪一层大致对应于O S I模型的物理层和数据链路层
1. 网络接口层
2. 互连网层
3. 传输层
4. 应用层
  
Question 4. (单选)
IP 协议属于T C P / I P模型的哪一层
1. 网络接口层
2. 互连网层
3. 传输层
4. 应用层
  
Question 5. (单选)
下面哪一个是回送地址
1. 1.1.1.1
2. 255.255.255.0
3. 0.0.0.0
4. 127.0.0.1
  
Question 6. (单选)
为什么不将N e t B I O S用于因特网互连
1. 它是不可路由的
2. 它是不安全
3. 它是不可靠的
4. a和b
  
Question 7. (单选)
一个以太网帧的最小和最大尺寸是多少?
1. 46和64字节
2. 64 和1518字节
3. 64和1600字节
4. 28和46字节
  
Question 8. (单选)
下面哪一种是路由器的主要功能
1. 选择转发到目标地址所用的最佳路径
2. 重新产生衰减了的信号
3. 把各组网络设备归并进一个单独的广播域
4. 向所有网段广播信号
  
Question 9. (单选)
网络中PC机与集线器相联所使用的网线接头类型为
1. RJ-45
2. RJ-11
  
Question 10. (单选)
100BaseT中的“Base”的意义是
1. 基础传输
2. 基带传输
  
Question 11. (单选)
Internet网络层使用的四个重要协议是
1. IP、ICMP、ARP、UDP
2. IP、ICMP、ARP、RARP
3. TCP、UDP、ARP、RARP
  
Question 12. (单选)
以下关于MAC的说法中错误的是
1. MAC地址在每次启动后都会改变
2. MAC地址一共有48比特,它们从出厂时就被固化在网卡中
3. MAC地址也称做物理地址,或通常所说的计算机的硬件地址
  
Question 13. (单选)
交换机不具有下面哪项功能
1. 交换机不具有下面哪项功能
2. 回路避免
3. 路由转发
4. 地址学习
  
Question 14. (单选)
以下不属于私有地址的网段是(4)
1. 10.0.0.0/8
2. 172.16.0.0/12
3. 192.168.0.0/16
4. 224.0.0.0/8
  
Question 15. (单选)
下面哪种网络设备用来隔绝广播
1. 集线器
2. 交换机
3. 路由器
  
Question 16. (单选)
汉诺塔(Hanoi)问题中令h(n)为从A移动n个金片到C上所用的次数,则递归方程为
1. h(n)=2hn-1
2. h(n) = 2h(n-1)+1
3. h(n)=2^n-n*h-1
4. h(n)=2h*n-1
  
Question 17. (单选)
启发式搜索一般是何种算法的改进
1. 深度优先搜索
2. 广度优先搜索
3. 动态规划
4. 贪婪法
  
Question 18. (单选)
假设一棵二叉树的后序遍历序列为 DGJHEBIFCA ,中序遍历序列为 DBGEHJACIF ,则其前序遍历序列为 ( ) 。
1. ABCDEFGHIJ
2. ABDEGHJCFI
3. ABDEGHJFIC
4. ABDEGJHCFI
  
Question 19. (单选)
散列函数有一个共同性质,即函数值应按()取其值域的每一个值;
1. 最大概率
2. 最小概率
3. 同等概率
4. 平均概率
  
Question 20. (单选)
下面描述中正确的为:
1. 线性表的逻辑顺序与物理顺序总是一致的。
2. 线性表的顺序存储表示优于链式存储表示。
3. 线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
4. 二维数组是其数组元素为线性表的线性表。
  
Question 21. (单选)
设单链表中结点的结构为
TYPEDEF STRUCT NODE { //链表结点定义
ELEMTYPE DATA; //数据
STRUCT NODE * LINK; //结点后继指针
} LISTNODE;
(1) 已知指针P所指结点不是尾结点,若在*P之后插入结点*S,则应执行下列哪一个操作?
1. S->LINK = P; P->LINK = S;
2. S->LINK = P->LINK; P->LINK = S;
3. S->LINK = P->LINK; P = S;
4. P->LINK = S; S->LINK = P;
  
Question 22. (单选)
设单链表中结点的结构为
TYPEDEF STRUCT NODE { //链表结点定义
ELEMTYPE DATA; //数据
STRUCT NODE * LINK; //结点后继指针
} LISTNODE;
(2) 非空的循环单链表FIRST的尾结点(由P所指向)满足:
1. P->LINK == NULL;
2. P == NULL;
3. P->LINK == FIRST;
4. P == FIRST;


两个人约好12:00-13:00之间见面,先到的人等后到的人不超过15分钟,等待时间超过15分钟,先到的人会离去,问两人相遇的概率。


设两个人到达的时间分别为x,y。将12:00~13:00这个时间段看做0~1的话,15分钟即是1/4。

由题设得,0<x,y<1

若两人相遇,则 |x-y| <= 1/4

用图表示为


即中间部分的面积,为1-2*[(1/2)*(3/4)2] = 7/16



void mMalloc(char*& p,int size)  //这里必须写引用,否则p==NULL,或者返回char*{p = (char*) malloc(size);memset((void*)p,0,size);//return p;}int main(){char* str1 = "0123456789";char* str2 = NULL;char str3[10];char str4[10];//str2 =mMalloc(str2,11);memcpy(str2,str1,11); //这里是11,要'\0'for(int i = 0;i<10;i++)sprintf(str3,"%d",i);memcpy(str4,str3,10);printf("%s\n",str1);printf("%s\n",str2);printf("%s\n",str3);  //这里显示的是9printf("%s\n",str4);}