【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++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc