【计算机考研】复试常见问题_计算机复试专业课问题-CSDN博客(计算机考研复试考什么)
操作系统
操作系统的特点 – 共享资源可被多个并发执行的进程使用 – 并发需要硬件支持 – 虚拟将物理实体映射成为多个虚拟设备 – 异步但os需保证进程每次执行结果相同
进程的三个组成部分 程序段、数据段、pcb(process control block)
并发与并行区别 并发同一时刻
进程切换的过程 保持处理机上下文 -> 更新pcb -> 把pcb移入相应队列(就绪、阻塞) ->
选择另一个进程并更新其pcb -> 更新内存管理的数据结构 -> 恢复处理机上下文
进程通信 1、低级通信方式 pv操作。 – p申请s资源 – v释放s资源 2、高级通信方式以较高效率传输大量数据的通信方式 – 共享存储 – 消息传递 – 管道通信
管程是什么 由一组数据及对这组数据操作的定义组成的模块。同一时间只能有一个进程使用管程进程释放管程后需唤醒申请管程资源的等待队列上的进程。进程只有通过进入管程并使用管程内部的操作才能访问其中数据。
死锁的必要条件 – 互斥条件资源在某一时刻只能被一个进程占有 – 不剥夺条件进程所持有的资源在主动释放前不能被其他进程强行夺走 – 请求和占用条件死锁进程必然是既持有资源又在申请资源的 – 循环等待条件互不释放
死锁与饥饿的区别 – 都是资源分配问题 – 死锁是等待永远不会释放的资源只是永远不会分配给自己 – 一旦产生死锁而饥饿进程可以只有一个 – 饥饿的进程可能处于就绪状态而死锁进程一定是阻塞进程
进程和线程的区别 线程被称作轻量级进程线程是程序执行的最小单位。
fcb包含什么 文件指针上次读写位置。 文件打开数多少个进程打开了此文件。 文件磁盘位置。 文件的访问权限创建、只读、读写等。
页面置换算法 最佳置换算法opt 先进先出置换算法fifo 最近最久未使用算法lru 时钟算法lock 改进型时钟算法
批处理作业调度算法 先来先服务fcfs 最短作业优先sjf 最高响应比优先hrn 多级队列调度算法
进程调度算法 先进先出fifo 时间片轮转算法rr 最高优先级算法hpf 多级队列反馈算法
磁盘调度算法 先来先服务fcfs 最短寻道时间优先sstf 扫描算法scan 循环扫描算法c-scan
fat 分配给文件的所有盘块号都放在fat中记录了文件的物理位置。
中断和系统调用区别 中断在内核态执行相应的内核代码。
java
名词解释
jvm
如何判断当前系统内是否存在死锁 可以打印当前的内存快照从而进一步分析死锁原因。
threadlocal
c
指针和引用的区别
- 指针是一个存储地址的变量指针可以为空指针可以有多级指针可以重新赋值而引用只能初始化一次sizeof引用得到的是变量大小而sizeof指针得到的是指针本身大小
将引用作为函数返回值的好处是 在内存中不会产生被返回值的副本因为随着调用结束局部变量会被销毁。
三种传参方式
- 值传递 传递的是实参的一个拷贝修改形参不会改变实参值。地址传递 传递的是实参地址的一个拷贝修改形参会导致改变实参值。引用传递 传递的是实参的一个别名修改形参会导致改变实参。 被调用函数的形参只有在被调用时才会临时分配存储单元一旦调用结束则释放内存。
const作用 被const修饰符修饰的变量不能被修改。const *x表明x数据是常量*const *x表明x本身数据和地址都不能被修改。
static作用 被static修饰符修饰的变量在整个文件中都是可见的而函数内部局部变量存放在栈区。 静态局部变量下一次执行到这里不会再重新初始化。 static变量如果没有显式初始化默认初始值为0。 静态函数不能被其他函数所调用。
面向对象的三个要素(基本特征) 1、封装模块化代码。 2、多态实现多态的两种方式——覆盖(重写)和重载。 覆盖是子类重新定义父类的虚函数。 重载是存在多个同名函数与多态无关。 3、继承对父类功能进行扩展。
结构体和联合有什么区别 (1). 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员。 (2). 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。
c 不是。不同类型间指针可以强制互转。
const与#define区别 const修饰常量受到强制保护有类型安全检查。
基类的析构函数为什么是虚函数 为了防止派生类析构函数未执行造成资源泄露。
#include尖括号和双引号区别 <>是标准头文件“”是非系统头文件
为什么有了指针 为了支持运算符的重载。更加方便。
如何避免野指针 声明指针记得初始化避免内存泄漏。
nosql
redis
redis分布式锁 setnx(set if not exist)和expire、delete联合实现就会造成混乱。
为什么redis是单线程的 单线程指的是网络请求模块使用了一个线程其他模块仍用了多个线程(epoll模型)。 因为redis是基于内存的操作那就顺理成章地采用单线程的方案了。
redis为什么这么快 1、完全基于内存
2、数据结构简单
3、采用单线程
4、使用多路i/o复用模型
5、使用底层模型不同 多路 i/o 复用模型 多路i/o复用模型是利用 select、poll、epoll 可以同时监察多个流的 i/o 事件的能力这种做法就避免了大量的无用操作。
这里“多路”指的是多个网络连接主要由以上几点造就了 redis 具有很高的吞吐量。
缓存雪崩、缓存穿透、缓存热点
计算机网络
osi模型全称 opening system interconnection – reference model
osi模型与tcp模型的区别 key differences between tcp/ip and osi model tcp/ip is a client-server model, i.e. when the client requests for service it is provided by the server. whereas, osi is a conceptual model. tcp/ip is a standard protocol used for every network including the internet, whereas, osi is not a protocol but a reference model used for understanding and designing the system architecture. tcp/ip is a four layered model, whereas, osi has seven layers. tcp/ip follows vertical approach. on the other hand, osi model supports horizontal approach. tcp/ip is tangible, whereas, osi is not. tcp/ip follows top to bottom approach, whereas, osi model follows a bottom-up approach.
tcp和udp的区别 tcp可靠udp可以一对一、一对多、多对一和多对多。 tcp面向连接工作效率比tcp高。 tcp对系统资源要求多udp则无。
dns工作过程 应用层协议增加通信容量。 迭代若缓存没有ip则本地域名服务器进一步向其他根域名服务器查询。 递归主机分别向多个服务器发出查询请求。
udp的优点 发送前无需连接无需维持连接状态表。udp的可靠性要通过应用层来控制。
数据链路层成帧方式 字符填充法、字符计数法、比特填充法、违规编码法。
rip和ospf rip(routing information protocol)在应用层最大站点数为15 ospf(open shortest path first)网络层迪杰斯特拉算法
软件工程
类之间的关系有哪些 继承类继承另一个类的功能 实现类实现接口的功能 依赖a类的某个方法使用到了b类 关联b类作为一个属性出现在了a类 聚合公司与个人的关系 组合如汽车与轮胎
软件工程标准步骤
- 问题定义可行性研究需求分析总体设计详细设计编码和单元测试综合测试软件维护
有哪些软件测试分类 黑盒测试以用户角度测试软件输入输出 白盒测试确定每个分支都能按照预定正常工作 灰盒测试集合白盒黑盒 冒烟测试快速 系统测试验证系统是否满足需求规格的黑盒类测试 性能测试负载测试和压力测试 安全测试假扮黑客侵入系统 兼容性测试不同平台不同环境下的测试
自顶向下和自底向上测试方法的区别 自顶向下早期可发现顶层错误。 自底向上某些模块可以提前测试。
软件工程的三要素 方法、工具、过程。
软件工程的主要模型 1、瀑布模型但加大了工作量。 2、快速原型难以维护。 3、增量模型但不容易控制整体过程 4、螺旋模型风险人员需要一定经验。 5、喷泉模型节省开发时间。 6、敏捷
什么是死代码 永远不会被执行到的代码。
内聚和耦合 内聚描述的是模块内的功能联系。 耦合耦合强弱取决于模块间接口的复杂程度。 功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚 内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合
数据结构与算法
两个栈模仿一个队列 进队入a栈。 出队再依次出b栈。
两个队列模仿一个栈 入栈入a队 出栈只留一个元素时出栈。
如何判断链表是否有环 设置快慢指针快指针为null则无环。
如何判断有环链表环的入口 1、将遍历过的结点都入set则此结点即为入口。 2、快慢指针重合后再次重合结点即为入口。
最长公共子序列求解(lcs) dp。由最长公共子序列问题的最优子结构性质可知即找出xm-1和y的一个最长公共子序列及x和yn-1的一个最长公共子序列。这两个公共子序列中较长者即为x和y的一个最长公共子序列。 最长公共子串
链表能否使用二分查找 可以。先将链表排序再二分查找。
给定一颗二叉树的头结点求这两个节点的最近公共祖先 后序遍历方法
public class solution {
public treenode lowestcommonancestor(treenode root, treenode p, treenode q) {
if(root
}
}
栈应用括号匹配 左括号入栈栈空仍未匹配到则失败。
汉诺塔问题
void hanoi(char src, char des, char via, int n) {
hanoi(src, via, des, n - 1);
move(src, des, n); //把第n个盘子直接从src移动到des
hanoi(via,des, src, n - 1);
}
二叉树删除节点 被删除的节点是叶子节点再把指向这个节点的父节点指针置为空就行。 被删除的节点有左子树那么只要把当前删除节点的父节点指向被删除节点的左子树或者右子树就行。 被删除的节点既有左子树而且又有右子树这时候需要把左子树的最右边的节点或者右子树最左边的节点提到被删除节点的位置。
哈希表最好最坏情况下复杂度 o(1)和o(n)n为表长。
求二叉树的直径 两次dfs这两点的距离即为直径。
设计模式
创建型模式使程序代码不依赖具体的对象。 例单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。结构型模式以实现新的功能。 例适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式分配及它们之间的通讯模式。 例模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
数据库
数据库的acid 原子性atomicity要么全部回滚 一致性consistency那么第一秒读到的结果和第九秒得到的应该是相同的。 隔离性isolation互不干扰。 持久性durability那么数据库中的数据也永久的发生了变化。
数据库三范式 1nf(normal form)r的所有属性都不能再分解为更基本的数据单位。 2nf所有列都依赖于任意一组候选关键字。 3nf没有传递依赖。 bcnf则r满足bcnf。
插入100个数据和100万个数据有何区别 100数量级小插入完成后再建索引的策略。
数据库数据可以无限插入吗 可以。大小受到主机内存的制约。数据量大时要先删索引。减少提交次数即减少io次数。
处理大数据量的策略 表分区入带库。
group by having where 子句用来筛选 from 子句中指定的操作所产生的行。 group by 子句用来分组 where 子句的输出。 having 子句用来从分组的结果中筛选行。 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
简述数据库以及线程死锁产生的原理及必要条件
其他
线性代数中特征值和特征向量的意义 从定义出发进行分类讨论与研究。
云计算 云计算是一种按使用量付费的模式或与服务供应商进行很少的交互。
大数据的特点 1.volume:数据量巨大 体量大是大数据区分于传统数据最显著的特征。一般关系型数据库处理的数据量在tb级大数据所处理的数据量通常在pb级以上。 2.variety:数据类型多 大数据所处理的计算机数据类型早已不是单一的文本形式或者结构化数据库中的表它包括订单、日志、blog、微博、音频、视频等各种复杂结构的数据。 3.velocity:数据流动快 速度是大数据区分于传统数据的重要特征。在海量数据面前处理数据的效率就是组织的生命。 4.value:数据潜在价值大 在研究和技术开发领域就是因为大家 都洞察到了大数据的潜在巨大价值。如何通过强大的机器学习和高级分析更迅速地完成数据的价值“提纯”这是目前大数据应用背景下苛待解决的难题。
大数据发展的瓶颈 没有成熟的方法采集和处理大数据。 数据涉及到隐私法律法规还没有完善。 大量不同类别的数据不知道怎么存储。 数据的独占性有价值的数据别人不一定会分享。
knn算法的优缺点
windows中程序的启动过程
数据挖掘的信息熵
决策树
请列举面向对象设计的三个基本要素及五种主要设计原则
bios启动过程及linux内一个程序
欢迎在我的其他文章里查看计算机各学科思维导图。
发表评论