【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# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE