2023计算机复试的些问题和回答
本人参与了2023年考研,复试总排前3,有需要的同学可以看看噢!
一些重要的
-
什么是内存泄露?
内存泄露(memory leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或者无法释放,造成系统资源的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果
-
什么是内存溢出?
指程序申请内存时,没有足够的内存供申请者使用,或者是,给了你一块存储Int类型数据的存储空间,但是你却存储long类型,那么结果就是内存不够用
-
堆内存和栈内存的区别
栈:为编译器自动分配和释放,如函数参数,局部变量,临时变量等
堆:为成员分配和释放,由程序员自己申请、自己释放。比如 new申请的就是堆内容
对于扩展方向来说,栈 从高地指向低地址进行扩展,堆由低地址向高地址进行扩展。
-
拷贝函数中深拷贝与浅拷贝有什么区别?
深拷贝:首先拷贝出与要拷贝文件一样大的内存,然后再逐个拷贝数据,最后指针指向两个不同的内存地址
浅拷贝:只是拷贝指针所在的地址,指向的是同一个地址
-
堆排序
什么是堆?
它是一棵完全二叉树,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右结点的值,称为小顶堆
堆排序原理
- 首先将无序的序列建成一个堆,根据升序降序需求选择大顶堆还是小顶堆
- 将堆顶元素与末尾元素交换,将最大元素沉到数组末端
- 重新调正,使其满足堆定义,继续按照以上步骤进行
-
CPU调度算法(进程or作业调度算法)
- FCFS先来先服务调度算法
- 短作业(进程)优先调度算法
- 优先级调度算法
- 高响应比优先调度算法
- 时间片轮转法
- 多级反馈队列调度算法
-
请求调页页面置换算法
- FIFO先进先出置换算法
- LRU最近最久未使用算法
- LFU最少使用置换(访问最少的被置换)
- CLOCK根据页面内存是否被访问来决定是否置换该页面
-
C语言中static的用法,与const进行比较(🚹)
static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量
static对栈变量的修饰,可以认为是栈变量的生命周期延长到程序执行结束后
Static对函数的修饰与对全局变量的修饰相似,只能对本文件中的函数调用
-
链表怎么实现随机访问? 指针啊
-
哈希表
提供更快的查找速度。例如MD5-hash算法、文件校验等
-
适合文件系统不适合数据库系统的例子
数据的备份、软件或应用程序使用过程中的临期数据存储一般使用文件更加合适,早期的功能比较简单,比较固定的应用系统也适用文件系统
-
B树与B 树
B树的特征
- 根节点至少有两个子女节点
- 每个非根结点包含关键字满足:n/2 - 1 < i < n -1
- 除根节点之外的所有节点(不包括叶子节点)的度数刚好是关键字的总数 1,
- 所有叶子节点都位于同一层
B 树的特征
- 有N个子树的结点含有N个关键字
- 所有叶子节点包含了全部关键字的信息,以及指向这些关键字记录的指针,且叶子节点本身依赖关键字的大小,即自小而大顺序连接
- 所有的非终端节点可以看成索引的一部分,节点中包含了其他子树的最大或最小关键字
-
IPv4和IPv6的区别
- 地址空间不同。IPv4规定IP地址长度为32位,IPv6规定IP的地址长度为128位
- 安全性不同。相比于IPv4,IPv6的安全性更高,用户可对网络层的数据进行加密
- 路由表大小不同。IPv6的路由表相比IPv4的更小,IPv6的出现也是为了解决IPv4地址耗尽的问题
-
进程与线程的区别
- 进程是拥有资源的独立单位,线成是调度与分派的独立单位
- 进程切换开销比较大,而同一进程的线程切换开销较小
- 同一进程的线程能够共享进程资源,而不同进程都是独立的单位
-
页面抖动
页面抖动是系统频繁进行页面置换的现象
-
printf
函数的执行过程请求I/O -> 触发中断,系统调用 -> 处理器找到要输出的内容并送到输出设备 -> 恢复上下文继续执行
-
死锁与饥饿的区别
死锁:多个并发进程相互等待对方占用的资源而产生的错误现象
饥饿:在系统中,由于系统采用资源分配算法不当,虽然每个资源占有者都在有限的时间内释放了资源,但仍然使一写进程永远得不到资源的一种错误现象。
-
进程之间的通信方式
管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程中进行
消息队列:消息队列是由消息的链表、存放在内核中并由消息队列标识符标记。有直接、间接的两种方式
共享存储:有一块共享区,共享内存是映射了一段能被其他进程所访问的内存
信号量(semaphore):信号量是一个计数器,可以用来控制多个进程堆共享资源的访问。
套接字:套解口也是一种进程间通信机制
-
分时、实时、批处理操作性系统
- 分时操作系统:将系统处理机时间与内存空间按照一定的时间间隔,轮流切换给各终端用户的程序使用,最大的特点就是交互性
- 实时操作系统:分为软实时与硬实时。同时可以进行多个任务的处理,共同利用CPU与内存,特点是及时性和可靠性
- 批处理操作系统:指用户将一批作业提交给操作系统就不在干预,由操作系统自己运行
-
数据库的游标
游标是SQL的一种数据访问机制,是一种处理数据的方法。我们可以将“ 游标 ”简单的看成是结果集的一个指针,可以根据需要在结果集上面来回滚动,浏览我需要的数据。
-
传输层的TCP流量控制与拥塞控制
流量控制是说A传出给B,若存在A传输过快或者B来不及接受等问题,导致数据丢失,此时TCP根据接收端的能力来决定发送端的发送速度
拥塞控制是说TCP有了由滑动窗口这个工具,能够高效可靠地发送大量的数据,但是刚开始阶段就发送,那么仍然有可能存在问题。比如当前的网络状态比较拥堵,在不清楚网络状态的情况下,贸然发送大量的数据
-
IP地址与子网掩码的关系
子网掩码不能单独存在,将某个IP地址划分为网络地址和主机地址两部分,它的作用也是判断两台计算机的IP地址是否属于同一子网络的根据
-
快表TLB与cache的区别
- 快表:用于虚拟存储技术,是为了加快辅存向主存的地址映射速度
- 高速缓存器:用于解决CPU与主存速度不匹配的问题
-
Java与C的区别
JAVA与C的本质区别是JAVA面向对象编程,而C是面向过程编程
Java具有重用的特性,在开发速度上比C更快,但是在运行速度上,C更加快,因为C比JAVA更加亲近机器,所以进行系统开发的时候,我们一般使用C,而进行XP、Linux开发时,多使用Java
Java具有很好的跨平台性,能够应用于web开发
-
什么是虚拟内存?
相比于传统的存储管理方式,作业必须一次性全部装入内存才能开始运行(一次性),一旦作业被装入内存,就会一直驻留在内存中(驻留性)
这些问题我们都可以用虚拟技术来解决,而这是基于局部性原理
- 时间局部性
- 如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。
- 空间局部性
- 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。
基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。
在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将信息从外存调入内存,如何继续执行程序。
若内存空间不够,由操作系统负责将内存暂时用不到的信息换出到外存。
虚拟内存的实现方式:请求分页存储管理、请求分段存储管理、请求段页式存储管理
- 时间局部性
-
递归与迭代有什么区别?
递归是自己调用自己,每次旨在缩小问题规模。
迭代是自己执行很多次,每次旨在更接近目标。
迭代是逐渐逼近,用新值覆盖旧值,直到满足条件后结束,不保存中间值,空间利用率高。
递归是将一个问题分解为若干相对小一点的问题,遇到递归出口再原路返回,因此必须保存相关的中间值,这些中间值压入栈保存,问题规模较大时会占用大量内存。
有需要的同学可以看看B站链接:【【自用】计算机复试的一些些问题及回答】
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgggfcj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13