牛客网错题知识点整理C/C++(二)

一. 知识点以及错题

1.避免死锁的一个著名的算法是___________

  1. 正确的答案为银行家算法:

参与者有客户,银行家以及资金。 客户相当于是申请资源的进程,银行家相当于是操作系统,而资金就相当于是资源。
银行家给客户分配资源之前,会预先估计资金分配的安全性。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。否则,就不给顾客分配。

  1. 先入先出和优先级算法是进程调度算法。
  2. 银行家算法是死锁避免算法。
  3. 资源按序分配法是死锁预防算法。

死锁预防算法和避免算法的区别:死锁的预防是通过打破死锁的4个必要条件来实现,资源按序分配打破了其中的“环路等待”。但是死锁预防算法限制了进程对资源的请求,降低了系统效率,死锁避免算法是针对这个问题进行的改进。

2. 如果一个程序为多个程序所共享,那么该程序的代码在执行的过程中不能修改,即程序应该是____B______

A.可执行码
B.可重入码
C.可改变码
D.可再现码

可重入代码(Reentry code)也叫纯代码(Pure code)是一种允许多个进程同时访问的代码。为了使各进程所执行的代码完全相同,故不允许任何进程对其进行修改。程序在运行过程中可以被打断,并由开始处再次执行,并且在合理的范围内(多次重入,而不造成堆栈溢出等其他问题),程序可以在被打断处继续执行,且执行结果不受影响。

3.C语言中引入++运算符的目的是为了提高编译后的目标程序的运行频率,请问这句话正确的吗?

  • 自加运算并不会提高运行时效率,反而会降低,只是为了代码更精简

4. 默认block size = 4k情况下,Ext3文件系统支持的最大文件大小是______

ext3还是使用15个inode来查找数据块,前12个为直接数据块,直接指向存储数据的数据块,接下来分别为一级间接块,二级间接块,三级间接块.
最大文件:前面直接指向12个数据块,一级间接块最大为block size / 4,block size就是数据块的大小,因为一个索引是4个字节,所以除以4,这样计算下来,最大的文件可以使用的总块数为:12 + (block size/4) + (block size/4)^2 + (block size/4)^3,如果block size大小为4K,则为(12 + 2^10 + 2^20 + 2^30) * 2^12 约等于4T。

5. 在系统内存中设置磁盘缓冲区的作用是什么?

为了减少磁盘I/O的次数

6.文件系统中在创建一个文件时,为它建立了______.

建立了文件目录项,不是目录文件;

7. 下列对函数double add(int a, int b)进行重载,正确的是:

int add(int a, int b, int c);
int add(double a, double b);
double add(double a, double b);
int add(int a, int b);

上述四个重载中,第四个是错误的,因为重载的要求是参数的类型和个数不同,对返回值的类型不做要求;

8.在64位操作系统中,下面程序返回什么结果?

int main(){
	int *k[10][30];
	printf("%d\n", sizeof(k));

	return 0;
}

结果是:2400:8x30x10

9. 有以下程序,运行之后的结果是什么?

#include <stdio.h>

int main(void){
	int a = 2, b = 2, c = 2;
	printf("%d", a/b&c);
	return 0;
}

易错点:这里是位运算&不是&&;

10. unsigned 和 void 在 C 中都是保留字。请问这句话的说法是正确的吗?

这句话是正确的的;

在这里插入图片描述

11.C 语言本身有输入输出语句?

这句话是错误的,C语言本身并不提供输入输出语句,其输入输出语句都是由函数来实现的;也就是说printf和scanf是函数的名字不是关键字;

12.设p是指针变量,语句p=NULL;等价于什么?

在这里插入图片描述

ASCII码第0个, 对应代码NUL, 对应转义字符\0, 对应字符解释空字符

13. 已知ch为字符型变量,下列赋值错误的是?

在这里插入图片描述
错误答案为:A
这里的’\‘不是字符,所以是错误的,C选项中的NULL表示(void*)0,可以理解为’\0’

14. 下面函数的结果是什么?

void func() {
	int k = 1^(1 << 31 >> 31);
	printf("%d\n", k);
}

1算术左移31位变为-128:
1000 0000 0000 0000 0000 0000 0000 0000
-128算术右移31 位变为-1:
1111 1111 1111 1111 1111 1111 1111 1111
-1与1异或得-2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值