1.操作系统学了哪些东西,什么是进程,进程调度调度谁,进程的工作状态。
- 操作系统有进程管理,内存管理,文件管理,输入输出(I/O)管理
- 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位,是动态的,过程性的
- 进程调度又称低级调度,是按某种方法和策略从就绪队列中选取一个进程,将处理机分配给他。
- 进程有运行态,就绪态,阻塞态,创建态,终止态。
2.死锁,解除死锁的方法?
- 所谓死锁,是指多个进程因竞争资源而造成的一种(互相等待)僵局,若无外力作用,这些进程都将无法向前推进。
- 死锁产生的必要条件:互斥,非抢占,占有并等待,循环等待
- 解决死锁有三个方面:①死锁预防:通过设置条件,破坏产生死锁的4个必要条件的一个或几个 ②死锁避免:用某种方法防止系统进入不安全状态 ③死锁的检测及解除:允许发生死锁,然后采取某种措施解除死锁。
3.死锁已经发生,如何解决?解决时候要注意什么?
- 资源剥夺法:挂起某些死锁进程,抢占他们的资源分配给其他死锁进程。应防止被挂起的进程长时间得不到资源。
- 撤销进程法:强制撤销部分甚至全部死锁进程并剥夺资源。原则是应按进程优先级和撤销进程代价高低进行
- 进程回退法:让一个或多个进程回退到足以回避死锁的地步。要求系统保持进程的历史信息,设置还原点。
4.存储的方式有几种,各自优劣性?
- 数组:连续存储,遍历快且方便,长度固定,缺点移除和添加 需要迁移n个数据或者后移n个数据
- 链表:离散存储,添加删除方便,空间和时间消耗大,双向链表比单向的更灵活,但是空间耗费也更大
- Hash表:数据离散存储,利用hash算法决定存储位置,遍历麻烦。以java的HashMap为例
- 二叉树:一般的查找遍历,有深度优先和广度优先,遍历分前序、中序、后序遍历,效率都差不多,但是如果数据经过排序,二叉树效率还是不错。
- 图:表示物件与物件之间的关系的数学对象,常用遍历方式深度优先遍历和广度优先遍历,这两种遍历方式对有向图和无向图均适用,遍历查找不及前面人一种数据结构
5.调度什么时候发生?调度算法?堆栈,均值?
- 发生引起调度条件且当前进程无法继续运行下去时,可以进行调度与切换。————非剥夺调度
- 中断处理结束后,返回被中断进程的用户态程序执行现场前,若置上请求调度标签,即可马上进行调度。
- 调度算法:先来先服务,短作业优先,优先级调度算法,高响应比优先调度算法,时间片轮转调度算法,多级反馈队列调度算法。
6.网络的七层结构,哪几层用硬件实现,为什么其它层不用硬件?
- 应,表,会,传,网(路由器),数(网桥、交换机),物(网卡、网线、集线器、中继器、调制解调器)
7.RARP的作用,相对应的协议,地址解析的过程。
- RARP——逆地址解析协议:MAC地址到IP地址的映射
- ARP——地址解析协议:IP地址到MAC地址的映射
8.发微信用的是TCP还是UDP,为什么?
- 视频聊天用的UDP,文字图片用的TCP
9.数据结构的顺序结构有哪些?
- 顺序结构应该是指的存储空间连续的结构,有顺序表。
10.数组和指针的区别是什么?
- 数组是一组连续的空间,可用来存储,在传递参数时,数组会退化成指针,数组名相当于一个指针变量,存放首地址
- 指针是一个变量,用来存放地址
11.编码,信道的含义,码分多址和频分多址?
- 编码:把数据变换为数字信号的过程
- 信道:是信号的传输媒介
- 码分多址:是将每比特划分为更短的码片序列,每个站点被指定唯一的码片序列,发送1时,站点发送码片序列,发送0时,站点发送码片序列的反码。
- 频分多址:把信道频带划分为更窄的互不干扰的频道分配给不同用户使用。
12.动态存储和静态存储的区别?
- 动态存储:是指在程序运行时动态的为数据对象分配存储空间
- 静态存储:是指在程序编译时为数据对象分配的固定存储位置,运行时始终不变
13.递归的含义,递归能不能代替循环,递归需要做什么,堆栈需要用的什么?
- 递归的含义是函数自己调用自己。
- 递归可以代替循环但没必要
14.中断嵌套是什么?
- 中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行的过程。
15.非归零码与归零码区别,曼彻斯特是归零码还是非归零码?
- 归零码是在每个是时钟周期的中间跳变回0,非归零码则不用
- 若按归零码和非归零码的定义来看,属于非归零码。
16.操作系统的定义
- 操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序的集合。
17.进程与线程
- 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。
- 线程最直接的理解是“轻量级进程”,它是一个基本的CPU单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成,是进程中的一个实体,是被系统独立调度和分配的基本单位。
18.一个文件在磁盘上,如何访问?
- 进程调用库函数向内核发起读文件请求;
- 内核通过检查进程的文件描述符定位到虚拟文件系统的已打开文件列表表项;
- 调用该文件可用的系统调用函数read()
- read()函数通过文件表项链接到目录项模块,根据传入的文件路径,在目录项模块中检索,找到该文件的inode;
- 在inode中,通过文件内容偏移量计算出要读取的页;
- 通过inode找到文件对应的address_space;
- 在address_space中访问该文件的页缓存树,查找对应的页缓存结点:
- (1)如果页缓存命中,那么直接返回文件内容;
- (2)如果页缓存缺失,那么产生一个页缺失异常,创建一个页缓存页,同时通过inode找到文件该页的磁盘地址,读取相应的页填充该缓存页;重新进行第6步查找页缓存;
8.文件内容读取成功。
19.内存管理有哪些方法?
- 覆盖与交换
- 连续分配管理方式:单一连续分配,固定分区分配,动态分区分配(首次适应算法,最佳适应算法,最坏适应算法,邻近适应算法)
- 非连续分配管理方式:分页管理方式(基本分页存储管理方式、请求分页存储管理方式),基本分段存储管理、段页式管理方式
20.虚拟内存的作用。为什么虚拟内存可以实现?
- 虚拟内存解决了传统存储管理方式的作业需一次全部装入内存才能运行的弊端和大量作业要求运行时内存不足的弊端。
- 基于局部性原理,在程序装入时,将程序的一部分装入内存,而将其剩余部分留在外存,就可以启动程序。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需的部分调入内存,然后继续运行程序。另一方面,操作系统将内存中暂时不用的内容换出到外存,腾出空间。
21.多级存储系统的作用?
- 我们知道各级存储器的容量,速度和成本三者不可兼得,速度快的存储器,如寄存器,单位存储的成本较高,而容量大的存储器,如磁盘,成本虽然相对低,但存取速度也慢。
- 采用多级存储系统,在“Cache-主存”层次解决了CPU和主存速度不匹配的问题。在“主存-辅存”层次解决了存储系统的容量问题。
23.寄存器和存储器的区别?
- 寄存器是CPU的组成部分,与CPU有关,是存储容量有限的高速存储设备
- 存储器所指的范围较大,包括寄存器,内存,外存等。
24.请求分页页面置换算法列举
- 最佳置换算法(OPT):换出在未来很长时间不再访问的页面
- 先进先出页面置换算法(FIFO):换出最早进入内存的页面,或者说是在内存中驻留时间最久的页面
- 最近最久未使用置换算法(LRU):选择最近最长时间没有访问的页面换出。
- 时钟置换算法(CLOCK)
25.叙述clock置换算法
- 简单的CLOCK算法,给每帧关联一个附加位,称为使用位。当某页首次装入内存时,该帧使用位置为1,当该页随后被访问到时,也置为1,。对于页面置换算法,用于替换的候选帧集合视为一个循环缓冲区,并有一个指针相关联,当某一页被替换出,指针则指向下一个,当需要替换一个页时,就扫描缓冲区,查找使用位为0的帧,指针每经过一个使用位为1的帧,就把该帧的使用位置为0.
- 改进型CLOCK置换算法:在使用位的基础上再加一个修改位。有四种情况,①未被访问,未被修改(00) ②被访问,未被修改(10) ③未被访问,被修改(01) ④被访问,被修改(11)。优先置换两位全0的,次之是01的,没有的话,每访问一个帧就把使用位置为0,再次判断、
26.C语言中你习惯定义全局变量还是局部变量?
- 在做题的时候,习惯定义全局变量,因为易于操作,而且在定义数组的时候,全局的数组长度大于在局部定义的数组的长度。在全局定义,存储在静态存储区,局部定义时,存储在栈区,Windows下是2M
- 在写程序的时候习惯定义局部变量
27.编译的过程是什么?
- 词法分析
- 语法分析
- 语义分析
- 中间代码生成
- 代码优化
- 目标代码生成
28.给你一个链表,如何确定这个链表有环?
- 暴力法:两层循环,每到一个结点,就从头开始在遍历到当前节点的前一个,看有无与这个结点相同的。
- 快慢指针法:两个指针,一个每次走一步,一个每次走两步,若两者相遇,则有环
- 哈希表法:每遍历一个结点,就把这个结点的id与哈希表中的比较,若没有,则存入,反之,则有环
29.线性表的定义
- 线性表是具有相同数据类型的n个数据元素的有限序列。
30.设计算法统计一个二进制数中1的个数?
- 算法-求二进制数中1的个数_wisgood的专栏-CSDN博客
- 遍历法
- 减一与运算法
31.斐波那契数列递归和迭代的区别是啥?
- 递归存在重复计算的问题,所以速度比迭代慢
32.描述斐波那契序列算法和汉诺塔算法
- 斐波那契数列是初始两个数为1,从第三个数开始,值为其前两个数的和
- 汉诺塔算法是:有三个柱子,第一个柱子上有从底到顶由大到小的圆盘,需要全部移到第三个柱子上,切每次只能移动一个,切大的盘要在小的盘下方。
33.数据库范式的定义以及区别
- 范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。
- 1NF:每个分量是不可分的数据项(简单说就是“表中无表”)
- 2NF:属于1NF,且每个非主属性完全函数依赖于任何一个候选码(消除了非主属性对码的部分函数依赖)
- 3NF:在2NF的基础上消除了非主属性对码的传递函数依赖
- BCNF:也认为是修正的第三范式,消除了主属性对码的部分和传递函数依赖
- 4NF:消除了非平凡且非函数依赖的多值依赖
34.数据库的第一二三四范式是啥?
- 1NF:每个分量是不可分的数据项(简单说就是“表中无表”)
- 2NF:属于1NF,且每个非主属性完全函数依赖于任何一个候选码(消除了非主属性对码的部分函数依赖)
- 3NF:在2NF的基础上消除了非主属性对码的传递函数依赖
- BCNF:也认为是修正的第三范式,消除了主属性对码的部分和传递函数依赖
- 4NF:消除了非平凡且非函数依赖的多值依赖
35.数据挖掘有什么应用?
- 数据挖掘(Date Meaning),是从大量的数据中找出隐藏的,有用的信息,也可以称为数据库中的知识发现(KDD,Knowledge Discovery in Database)
- 商业中的数据挖掘:类似经典的啤酒和尿布
- Web数据源中的数据挖掘:像一些app会根据你的浏览给你推荐类似的
- 关联规则挖掘算法:Apriori算法,FP-tree算法
- 分类方法:基于距离的分类方法:KNN,决策树算法,朴素贝叶斯分类
- 聚类方法:k-means算法,PAM算法,AGNES算法,
36.数据库有几种锁?数据库的事务?常用的数据库?数据库的主码与外码
- 基本的封锁类型有两种:排他锁(X锁,写锁)和共享锁(S锁,读锁)
- 事务:是用户定义的一个数据库操作系列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
- 常用数据库:Oracle,MySQL,SQL Sever
- 主码:某一属性组的值能唯一标识一个元组,而其子集不能,则称该属性组为候选码,多个候选码,选其中一个为主码。
- 外码:设F是基本关系R的一个或一组属性,但不是R的码,K是S的主码,如果F与K相对应,则称F是R的外码。
37.用离散数学解释下主成分分析是啥?
- 主成分分析法是一种降维的统计方法,它借助于一个正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量,这在代数上表现为将原随机向量的协方差阵变换成对角形阵,在几何上表现为将原坐标系变换成新的正交坐标系,使之指向样本点散布最开的p 个正交方向,然后对多维变量系统进行降维处理,使之能以一个较高的精度转换成低维变量系统,再通过构造适当的价值函数,进一步把低维系统转化成一维系统。
38.学过哪些前沿课程?课程内容是什么?人工智能是什么?
- 数据科学导论:内容主要是Python基础,利用Python的常用包对数据进行简单处理和画图。
- 人工智能的一种定义:《人工智能,一种现代的方法》笔记:人工智能是类人思考、类人行为,理性的思考、理性的行动。人工智能的基础是哲学、数学、经济学、神经科学、心理学、计算机工程、控制论、语言学。人工智能的发展,经过了孕育、诞生、早期的热情、现实的困难等数个阶段;
人工智能的另一种定义:人工智能是研究、开发用于模拟、延伸和扩展人的智能理论、方法、技术及应用系统的一门新的技术科学,它是计算机科学的一个分支;
39.项目是什么?自己做了什么?
40.10框苹果,有9框每个半斤重,有一筐每个四两,如何通过只称重一次,找出那个不一样的?
41.描述一下数据结构具体有哪几种?解释机器学习
- 线性表,栈,队列,字符串,二叉树,森林,图
- 机器学习研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
42.面向对象中的封装,继承和多态
- 封装:指的是信息隐藏,把对象的属性和操作封装在一起,只留有对外接口,形成一个独立的单位,并尽可能隐藏其内部细节。
- 继承:是指子类可以自动拥有父类的全部属性和操作,并且还可以定义自己特有的属性和操作
- 多态:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
43.数据结构中链表的逆置
- 头插法
- 用相邻的三个指针,使三个结点的next指针反转
44.优先级反转是什么?怎么解决这个问题?
- 高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度。但其他中等优先级的任务却能抢到CPU资源。
- A. 优先级继承(priority inheritance)
优先级继承是指将低优先级任务的优先级提升到等待它所占有的资源的最高优先级任务的优先级.当高优先级任务由于等待资源而被阻塞时,此时资源的拥有者的优先级将会自动被提升.
B. 优先级天花板(priority ceilings)
优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板)
45.为什么要有泰勒展开式?对计算机学科的意义是什么?
- 计算机怎么计算sin(x)?计算机只会加减乘除,所以得变成多项式,泰勒公式是用高阶导数逼近真实值,并且误差可控。就好像在计算机画曲线,看起来光滑的曲线不是绝对光滑的,其实是用小直线近似出来的。有了泰勒公式你就可以画了,精度越高,曲线越光滑。
46.极大似然估计的作用
47.贝叶斯定理
48.蒙特卡洛求不规则图形面积
49.一个桶里有八斤油,另有一个三斤和五斤的桶,分成两桶四斤油。
- 把8斤桶里油倒入5斤的桶里,省3斤
- 5斤桶里的倒入3斤桶,剩2斤
- 三斤桶倒回8斤桶,总共6斤
- 5斤桶中的2斤油倒入3斤的桶中,8斤桶中的6斤油倒入5斤桶,剩下1斤
- 5斤桶中倒入1斤到3斤的桶中,此时已经分出两个四斤。
50.为什么要有系统调用?
- 系统调用可以为用户提供访问硬件资源的统一接口,对用户是透明的,用户不必关心硬件如何操作
- 系统调用也是对操作系统的保护,保证系统的稳定和安全。
51.调度是什么?内存怎么管理?
- 调度就是按照一定的算法对处理机资源进行分配
- 覆盖与交换
- 连续分配管理方式:单一连续分配,固定分区分配,动态分区分配(首次适应算法,最佳适应算法,最坏适应算法,邻近适应算法)
- 非连续分配管理方式:分页管理方式(基本分页存储管理方式、请求分页存储管理方式),基本分段存储管理、段页式管理方式
52.进程与线程的区别
- 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。
- 线程最直接的理解是“轻量级进程”,它是一个基本的CPU单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成,是进程中的一个实体,是被系统独立调度和分配的基本单位。
- 调度方面:线程是独立调度的基本单位,进程是拥有资源的基本单位
- 拥有资源方面:进程是拥有资源的基本单位,线程可以访问其隶属进程的系统资源。
- 系统开销方面:进程创建,撤销和调度的开销都大于线程的
- 通信方面:进程间通信需要同步和互斥手段,线程间可以直接读/写数据段来通信。
53.什么是死锁?
- 所谓死锁,是指多个进程因竞争资源而造成的一种(互相等待)僵局,若无外力作用,这些进程都将无法向前推进。
54.学过的排序算法
- 插入排序:直接插入排序(稳),折半插入排序,希尔排序
- 交换排序:冒泡排序(稳),快速排序
- 选择排序:简单选择排序,堆排序
- 归并排序(稳)
- 基数排序(稳)
55.操作系统中表示内存已被占用的数据结构是什么
- 连续分配管理方式:分区说明表
- 非连续分配管理方式:页表,段表
56.操作系统提供给程序员创建进程的接口有哪些?
- fork()函数:创建
- getpid()函数:获得当前进程的识别码
- getppid()函数:获得当前进程的父进程的识别码
- exit()函数:结束进程
57.说一下内存管理方式有哪些?
- 覆盖与交换
- 连续分配管理方式:单一连续分配,固定分区分配,动态分区分配(首次适应算法,最佳适应算法,最坏适应算法,邻近适应算法)
- 非连续分配管理方式:分页管理方式(基本分页存储管理方式、请求分页存储管理方式),基本分段存储管理、段页式管理方式
58.全局变量和局部变量分别存储在哪里?
- 在全局定义,存储在静态存储区,局部定义时,存储在栈区,Windows下是2M
59.外部中断CPU该如何处理
- 关中断。CPU响应中断后,首先要保护程序的现场状态,此时,CPU不应响应更高级的中断源的中断请求。
- 保存断点。
- 引出中断服务程序。
- 保存现场和屏蔽字
- 开中断
- 执行中断服务程序
- 关中断
- 恢复现场和屏蔽字
- 开中断、中断返回
60.快排和冒泡的原理,空间复杂度
- 快速排序:选择基准(一般选第一个),根据基准将序列分成两半,对两半进行递归,重复前边的操作。空间复杂度:平均情况O(logn)
- 冒泡排序:从后往前两两比较相邻元素值,若为逆序,则交换,一趟排序后最小的会放到第一个位置。或从前往后两两比较元素值,逆序就交换,一趟排序后,最大的会放到最后。空间复杂度:O(1)
61.弗洛伊德算法?迪杰斯特拉算法?
-
弗洛伊德:任意两点的最短路
-
迪杰斯特拉:单元最短路
62.DHCP协议的作用
- 动态主机配置协议:常用于给主机动态的分配IP地址,提供即插即用的联网机制。
63.访问网络的过程
- 浏览器分析链接指向的页面的URL:www.nwpu.edu.cn
- 浏览器向DNS请求解析www.nwpu.edu.cn的IP地址
- 域名系统DNS解析出网页服务器的IP地址
- 浏览器与该服务器建立TCP链接(默认端口号80)
- 浏览器发出HTTP请求,GET http://www.nwpu.edu.cn/index.html
- 服务器通过HTTP响应把文件index.html发送给浏览器
- TCP连接释放
- 浏览器解释文件index.html并把页面显示给用户
64.几种方法写阶乘
- 递归和迭代
65.定义一个结构体,里面一个int类型,一个char类型,int占4位,char占一位,结构体占几位?
- 8位
66.描述K-means算法和KNN算法
- K-means是一种聚类算法,其中k代表要聚成k类,means代表平均,原理是先从数据中随机找出k个点,然后根据其他数据到这k个点的距离将其分成k个组,计算每个组的平均值点,再将所有数据与平均值点比较,重新分成k个组,重复上述操作,直到最后两次的每组平均值不变,结束。
- KNN算法是一种基于距离的分类算法,有训练数据和预测数据,k代表选择时维护k个最近的,k个数据中,哪个类别最多,当前这个就属于那个类别。
Can you introduce yourself?
Dear professors, good morning. It is a great honor to have this opportunity for an interview. My name is Du Xiangjun, I’m 22 years old, and I was born in Gaomi, a small town in Shandong Province.
I entered Qingdao university in 2017, majoring in software engineering, I have been studying it for nearly four years. I realize that I’m interested in it. For this period, I try to learn professional courses and won the scholarships for many times. In addition, I joined the laboratory of the college and learned some knowledge about algorithm. Then I took part in the programming contest of our university and won a bronze prize. I also participated in the Lan Qiao Cup programming contest and won the first prize of Shandong Province and the national second prize.
In a word, I am a person who have a serious attitude to study and love my major. If I am admitted to your honored university, I believe I can make more effort on studying. That’s all, thank you.
Can you introduce your favorite book/film?
My favorite book/film is The Million Pound Note which tells a short story written by American writer Mark Twain.The story tell a people who get a fake million pounds note but he became a really millionaire eventually. It’s a very interesting story.
Why do you take the postgraduate entrance exam?
I develop a strong interest in software engineering in university, but the basic courses can’t satisfy me. It’s a good chance for me to enter the better university. I don’t want to miss it, so I decided to go for it as hard as I could.
What are your plans for graduate school?
If I am enrolled into your honored school, I will study the professional courses seriously. What’s more,I would like to try new knowledge of other areas and learn to study automatically.