计算机基础之牛客网刷题第五篇

本文对比了静态链接库与动态链接库的优缺点,并探讨了内存管理中的不同数据读取方式,以及对象内存对齐原则。此外,还讨论了进程间线程共享资源的情况和分区分配方案中的回收处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1

1 静态链接库的优点
(1) 代码装载速度快,执行速度略比动态链接库快;
(2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。
2 动态链接库的优点
(1) 更加节省内存并减少页面交换;
(2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;
(3) 不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;
(4)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。
3 不足之处
(1) 使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;
(2) 使用动态链接库的应用程序不是自完备的,它依赖的DLL模块也要存在,如果使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件,统统撕掉。这在早期Windows中很常见。

2以下哪种方式,在读取磁盘上多个顺序数据块时的效率最高?
通道方式

(1)程序直接访问方式跟循环检测IO方式,应该是一个意思吧,是最古老的方式。CPU和IO串行,每读一个字节(或字),CPU都需要不断检测状态寄存器的busy标志,当busy=1时,表示IO还没完成;当busy=0时,表示IO完成。此时读取一个字的过程才结束,接着读取下一个字。
(2)中断控制方式:循环检测先进些,IO设备和CPU可以并行工作,只有在开始IO和结束IO时,才需要CPU。但每次只能读取一个字。
(3)DMA方式:Direct Memory Access,直接存储器访问,比中断先进的地方是每次可以读取一个块,而不是一个字。
(4)通道方式:比DMA先进的地方是,每次可以处理多个块,而不只是一个块。

3

#pragma pack(2)
class BU
{
    int number;
    union UBffer
    {
        char buffer[13];
        int number;
    }ubuf;
    void foo(){}
    typedef char*(*f)(void*);
    enum{hdd,ssd,blueray}disk;
}bu;

sizeof(bu)的值是()
22

union:当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union);
它有以下特点:
(1)它是一个结构;
(2)它的所有成员相对于基地址的偏移量都为0;
(3)此结构空间要大到足够容纳最”宽”的成员;
(4)其对齐方式要适合其中所有的成员
综上:
而分配给union的实际大小不仅要满足是对齐大小的整数倍,同时要满足实际大小不能小于最大成员的大小。
本题目中
注意第一行,#pragma pack(2)
首先考虑没有这句话时,我们在类、结构或者union补齐字节的时候,找它们的成员数据中找字节最大的那个数去衡量如何对齐,假设为z;
但是有了这句话以后,对齐方式是取 pack(n)中n和z的最小值去对齐;
可见本题中对齐字节数为2;
之后往下看 int number; 占4个字节
接下来考虑union大小
union UBffer
{
char buffer[13]; // 13
int number; // 4
}ubuf; buffer 是13个字节,number 是4个字节,取最大的 为13,注意还要字节对齐,对齐字节数为2,所以Union大小为14,既满足buffer的对齐 也满足number的对齐。
void foo(){} 不占
typedef char*(f)(void); 不占
enum{hdd,ssd,blueray}disk; 4个字节

 综上,总大小为14+4+0+0 +4=22

4
同一个进程中的线程不共享的部分是()栈空间
这里写图片描述
5

在分区分配方案中,回收一个分区时有几种不同的邻接情况,在各种情况下应如何处理? 答:有四种:上邻,下邻,上下相邻,上下不相邻。
(1)回收分区的上邻分区是空闲的,需要将两个相邻的空闲区合并成一个更大的空闲区,然后修改空闲区表。
(2)回收分区的下邻分区是空闲的,需要将两个相邻的空闲区合并成一个更大的空闲区,然后修改空闲区表。
(3)回收分区的上、下邻分区都是空闲的(空闲区个数为2),需要将三个空闲区合并成一个更大的空闲区(空闲区个数为1 ),然后修改空闲区表、
(4)回收分区的上、下邻分区都不是空闲的,则直接将空闲区记录在空闲区表中。
6
下面关于虚拟局域网VLAN的叙述错误的是()
VLAN是由局域网网段构成的与物理位置无关的逻辑组
利用以太网交换机可以很方便地实现VLAN
每一个VLAN的工作站可处在不同的局域网中
不同VLAN内的用户可以相互之间直接通信 错误
vLAN可以强化网络安全和网络管理
VLAN能灵活控制广播活动
VLAN(Virtual Local Area Network)的中文名为”虚拟局域网”。
虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点:
网络设备的移动、添加和修改的管理开销减少;可以控制广播活动;可提高网络的安全性。
在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN。

<think>好的,我现在需要帮用户整理计算机二级Python的考前攻略。首先,我得回忆一下考试的大纲和常见考点,确保覆盖全面。用户可能想知道考试的结构、重点知识点、备考策略以及应试技巧。 首先,考试结构通常包括选择和操作,各占一定比例。比如选择40分,操作60分,总分100分。操作又可能分为基础和综合应用,所以需要明确各部分的分值分布。 接下来,重点知识点。Python基础部分包括数据类型、控制结构、函数、文件操作、异常处理等。然后是常用库,比如turtle、random、math、time,可能还有数据库操作和第三方库如numpy、pandas。此外,算法与数据结构,如排序、查找、递归,也是常见考点。面向对象编程也不能少,类、继承、多态这些概念需要掌握。 然后是备考策略,用户可能需要分阶段的学习计划。比如基础阶段巩固知识点,阶段练习真,冲刺阶段模拟考试和查漏补缺。需要推荐一些资源,比如官方教材、在线库、学习网站,比如菜鸟教程、LeetCode的Python部分。 应试技巧方面,时间分配很重要,选择不要花太多时间,操作注意审和测试代码。易错点比如缩进错误、变量作用域、文件路径,需要提醒用户注意。 用户可能还会有一些疑,比如是否需要安装特定软件,考试环境的,或者是否有真资源。所以在常见里,需要涵盖这些内容,比如推荐练习平台,考试环境是否允许调试,以及遇到bug时的处理建议。 最后,要确保回答结构晰,分点列出,使用中文,并且数学公式用正确的LaTeX格式。同时,保持口语化,避免使用专业术语过多,让用户容易理解。 检查是否有遗漏的部分,比如数据库操作和第三方库的具体例子,或者是否需要强调某些高频考点。另外,确保备考策略切实可行,分阶段的时间安排合理,资源推荐可靠。 总结下来,需要分几个大块:考试结构、重点知识点、备考策略、应试技巧、常见,每个部分下再细分小点,确保逻辑晰,用户能一步步跟着攻略准备考试。</think>### 计算机二级Python考前攻略 --- #### 一、**考试结构(以最新大纲为准)** 1. **型与分值** - **选择**(40分):基础概念、语法、代码片段分析 - **操作**(60分) - 基础操作24分):补全代码片段 - 简单应用(18分):编写小规模功能代码 - 综合应用(18分):结合文件操作、算法等解决实际 --- #### 二、**重点知识点梳理** 1. **Python基础语法** - 数据类型与操作:字符串切片`$s[::-1]$`、列表推导式`$[x*2 for x in range(5)]$` - 控制结构:`if-elif-else`、循环嵌套(如九九乘法表) - 函数定义与调用:参数传递、返回值、递归(如阶乘`$n!$`) - 文件操作:`with open() as f`、`read()`/`write()` 2. **常用库与模块** - `turtle`绘图库:绘制简单图形(如五角星) - `random`:生成随机数`$random.randint(1,10)$` - `math`:数学函数`$math.sqrt(x)$` - 数据库操作:SQLite3基本语法(`connect`/`cursor`) 3. **算法与数据结构** - 排序算法:冒泡排序、选择排序 - 查找算法:二分查找`$O(\log n)$` - 递归与分治:斐波那契数列`$F(n)=F(n-1)+F(n-2)$` 4. **面向对象编程(OOP)** - 类与对象:属性、方法、构造函数`__init__` - 继承与多态:子类重写父类方法 --- #### 三、**备考策略** 1. **阶段一:夯实基础(1-2周)** - 通读官方教材或权威教程(如《Python编程:从入门到实践》) - 逐项练习基础语法,确保能独立编写小功能(如计算器、文件合并) 2. **阶段二:真实战(2-3周)** - 历年真(推荐“未来教育”或“无忧考吧”库) - 重点分析操作高频考点: - 文件读写与数据处理(如统计单词频率) - 字符串处理(如提取身份证号中的生日) 3. **阶段三:查漏补缺(1周)** - 整理错本,针对性复习易错点(如作用域、深浅拷贝) - 模拟考试环境,限时完成完整试卷 --- #### 四、**应试技巧** 1. **选择** - 直接代入法:将选项代入代码判断逻辑 - 排除法:优先排除语法错误选项 2. **操作** - 审时标注关键需求(如输入输出格式) - 分步调试:先实现核心逻辑,再补充细节 - 测试用例:用边界值(如空列表、极值)验证代码 3. **易错点提醒** - 缩进错误:Python严格依赖缩进,避免混用空格与Tab - 文件路径:使用相对路径`"./data.txt"`而非绝对路径 - 变量作用域:函数内修改全局变量需声明`global` --- #### 五、**资源推荐** 1. 教材:《高教版计算机二级Python教程》 2. 在线库:牛客网、优快云历年真 3. 学习网站:菜鸟教程(Python基础)、LeetCode简单 --- #### 六、**常见** 1. **Q:需要安装哪些库?** A:考试环境通常预装标准库(如`turtle`, `random`),第三方库(如`numpy`)需提前确认考纲要求。 2. **Q:考试中遇到代码报错怎么办?** A:优先检查语法错误(如冒号、括号缺失),再用`print()`逐步输出中间结果调试。 --- **最后提醒**:考试时保持冷静,合理分配时间,操作优先确保基础分!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值