数据挖掘练习题(2)

1.struct st
{
int *p;
int i;
char a;
};
int sz=sizeof(struct st);
如下C程序,在64位处理器上运行后sz的值是什么?
A 24
B 20
C 16
D 14
E 13
F 12

int *:偏移量为0,字节数为8;int:可用的偏移量是8,是sizeof(int)d的倍数,不需要填充,放在偏移量为8的位置上,字节数是4;char:可用的偏移量是14,是size(char)的倍数,不需要填充,放在偏移量为12的位置上,字节数为1,总字节数是8+4+1=13,不是8的倍数,在加3,即为16

2.在100-999这900个自然数中,若将组成这个数的三个数字认为是三条线段的长度,那么这三条线段组成一个等腰三角形(包括等边)的共有()个.
A45
B91
C121
D142
E156
F165
答案:F
说明:
先考虑等边三角形情况
则a=b=c=1,2,3,4,5,6,7,8,9,此时n有9个
再考虑等腰三角形情况,若a,b是腰,则a=b
当a=b=1时,c<a+b=2,则c=1,与等边三角形情况重复;
当a=b=2时,c<4,则c=1,3(c=2的情况等边三角形已经讨论了),此时n有2个;
当a=b=3时,c<6,则c=1,2,4,5,此时n有4个;
当a=b=4时,c<8,则c=1,2,3,5,6,7,有6个;
当a=b=5时,c<10,有c=1,2,3,4,6,7,8,9,有8个;
由加法原理知n有2+4+6+8+8+8+8+8=52个
同理,若a,c是腰时,c也有52个,b,c是腰时也有52个
所以n共有9+3×52=165个
3.14、有无限的水源,一个5L无刻度桶和一个7L无刻度桶,则只利用这两个无刻度桶,将不能获得()L水
A2
B3
C6
D8
E11
F以上均能获得
答案:F
说明:均可获得。
2:7L装满,倒满5L,剩2L
3:5L装满,倒7L;再装满5L,倒满7L,剩3L
6:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,再倒满7L,剩1L;倒给7L,5升装满,共6L。
8:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,共8L
11:7L装满,倒满5L,剩2L;倒给5L,7L装满,再倒满5L,剩4L;倒给5L,7L倒满,共11L
3.关于linux的I/O复用接口select和epoll,下列说法错误的是()
A select调用时会进行线性遍历,epoll采用回调函数机制,不需要线性遍历
B select的最大连接数为FD_SETSIZE
C select较适合于有大量并发连接,且活跃链接较多的场景
D epoll较适用于有大量并发连接,但活跃连接不多的场景
E epoll的效率不随FD数目增加而线性下降
F epoll通过共享存储实现内核和用户的数据交互
答案 :C
说明:select 和 epoll效率差异的原因:select采用轮询方式处理连接,epoll是触发式处理连接。

Select:

1.Socket数量限制:该限制可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024.
2.操作限制:通过遍历FD_SETSIZE(1024)个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍。

Epoll

1.Socket数量无限制:该模式下的Socket对应的fd列表由一个数组来保存,大小不限制(默认4k)。
2.操作无限制:基于内核提供的反射模式,有活跃Socket时,内核访问该Socket的callback,不需要遍历轮询。
但当所有的Socket都活跃的时候,所有的callback都被唤醒,会导致资源的竞争。既然都是要处理所有的Socket,
那么遍历是最简单最有效的实现方式。

4.下面关于系统调用的描述中,错误的是()
A系统调用把应用程序的请求传输给系统内核执行
B系统调用中被调用的过程运行在”用户态”中
C利用系统调用能够得到操作系统提供的多种服务
D是操作系统提供给编程人员的接口
E系统调用给用户屏蔽了设备访问的细节
F系统调用保护了一些只能在内核模式执行操作指令
答案:B
5.18、在TCP/IP建立连接过程中,客户端和服务器端的状态转移说法错误的是?
A经历SYN_RECV状态
B经历SYN_SEND状态
C经历ESTABLISHED状态
D经历TIME_WAIT状态
E服务器在收到syn包时将加入半连接队列
F服务器接受到客户端的ack包后将从半连接队列删除
答案:D

说明:TCP建立连接时,首先客户端和服务器处于close状态。然后客户端发送SYN同步位,此时客户端处于SYN-SEND状态,服务器处于lISTEN状态,当服务器收到SYN以后,向客户端发送同步位SYN和确认码ACK,然后服务器变为SYN-RCVD,客户端收到服务器发来的SYN和ACK后,客户端的状态变成ESTABLISHED(已建立连接),客户端再向服务器发送ACK确认码,服务器接收到以后也变成ESTABLISHED。然后服务器客户端开始数据传输

6.关于c++的inline关键字,以下说法正确的是()
正确答案 : D您的答案 : F
A使用inline关键字的函数会被编译器在调用处展开
B头文件中可以包含inline函数的声明
C可以在同一个项目的不同源文件内定义函数名相同但实现不同的inline函数
D定义在Class声明内的成员函数默认是inline函数
E优先使用Class声明内定义的inline函数
F优先使用Class实现的内inline函数的实现
7.对N个数进行排序,在各自最优条件下以下算法复杂度最低的是( )
快速排序 nlogn
堆排序 nlogn
冒泡排序 在改良的冒泡下 最优时间复杂度为n
插入排序 最优下n
选择排序 n*n
归并 nlogn

8.假设在n进制下,下面的等式成立,n值是()240*12=2880
假设为n进值则 [2*(n^2)+4*(n^1)+0] * [1*n+2]=2*(n^3)+8*(n^2)+8*(n^1)

化简后居然为很等式 ,n为任一值
如果用10进制代入时,等号左右两边是相等的。因为10进制相等的两个数转化为任意进制都会相等,所以答案是多个。
9.有无限的水源,一个5L无刻度桶和一个7L无刻度桶,则只利用这两个无刻度桶,将不能获得()L水
A. 2
B. 3
C. 6
D. 8
E. 11
F. 以上都对

这类问题其实不用强推的,可以有这样的技巧: 对小容积进行成倍对大容积取模,然后得到一些数,这些数代表肯定能凑出来的容积。然后这些容积组合出来的也是可以倒出来的容积:
5%7 = 5;10%7 = 3; 15%7 = 1;20%7 = 6;25%7 = 4; 30%7 = 2;3 5%7 = 0;40%7 = 5;……
又3+5 = 8;5+6 = 11;
10.下面关于一个类的静态成员描述中,不正确的是()
A 静态成员变量可被该类的所有方法访问
B 该类的静态方法只能访问该类的静态成员函数
C 该类的静态数据成员变量的值不可修改
D 子类可以访问父类的静态成员
E 静态成员无多态特性

类的静态成员属于整个类 而不是某个对象,可以被类的所有方法访问,子类当然可以父类静态成员;
静态方法属于整个类,在对象创建之前就已经分配空间,类的非静态成员要在对象创建后才有内存,所有静态方法只能访问静态成员,不能访问非静态成员;
静态成员可以被任一对象修改,修改后的值可以被所有对象共享。

https://blog.csdn.net/liyangbai/article/details/74982195

猜你喜欢

转载自blog.csdn.net/wuhuimin521/article/details/80870416