【C/C++笔试练习】线程作用、磁盘的固定块、多进程、进行调度、cache、内存抖动、非抢占CPU调度、inode描述、文件操作、进制、最难的问题、因子个数

本文主要是介绍【C/C++笔试练习】线程作用、磁盘的固定块、多进程、进行调度、cache、内存抖动、非抢占CPU调度、inode描述、文件操作、进制、最难的问题、因子个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • C/C++笔试练习
  • 选择部分
    • (1)线程作用
    • (2)磁盘的固定块
    • (3)多进程
    • (4)进行调度
    • (5)cache
    • (6)内存抖动
    • (7)非抢占CPU调度
    • (8)inode描述
    • (9)文件操作
    • (10)进制
  • 编程题 day30
    • 最难的问题
    • 因子个数

C/C++笔试练习

选择部分

(1)线程作用

  下列关于线程的说法错误的是()

  A.耗时的操作使用线程,提高程序响应
  B.耗内存的操作使用线程,提高内存利用率
  C.多CPU的系统使用线程,提高CPU利用率
  D.并行操作使用线程,如c/s架构中服务端程序为每个客户端请求创建一个线程来响应

  答案:B

  当一个比较耗时的操作,可以分成多个线程,并行的运行,这样提高程序的运行效率,多个线程在并行运行的时候,并不能比高内存的利用率多线程的并行可以提高CPU的利用率c/s服务端程序可以让一个线程为一个客户端去服务,典型的就是tcp的服务端程序。

  多线程的程序可以提高CPU的利用率,不能提高内存的利用率,从而选择B。

  

(2)磁盘的固定块

  如果将固定块大小的文件系统中的块大小设置大一些,会造成()。

  A.更好的磁盘吞吐量和更差的磁盘空间利用率
  B.更好的磁盘吞吐量和更好的磁盘空间利用率
  C.更差的磁盘吞吐量和更好的磁盘空间利用率
  D.更差的磁盘吞吐量和更差的磁盘空间利用率

  答案:A

  (1)如果磁盘的固定块大小设置大了, 就会导致, 存储小块文件的时候, 分配一个块的大小绰绰有余就会导致该块当中空闲的空间也不能分配给其他的程序,从而磁盘的利用率就会降低。

  (2)同时就会提高整个磁盘的吞吐量,因为每次分配的块比之前的大,在块数相同的情况下,分配的空间更大了。

  

(3)多进程

  某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台,当N的取值不超过()时系统不会发生死锁。

  A.4
  B. 5
  C.6
  D.7

  答案:B

  可以用哲学家就餐问题的思想解决此类问题,每个进程要求3台,所以先给每个进程2台,再如果柔出一台,分给某一个进程,等这个进程执行完了,释放自己的资源给其他进程用,这样就不会发生死锁。即2N+1=11,得N=5。N=4时,不是最大值,不符合题意,N=6时,资源不够用,可能死锁。

  

(4)进行调度

  进程调度是从()选择一个进程投入运行。

  A.就绪队列
  B.等待队列
  C.作业后备队列
  D.提交队列

  答案:A

  操作系统调度是从就绪队列当中获取一个进程进行运行。

在这里插入图片描述

  

(5)cache

  下面有关Cache的说法哪一个是不正确的()

  A.设置Cache的目的,是解决CPU和主存之间的速度匹配问题
  B.设置Cache的理论基础,是程序访问的局部性原理
  C.Cache与主存统一编址,Cache的地址空间属于主存的一部分
  D.Cache的功能均由硬件实现,对程序员是透明的

  答案:C

  C选项:Cache是介于中央处理器和主存储器之间的高速小容量存储器,因此它不属于主存的一部分。

  

(6)内存抖动

  什么是内存抖动(Thrashing)()

  A.非常频繁的换页活动
  B.非常高的CPU执行活动
  C.一个极长的执行进程
  D.一个极大的虚拟内存

  答案:A

  内存抖动:内存页面的频繁更换,导致整个系统效率急剧下降,这个现象称为内存抖动。抖动一般是内存分配算法不好,内存太小引或者程序的算法不佳引起的页面频繁从内存调入调出。

  

(7)非抢占CPU调度

  在所有非抢占CPU调度算法中,系统平均响应时间最优的是()

  A.实时调度算法
  B.短任务优先算法
  C.时间片轮转算法
  D.先来先服务算法

  答案:B

  (1)短任务优先系统平均响应时间最短,但是往往不能确定所有任务的运行时间。

  (2)时间片轮转,适用于分时系统,但是增加了抢占以切换进程,算法性能依赖于时间片大小分时操作系统:是使一台计算机采用时间片轮转的方式同时为几个、几十个甚至几百个用户服务的一种操作系统。

  (3)先来先服务平均响应时间最长。不适用于分时操作系统。

  

(8)inode描述

  下面关于inode描述错误的是?

  A. inode和文件是一一对应的
  B. inode能描述文件占用的块数
  C. inode描述了文件大小和指向数据块的指针
  D.通过inode实现文件的逻辑结构和物理结构的转换

  答案:A

  A:硬链接的情况下,多个文件指向同一个inode节点

  (1)inode 包含了文件的相关(元)信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。

  (2)在 inode 节点表中最重要的内容是磁盘地址表。在磁盘地址表中有 13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。文件数据都储存在"块"中,一个块通常是8个扇区,4KB。

  (3)Linux 文件系统通过把 inode 节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的inode 节点号,通过该inode 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。

  

(9)文件操作

  文件操作的唯一依据是?

  A.文件名
  B.文件句柄
  C.物理地址

  答案:B

  文件描述符:open函数的返回值,返回当前操作文件的句柄后续通过文件描述符(文件句柄)来读文件或者写文件。

int open(const char *pathname,int flags, mode_t mode);
ssize_t read(int fd,void *buf,size_t count);
ssize_t write(int fd,const void *buf, size_t count);

  

(10)进制

  十进制数 -10 的3进制4位补码是多少?

  A.0010
  B. 1010
  C.2122
  D.2121

  答案:C

  补码=反码+1,计算机中,用补码来表示负数。

  (1)用0,1,2表示。

  (2)遇3进位。

  于是3进制的数的补码同二进制的转换过程一样。

  (1)先求的10的3进制表示为0101。

  (2)对10的3进制表示形式取反为2121。

  (3)对取反后的三进制表示形式加1位等于2122。

            

编程题 day30

最难的问题

最难的问题

  解题思路:原文与密码错位5个英文字符,密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 原文字母:V W X Y Z A B C D E F G H I J K L M NO P Q R S T U 密码 > ‘E’,原文= 密码 - 5 。

#include <stdio.h>int main() 
{char c;while ((c = getchar()) != EOF) {if ('A' <= c && 'Z' >= c) {c = (c > 'E') ? (c - 5) : (c + 21);}putchar(c);}return 0;
}

  

因子个数

因子个数

  解题思路:求一个数字的因子(>=2的最小不能整除数字)个数,从最小因子2到数字的最大因子数(数字的平方根)开始判断是否能够取余,可以则循环取余直到取余不为0,因子个数+1;否则使用下一个因子计算;最终整除了各个因子数之后剩余的数字不为1则本身也是一个因子,因此因子数+1。

#include <iostream>
#include<math.h>
using namespace std;int main() 
{int n, k, i;while (cin >> n) {k = 0;for (i = 2; i <= sqrt(n); i++) {if ((n % i) == 0) {while ((n % i) == 0) {n=n/i;}k++;}}if (n != 1)k++;cout << k << endl;}return 0;
}

这篇关于【C/C++笔试练习】线程作用、磁盘的固定块、多进程、进行调度、cache、内存抖动、非抢占CPU调度、inode描述、文件操作、进制、最难的问题、因子个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930708

相关文章

利用c++判断水仙花数并输出示例代码

《利用c++判断水仙花数并输出示例代码》水仙花数是指一个三位数,其各位数字的立方和恰好等于该数本身,:本文主要介绍利用c++判断水仙花数并输出的相关资料,文中通过代码介绍的非常详细,需要的朋友可以... 以下是使用C++实现的相同逻辑代码:#include <IOStream>#include <vec

基于C++的UDP网络通信系统设计与实现详解

《基于C++的UDP网络通信系统设计与实现详解》在网络编程领域,UDP作为一种无连接的传输层协议,以其高效、低延迟的特性在实时性要求高的应用场景中占据重要地位,下面我们就来看看如何从零开始构建一个完整... 目录前言一、UDP服务器UdpServer.hpp1.1 基本框架设计1.2 初始化函数Init详解

线程池ThreadPoolExecutor应用过程

《线程池ThreadPoolExecutor应用过程》:本文主要介绍如何使用ThreadPoolExecutor创建线程池,包括其构造方法、常用方法、参数校验以及如何选择合适的拒绝策略,文章还讨论... 目录ThreadPoolExecutor构造说明及常用方法为什么强制要求使用ThreadPoolExec

C++ 右值引用(rvalue references)与移动语义(move semantics)深度解析

《C++右值引用(rvaluereferences)与移动语义(movesemantics)深度解析》文章主要介绍了C++右值引用和移动语义的设计动机、基本概念、实现方式以及在实际编程中的应用,... 目录一、右值引用(rvalue references)与移动语义(move semantics)设计动机1

Java线程池核心参数原理及使用指南

《Java线程池核心参数原理及使用指南》本文详细介绍了Java线程池的基本概念、核心类、核心参数、工作原理、常见类型以及最佳实践,通过理解每个参数的含义和工作原理,可以更好地配置线程池,提高系统性能,... 目录一、线程池概述1.1 什么是线程池1.2 线程池的优势二、线程池核心类三、ThreadPoolE

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

在C#中分离饼图的某个区域的操作指南

《在C#中分离饼图的某个区域的操作指南》在处理Excel饼图时,我们可能需要将饼图的各个部分分离出来,以使它们更加醒目,Spire.XLS提供了Series.DataFormat.Percent属性,... 目录引言如何设置饼图各分片之间分离宽度的代码示例:从整个饼图中分离单个分片的代码示例:引言在处理

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文