20240910 模拟笔试错题
20240910 模拟笔试错题
牛客——搜狐畅游24届C++
经常要操作的内存分为那几个类别?
哈夫曼编码
已知一段文本有1382个字符,使用了1382个字节进行存储,这段文本全部是由a、b、c、d、e这5个字符组成,a出现了354次,b出现了483次,c出现了227次,d出现了96次,e出现了232次,对这5个字符使用哈夫曼(Huffman)算法进行编码,则以下哪些说法正确()
A 使用哈夫曼算法编码后,用编码值来存储这段文本将花费最少的存储空间
B 使用哈夫曼算法进行编码,a、b、c、d、e这五个字符对应的编码值是唯一确定的。
C 使用哈夫曼算法进行编码,a、b、c、d、e这5个字符对应的编码值可以有多套,但每个字符编码的位(bit)数是确定的
D b这个字符的哈夫曼编码值位数应该最短,d这个字符的哈夫曼编码值位数应该最长
数据结构
关于数据结构,下面叙述中正确的是()
A 直接选择排序是一种稳定的排序方法
B 哈夫曼树带权路径长度最短的树,路径上权值较大的节点离根较近。
C 拓扑排序是指节点值得有序排序
D 当从一个最小堆删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整到合适位置。
- 选择排序:https://blog.csdn.net/qwdafedv/article/details/52381581
- 排序算法比较:
- 拓扑排序:https://blog.csdn.net/chenxy_bwave/article/details/125074013
- 堆排序:https://www.cnblogs.com/chengxiao/p/6129630.html
C语言-文件操作
设fp已定义,执行语句fp=fopen("file","w");
后,以下针对文本文件file操作叙述的选项错误的是:
A 可以随意读和写
B 只能写不能读
C 可以在原有内容后追加写
D 写操作结束后可以从头开始读
C++ 纯虚函数
class A
{
public:
virtual void a() = 0;
A() {
std::cout << "A ";
}
};
class B : public A
{
public:
B() {
std::cout << "B ";
}
};
int main()
{
A* a = new B();
return 0;
}
输出结果是什么?
A A B
B B A
C 编译错误
D 以上都不是
派生类没有实现父类的纯虚函数,编译错误。
C++ 虚指针
class No
{
public:
virtual void printf() = 0;
private:
int* ptr;
};
int main()
{
int size = sizeof(No);
printf("%d", size);
}
在64位系统下输出结果是什么?
A 1
B 4
C 8
D 16
虚指针和ptr成员变量各占8字节。
操作系统-虚拟存储
虚拟存储的基础是程序局部性理论,它的基本含义是( )
A 代码的顺序执行
B 程序执行时对内存访问的不均匀性
C 变量的连续访问
D 指令的局部性
这道题没有找到任何出处,这里的“不均匀性”不知道具体指什么。
下面哪种内存管理方法有利于程序的动态链接?()
A 分段存储管理
B 分页存储管理
C 可变分区分配
D 固定分区分配
程序的动态链接与程序的逻辑结构相关,分段存储管理将程序按照逻辑段进行划分,因此有利于其动态链接。其他的内存管理方式与程序的逻辑结构无关。
快排
排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。下列序列 中,不可能是快速排序第二趟结果的是
A 5,2,16,12,28,60,32,72
B 2,16,5,28,12,60,32,72
C 2,12,16,5,28,32,72,60
D 5,2,12,28,16,32,72,60
???
delete this
关于以下代码,哪个说法是正确的?
myClass::foo(){
delete this;
}
..
void func(){
myClass *a = new myClass();
a->foo();
}