考研复试面试题目

面试要准备知识:
要求:
1.准备自己想从事的科研方向以及相关的知识和最新研究成果或前沿问题要有一定了解和关注(数据挖掘前沿知识、问题)
2.熟悉软件开发过程,掌握一种软件开发方法,软件工程相关知识一定要准备

面试准备科目:
重要性:毕业设计、研究方向、软件工程、离散数学、操作系统、数据结构、数据库、计算机组成原理、计算机网络、线性代数、高数、程序设计

1.对什么方向感兴趣?那个是干什么的?
数据挖掘:数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程,包含了机器学习、统计学、数学等多个学科的知识。
数据挖掘三大常见的任务:
回归任务:回归任务是一种对连续型随机变量进行预测和建模的监督学习算法,使用案例包括房价预测、股票走势等。
分类任务:分类是一种对离散型变量建模或预测的监督学习算法,使用案例包括邮件过滤、金融欺诈等。
聚类任务:聚类是一种无监督学习,它是基于数据的内部结构寻找观察样本的自然族群(集群),使用案例包括新闻聚类、文章推荐等。
监督学习:数据集中每个样本都有相应的标签。
无监督学习:数据集中的样本没有相应的标签。

数据挖掘十大算法介绍:
K-Means算法:聚类算法,事先确定常数K,K代表着聚类类别数,首先随机选取K个初始点为质心,并通过计算每一个样本与质心之间的相似度(可以采用欧式距离),将样本点归到最相似的类中,接着重新计算每个类的质心(该类中所有点的平均值),重复这样的过程直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。优点:原理简单、容易实现,缺点:收敛太慢、算法复杂度高、需先确定K的个数、结果不一定是全局最优,只能保证局部最优。1.由于每次都要计算所有样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。改进收敛速度:第一次迭代正常进行,选取K个初始点为质心,然后计算所有节点到这些质心的距离,后续的迭代中,不再计算每个点到所有K个质心的距离,仅仅计算上一次迭代中离这个节点最近的某几个质心的距离,对于其他的质心,因为距离太远,归属到那些组的可能性非常小,所以不用再重复计算距离了。
逻辑回归:逻辑回归是一个使用逻辑函数将线性回归的结果归一化的分类模型,这里的归一化指将值约束在0和1之间。缺点:容易欠拟合,分类精度可能不高。

K-NN算法:K最邻近分类算法,每个样本都可以用它最接近的K个邻居中大多数样本所属的类别来代表,其中近邻距离的度量方法有余弦值,在实际中K值一般取一个比较小的数值,通常采用交叉验证法(就是利用一部分样本做训练集,一部分样本做测试集),通过观察K值不同时模型的分类效果来选取最优的K值。
数据挖掘流程:
1.问题定义:分类/回归/聚类
2.数据准备与数据预处理:数据清洗(清除错误异常样本),处理缺失值(样本缺失较少时,使用均值/众数填充), 数据转换。
3.特征工程:通过特征工程分析数据之间的联系、数据分布等。
4. 特征选择:特征选择可以基于模型的特征排序方法,模型学习的过程和特征选择的过程是同时进行的,利用xgboost模型训练完后可以输出特征的重要性,据此可以选择topN个特征从而达到特征选择的目的。特征选择目的:减少特征的数量、降低维度,是模型泛化能力(在训练集上训练得到的模型能够在多大程度上对新的实例预测出正确输出)更强,减少过拟合。
4.模型训练及评估
5.模型融合

软件工程:
1.什么是软件工程?
软件工程:将系统化、规范化、可度量的方法应用于软件的开发、运行和维护,也就是将工程化应用于软件。

2.需求分析:深入描述软件的功能和性能、确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效需求。分析方法:面向数据流的结构化分析方法、面向对象的分析方法、结构化数据系统开发方法

32.软件生命周期的过程?
软件的生命周期又称软件的生存周期,它是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程进行分解,形成相对独立的几个阶段。
问题的定义与规划:主要确定软件的开发目标及其可行性(软件开发方、需求方共同讨论)
需求分析:对软件需要实现的各个功能进行详细分析。
软件设计:对整个软件系统进行设计如系统框架设计、数据库设计等等
程序编码:将软件设计的结果换成计算机可运行的程序代码,制定统一符合标准的编码规范。
软件测试:整个测试过程分单元测试、组装测试及系统测试三个阶段,测试的方法主要有白盒测试(从程序的源代码出发,测试代码算法、条件、溢出)和黑盒测试(从用户角度测试,不考虑程序内部结构和性能)。
运行维护:持续时间最长,包括纠错性维护和改进性维护
可行性研究:技术可行性、经济可行性、社会因素可行性、操作可行性、开发方案可行性。

1.软件工程开发模型
瀑布模型:典型的预见性方法,严格遵循预先计划的需求分析、软件设计、编码、测试、运行和维护的步骤进行,步骤成果作为度量进度的方法。
问题:它严格的分级导致自由度降低,对后期需求的变化难以调整,代价高昂,在需求不明或在项目进行过程中可能变化的情况基本是不可行的
迭代模型:在迭代开发方法中,整个开发工作被组织为一系列短小的、固定长度的小项目,被称为一系列的迭代,每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整确定之前启动,并在一次迭代中完成系统的一部分功能的开发工作,再通过客户的反馈来细化需求,并开始新一轮的迭代。
螺旋模型:将瀑布模型和快速原型模型结合起来,采用一种周期性的方法来进行系统开发,在每一个周期都包括需求定义、风险分析、工程实现和评审四个阶段,适合于大型复杂系统。
敏捷开发:以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,项目的规模较小,适用于较小的队伍(团队高度协作)。

UML:统一建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。

33.UML里面有哪些图?
UML图包括九种:使用案例图、类图、对象图、构件图、部署图、活动图、协作图、状态图、序列图。在这些图中使用案例图、类图、序列图是最有用的。
1、需求
采用用例图描述需求。
2、 分析
采用类图描述静态结构
采用顺序图、活动图、状态图描述动态行为
3、设计
采用包图,对类的接口进行设计
4、 实现
将类用某面向对象语言实现
5、继承与交付
构件图、包图、部署图
6、 测试
单元测试——类图和类的说明书

操作系统:
1.进程线程及它们区别:
进程:进程是由程序段、数据段和程序控制块组成,是系统进行资源分配和调度的一个独立单元。
线程:线程是进程中的一个实体,是CPU调度和分派的基本单位,线程自己不拥有系统资源。 引入进程的目的是为了更好地使多道程序并发执行,以提高资源利用率和系统吞吐量,引入线程是为了减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
比较:线程是独立调度的基本单元,进程是拥有资源的基本单元。进程的地址空间之间互相独立,同一进程的各个线程共享进程的地址空间。

2.线程同步方式
互斥量、信号量

3.进程通信方式
管道、系统IPC(包括消息队列、信号量、共享存储),socket

4.缓冲区溢出、危害、原因
缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量。
危害:程序崩溃、跳转并执行一段恶意代码
主要原因:程序中没有仔细检查用户输入。

5.死锁,死锁产生的条件
死锁:多个进程因竞争资源而造成的一种僵局即相互等待,若无外力作用,这些进程都将无法向前推进。
原因:非剥夺资源的竞争和进程不恰当的推进顺序。
产生条件:互斥条件、请求和保持、不可剥夺、循环等待。

6.进程的状态
就绪状态、运行状态、阻塞状态(进程正在等待某一事件而暂停运行)

7.分页和分段
固定分区会产生内部碎片,动态分区会产生外部碎片,这两种技术对内存的利用率较低,为了避免碎片的产生提高内存的利用率引入分页。
段是信息的逻辑单位,它是根据用户的需要划分的,段的大小不固定,由它所完成的功能所决定。因此段对用户是可见的;页是信息的物理单位,是从计算机角度考虑设计的,为了管理主存的方便而划分的,页的大小是固定的,对用户是透明的。

8.进程调度策略
先来先服务、优先级、时间片轮转调度、高响应比调度、多级反馈队列调度
作业调度算法:
先来先服务、短作业优先,高响应比优先、优先级调度算法
页面置换分配:
最佳置换算法、先进先出页面置换算法、最近最久未使用页面置换算法、时钟置换算法
9.进程同步机制
信号量和PV操作、管程、消息传递
P操作可以用于阻塞一个进程、V操作可以用于解除阻塞的一个进程
管程:管程是由一组数据以及定义在这组数据上对这组数据的操作所组成的软件模块,特点:局部于管城内的数据变量只能被管程的过程访问,任何时候只能有一个进程在管程中执行,调用管程的其他任何进程都被阻塞。

10.死锁的处理策略
预防死锁(破坏死锁产生的四个必要条件)、避免死锁(安全状态、银行家算法),检测死锁(死锁定理化简资源分配图)、解除死锁(资源剥夺、进程回退)

计算机网络:
1.TCP/UDP区别
TCP和UDP都是运输层中的协议。TCP面向连接提供可靠的数据传输服务,UDP面向非连接不提供可靠传输服务;TCP面向字节流数据传输慢,UDP面向报文数据传输快

2.TCP三次握手过程四次挥手
握手:假设主机A为客户端,主机B为服务端。主机A向B发送连接请求报文段,主机B对收到的主机A的报文段进行确认,主机A对主机B的确认进行确认。
挥手:主机A向主机B发送一个连接释放报文,主机B收到连接释放报文后发出确认。主机B向主机A发送连接释放报文,主机A接收到连接释放报文后发出确认。

3.TCP如何保证传输的可靠性
数据包校验:若校验出包出错,则丢弃报文段并且不给出响应;
对失序数据报重排序、超时重发、流量控制

4.TCP流量控制
匹配发送方的发送速率和接收方的读取速率,提供了一种基于滑动串口协议的流量控制机制。

5.TCP拥塞控制机制
通过将慢开始、拥塞避免、快重传、快恢复同时应用到拥塞控制机制中,当发送方检测到超时的时候就采用慢开始和拥塞避免,当发送方收到冗余ACK时就采用快重传和快恢复。(快速重传技术使用了冗余ACK来检测丢包的发生)

6.CSMA\CD是什么?那它的工作原理是什么?
载波侦听多路访问/碰撞检测,载波侦听就是每一个站在发送数据之前先要检测一下总线上是否由其他站点在发送数据,如果有,则暂时不发送数据,等到信道变为空闲时再发送。碰撞检测就是边发送数据边侦听信道以判断自己在发送数据时其他站点是否也在发送数据。

计算机组成原理:只看流水线、指令流水线、瓶颈
计算机的流水线就是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行执行,从本质上讲流水线技术是一种时间并行技术,采用流水线技术只需添加少量硬件就能把计算机的运算速度提高几倍。
影响流水线性能的因素:
结构相关(资源相关):由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。前一条指令坊存时,使后一条相关指令及后续指令暂停一个时钟周期。或者单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行。
数据相关(数据冲突):在一个程序中必须等待前一条指令执行完才能执行后一条指令的情况。通过数据旁路技术,设置相关专用通路,直接把前一条指令的的计算结果作为自己的输入数据开始计算,使本来需要暂停的操作变得可以继续执行。
控制相关(控制冲突):当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。对转移指令进行分支预测,尽早生成转移目标地址。

了解一下天河二号为什么快?
内存大容量达到1400万亿字节,提升计算机的运行速度主要依靠更新CPU或提高CPU运行速度的方式,在计算机的发展中,CPU的技术限制几乎到达瓶颈,增加集群CPU的数量固然可以增加速度,但是集群运行速度并不会持续攀升,而是趋向某一峰值,而且那么多CPU在一起,不仅散热是个问题耗能也是一大阻力,天河一号开创了CPU+GPU异构融合体系,能耗低、成本低、集成度高,天河二号在此基础上设计出“新型异构多态体系结构”这种结构不仅大幅度提高系统的计算速度,还将其应用从科学计算扩展到大数据处理、大规模信息服务等多个领域。

2.B树主要特点是什么?
一棵m阶B树,若根节点不是终端节点,则至少有两棵子树,至多M棵子树。除根节点外的所有非叶节点至少有m/2棵子树至多m棵子树,所有叶节点都出现在同一层次上,并且不带信息。
B树与B+树区别:B+树中具有n个关键字的节点只含有n棵子树,在B树中,具有n个关键字的节点含有n+1棵子树。B+树中所有非叶节点只起到索引作用,叶节点包含所有关键字。

3.B树要插入一个节点,那应该要怎么样保持平衡?

4.那你知道数据库在数据比较多的时候应该做怎么样的优化?
可以为数据建立索引,加快查询数据的速度

5.哈希能够支持区间查询吗?比如查找0到18岁的?

8.离散变量:变量值可以按一定顺序一一列举。连续变量:在一定区间内可以任意取值的变量,其数值是连续不断的。

7.有穷集和无穷集用什么可以区分?
集合中元素数量是否是有限

10.哪些因素可以影响计算机的运行速度?
CPU、显卡、内存、硬盘

14.都说说数据结构有哪些排序算法?
插入排序、冒泡排序、选择排序、快速排序、归并排序、堆排序、计数排序等

15.说说一到两种排序算法的优劣?比较时间复杂度
插入排序,将未排序序列中的元素插入到前面已排序好的元素中,算法稳定,最好情况时间复杂度为O(n),平均时间复杂度和最坏情况为O(n^2)
快速排序,公认最好的排序算法,平均时间复杂度为nlogn,空间复杂度为O(nlogn),算法不稳定,最坏情况下为n^2。

16.为什么计算机网络中发送、接收端要缓存?
为了解决发送端和接收端速度不匹配问题。

17.问什么是死锁,什么情况算是死锁之类的?
多个进程因竞争资源而造成的相互等待,若无外力作用,这些进程都将无法向前推进现象。

18.什么时候方程组有解,什么时候有唯一解,什么时候有无数个解
方程组的系数矩阵的秩等于增广矩阵的秩有解,等于未知数个数时存在唯一解,小于未知数个数时有无数解。系数矩阵的秩小于增广矩阵的秩时无解。
秩:矩阵中线性无关的最大行数/列数

19.线代里面矩阵行变换可以得到什么类型的矩阵?

20.问如果不知道有多少数据,想要作为参数传递过去要用什么数据结构?

21.问了个离散中的等价?
等价关系:设一个非空集合上的二元关系,若它是自反、对称、传递的,则说它是该非空集合上的等价关系,同班的同学关系、三角形间的相似关系都是二元关系
一个关系的闭包是指加上最小数目的有序对而形成的具有自反、对称或传递性的新的有序对集,这样的集合就是关系的闭包。
单射:设F是A到B的函数,对于任意的y,y属于F的值域都能在A中找到唯一的x与之对应。
满射:F的值域就是B,则称F是满射的。
双射: F既是单射的又是满射的。

25.CMM是哪个大学提出的,包含哪几个级别(初始级、可重复级、已定义级、已管理级、优化级)
CMM:软件能力成熟度模型由卡内基梅隆大学提出。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。

离散:如何判欧拉图、哈密顿、函数、等价关系
欧拉图:看能否找到一条经过图中所有边仅一次且行遍所有顶点的回路。
哈密顿图:看能否找到一条经过图中所有顶点仅一次的回路。
函数:给定一个数集A,对A施加对应法则F,得到另一个数集B,也就是B=F(A),那么这个关系式就叫函数的关系式,简称函数。
等价关系:对于非空集合A上的关系R,如果R满足自反、对称、传递,那么就说R是非空集合上的等价关系。

26数组和链表的区别?
数组的使用需要事先在内存中分配一块连续的地址空间,数组中的元素在内存中连续存放,它支持随机访问(给出数组首地址和查找元素的下标就可以直接访问该元素),不过在数组中插入和删除操作需要移动大量的元素。
链表的使用不用事先在内存分配地址空间,链表中的元素在内存中不是顺序存储的,只能支持顺序访问,对于元素的插入和删除操作不需移动元素,只需更改一些节点指针即可。

26.二分排序可以用链表实现吗,然后问你为什么?
二分排序再插入一个元素时使用二分查找法在前面已排序好的元素中找到插入元素所在的位置,二分查找法需要支持随机访问的存储结构,而链表只支持顺序访问,因此不行。

27.离散数学的问题,关系和函数的定义是什么?
笛卡尔积:设A、B为集合,取A中元素为第一元素,B中元素为第二元素构成有序对,这样的有序对组成的集合叫做A和B的笛卡尔积。
二元关系:如果一个集合满足以下条件之一:集合非空且它的元素都是有序对;集合为空集,则称该集合为一个二元关系。
A到B的二元关系:A、B为集合,A和B笛卡尔积的任何子集所定义的二元关系叫做从A到B 的二元关系,当A=B时叫做A上的二元关系。

30.数据结构的复杂度o(1)是什么意思?
时间复杂度O(n),表示程序运行时间跟n有关,并且是线性关系。
空间复杂度O(1),表示所需辅助空间为常量,并且与n无关。

35.算法里面时间复杂度分析的大O表示什么?
大O符号用来描述函数渐进行为的数学符号,一个大O,在其括号中用另一个函数来描述原来函数的数量级的渐进上界,常用于描述算法的复杂度,。

线性相关无关:
对于S个N维向量a1,a2,as,如果存在S个不全为0的数使得这S个N维向量和这K个数的线性组合等于0成立,那么这S个N维向量就是线性相关的了,否则就称它为线性无关。

36.搜索栏输入一个网址点击鼠标所发生的事情:
1.浏览器分析链接指向页面的URL。
2.浏览器向DNS请求解析域名的IP地址。
3.域名系统DNS解析出域名的IP地址。
4.浏览器与该服务器建立TCP连接(默认端口号80)
5.浏览器发出HTTP请求。
6.服务器通过HTTP响应把文件发送给浏览器。
7.TCP连接释放。
8.浏览器将所得到的文件进行解释,并将web页显示给用户。

C语言:
函数调用之前的工作:
(1)为被调用函数分配数据存储区;
(2)将所有的实参、返回地址等信息传给被调用函数保存;
(3)将控制转移到被调用函数的入口。
返回前的工作:
(1)保存计算结果;
(2)释放存储区;
(3)控制转移。
递归函数优缺点:
优点:简洁,在树的三种遍历方式中递归的实现要比非递归的实现简单。
缺点:效率较低,递归是有时间和空间消耗的,递归中很多计算都是重复的,从而给性能带来很大的负面影响。递归的本质是把一个问题分解为两个或多个小问题,这些小问题存在相互重叠的部分,因此也就存在重复的计算。递归也可能导致调用栈溢出,每一次函数调用都会在内存栈中分配空间,而每个进程的栈容量是有限的,如果函数调用的层级太多,就会超出栈的容量,从而导致栈溢出。

C中指针是什么,C和C++内存分配区别。

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页