牛客网错题集锦3

来源:互联网 发布:如何发网络短信 编辑:程序博客网 时间:2024/06/02 02:04

1、运行在多核处理器上的Linux环境中,若临界区非常短,且不允许线程上下文切换的情况下,使用下列哪种机制满足上述需求并且性能最好?(SpinLock)

1)SpinLock 2)Mutex  3)Semaphore   4)Condition variable 

解析:spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切换(用户态->内核态),但是spinlock使用不当(如临界区执行时间过长)会导致cpu busy飙高。

2、以下函数中,和其他函数不属于一类的是____

1)fwrite 2)putc 3)pwrite 4)putchar 5)getline 6)scanf

解析:,pwrite是系统调用,其他都是库函数

常见文件系统 系统函数

  1. fcntl  文件控制  
  2. open  打开文件   
  3. creat  创建新文件  
  4. close  关闭文件描述字  
  5. read  读文件  
  6. write  写文件  
  7. readv  从文件读入数据到缓冲数组中  
  8. writev  将缓冲数组里的数据写入文件  
  9. pread 对文件随机读  
  10. pwrite  对文件随机写 
3、新建一个管理员用户admin,需要使用的参数() useradd -u 0 -o admin

-u 用户号 指定用户的用户号;因为系统用户的用户号为0,故指定用户号为0 如果同时有-o选项,则可以重复使用其他用户的标识号;因为系统本身存在用户号为0的系统用户,故应该使用该参数。

u表示创建用户.g表示创建用户组 -e指定账号的有效期限,缺省表示永久有效。
-f指定在密码过期后多少天即关闭该账号。-p表示创建密码

4、int main(){fork()||fork();}共创建几个进程:_____

首先,第一个fork()执行后,产生一个父进程的副本(返回值为子进程ID)和一个子进程(返回值为0),如下图所示,由||知道,父进程的左分支终止,继续执行右分支的分裂,再产生一个子进程的副本和一个子进程,即下图中的子1,因此总共产生了3个进程,如图中的圈圈

)

1、KMP算法的特点是在模式匹配时指示主串的指针不会变小(对)

解析:KMP算法的改进在于:每当一趟匹配过程中出现字符比较不相等时,不需回溯主串指针,而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较。

2、判断下述语句的对错:MFC中CString是类型安全的类。(对)

解析:类型安全就是说,如果两个类型直接要相互转换,必须要显示的转换,不能偷偷摸摸的只用一个等于号就隐式转换了

MFC数据类型转换标准库std的string 和MFC类库CString之间可以通过CString的format方法进行转换。

3、

char*p1 = ”123”, *p2 = ”ABC”, str[50] = “xyz”;
strcpy(str + 2, strcat(p1, p2));
printf(“%s\n”, str);

上面运行出错。

解析:原代码有错:p1和p2都指向常量字符串,在常量区,所以不能对其进行操作;改为数组即可,但是用字符串初始化数组时要记得将数组长度加1,因为字符串默认的末尾有一个‘\0’;第二点要注意的是,strcat函数的p1要有足够的空间来容纳p1和p2连接后的串长。

在下列表述中,()是错误的

正确答案: A B D   你的答案: A B C (错误)

含有一个或多个空格字符的串称为空串
对n(n>0)个顶点的网,求出权最小的n-1条边便可构成其最小生成树
选择排序算法是不稳定的
平衡二叉树的左右子树的结点数之差的绝对值不超过1
A选项:长度为0 的串为空串,即为“” 。由多个空格字符构成的字符串称为空格串
B选项:如果权值最小的n-1条边构成了环的话,就不能构成最小生成树
D选项:平衡二叉树的左右子树高度之差的绝对值不超过1.
C选项:选择排序包括直接选择排序和堆排序,都是不稳定的算法
1、C++中关于堆和栈的说法,哪个是错误的:堆和栈都可以静态分配
静态分配是在编译阶段就确定大小的,堆不能进行静态分配,堆是在运行过程中分配的。
栈也可以通过函数进行动态分配,释放时由编译器自己自动释放 
堆是使用malloc()、calloc()、realloc()等函数动态分配的,而使用alloca()函数可以动态分配栈的内存空间,释放的时候由编译器自己释放。

2、以下选项中不属于C语言标识符的是?C语言中的标识符有:关键字、预定义标识符、用户标识符

3、关于指针概念说法不正确的是()指针变量可以由整数赋,不能用浮点赋

解析:指针是用来指示一个内存地址的变量,因此只能将地址赋给指针变量,而不能是整数或浮点数。

4、统计日志中ip登陆次数,下面可以正确统计的为

1)cat catalina.log | awk -F ' ' '{print $3}' | sort | uniq -c | wc -l

2)cat catalina.log | awk '{print $3}' | sort -k1nr | uniq -c | wc –l

1、awk -F ' ' '{print $3}' 指定空格是分隔符进行分割,取第三个。(不指定默认分隔符也是空格
2、uniq -c(uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。参数 - c :进行计数)
3、wc -l 行计数。

A : head -10 统计不完整。不符合题目意思
B : 没排序。重复行不相邻。故uniq -c 无法起到正确的作用。故统计结果错误。
5、linux下解释: ip rule add from 192.168.3.112/32 [tos 0x10] table 2 pref 1500。

答案:向规则链增加一条规则,规则匹配的对象是IP为192.168.3.112,tos等于0x10的包,使用路由表2,这条规则的优先级是1500
则包含3个要素: 
什么样的包,将应用本规则(所谓的SELECTOR,可能是filter更能反映其作用); 
符合本规则的包将对其采取什么动作(ACTION),例如用那个表; 
本规则的优先级别。优先级别越高的规则越先匹配(数值越小优先级别越高)。
6、查看TCP连接的命令是什么?netstat
解析:tcpdump是简单可靠网络监控的实用工具
top 显示活动进程方面的情况

netstat显示网络有关的信息,比如套接口使用情况、路由、接口、协议(TCP等)等

ifconfig是查看活动的网卡信息

1、请问下面的程序一共输出多少个”-”?
1
2
3
4
5
6
7
8
9
int main(void)
{
  int i;
  for(i=0;i<2;i++){
    fork();
    printf("-");
  }
  return 0;

答案是:8

2、

编译内核时,可以使用哪些命令对内核进行配置?多选(ABCD)
make config
make menuconfig
make oldconfig
make xconfig

原创粉丝点击