一志愿面试准备

一志愿面试准备

考查目标:

  1. 西工大复试的面试题集。
  2. 复试准备阶段,尽管分数尴尬,也要准备复试。
  3. 这里的题集以后会用得到的。

许多计算机基础问题。

2019级面试问题汇总

一系

或与硬件相关方向和老师

1.操作系统的目录(分别学了哪些东西?)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
(1)计算机操作系统基础知识:
OS的概念、功能和目标
OS的特征
OS的发展与分类
OS的运行机制和体系结构
中断和异常
系统调用
(2)进程和调度:
进程的定义、组成、组织形式和特征
进程的状态和进程状态间的转换
进程控制的基本概念和相关原语
进程通信(共享存储,管道通信,消息传递)
线程和多线程模型(定义,为什么,线程属性,实现方式)
处理机调度(基本概念,三个层次,三层调度的联系、对比)
进程调度的时机,切换与过程,方式
调度算法及其评价指标
进程同步,进程互斥
进程互斥的软件实现方法(但标志法,双标志先检查,双标志后检查,Peterson算法)
进程互斥的硬件实现方法(中断屏蔽方法,TestAndSet(TS指令/TSL指令),Swap指令(XCHG指令))
信号量机制类型(整型信号量,记录型信号量)
信号量机制(实现进程互斥,实现进程同步,实现进程的前驱关系)
生产者消费者问题、吸烟者问题、读者-写者问题、哲学家进餐问题
管程(为什么引入管程,组成,基本特征,补充)
死锁(定义,区别,必要条件,处理策略)
预防死锁(破坏互斥条件,破坏不剥夺条件,破坏请求和保持条件,破坏循环等待条件)
避免死锁(银行家算法)
死锁的检测和解除

如何检测{数据结构:资源分配图,死锁检测算法},
如何解除{资源剥夺法,撤销进程法,进程回退法}

(3)内存(定义,基本原理)
内存管理的概念(分配与回收,内存的扩充,地址转换,存储保护)
覆盖与交换(覆盖技术,交换技术,覆盖与交换的区别)
连续分配管理(单一连续分配,固定分区分配,动态分区分配)
动态分区分配算法
基本分页存储管理的基本概念(地址转换,页号、页内偏移量的计算,页表)
基本地址变换机构(页表存储器的作用,地址变换过程)
具有快表的地址变换机构(局部性原理,什么是快表(TLB),引入快表后,地址的变换过程)
两级页表(单级页表存在的问题,地址转换)
基本分段存储管理(分段,段表,地址转换,分段VS分页)
段页式管理(分段+分页,段表、页表,地址转换,访问一个逻辑地址所需访存次数)
虚拟内存的基本概念(传统存储管理方式的特点、缺点,局部性原理,虚拟内存的定义和特征,虚拟内存技术)
请求分页管理方式(页表机制,缺页中断机构,地址变换机构)
页面置换算法(OPT,FIFO,LRU,CLOCK(NRU),改进型CLOCK(改进型NRU))
页面分配策略(驻留集,页面分配、置换策略,何时调入页面,从何处调页,抖动(颠簸)现象,工作集)
(4)I/O和文件
文件管理
文件的逻辑结构(无结构文件,有结构文件)
有结构文件(顺序文件,索引文件,索引顺序文件)
文件目录(文件目录的实现(文件控制块),目录结构,索引结点)
文件的物理结构(文件分配方式{连续分配,链接分配,索引分配})
文件存储空间管理(存储空间的划分与初始化,空闲表法,空闲链表法,位示图法,成组链接法)
文件的基本操作(创建,删除,打开,关闭,读写)
文件共享(基于索引结点的共享方式(硬链接),基于符号链的共享方式(软链接))
文件保护(口令保护,加密保护,访问控制)
文件系统的层次结构
磁盘的结构(磁盘、磁道、扇区,如何在磁盘中读/写数据,盘面、柱面,磁盘的物理地址,磁盘的分类)
磁盘调度算法(一次磁盘读/写操作需要的时间,磁盘调度算法{FCFS,SSTF,SCAN,C-SCAN})
减少延迟时间的方法(交替编号,错位命名,磁盘地址结构的设计)
磁盘的管理(磁盘初始化,引导块,坏块的管理)
I/O设备的基本概念和分类(按使用特性、传输速率、信息交换的单位分类)
I/O控制器(功能,组成,两种寄存器编址方式)
I/O控制方式(程序直接控制方式,中断驱动方式,DMA方式,通道控制方式)
I/O软件层次结构
I/O核心子系统
假脱机技术(SPOOLing技术)(什么是脱机技术,解决问题,原理,共享打印机原理)
设备的分配与回收
{
设备分配时应考虑的因素(设备的固有属性,设备分配算法,设备分配中的安全性)
静态分配与动态分配
设备分配管理中的数据结构
设备分配的步骤
设备分配步骤的改进
}
缓冲区管理(定义,作用,单缓冲,双缓冲,循环缓冲,缓冲池)

2.什么是进程,进程调度是调度谁,进程的工作状态。

1
2
3
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程调度即低级调度,按照某种规则,从就绪队列中选择一个进程为其分配处理机。
进程的状态:运行,就绪,阻塞,创建,终止

2.死锁,解除死锁的方法?

1
2
3
4
5
死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。
死锁的处理策略:
预防死锁,破坏死锁产生的四个必要条件中的一个或几个。
避免死锁,用某种方法防止系统进入不安全状态,从而避免死锁(银行家算法)。
死锁的检测和解除,允许死锁的发生,不过操作系统会负责检测出死锁的发生,然后采取某种措施解除死锁。

3.死锁已经发生,如何解决?解决的时候需要注意什么?

资源剥夺法。挂起(暂时放在外存上)某些死锁进程,并抢占它的资源,将这些资源分配给其他进程。但是应防止被挂起的进程长时间得不到资源而饥饿。

撤销进程法终止进程法)。强制撤销部分、甚至全部死锁进程,并剥夺这些进程的资源。这种方式的优点是实现简单,但所付出的代价可能会很大。因为有些进程可能已经运行了很长时间,已经接近结束了,一旦被终止就会功亏一篑,之后还得从头再来。

进程回退法。让一个或多个死锁进程回退到足以避免死锁的地步。这就要求系统要记录进程的历史信息,设置还原点。

4.存储的方式有几种?各自优劣性?

分类 优点 缺点
数组 连续存储,遍历快,随机访问,长度固定 移动或添加的时间复杂度O(n)
链表 离散存储,添加删除方便,空间消耗大 不能随机访问
Hash表 离散存储,利用哈希算法决定存储位置 遍历不方便
二叉树 多种遍历方式

5.调度什么时候发生?及调度算法,堆栈,均值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
需要进行进程调度与切换的情况:
1.当前运行的进程主动放弃处理机:
(1)进程正常终止;
(2)运行过程中发生异常而终止;
(3)进程主动请求阻塞(如,等待I/O)
2.当前运行的进程被动放弃处理机:
(1)分给进程的时间片用完;
(2)有更紧急的事需要处理(如,I/O中断);
(3)有更高优先级的进程进入就绪队列
调度算法:
先来先服务(FCFS),
最短作业优先(SJF),
最高响应比优先(HRRN),
时间片轮转调度算法(RR),
优先级调度算法,
多级反馈队列调度算法。

6.网络的七层结构,哪几层用硬件实现,为什么其他层不用硬件?

1
2
3
4
5
6
7
8
自顶向下:
应用层
表示层
会话层
传输层(四层交换机、也有工作在四层的路由器)
网络层(路由器、三层交换机)
数据链路层(网桥、交换机)
物理层(网卡、网线、集线器、中继器、调制解调器)

由于OSI是一个理想的模型,因此一般网络系统只涉及其中的几层,很少有系统能够具有所有的7层,并完全遵循它的规定。
在7层模型中,每一层都提供一个特殊的网络功能。从网络功能的角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。

7.RARP的作用,相对应的协议是什么,地址解析的过程。

1
RARP是逆地址解析协议

其作用是完成Mac地址到IP地址的映射。主要用于无盘工作站,因为无盘工作站配置的IP地址不能保存。其过程是:在网络中配置一台RARP服务器。当RARP服务器启动后,就会将Mac地址封装成一个RARP数据包,然后广播到网络上去,当服务器接收到请求包后,就会查找对应Mac地址的IP地址,装入响应报文中发回请求者。

因为需要广播数据包,因此RARP只能适用于具有广播能力的网络。

8.发微信用的是TCP还是UDP,为什么?

(1)登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一TCP连接来保持在线状态。
(2)和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。
(3)如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转。

9.数据结构的顺序结构有哪些?(两种存储结构:顺序,链式)(4种逻辑结构:线性、树形、图状结构、集合)

1
2


10.专业课学了什么?嵌入式课程教了什么?能不能设计CPU?

1
软件工程

11.嵌入式系统和普通系统区别在哪?

嵌入式操作系统(Embedded Operating System,简称EOS)是相对于一般操作系统而言的,它除了具备一般操作系统的最基本功能,如任务调度、同步机制、中断处理、文件功能外,还有以下特点:

1
2
3
4
5
6
7
8
(1)具有开放性、可伸缩性的体系结构;
(2)强实时性;
(3)操作方便、简单、提供友好的图形GUI;
(4)统一的接口;
(5)提供强大的网络功能;
(6)强稳定性,弱交互性;
(7)固化代码;
(8)良好的移植性。

12.数组和指针的区别是什么?

概念

数组:数组是用于储存多个相同类型数据的集合。

指针:指针相当于一个变量,但是它和不同变量不一样,它存放的是其它变量在内存中的地址。

1
2
3
4
5
6
7
8
(1)赋值方式(同类型指针变量可以相互赋值,数组只能一个个元素地赋值或拷贝)
(2)存储方式
{数组内存连续存放,下标访问,多维数组也是按照一位数组存放}
{灵活,指向任意类型的数据}
(3)所占字节数(sizeof)
{数组所占空间和存储元素类型有关}
{32位平台下,指针所占字节数是4,64位下为8}
(4)初始化方式

指针数组(存放指针类型的数组)和数组指针(指针指向一个数组)

13.嵌入式系统用什么语言写,什么是嵌入式?

1
汇编语言,C语言,Java

嵌入式即嵌入式系统,就是在其他电子产品或设备中,嵌入一个小型计算机,目的是为了,人机交互、采集传感器数据、处理数据、控制执行机构和通信。这个小型计算机就是嵌入式系统,它由各种单片机或微控制器加上外围电路组成。

嵌入式系统的学习中,要掌握几种微控制器MCU,如51单片机,ARM微控制器等,种类很多,要根据实际项目要求,使用不同的微控制器。

硬件设计:利用多种设计工具、利用微控制器和外围芯片,设计产品原理图,设计印刷电路板,PCB,制版,焊接,调试。电子系学生擅长。

软件设计:C/C++开发,懂点汇编语言,可以开发与操作系统的裸机的程序?

所以,搞嵌入式系统,既要懂硬件,也要懂软件,还要懂通信。即电子、通信、计算机的融合。人工智能?边缘计算?

14.编码,信道,码分多址与频分多址

1
2


15.数电(数字电路)主要学了哪些东西,组合逻辑电路和时序逻辑电路区别(电路图的区别和性能特性的区别)

比较 组合逻辑电路 时序逻辑电路(状态机)(同步)
输入输出关系 任意时刻的输出仅仅取决于该时刻的输入,与电路原来的转态无关 不仅仅取决于当前的输入信号,而且还取决于电路原来的状态,即与之前的输入有关
有无存储(记忆)单元 无(不能包含) 包含
结构特点 只包含门电路 组合逻辑电路+存储电路
输出状态必须反馈到组合电路的输入端,与输入信号共同决定组合逻辑的输出
分析方法 从电路的输入到输出逐级写出逻辑函数式,最后得到表示输出与输入关系的逻辑函数式。然后用公式化简法或者卡诺图化简法得到函数式的化简或变换,以使逻辑关系简单明了。
有时还可以将逻辑函数式转换为真值表的形式。
(1)写出每个触发器的驱动方程
(2)将驱动方程带入触发器的特性方程的到状态方程组
(3)根据逻辑图写出电路的输出方程
状态转换过程描述:
状态转换表、状态转换图、状态机流程图、时序图
设计方法 (1)逻辑抽象
(2)写出逻辑函数式
(3)选定器件类型
(4)将逻辑函数式化简或者变换成适当的形式
(5)画出逻辑电路的连接图
(6)工艺设计
(1)逻辑抽象得到状态转换图或者状态转换表
(2)状态化简
(3)状态分配(状态编码)
(4)选触发器求出状态方程、驱动方程和输出方程
(5)根据方程式画出逻辑图
(6)检查设计的电路能否自启动
常用组合逻辑电路 编码器、译码器、数据选择器、加法器、数值比较器 锁存器、触发器、寄存器、移位寄存器、存储器

16.动态存储和静态存储的区别(变量的存储方式可分为:静态存储和动态存储

区别 静态存储 动态存储
概念 在程序运行期间分配固定的存储空间的方式 在程序执行过程中,使用它时才分配,使用完毕立即释放
例子 全局变量 形式参数
特点 在变量定义时就分定存储单元并一直保持不变,直至整个程序结束 如果一个函数被多次调用时,则反复地分配、释放变量的存储单元
生存期 一直存在的 时而存在时而消失
总结 (1)编译时完成,不占用CPU
(2)栈(stack)上分配
(3)不需要
(4)按计划分配,由编译器负责
(1)运行时分配,分配和释放都占用CPU
(2)堆上分配
(3)分配时需要指针和引用类型支持
(4)按需分配,由程序员负责

17.大信号和小信号的区别

18.模电分析方法应该先分析交流还是直流,为什么,怎么进行分析?

19.递归的含义,递归能不能替代循环,递归需要做什么?堆栈需要用的什么?

含义

递归就是本身调用自己或者间接调用自己的函数,是一种栈的使用,递归调用是入栈,之后的结果输出是出栈!

所有递归能否替代循环

可以。有些递归只需要一个循环就可以替代,而有些递归的改写需要循环+栈,即要利用一定的辅助空间记录过程中的某些数据才可以。

所有循环能否改写成递归

可以但没必要。循环和递归的共同特点是,它们都是会不断重复执行相同代码,每次重复执行时所使用的数据不一样。

区别

循环的时间复杂度和空间复杂度都要优于递归,但递归的优越性在于条理清晰,可读性强,比较适宜于问题本身是递归性质的、用循环难于解决的问题。

1
2
3
4
递归的三大要素:
(1)明确函数功能;
(2)寻找递归结束条件;
(3)找出函数的等价关系式。

运行时堆栈

递归发生的函数调用从底向上进入堆栈,最先进入的是栈底的主程序。当最上层的递归函数满足终止条件,这时一些列终止条件开始执行堆栈顶部的活动记录被弹出,程序控制被交给返回位置处。

20.中断嵌套是什么?

当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU能中断正在进行的中断服务程序,并保留这个程序的断点(类似于子程序嵌套),响应高级中断,高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套。

21.printf函数在汇编中怎么实现?printf函数的参数格式,长度等等、在汇编中怎么表示?

22.机器人的定义是啥?人工智能是啥?机器学习?数据挖掘?

机器人包括一切模拟人类行为或思想与模拟其他生物的机械。机器人是一种能够半自主或全自主工作的智能机器。机器人具有感知、决策、执行等基本特征。
人工智能是计算机科学的一个分支,它是研究开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
机器学习是一门多领域交叉学科,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能核心,是使计算机具有智能的根本途径。
数据挖掘是指从大量的数据中通过算法搜索隐藏于其中信息的过程。

23.单片机为啥叫单片机?

24.人工智能的避障算法是啥

25.单片机的引导过程

26.DMA控制器是主设备还是从设备,什么时候做主设备,8259的中断过程

27.计网做实验在哪个仿真软件,傅里叶变换作用,非归零码与归零码区别、曼彻斯特是归零码还是非归零码。

winpcap(windows packet capture)是,公共的网络访问系统。为win32应用程序提供访问网络底层的能力。很多不同的工具软件使用Winpcap于网络分析,故障排除,网络安全监控等方面。
Ethereal可以用来从网络上抓包,并能对包进行分析。

28.公猫母猫问题

29.一个饼分两份怎么分才公平,枪打树上的十只鸟有哪些情况,一块钱的面包买五个
和买五个一块钱的面包选哪种等

其中有一个人把饼分成两份的权利,另一个人有优先的挑选权利。这样就能做到公平了。

1:一只都没有,一只被打死掉了下来,其他的飞走了;
2:有一只,被打死的那只挂在了树上,其他的飞走了;
3:有九只,被打死的那只掉了下了,其他的吓死了,挂在了树上;
4:有十只,被打死的那只挂在了树上,其他的吓死了,也挂在了树上。
还有很多很多,比如被打死的那只挂在了树上,其他的吓死了,5只掉了下来……

30.一个方形桌子砍一刀后有几个角?

二系

或软件、数据库与大数据相关的方向和老师

1.操作系统的定义

操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。

2.进程和线程

1
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。

3.一个文件在磁盘上,如何访问到

4.内存管理有哪些方法?

5.虛拟存储的作用?为什么虛拟存储可以实现?

6.多级存储系统的作用?

7.寄存器和存储器的区别?

8.请求分页页面置换算法列举

1
2
3
4
5
6
页面置换算法:
最佳置换算法(OPT)
先进先出置换算法(FIFO)
最近最久未使用置换算法(LRU)
时钟置换算法(CLOCK)
改进型的时钟置换算法

最佳置换算法(OPT)

每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。

先进先出置换算法(FIFO)

每次选择淘汰的页面是最早进入内存的页面

最近最久未使用置换算法(LRU)

每次淘汰的页面是最近最久未使用的页面

9.叙述clock(时钟)置换算法

1
时钟置换算法是一种性能和开销较均衡的算法,又叫“最近位使用算法(NRU)”

简单的CLOCK算法实现方法:为每个页面设置一个访问位,再将内存中的页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问位置为1。当需要淘汰一个页面时,只需检查页的访问位。如果是0,就选择该页换出;如果是1,则将其置为0,暂不换出,继续检查下一个页面,若第一轮扫描中所有页面都是1,则将这些页面的访问位依次置为0后,再进行第二轮扫描(第二轮扫描中一定会有访问位为0的页面,因此简单的CLOCK算法选择一个淘汰页面最多经过两轮扫描)

访问位为1,表示最近访问过;

访问位为0,表示最近没访问过。

改进型的时钟置换算法

简单的时钟置换算法仅考虑到一个页面最近是否被访问过。事实上,如果被淘汰的页面没有被修改过,就不需要执行I/O操作写回外存。只有被淘汰的页面被修改过时,才需要写回外存

因此,除了考虑一个页面最近有没有被访问过之外,操作系统还应考虑页面有没有被修改过。在其他条件都相同时,应优先淘汰没有修改过的页面,避免I/O操作。这就是改进型的时钟置换算法的思想。

修改位=0,表示页面没有被修改过;

修改位=1,表示页面被修改过。

(访问位,修改位)的形式表示各页面状态。改进型CLOCK置换算法选择一个淘汰页面最多会进行四轮扫描。

10.C语言中你习惯定义全局变量还是局部变量

看情况吧,有需要使用全局变量的时候,我会选择去定义全局变量;如果局部变量可以解决的问题,我就会去定义局部变量。应为全局变量的生命周期长,会占用更多的内存,且由于其全局性,所有代码都可以修改它,对这个变量的最终就很困难。

11.编译的过程是什么?

12.给一个链表,如何确定这个链表有环?

采用“快慢指针”的方法。就是有两个指针fast和slow,开始的时候两个指针都指向链表头head,然后在每一步操作中slow向前走一步,即:slow = slow->next,而fast每一步向前两步即:fast = fast->next->next。由于fast要比slow移动的快,如果有环,fast一定会先进入环,而slow后进入环。当两个指针都进入环之后,经过一定步的操作之后二者一定能够在环上相遇,并且此时slow还没有绕环一圈,也就是说一定是在slow走完第一圈之前相遇。

如果存在环,找出环的入口点

从链表起点head开始到入口点的距离a,与从slow和fast的相遇点(如图)到入口点的距离相等?
因此我们就可以分别用一个指针(ptr1, prt2),同时从head与slow和fast的相遇点出发,每一次操作走一步,直到ptr1 == ptr2,此时的位置也就是入口点!

如果存在环,求出环上节点的个数

如果存在环,求出链表的长度

如果存在环,求出环上距离任意一个节点最远的点(对面节点)

(扩展)如何判断两个无环链表是否相交

(扩展)如果相交,求出第一个相交的节点

13.线性表的定义

14.设计算法统计一个二进制数中1的个数?

15.斐波那契递归和迭代区别是啥?

16.描述斐波拉契序列算法和和汉诺塔算法

17.数据库范式的定义以及区别?

18.数据库第一二三四范式是啥?

19.数据挖掘有什么应用

20.数据库有几和锁?数据库的事务?常用的数据库?数据库的主码外码?

21.用离散数学解释下主成分分析是啥?

22.学过哪些前沿课程?课程内容是什么?人工智能是什么?(这种问题别给自己挖坑这种属于典型的开放式问题开头然后步步深入,甚至可以问的很深入。注意挑选自己擅长的科目,一知半解的课程不如不说)

23.项目是什么,自己做了什么

24.有10框苹果,有9框每个半斤重。有一筐每个四两,如何通过只称重一次,找出那个不一样的

25.有10筐苹果,9筐半斤、1筐4两,只用一杆秤,只能称一次找出4两的那筐苹果(问了多次)

三系

或机器学习、深度学习和图像处理相关的方向和老师,多涉及到一些数学相关知识

1.你能描述一下数据结构具体有哪几种吗?解释机器学习

2.面向对象中的封装、多态和继承

3.数据结构中的链表的逆置

1
2
3
4
5
6
方法1:头插法建立新的链表,从头顺序遍历,遍历的每个结点都用头插法插入到新的链表中;
时间和空间复杂度都为O(n),好处是不用修改原来的链表,坏处就是多了空间复杂度。
方法2:原地逆置法是每每修改两个相邻结点p,q的前后关系,增加一个指针保存下一次的修改目标结点;
空间复杂度为O(1),时间同样为O(n),但是这种方法修改了原来的链表。
方法3:使用递归,reverse(head),出口设置为head==null 和head.next==null。
方法4:库函数

4.一个链表里面有循环,怎么确定循环的头尾相交结点?

5.优先级反转是什么?怎么解决这个问题?

6.为什么要有泰勒展开式?对计算机学科的意义是什么?

7.泰勒展开式的n取到多少?怎么确定?

8.线性代数中坐标变换的意义是什么?能解决什么问题?

9.空间解析几何中的维空间与空间解析几何讲的是什么?

10.怎么求sin01?

11.极大似然函数的作用

12.描述下贝叶斯定理

13.特卡洛求不规则图形面积。答:比如一张纸上有不规则图形。可以用散列法(知特卡洛),如在上面撤芝妹,然后通过比例求面积(注:答案非标准答案,是考生当时的回答)

14.复变函数中的若积公式。答:应该是有两个函数,然后求关于第一个函数,表征意思是求这两个高数平滑后的面积,即翻续平移后量誉的部分。

15.傅卫叶变化。答:把一个函数分解成sin和cos,可以大大减少运算次数。

15.特征值是什么?

17.双聚关启发式搜宗k均值聚关

18.蚁群算法。答∶用正反馈机制寻求最优解,这个最优解是全局最优解。可以和运筹学结合起来用,比如运筹学里的指派问题、旅行商问题。

19.你学过这个方向的相关专业课有哪些?

20.人脸对比的时候,对比的是哪些信息?

21.图像处理的项目里你觉得有那些槟块?

22.计算机视觉的看法,评价报考老师的论文。

23.讲下你的毕设

我的毕业论文题目是《FTP代理机制研究》。

(1)科研方法:文献研究法。通过专业的文摘、索引、工具书、光盘以及网络资源等文献的检索来发挥文献价值与创造性的利用文献的方法。

(2)研究对象:计算机网络领域的一个重要协议,FTP文件传输协议。

(3)科研目的:代理服务器是缓解网络安全问题的有效方法之一。

(4)研究内容:通过实现FTP协议的控制连接和数据连接来实现代理服务器的功能。

24.一个桶装有8斤油,另有一个3斤与一个5斤桶,怎么分成两桶4斤油?(基本没有思考的时间)

8斤的桶 3斤的桶 5斤的桶
初始 8 0 0
第一次 3 0 5
第二次 3 3 2
第三次 6 0 2
第四次 6 2 0
第五次 1 2 5
第六次 1 3 4
第七次 4 0 4

25.一个箱子,放了一个白球,一个黑球,每次取一个便放回去,问至少有一次是红球的率是多少?

四系

或网络安全、密码学相关方向和老师

1.路由器和交换机的功能然后他们的区别

2.TCP拥塞的解决方式,分别解释一下

3.TCP为什么三次握手

专业课公共知识

以下考生回忆的问题没有明显的方向性,属于基础知识的,放在下面这个目录

1.为什么要有系统调用?

“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
有何作用:
应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

2.调度是什么?内存怎么管理

CPU作为一种系统资源,是唯一的,而在多任务的OS中,每个任务都需要使用CPU,因此需要为任务对CPU的使用提供一种同步机制,这就是调度(Scheduling)。
在并发程序设计中,各进程对公共变量的访问必须加以制约,这种制约称为同步。

3.进程和线程的区别

4.什么是死锁

5.描述一下你学过的排序算法

分类 算法
交换排序 冒泡排序
希尔排序
快速排序
选择排序 简单选择排序
插入排序
堆排序
归并排序
基数排序

6.操作系统中用来表示内存已被占用的数据结构是什么?

7.操作系统提供给程序员创建进程的接口有哪些?

8.说一下内存管建方式有哪些?

9.全局变量和局部变量分别存储在哪里?(变量的存储类型及性质)

局部变量存在于(栈)中,只有当所在函数被调用时才动态地为变量分配存储单元。
全局变量和静态变量存在于(静态区/全局存储区)中,占用静态的存储单元。
动态申请数据存在于(堆)中(new的对象存在于堆区,malloc的对象存在于自由存储区)。
常量存在于常量区。

C语言经过编译之后将内存分为以下几个区域:
(1)栈(stack):由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数、局部变量、返回值以及函数返回地址。操作方式类似数据结构中的栈。
(2)堆(heap):用于程序动态申请分配和释放空间。C语言中的malloc和free,C++中的new和delete均是在堆中进行的。正常情况下,程序员申请的空间在使用结束后应该释放,若程序员没有释放空间,则程序结束时系统自动回收。注意:这里的“堆”并不是数据结构中的“堆”。
(3)全局(静态)存储区:分为DATA段和BSS段。DATA段(全局初始化区)存放初始化的全局变量和静态变量;BSS段(全局未初始化区)存放未初始化的全局变量和静态变量。程序运行结束时自动释放。其中BBS段在程序执行之前会被系统自动清0,所以未初始化的全局变量和静态变量在程序执行之前已经为0。
(4)文字常量区:存放常量字符串。程序结束后由系统释放。
(5)程序代码区:存放程序的二进制代码。

10.外部中断CPU该如何处理

11.快排和冒泡的原理自己他们的空间复杂度是多少?

12.佛洛依德算法?迪杰斯特拉算法?

1
都是求最短路径的算法。

13.DHCP协议的作用

1
2


14.一个访问网络的过程

15.用自己的话讲TCP连接到底是什么

16.设计web服务器

17.几种方法写阶乘

1
(1)循环;(2)库函数;(3)递归

18.定义一个结构体,里面一个int类型成员,一个char,int占四位,char占一位,那么在Linux占几位

1
2
3
4
5
6
核心:
(1)每个元素的首地址偏移量必须能整除该元素的长度?
(2)整个结构体的长度必须能整除最长元素的字节数。
涉及到内存字节对齐的问题。
Windows和Linux的区别只有double不同,以后会整理
这题答案应该是8位

C++方面

(或编程语言,这类问题一般建立在简历中提到了相关技能,或老师提问你会什么语言)

1.最擅长哪种语言?

1
Java

2.请简述C,C++语言有何区别和联系?

区别:

C语言是面向过程语言,而C++是面向对象语言
1.面向过程和面向对象的区别
(1)面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。
(2)面向对象:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
面向过程就是自顶向下的编程(步骤划分),面向对象就是高度实物抽象化(功能划分)
2.具体语言的区别
(1)关键字不同
(2)文件后缀名不同
(3)返回值
C语言中,如果一个函数没有指定返回值类型,默认返回int类型;C++中,如果一个函数没有返回值则必须指定为void。
(4)参数列表
在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数;但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为 void,不接收任何参数。
(5)默认参数(C语言不支持默认参数,C++支持默认参数)
(6)函数重载(C语言没有函数重载,C++支持函数重载)

联系:

1
C++ 由C语言发展而来,几乎完全兼容C语言;也就是说C语言代码几乎可以不加修改地用于 C++。

相关扩展:C语言中struct和union的区别是什么?

struct (结构体)与union (联合体)是C语言中两种不同的数据结构,两者都是常见的复合结构,其区别主要表现在以下两个方面:
(1) 结构体与联合体虽然都是由多个不同的数据类型成员组成的,但不同之处在于联合体中所有成员共用一块地址空间,即联合体只存放了一个被选中的成员,而结构体中所有成员占用空间是累加的,其所有成员都存在,不同成员会存放在不同的地址。所以结构体在计算一个结构型变量的总长度时,其内存空间大小等于所有成员长度之和(需要考虑字节对齐),而在联合体中, 所有成员不能同时占用内存空间,它们不能同时存在,所以一个联合型变量的长度等于其最长的成员的长度。
(2) 对于联合体的不同成员赋值,将会对它的其他成员重写,原来成员的值就不存在了, 而对结构体的不同成员赋值是互不影响的。

相关扩展:C和C++中struct的区别是什么?

C语言中的struct与C++中的struct的区别表现在以下3个方面:
(1) C语言的struct不能有函数成员,而C++的struct可以有。
(2) C语言的struct中数据成员没有private、public和protected访问权限的设定,而C++的struct的成员有访问权限设定。
(3) C语言的struct是没有继承关系的,而C++的struct却有丰富的继承关系。
C语言中的struct是用户自定义数据类型,它是没有权限设置的,它只能是一些变量的集合体,虽然可以封装数据却不可以隐藏数据,而且成员不可以是函数。为了和C语言兼容,C++中就引入了struct关键字。C++语言中的struct是抽象数据类型 (ADT),它支持成员函数的定义,同时它增加了访问权限,它的成员函数默认访问权限为public。

相关扩展:C++中的 struct与class的区别是什么?

具体而言,在C++中,class和struct做类型定义时只有两点区别:
(1) 默认继承权限不同。class继承默认是private继承,而struct继承默认是public继承;
(2) class还用于定义模板参数,就像typename,但关键字struct不用于定义模板参数。

相关扩展:简单描述一下你认为的C语言的优点和缺点?

优点:
(1)编写的程序可读性强,编译效率高。
(2)具有简洁紧凑、使用灵活的语法机制。
(3)数据结构丰富,满足多种数据开发要求。
(4)允许直接访问物理地址,对硬件进行操作。
(5)具有出色的可移植性,能在多种不同体系结构的软/硬件平台上运行。
缺点:
(1) C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
(2) C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
(3) C语言的简洁性与其丰富的运算符相结合,使其可能会编写出极难理解的代码。
(4) C语言表达方面的自由会增加风险。尤其是C语言对指针的使用。

相关扩展:C++是不是类型安全的?

不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。
类型安全代码指访问被授权可以访问的内存位置。类型安全的代码不会试图访问自己没被授权的内存区域。

相关扩展:谈谈你是怎么认识 C++ 中的模板的?

模板使程序员能够快速建立具有类型安全的类库集合和函数集合,它的实现,方便了大规模的软件开发。(结合stl更好)
STL是“Standard Template Library”的缩写,中文译为“标准模板库”。STL是C++标准库的一部分,不用单独安装。
C++对模板(Template)支持得很好,STL就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector的底层为顺序表(数组),list的底层为双向链表,deque的底层为循环队列,set的底层为红黑树,hash_set的底层为哈希表。

相关扩展:C++中所有的运算符都能重载吗?

在C++运算符集合中,有一些运算符是不允许被重载的。这种限制是出于安全方面的考虑,可防止错误和混乱。
(1)不能改变C++内部数据类型(如int,float等)的运算符。
(2)不能重载‘.’,因为‘.’在类中对任何成员都有意义,已经成为标准用法。
(3)不能重载目前C++运算符集合中没有的符号,如#,@,$等。原因有两点,一是难以理解,二是难以确定优先级。
(4)对已经存在的运算符进行重载时,不能改变优先级规则,否则将引起混乱。

3.简述面向对象有哪些好处?

4.简述类和对象

对象
类是现实世界在计算机中的反映,它将数据和对这些数据的操作封装在一起 类的实例
并没有开辟空间
类的大小:类的成员函数放在公共代码区,所有该类的对象共享这些成员函数,每个对象的大小为类内成员变量的大小之和,遵循内存对齐原则
占有实际的空间(用来存储成员变量)
对象的大小为类中所有成员变量的大小之和,当然这里也遵循内存对齐原则
三大特性:封装、继承、多态
访问限定符

为什么要内存对齐(前面也遇到过这种问题)

为了提高程序的性能,方便CPU访问内存,处理器并不是一个字节一个字节来访问内存,一般是4个字节或8个字节

空类占多少个字节?为什么?

空类占1个字节,占位用,告诉系统我这里定义了一个类,虽然它是空的

5.什么是重载?

1
2
3
4
5
重载的定义:
(1)同一个类;
(2)多个方法的方法名字相同;
(3)参数列表不同、参数个数不同、参数的数据类型不同,不同数据类型的参数顺序不同
和修饰符无关、和有无返回值无关、和返回值类型无关、和参数名无关

什么是多态?

1
2
多态就是同一个接口,使用不同的实例而执行不同操作。
函数的多种不同的实现方式即为多态。

6.C++里什么是friend?

C++中的友元机制允许类的非公有成员被一个类或者函数访问

1
2
3
4
5
6
7
8
9
10
11
12
友元按类型分为三种:
(1)普通非类成员函数作为友元;
(2)类的成员函数作为友元;
(3)类作为友元。
友元函数的实现可以在类外定义,但必须在类内部声明。
友元函数是可以直接访问类的私有成员的非成员函数。
它是定义在类外的普通函数,它不属于任何类。
但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。
注意:
(1)友元不具有相互性,只具有单项性;
(2)友元不能被继承;
(3)友元不具有传递性。

7.C++的继承方式

1
2
3
4
继承是类的重要特性。
三种继承方式:公有、私有、保护继承。
多态(虚函数,虚函数表?)
和Java的继承并无二致。

8.python的学习

9.python特殊的数据类型

6种特殊数据类型 概念
list:列表 是一种有序的数据集合,在列表数据结构中的类型并不唯一
tuple:元组 是一种有序的列表,但是其一旦创立完毕就不能够更改,即不能插入,删除里面的元素,访问的方式跟List结构一致。
dict:字典 类似JSON,键值对
set:集合 无序但是所有元素唯一,不重复
Unicode编码 支持显示中文
raw 一个“raw”字符串,里面的字符就不需要转义

10.Java和C++的异同

11.Java与C++的类、继承有什么相同和不同?

跨考、在职考研的考生

为什么跨专业考研。为什么辞联考研。为什么当时毕业不考研。在工作的时候有没有和本专业相关的知识运用。研究生规划。在公司的职业情况。机器人的定义。人工智能的定义。这两都跟老师的研究方向相关,会问本科专业的一些问题。PLC与FPGA的中文名称。数据结构中线性表有哪些?

考查英语口语方面

一般也是英语提问,考查考生的听、说能力

1.自我介绍+家乡介绍?

2.介绍自己的家?

3.本科学校,专业是啥,专业多少人,排名多少?

4.为什么选择这个研究方向?

5.为什么来nwpu?怎么知道nwpu?nwpu全拼是什么?

1
Northwestern Polytechnical University

6.什么时候来的西工大,感觉西工大怎么样,以后想在哪个公司?

7.西工大绘你印象最深的地方。

8.学过什么程序语言

9.做过什么项目?

10.问了队列和链表相比的缺点。

11.你最喜欢的专业课是什么?

12.和门外等着的人,你觉得你的优势是什么?

2019年夏令营面试问题汇总

一系

考察内容涉及数电、模电、嵌入式、SOC相关知识,以及软工、操作系统、C语言、计算机组成原理的相关知识。

同学A:先是英语白我介绍;然后主要就是项目。没问专业问题。

同学B:银行家算法。数学知识。

三系:偏向于数据与图像处理,考察数学知识较多,而且有英语提问。

同学C:问到数学知识,专业课问题较多。

四系

主要考察计算机网络、操作系统、网络安全相关知识。会询问是否做过网络的一些实验

同学D:英文自我介绍。说说自己做过的项目,我是网络的,问了计网的,四层结构,mac英文意思,用过什么操作系统,Linux中创建文件的指令,同组有问操作系统的,概率论,高数的。

2018年夏令营面试问题汇总

二系

主要负责老师未到场,面试的是今年刚任职的老师,参考意义不大,剧开始有自我介绍和英文提问。研究方向为数据库方面,主要是算法

英文介绍,用英文描述你喜欢的运动

做的具体项目,会步步深入

最欢的专业课,对本专业理解,给你三分钟的时间说服老师留下你、和舍友关系如何。

三系

偏向于数据与图像处理,考察数学知识较多,而且有英语提问

线性代数知阵的特征值和特征向量计算方式及意义。

高数:梯度。

说几种排序算法的复杂度。

编程相关经历。

是否了解意愿导师的方向

1
2
3
4
5
智能计算系统系:副高职称王党辉
主要研究方向:
高性能处理器体系结构、人工智能加速器架构、
高可靠计算机系统、多核/众核系统的资源调度、
新型存储系统、嵌入式系统设计、数字系统设计与测试等

是否有接触CV、NLP或机器学习等方向的工作

2017年夏令营面试问题汇总

1系

考察涉及数电、椟电、嵌入式、SOC知识、软件工程、澡作系统、C言、计算机组成原理

三八编译器的设计原理

放大器的设计原理

lts系统有哪些算法

嵌入式系统的计数器如何使用

8255如何用

操作系统进程

CPU工作模式

2系

刚开始有白我介绍和英语提问,研究方向为数据库方向,主要是算法

进程死锁(概念、避免、预防)

数据库基本知识(外键、查询语句)

算法(如从两串中查找相同元素的所有方法)

模式匹配

C语言些一简单的输入输出格式

3系

考察数学知识较多、会用英运提问

高数、线代、概率等的相关知识(如高斯模型、矩阵的转换、矩阵的逆等)

编程最好的语言

C语言的主要内容

概率论相关和独立的区别

发表论文的意义

4系

主要着察计算机网络、操作系统、网络安余等知识,是否做过一些网络的实验,本科学过什么特色课程

WLAN定义

WiFi、3G和蓝牙使用的是什么协议

为什么WiFi比3G便宜

HTTP是什么,Https是什么,区别

死锁的原因,接触;进程线程

IPV4和IPV6的地址位数

网络安全;攻击方式

会做网线吗?怎么做;网线由几根线组成?那几根不能用

cookie的原理

2017级面试问题汇总

3系:

图像与语音处理,主要以数学问题为主,所以建议报考三系的同学考完研不要松懈复习专业课(数学课)基本知识,二系今年与其他组的不同之处在于没有英话介绍,背了半天竟没用上,反之是问了一个特别长的问题,好像是介绍家乡

高斯滤波、傅里叶变换、采样定理

正态分布要素

一条曲线怎么证明在一个平面上

a投影至b上,求投影长度

举一个连续分布的例子。还有什么分布

安卓和IOS区别

int在winxp和wn10区别

发送邮件用到了什么协议

②4系:网络:

HTTPS和HTTP区别

死锁的必要条件等

2016级面试问题汇总

1.英语自我介绍

Good morning! Teachers and professors. I am very glad to be here for this interview.

First, let me introduce myself. My name is XiaoMengjie. I have finished my undergraduate education in Northwest University, majoring in Software Engineering.

I am open-minded, willing and have broad interests like basketball and web development. For example, during the past four years, I have accomplished several website. (What impresses me most is the Hotel Management System that I developed for my father.) Furthermore, I am intrested in Java programming language and have written some websites with Springboot.

This year, I finished my graduate project with FTP.

Although I have broad interests in many aspects and grasp the essential konwledge of the major, but I think at present, I want to do many things, but not be competent to do things professionally owing to lack of ample knowledge and ability. So I think further study is still urgent for me to realize selfvalue.

我认为可以短一点

Good morning/afternoon! Teachers. I am very glad to be here for this interview.

First, let me introduce myself. My name is XiaoMengjie. I come from Northwest University, majoring in Software Engineering.

I am open-minded and I like web development and am interested in Artificial intelligence field.

So I think further study is still urgent for me to realize selfvalue.

2.英语描述操作系统

3.这个IP地址192.168.45.3是什么地址?

4.百度IP和电脑IP有什么不同

5.浏览一个网页都用到了哪些协议?

1
2


6.离散数学中什么是蕴含

7.什么时候用到递归

8.做过什么项目

评论