【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

相关文章

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消