笔试题基础(第三篇
来源:互联网 发布:战地4后悔重置数据了 编辑:程序博客网 时间:2024/05/21 22:54
1)无锁化编程有哪些常见方法?
A) 针对计数器,可以使用原子加
B) 只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)
C) RCU(Read-Copy-Update),新旧副本切换机制,对于旧副本可以采用延迟释放的做法
D) CAS(Compare-and-Swap),如无锁栈,无锁队列等待
解答:D
2)设集合A={1,2,3},A上的关系R={(1,1),(2,2),(2,3),(3,2),(3,3)},则R不具备( )?
A) 自反性
B) 传递性
C) 对称性
D) 反对称性
解答:D
假设集合A,以及基于A上的关系R
a) 自反: 如果a是A的元素,那么<a,a>是R的元素;
即 a∈A =》 <a,a>∈R
b) 反自反: 如果a是A的元素,那么<a,a>不是R的元素 ;
即 a∈A =》 <a,a>∉R
c) 对称:如果<a,b>是R的元素,那么<b,a>是R的元素 ;
即 <a,b>∈R =》 <b,a>∉R
d) 反对称:如果<a,b>,<b,a>是R的元素,那么a,b相等;
即 <a,b>∈R 且 <b,a>∈R =》 a = b
e) 传递:如果<a,b>,<b,c>是R的元素,那么<a,c>是R的元素;
即 <a,b>∈R 且 <b,c>∈R =》 <a,c>∈R
由于 <3,2> ∈R 且 <2,3> ∈R ,但 3≠2,不满足”定义d)” ,即 R不满足“反对称性”。选D。
3)在N个乱序数字中查找第k大的数字,时间复杂度可以减小至?
A) O(N*logN)
B) O(N)
C) O(1)
D) O(2)
解答:B
这是一个顺序统计量问题,用基数排序和桶排序均可做到O(n)。
4)IP数据报头采用()字节序,在此字节序下从低地址到高地址0x1234的表示形式为 () 。
A) big_endian,0x12 0x34 0 0
B) little_endian,0x34 0x12 0 0
C) big_endian,0 0 0x12 0x34
D) little_endian, 0 0 0x34 0x12
解答:C
其实 big endian 是指低地址存放最高有效字节( MSB ),而 little endian 则是低地址存放最低有效字节( LSB )。
比如,数字 0x12345678 在两种不同字节序 CPU 中的存储顺序如下所示:
//数字:0x12345678
Big Endian:
低地址 高地址 -----------------------------------------> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 12 | 34 | 56 | 78 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Little Endian:
低地址 高地址 -----------------------------------------> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 78 | 56 | 34 | 12 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
从上面两图可以看出,采用big endian方式存储数据是符合我们人类的思维习惯的。由于IP数据报头采用“big endian”,所以0x1234 的big endian形式为:0 0 0x12 0x34
5)有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储(按行存指先存储第一行,再第二行,直到最后一行;按列存指先存储第一列,再第二列,直到最后一列)?
A) A按行存,B按行存。
B) A按行存,B按列存。
C) A按列存,B按行存。
D) A按列存,B按列存。
解答:A
这个题最开始我选的是B,想到的是传统矩阵相乘的方法,时间复杂度为O(n^3 ),但是这不是最优的方法,最优方法为Strassen矩阵相乘发,时间复杂度降低为O(n^2.81),用分治的思想将矩阵分块计算,在这个算法中按行存储更有利。所以正确答案为A。
6)Fill the blanks inside class definition
class Test{ public: ____ int a; ____ int b; public: Test::Test(int _a , int _b) : a( _a ) { b = _b; }};int Test::b;int main(void){ Test t1(0 , 0) , t2(1 , 1); t1.b = 10; t2.b = 20; printf("%u %u %u %u",t1.a , t1.b , t2.a , t2.b); return 0;}
Running result : 0 20 1 20
A) static/const
B) const/static
C) –/static
D) const static/static
E) None of above
解答:BC
对于成员变量a,若它为const类型,那么必须要使用Test::Test(int _a , int _b) : a( _a )这种初始化形式,若它为普通成员变量,也可以采取Test::Test(int _a , int _b) : a( _a )这种形式,所以a可以为const或者普通类型,由于b没有采取Test::Test(int _a , int _b) : b( _b )这种形式,所以b一定不是const类型,有main()中的t1.b和t2.b的输出都是20可以知道,b是静态变量。
- 笔试题基础(第三篇
- 阿里笔试第三题
- 笔试题基础(第二篇
- 笔试题基础(第四篇
- 十月份第三周笔试题
- 华为笔试题第三道
- C++笔试题第三波
- CoreJava 笔试题摘抄(二) 基础篇
- iOS基础笔试题
- linux 基础笔试题
- J2EE基础笔试题
- java基础笔试题
- java 基础笔试题
- 华为笔试基础题
- android 基础笔试题
- 腾讯笔试基础题
- java基础笔试题
- 找工作笔试题基础
- Redis学习笔记(一)--认识Redis
- 员工管理系统数组版-方法的构建以及在主程序中的调用
- 高内聚,低耦合
- 异构计算
- POJ 1328
- 笔试题基础(第三篇
- hdu5428(BestCoder Round #54 (div.2)1002题)
- 如何获得免费的全SSD云主机?
- 关于gdb的一些用法
- 安装mysql connector odbc 后在 控制面板 数据源下没有找到mysql的驱动
- vim的复制粘贴小结
- LeetCode(54)Spiral Matrix
- WPF资源
- What's the point of Spring MVC's DelegatingFilterProxy?