单选(15)
- 1.从通信协议的角度来看,路由器是在哪个层次上实现网络互连的。
答案:网络层
- 解释
路由器在网络层,网络层主要负责IP寻址、地址解析等;在OSI参考模型和TCP/IP协议栈中定义都是一样。
- 2.请选出 BOOL flag与“零值“比较正确的if语句。
答案:if(flag)
- 解释
参考这里
另外需要注意float和指针变量与’零值‘的比较。
- 3.方法的重载和重写都是实现多态的方式,方法的重载的多态性属于。
答案:编译时多态
- 解释
参考这里
1.编译时的多态:函数重载和运算符重载,在编译时就决定调用哪个函数。
2.运行时的多态:通过类继承和虚函数实现的。
- 4.元素a,b,c,d,e依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素d开头的序列个数是多少。
答案:4
- 解释
参考这里
- 5.事务的ACID中的A指什么。
答案:原子性
- 解释
参考这里
原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)。
- 6.在32位系统中,下面程序打印的结果是什么。
- 答案:4, 5
#include<stdio>
void f(char str[10])
{
printf("%d", sizeof(str));
}
int main()
{
char str[] = "abcd";
f(str);
printf("%d", sizeof(str));
return 0;
}
- 解释
参考第7题
- 7.下面算法的时间复杂度是。
答案:O(n)
int f(int n)
{
if (n <= 1) return 1;
return n * f(n-1);
}
- 8.64位系统中,下面程序打印的结果是。
答案:4, 8
#include<stdio>
void f(char str[10])
{
printf("%d", sizeof(str));
}
int main()
{
char str[] = "abc";
printf("%d", sizeof(str));
f(str);
return 0;
}
- 解释
char字符串有结束符,所以占4个字节。
64位系统中的指针占8个字节,32位->4个字节。
- 9.下面运算符不能重载的是。
答案:B
A. delete
B. sizeof
c. ++
D. <=
- 解释
参考这里
C++中大多数的运算符允许重载
有以下五个不能重载
1,成员访问运算符, “.”
2,成员指针访问运算符,“.*”
3,域运算符,“::”
4,长度运算符,“sizeof”
5,条件运算符,“?:”
- 10.关于进程和线程的叙述,错误的是:
答案:D
A.进程至少有一个线程,进程有自己独立的地址空间,线程共享进程的地址空间.
B.线程是处理器调度的基本单位.
C.进程是资源分配和拥有的单位,同一进程内的线程共享进程的资源.
D.线程之间可以并发执行,而进程不可以.
- 解释
参考这里
- 11.设文件索引结点中有7个地址项,其中4个地址项是直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,每个地址项大小为4B。若磁盘索引块和磁盘数据块大小均为256B,则可表示的单个文件最大长度是
答案:1057KB
- 解释
参考这里
首先,每个地址代表一个数据块,由题知一个数据块大小为256B,因此我们需要计算数据块数。
一共7个地址,有4个是直接地址,2个一级地址,1个二级地址。
每个块上能存放的索引项为256B/4B = 2^6。
两个一级块指向的数据块为22^6 = 2 ^7。
一个二级地址指向的数据块为12^62 ^6 = 2 ^12。
则共计有4+2^7 + 2 ^12 = 4228块,文件大小为4228256 B/1024 = 1057KB。
- 12.具有12个关键字的有序表,折半查找的平均查找长度是多少。
答案:3.1
- 13.下列运算符不能重载的是。
答案:?:
A. new
B. <=
C. ?:
D. delete
- 14.下面程序的输出是什么
答案:1,2,3,0,5,6,7,8,9
int main()
{
int a[3][3]{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},};
//p表示a矩阵第二行的首地址
auto p = *(a+1);
//对第二行的第一个数值赋值为0
*p = 0;
for (auto i = 0; i < 3; i++)
{
for (auto j = 0; j < 3; j++)
{
printf("%d", a[i][j]);
}
}
return 0;
}
- 15.下面程序的输出是什么
答案:1,2,3,4,5,6,0,8,9
int main()
{
int a[3][3]{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},};
//p表示a矩阵第二行的首地址
auto p = *(a+2);
//对第二行的第一个数值赋值为0
*p = 0;
for (auto i = 0; i < 3; i++)
{
for (auto j = 0; j < 3; j++)
{
printf("%d", a[i][j]);
}
}
return 0;
}
多选(6)
- 1.下列正确的是
答案:AC
A. MysQL的触发器只支持行级触发,不支持语句级触发。
B. 删除表s的语句是drop s。
C. MyISAM只支持表级锁,InnoDB支持行级锁和表级锁。
D. 使用组合索引可以减少文件索引大小,但在使用时速度不及多个单列索引。
- 解释
A参考这里C选项 MyISAM的表锁和InnoDB的行锁
D 使用组合索引,可以减少文件索引大小,在使用时速度要优于多个单列索引。
- 2.下列正确的是
答案:ABD
A. MysQL的触发器只支持行级触发,不支持语句级触发。
B. 删除表s的语句是drop table s。
C. InnoDB只支持表级锁,MyISAM支持行级锁和表级锁。
D. 使用组合索引可以减少文件索引大小,在使用是速度由于多个单列索引。
- 解释
C选项 MyISAM的表锁和InnoDB的行锁
- 3.下列说法正确的是
答案:AB
A. std::function对象实例不允许进行==和!= 比较操作。
B. std::bind不论是普通函数对象还是成员函数都可以绑定。
C. std::function对象实例不允许被拷贝和移动。
D. lambda表达式中,[a, &b]表示a以复制捕获,b以指针捕获。
- 4.下列说法正确的是
答案:A
A. std::function对象实例不允许进行==和!= 比较操作。
B. std::bind不论是普通函数对象还是成员函数都可以绑定。
C. std::function对象实例不允许被拷贝和移动。
D. lambda表达式中,[a, &b]表示a以复制捕获,b以指针捕获。
- 5.关于进程和线程的叙述,错误的是
答案:ABD
A. 进程至少有一个线程,进程和线程都有自己独立的地址空间。
B. 进程是处理器调度的基本单位,线程不是。
C. 进程是资源分配和拥有的单位,同一进程内的线程共享进程的资源。
D. 其他选项描述都错误。
解释
参考这里
A线程是共享地址空间,进程是独立的地址空间
B(根本区别)进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
C正确。
- 6.排序算法中具备排序稳定性的是
答案:BD
A. 堆排序
B. 归并排序
C. 快速排序
D. 基数排序
解释
参考这里
排序算法稳定性:意思就是说大小相同的两个值在排序之前和排序之后的先后顺序不变,这就是稳定的。
不稳定的排序:堆排序,快速排序,希尔排序,选择排序。
稳定的排序:冒泡排序,插入排序,归并排序,基数排序。