![](https://img-blog.csdnimg.cn/111a346f2c3f40b0a062c3279fcf414d.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
笔试题
文章平均质量分 85
摘取笔试题中的易错题
桜キャンドル淵
凑个整,就1024吧
展开
-
笔试题【day30】
每个基础要求3台,所以献给每个进程2台,再如果多出一台,分给某一个进程,等这个进程执行完了,释放自己的资源个其他进程用,这样就不会发生死锁,即2N+1=11,得到N=5。在三进制中负数的符号位为2,所以-10的三进制的符号位就是2,然后-10就是2101,然后符号位不变,其他位按三进制取反,那么救变成了2121,然后再+1,就是2122,也就是-10的4位三进制补码。1.inode包含了文件的相关(元)信息,其中有文件的大小,文件所有者,文件的存取许可方式以及文件的类型等重要信息。原创 2022-11-22 15:58:44 · 282 阅读 · 0 评论 -
【笔试题】【day29】
也就是比方说A线程取出了a=0,然后++,还没有写回去,就被换下了处理机,我们的B线程进去取,发现a还是0,那么就将a=0取出去++,然后我们a写回去,a=1,然后我们b写回去,a也是等于1。带标签的语句是一种特殊的语句,在语句前面有一个标识符(即标签,上段代码中的http)和一个冒号。指的是计算机执行现行的程序的过程中,出现某些紧急的需要处理的异常情况和特殊请求,CPU咱叔终止现行程序,转而去对随机发生的更紧迫的时间进行处理,在处理完毕后,CPU会自动返回原来的程序,继续执行。有一个变量int a=0;原创 2022-11-20 17:13:50 · 526 阅读 · 0 评论 -
【笔试题】【day28】
运行到第一个fork的时候,我们的父进程会创建一个子进程,算上父进程,一共两个进程,运行到第二个fork的时候,这两个进程又会创建出两个进程,一共四个进程,执行到第三个fork的时候,这四个进程每一个都会再产生一个进程,一共8个进程。假设总任务的单位是1,A的工作效率是1/10,B写的工作效率是1/6,C的读工作效率是1/15,那么总工作效率就是1/10+1/6-1/15,结果就是1/5。一执行的时间片完毕后,被执行的进程会放到等待队列的队尾,一次循环,既然是循环的话,那就有机会轮到。原创 2022-11-20 16:37:54 · 184 阅读 · 0 评论 -
【笔试题】【day27】
每个进程被分配一个时间段,称作它的时间片,即该进程允许进行的时间。饥饿是指如果线程T1占用了资源R,线程T2又请求封锁R,于是T2等待,T3也请求资源R,当T1释放了R上的封锁之后,系统批准了T3的请求,T2依然等待,然后T4又请求封锁R,当T3释放了R上的封锁之后,系统又批准了T4的请求……当我们调用“read”系统调用之后,我们的进程本质山格式需要从磁盘请求数据的,此时进程会进入到阻塞状态,由于并不需要CPU的参与,需要磁盘IO的操作,所以,该进程就会进入可中断睡眠状态,等待磁盘IO操作的完毕。原创 2022-11-20 16:02:02 · 778 阅读 · 0 评论 -
【笔试题】【day26】
是用于两个进程之间的通讯,首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,而另一 个进程则从那个消息队列中取数据,需要注意的是,消息队列是用创建文件的方式建立的,如果一进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程已经结束,保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据!设备资源值得是组成计算机的硬件设备,如处理器(对应A),主存储器,磁盘存储器(对应B),打印机,磁带存储器,显示器,键盘输入设备和鼠标等。原创 2022-11-20 15:16:38 · 637 阅读 · 0 评论 -
【笔试题】【day25】
D:系统云溪一个进程创建新的进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。整个Linux系统的所有进程也是一个树形结构。树根是系统自动构建的。信号量可以藐视并且管理一个资源的数量,提供wait/post的接口来保证程序不会产生二义性的结果,同时信号量也可以保证线程同步,信号量的底层有一个资源计数器+PCB等待队列。C:可重入函数可被认为是可以被中断的函数,自动变量定义的时候才被创建,函数返回时,系统回收空间,他是局部作用域变量,不需要互斥量,可重入函数对全局变量才需要互斥保护。原创 2022-11-20 13:55:40 · 880 阅读 · 0 评论 -
【笔试题】【day24】
第六层有2^(6-1),也就是32个结点,其中有9个叶子结点,所以只有23个结点有第七层,也就是说第七层少了9*2个结点。已知小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,最后的叶子节点为()如果七层全满的话,一共有2^7-1=127个结点,减去18个结点,也就是109个结点。有权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()也就是2×6+2×11+2×8+3×2+3×5=12+22+16+6+15=71。所以我们带权路径的长度为71。原创 2022-11-20 10:58:48 · 285 阅读 · 0 评论 -
【笔试题】【day23】
C:拉链式的哈希就是一个顺序表+链表的结构,最坏的情况是这100万个数据全部都冲突了,也就是我们的数据全部都存在一个哈希桶的链表中,也就是变成了链表的查找的时间复杂度,也就是O(n)归并排序可以实现外部排序。比方说将1GB的数据分成好几个文件,然后两两归并,从而减少需要导入内存的文件大小,解决内存空间小,数据量大的问题。D:与A有关,如果是整数的话,我们可以直接除留余数法,但是如果是字符串,我们还需要将其转换成key值,再进行映射。假设你只有100Mb的内存,需要对1Gb的数据进行排序,最合适的算法是()原创 2022-11-20 10:02:10 · 178 阅读 · 0 评论 -
【笔试题】【day22】
当front=rear的时候,我们的队列可能是满的,也可能是空的,我们无法判断是空的还是满的。如果想要区分的话,我们最好预留出一个位置,如果我们队尾指针的下一个位置就是队头指针,那么我们的队列就是满了,如果我们的队尾指针和队头指针处于同一个位置,那么就是对空。直接选择排序需要从我们的数据中找出最小的,然后再找出次小的,然后再找出第三小的,每一次寻找最小的话,我们都需要遍历一遍数组,所以关键字比较的次数与我们初始的排列是无关的。希尔排序是一种缩小增量的插入排序,插入排序与你选择的插入的数据是有关系的。原创 2022-11-20 09:35:33 · 182 阅读 · 0 评论 -
【笔试题】【day21】
用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()A 仅修改队头指针B 仅修改队尾指针C 队头、队尾指针都可能要修改D 队头、队尾指针都要修改C。原创 2022-11-10 20:47:08 · 531 阅读 · 0 评论 -
【笔试题】【day20】
现有一循环队列,其队头指针为front,队尾指针为rear;循环队列长度为N。其队内有效长度为()(假设队头不存放数据)上面的图例中,我们的第一行是我们的f和r的指向第二行是我们存储的数据1,2,3最后一行是我们的编号然后我们的rear-front就需要加上N,然后再取模N,也就是(1-6+8)%8=3也就是得到了我们的队列的数据元素个数B。原创 2022-11-09 21:43:10 · 715 阅读 · 0 评论 -
【笔试题】【day19】
已知二叉树后序遍历序列是bfegcda,中序遍历序列是badefcg,它的前序遍历序列是()A abcdefgB abdcefgC adbcfegD abecdfg后序遍历的最后一个元素是a,所以我们的根节点是a然后观察a在中序遍历中的位置a的左边是b,a的右边是defcg,也就分别是a的左子树和右子树。原创 2022-11-08 21:02:56 · 324 阅读 · 0 评论 -
【笔试题】【day18】
以下关于STL的描述中,()是错的A STL容器是线程不安全的B 当容量不够时,STL的一个典型实现是vector内部内存扩展方式为翻倍C std::sort是稳定排序D std::bitset不是一个STL容器A:STL的容器都是线程不安全的。也就是在多线程的情况下,我们需要自己去加锁进行控制B:有的STL的vector的增长不一定是翻倍C:sort是一个STL里面的排序算法,它底层是一个插入排序+快速排序构成的。当我们的数据量小于一定的阈值的时候是直接采用插入排序的。原创 2022-10-30 17:47:22 · 380 阅读 · 0 评论 -
【笔试题】【day17】
上面这个代码输出的是()D 100 300300300由于我们erase删除掉了一个元素之后,我们后面的元素是会向前挪动的,但是我们又人为地将迭代器++,所以按照我们上面的解释,有两个300没有成功删掉C。原创 2022-10-29 21:51:22 · 356 阅读 · 0 评论 -
【笔试题】【day16】
pa->FuncA()由于我们的pa是父类指针指向子类对象,但是父类的FuncA()中并没有写virtual,所以不满足多态的条件,直接调用父类的FuncA()方法,打印。pa->FuncB()由于这里是父类的指针指向子类的对象并且父类中的FuncB前面有virtual,满足多态的条件,所以我们这里直接调用子类的FuncB,打印。父类的指针访问foo(100),这里满足了多态调用的条件,调用的是子类的方法,也就是我们下面两个中,更下面的这个方法。我们的a和b刚好是在我们的对象前面的两个成员,原创 2022-10-29 01:06:21 · 212 阅读 · 0 评论 -
【笔试题】【day15】
这里按照我们运行的逻辑,首先我们new B也就是构造了一个B对象,然后B由于是继承A类的,所以B在构造的时候会调用A的构造函数。在A的构造函数中有所以会调用bar()函数,这里是A类的对象调用bar函数,所以不满足多态的条件,所以直接调用A类的bar函数,打印bar然后由于我们的p是父类A的指针,然后指向的是B类(子类),然后调用foo()方法的时候,由于我们的父类方法的foo前面并没有写virtual,所以并不满足多态的调用条件,所以A类的指针调用A类的方法,也就是打印出foo。原创 2022-10-27 20:58:08 · 313 阅读 · 0 评论 -
【笔试题】【day14】
则构造函数中,成员变量一定要通过初始化列表来初始化的是A a b cB b c eC b c d eD c eE b dF b c哪些成员必须在初始化列表的位置初始化?1.const修饰的成员变量(常量数据是不允许修改的,所以只能通过参数列表初始化)2.引用类型的成员变量(引用不能为空,必须要引用一个对象)3.类的类型对象,该类没有默认的构造函数。原创 2022-10-27 15:12:30 · 369 阅读 · 1 评论 -
【笔试题】【day13】
然后这个B的对象会被拷贝给Play(B b),生成一个临时对象,b,然后这个临时对象被返回,再发生一次拷贝构造给temp。通过对象访问,只要是通过对象访问,就是静态绑定,也就是在编译时期,abc要调用的函数就已经确定了,和多态没有关系。当我们去释放父类的指针的时候,它只会去释放父类的那一部分的空间,子类独有的那一部分并不会去释放。p是可以修改的,只是p所指的值不能被修改,因为const锁定的是*p,也就是p指向的内容。调动外部的全局函数,构造生成一个父类对象,无论你是哪一个子类对象,调用的就是父类函数。原创 2022-10-25 16:11:02 · 433 阅读 · 0 评论 -
【笔试题】【day12】
静态分配指的是我的程序在编译的时候,我就知道我的程序需要多大的空间,但是堆做不到,因为堆上的空间都是动态分配的,也就是程序运行的时候才知道需要多大的空间。B:析构函数的名字都是相同的,都会被编译器转换成destructor的,并且析构函数不能有参数,所以不能重载,所以只能有一个析构函数。在类中,如果用户没有显式定义任何构造函数,则编译器会生成一个午餐的构造函数,但是用户一点定义,则编译器不再生成。C 引用声明后,引用的对象不可改变,对象的值可以改变,非const指针可以随时改变指向的对象以及对象的值。原创 2022-10-23 18:28:23 · 372 阅读 · 0 评论 -
【笔试题】【day11】
D:我们在这里显式实例化了,将后面的参数全部都是指定成float类型的,然后我们参数中的1是整型,是可以发生隐式类型转换的,所以我们的D也是可以的。fun的显示实例化--两个参数的类型可以不同,但是必须要能够发生隐式类型转换,转化成一致的。fun在实例化的时候,其传递的两个参数的类型必须要一致,否则必须使用显式的实例化。fun的隐式实例化--传给fun的两个形参的类型必须一致。两个默认的operator&的重载。下列关于赋值运算符“=”重载的叙述中,正确的是。指向这里的一个从堆上new出来的新的对象。原创 2022-10-22 13:08:09 · 305 阅读 · 0 评论 -
【笔试题】【day10】
print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()没有返回值,所以最左边一定是void,const类型的成员函数就是在该函数的参数列表后面加上const就可以了,如果是在print后面的()里面的,也就是修饰参数列表中的参数,就是将参数变成const属性如果是在返回值的位置,那么就是代表着返回值是const属性的,是不能被修改的所以我们这道题的const位置应该在参数列表之后。原创 2022-10-21 23:13:29 · 473 阅读 · 1 评论 -
【笔试题】【day9】
C++语言中,类ClassA的构造函数和析构函数的执行次数分别为()A 5,1B 1,1C 5,5D 1,5一定要匹配使用,否则程序可能会产生内存泄漏,程序可能会崩溃如果是new T:1.调用operator new(size)申请空间内部其实是用malloc循环申请2.调用T的构造函数对申请的空间进行初始化delete p:1.调用析构函数释放p指向对象中的资源。2.调用operator delete释放p所指向的空间内部是调用free的。原创 2022-10-21 08:14:29 · 285 阅读 · 0 评论 -
【笔试题】【day8】
关于重载函数,哪个说明是正确的()A 函数名相同,参数类型或个数不同B 函数名相同,返回值类型不同C 函数名相同,函数内部实现不同D 函数名称不同函数重载:在相同的作用域中,函数名字相同,参数列表不同的一些列函数称为函数重载。参数列表不同具体的体现:参数个数不同,参数类型不同,类型的次序不同注意:函数返回值类型是否相同没有关系。和函数内部的实现没有关系。A。原创 2022-10-19 22:02:36 · 388 阅读 · 0 评论 -
【笔试题】【day7】
下面关于类定义的说法中,正确的是:A 类定义中包括数据成员和函数成员的声明B 类成员的缺省访问权限是保护的C 数据成员必须被声明为私有的D 成员函数只能在类体外进行定义类定义的两种方式1.可以将声明和成员函数的定义放在全部类中2.类中只放成员变量和成员函数的声明,成员函数的定义可以放在.cpp文件中,注意:成员函数名前必须加类名class:默认访问权限privatestruct:默认访问权限public建议将成员变量设置为private,将成员函数设置为publicA。原创 2022-10-19 11:04:14 · 419 阅读 · 1 评论 -
【笔试题】【day6】
二维数组是由一个一个一维数组组成的,a数组中每一个元素都是一个一维数组,然后a+1就是表示跳过第一个一维数组,也就是我们的第0行,然后*(a+1)也就是得到了我们第一行的第0个元素的地址,然后*(a+1)+2也就是第一行的第0个元素往后两个位置的元素的地址,也就是第1行,第二列元素的地址,也就是选B。”, 引用”*(a+1)+2″表示()(从第0行开始)所以一共是三个8字节的空间,所以是24字节,选A。%Q-->无效的格式-->编译器会忽略%%d-->按照整型的方式打印。所以我们的%%%%会输出%%原创 2022-10-17 23:02:30 · 299 阅读 · 1 评论 -
【笔试题】【day5】
下列程序的打印结果是()A xyabcABB abcABzC ABabczD xycdBCDstrcpy(p,q):将q字符串中的内容拷贝到p所在的空间中,最后返回p注意:p的空间大小一定要能够存下q中的字符总数,否则程序会崩溃strcat(p,q):将q字符串中的内容拼接在p字符串之后,最终返回p注意:p空间一定要能够荣哪些q拼接进来的字符,否则程序会崩溃。原创 2022-10-15 22:26:06 · 292 阅读 · 1 评论 -
【笔试题】【day4】
有以下程序程序运行后的输出结果是()B 0123 173C 123 173D 173 173二进制的表示格式 101010b,b一定要在最后!!八进制的表示格式01234567,以0开头!十进制的表示格式 123456789,没有任何前缀和后缀十六进制的表示格式0x123或者123h都可以表示16进制%d:表名数据是以十进制方式输出%o:八进制方式输出%x:十六进制方式输出所以我们代码中的m本身就是一个八进制数据,是不需要将0输出的,直接将123打印出来。原创 2022-10-14 22:47:03 · 239 阅读 · 1 评论 -
【笔试题】【day3】
三行四列的一个数组,数组中存放的是**,也就是指针类型,也就是12个指针类型,一个指针在32位的系统平台下所占的是4个字节,所以4×12一共是48个字节。(低地址(栈顶))原创 2022-10-13 17:02:46 · 385 阅读 · 2 评论 -
【笔试题】【day2】
用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数()A 选项因为[]的优先级高于*的优先级所以a先和[]进行结合,标志它是一个数组,数组里面存放的是int类型的指针,只一个指针数组B 因为加了括号A先和*结合,指向的是一个int类型的数组,数组的大小为10个元素的数组指针C a先和*相结合,表明a是一个指针,后面的(int),表示这是一个函数指针。原创 2022-10-12 22:52:43 · 206 阅读 · 0 评论 -
【笔试题】【day1】
这里我们注意到这道题的考点就是对于for循环中判断的语句是j=0,也就是先将j赋值为0,然后j作为我们的判断条件,然后我们的j等于0不符合判断条件,于是就根本没有进入循环!D这里++的优先级高于*,也就是p指针会先++,但因为这里是后置++,所以会解引用得到year也就是1009,然后再将指针++,所以我们的year根本就没有++这里由于我们二维数组创建的第一个参数省略,所以自动从后面的传入的数据判断,一共有四个,然后p[][4]是第二个参数是4,所以一共是一个四行四列的二维数组。以下程序的运行结果是()原创 2022-10-11 17:11:16 · 503 阅读 · 1 评论