北航软院991复试笔试和面试准备.docx
《北航软院991复试笔试和面试准备.docx》由会员分享,可在线阅读,更多相关《北航软院991复试笔试和面试准备.docx(53页珍藏版)》请在冰豆网上搜索。
![北航软院991复试笔试和面试准备.docx](https://file1.bdocx.com/fileroot1/2023-7/22/f4a188dd-fc8a-4739-bc8a-be9ac75e46ab/f4a188dd-fc8a-4739-bc8a-be9ac75e46ab1.gif)
北航软院991复试笔试和面试准备
面试
计算机网络
1.什么是数字证书
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。
它是由一个由权威机构--—-—CA机构,又称为证书授权(CertificateAuthority)中心发行的,人们可以在网上用它来识别对方的身份。
数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。
最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名.
2。
木马和蠕虫的区别
病毒“指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”.病毒必须满足两个条件:
1、它必须能自行执行。
它通常将自己的代码置于另一个程序的执行路径中。
2、它必须能自我复制。
例如,它可能用受病毒感染的文件副本替换其他可执行文件。
病毒既可以感染桌面计算机也可以感染网络服务器。
蠕虫(worm)是病毒中的一种,但是它与普通病毒之间有着很大的区别。
一般认为:
蠕虫是一种通过网络传播的恶性病毒,它具有病毒的一些共性,如传播性、隐蔽性、破坏性等等,同时具有自己的一些特征,如不利用文件寄生(有的只存在于内存中),对网络造成拒绝服务,以及和黑客技术相结合,等等。
普通病毒需要传播受感染的驻留文件来进行复制,而蠕虫不使用驻留文件即可在系统之间进行自我复制,普通病毒的传染能力主要是针对计算机内的文件系统而言,而蠕虫病毒的传染目标是互联网内的所有计算机。
木马是病毒的一种,病毒是一种破坏性的程序.病毒破坏你的信息,而木马窃取你的信息。
特洛伊木马与病毒的重大区别是特洛伊木马不具传染性,它并不能像病毒那样复制自身,也并不"刻意”地去感染其他文件,它主要通过将自身伪装起来,吸引用户下载执行。
操作系统
1、TCP三次握手的过程
基于TCP协议传输数据之前,为确认连接正常,会通过三次握手来建立虚连接,连接建立完成后才能进行数据的传输。
三次握手的过程如下:
首先由发起端发送连接请求;当接受方收到连接请求后,如果同意建立连接会回复应答报文;然后发送方收到此应答报文,会发送对此应答报文的确认信息。
通过这种三次握手的过程来在数据发送的初期建立连接,保障数据的正常传输.
2。
库函数调用和系统调用的区别
函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。
你要确保弄懂“trap(自陷)”这个关键字的含义。
系统调用是在操作系统内核发现一个“trap”或中断后进行的。
在所有的ANSIC编译器版本中,C库函数是相同的各个操作系统的系统调用是不同的它调用函数库中的一段程序(或函数)它调用系统内核的服务与用户程序相联系是操作系统的一个入口点在用户地址空间执行在内核地址空间执行它的运行时间属于“用户时间”它的运行时间属于“系统”时间属于过程调用,调用开销较小需要在用户空间和内核上下文环境间切换,开销较大在C函数库libc中有大约300个函数在UNIX中大约有90个系统调用典型的C函数库调用:
systemfprintfmalloc典型的系统调用:
chdirforkwritebrk;库函数调用通常比行内展开的代码慢,因为它需要付出函数调用的开销。
但系统调用比库函数调用还要慢很多,因为它需要把上下文环境切换到内核模式。
3。
工作集的定义和作用
所谓工作集是指进程已映射的物理内存部分(即这些内存块全在物理内存中,并且CPU可以直接访问),还有一部分不在工作集中的虚拟内存则可能在转换列表中(CPU不能通过虚地址访问,需要Windows映射之后才能访问),还有一部分则在磁盘上的页面文件里。
工作集在进程运行时会被Windows自动调整,频繁访问的页面(4KB的块)会留在内存中,而不频繁访问的页面在内存紧张时会被从工作集中移出,暂时保存在内存中的“转换列表"中,或者进一步换出到页面文件中。
当应用程序再次访问某一页面时,操作系统会将它重新加回工作集中。
4.进程与线程
计算机的核心是CPU,它承担了所有的计算任务。
单个CPU一次只能运行一个任务。
进程代表CPU所能处理的单个任务。
任一时刻,CPU总是运行一个进程,其他进程处于非运行状态.一个进程可以包括多个线程。
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。
一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。
”互斥锁”(Mutualexclusion,缩写Mutex),防止多个线程同时读写某一块内存区域。
某些内存区域,只能供给固定数目的线程使用。
操作系统的设计,因此可以归结为三点:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
5.cpu最小时钟周期
时钟周期也称为振荡周期,定义为时钟频率的倒数。
时钟周期表示了SDRAM所能运行的最高频率。
SDRAM全称为“SynchronousDynamicrandomaccessmemory",在电脑系统上为同步内存的意思。
理论上,SDRAM与CPU在同一个时钟周期里运行。
时钟周期是计算机中最基本的、最小的时间单位。
CPU工作的最小时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。
6.进程调度
无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。
另外,系统进程也同样需要使用处理机。
这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行.
从就绪的进程中选出最适合的一个来执行。
1。
等待态:
等待某个事件的完成;2。
就绪态:
等待系统分配处理器以便运行;
3。
运行态:
占有处理器正在运行。
可能引起进程切换的中断原因有:
时钟中断、设备I/O中断信号、系统调用等
所谓批处理(batchprocessing)就是将作业按照它们的性质分组(或分批),然后再成组(或成批)地提交给计算机系统,由计算机自动完成后再输出结果,从而减少作业建立和结束过程中的时间浪费.根据在内存中允许存放的作业数,批处理系统又分为单道批处理系统和多道批处理系统.
批处理系统(batchprocessingsystem)中,一个作业可以长时间地占用cpu。
而分时系统中,一个作业只能在一个时间片(TimeSlice,一般取100ms)的时间内使用cpu。
分时操作系统(time—sharingsystem),“分时”的含义:
分时是指多个用户分享使用同一台计算机。
多个程序分时共享硬件和软件资源。
软件工程
1。
什么是白盒测试?
什么是黑盒测试?
区别是什么?
白盒测试也叫做alpha测试,是指程序设计员为了验证程序的逻辑过程而进行的测试,因知道内部原理而得名。
黑盒测试也beta测试,是由客户(使用者)进行的测试,目的在于检验程序的功能,因不知道其内部结构而得名。
代码可见不可见的区别:
黑盒不管代码,只测试功能;白盒要判断程序代码逻辑结构。
2.面向对象软件工程特点
1与人类习惯思维方法一致2稳定性好3可重用性好4较易开发大型软件产品5可维护性好
3.需求分析
所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
可以说,在软件工程当中的“需求分析”就是确定要计算机“做什么”,要达到什么样的效果。
可以说需求分析是做系统之前必做的。
4.UML建模语言
UnifiedModelingLanguage(UML)又称统一建模语言或标准建模语言。
它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。
UML提出了一套IT专业人员期待多年的统一的标准建模符号。
通过使用UML,这些人员能够阅读和交流系统架构和设计规划--就像建筑工人多年来所使用的建筑设计图一样。
5.顺序图
顺序图是将交互关系表示为一个二维图。
纵向是时间轴,时间沿竖线向下延伸。
横向轴代表了在协作中各独立对象的类元角色。
类元角色用生命线表示。
当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线.
eg.一次学生的注册
数据库
1。
什么是事务处理?
事务处理(TRANSACTION)是由一个或多个SQL语句序列结合在一起所形成的一个逻辑处理单元。
事务处理中的每个语句都是完成整个任务的一部分工作,所有的语句组织在一起能够完成某一特定的任务。
DBMS在对事务处理中的语句进行处理时,是按照下面的约定来进行的,这就是“事务处理中的所有语句被作为一个原子工作单位,所有的语句既可成功地被执行,也可以没有任何一个语句被执行”.
2.DBA的作用
数据库管理员(DatabaseAdministrator,简称DBA),是一个负责管理和维护数据库服务器的人。
数据库管理员负责全面管理和控制数据库系统.
3。
数据库三级模式
人们为数据库设计了一个严谨的体系结构,数据库领域公认的标准结构是三级模式结构,它包括外模式、概念模式、内模式,有效地组织、管理数据,提高了数据库的逻辑独立性和物理独立性。
用户级对应外模式,概念级对应概念模式,物理级对应内模式,使不同级别的用户对数据库形成不同的视图.所谓视图,就是指观察、认识和理解数据的范围、角度和方法,是数据库在用户“眼中"的反映,很显然,不同层次(级别)用户所“看到”的数据库是不相同的.
4.什么是数据模型
数据(data)是描述事物的符号记录。
模型(Model)是现实世界的抽象。
数据模型(DataModel)是数据特征的抽象,是数据库管理的教学形式框架.
数据模型所描述的内容包括三个部分:
数据结构、数据操作、数据约束.
1)数据结构:
数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。
数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。
不同的数据结构具有不同的操作和约束。
2)数据操作:
数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式。
3)数据约束:
数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、他们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容.
数据模型按不同的应用层次分成三种类型:
分别是概念数据模型、逻辑数据模型、物理数据模型。
1、概念数据模型(ConceptualDataModel):
简称概念模型,是面向数据库用户的实现世界的模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据管理系统(DatabaseManagementSystem,简称DBMS)无关。
概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。
2、逻辑数据模型(LogicalDataModel):
简称数据模型,这是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,如网状数据模型(NetworkDataModel)、层次数据模型(HierarchicalDataModel)等等。
此模型既要面向用户,又要面向系统,主要用于数据库管理系统(DBMS)的实现。
3、物理数据模型(PhysicalDataModel):
简称物理模型,是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。
每一种逻辑数据模型在实现时都有起对应的物理数据模型.DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作又系统自动完成,而设计者只设计索引、聚集等特殊结构。
在概念数据模型中最常用的是E-R模型、扩充的E-R模型、面向对象模型及谓词模型。
在逻辑数据类型中最常用的是层次模型、网状模型、关系模型.
5.事务处理
事务是这样一种机制,它确保多个SQL语句被当作单个工作单元来处理.事务具有以下的作用:
*一致性:
同时进行的查询和更新彼此不会发生冲突,其他用户不会看到发生了变化但尚未提交的数据。
*可恢复性:
一旦系统故障,数据库会自动地完全恢复未完成的事务.
6.关系数据库的定义
用二维表结构来表示实体及实体之间的联系的数据模型.
将现实世界的实体以及实体间的各种联系均用关系来表示。
从用户角度,关系模型中数据的逻辑结构是一张二维表。
编译原理
1.句子和句型的定义以及区别
句型句子的结构类型。
句子——设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈VT*),则称x是文法的一个句子。
句型——设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈V*),则称x是文法的一个句型。
V为属性的有穷集,Vt表示终结符集合,Vn表示非终结符集合,V表示文法符号集合(即既包含终结符,也包含非终结符。
S(start)也是一个非终结符,然后大写的为非终结符,小写的为终结符V是一个符号集合,假设V指的是三个符号a,b,c的集合,记为V={a,b,c}
V*读作“V的闭包”,它的数学定义是V自身的任意多次自身连接(乘法)运算的积,也是一个集合。
也就是说,用V中的任意符号进行任意多次(包括0次)连接,得到的符号串,都是V*这个集合中的元素。
0次连接的结果是不含任何符号的空串,记为ε
1次连接就是只有一个符号的符号串,比如,a,b,c
2次连接是两个符号构成的符号串,比如,aa,ab,ac,ba,bb,bc,等等。
..
文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。
文法定义:
乔姆斯基将所有文法都定义为一个四元组:
G=(VN,VT,P,Z)
VN:
非终结符号集VT:
终结符号集P:
产生式或规则的集合Z:
开始符号(识别符号),Z∈VN
文法和语言分类:
0型、1型、2型、3型这几类文法的差别在于对产生式施加不同的限制。
C语言和数据结构
1.什么是树?
什么是图?
树和图有什么区别?
树和图都是非线性的数据结构。
图相对于树来说,是更加抽象和复杂的。
可以认为树是图的基础,树是一种更简单意义上的图。
在树型结构中,每一个数据元素都可能和下一层中多个元素(即孩子结点)相关,但却只能与上一层中的一个元素(即双亲结点)相关。
而在图形结构中,结点之间的关系可以是任意的,图中任意两个数据之间都可能相关.
2。
完全二叉树和满二叉树的区别
完全二叉树的定义:
深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。
特点:
叶子结点只可能在层次最大的两层上出现;对任一结点,若其右分支下子孙的最大层次为l,则其左分支下子孙的最大层次必为l或l+1
满二叉树:
一棵深度为k,且有2的(k)次方-1个节点的二叉树
特点:
每一层上的结点数都是最大结点数。
3.哪种二叉树数与存储结构有关
线索二叉树。
n个结点的二叉链表中含有n+1(2n—(n—1)=n+1)个空指针域。
利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前趋和后继结点的指针(这种附加的指针称为"线索")。
4。
选择编程语言所依据的规则
在选择编程语言时以下事情应当考虑:
常规特性:
性能、兼容性、操作……l团队大小l代码多少l代码的寿命l应用领域
l工具:
选择语言考虑的最后一个问题是工具的支持。
一个合适的编辑器对于你编程所起的作用不亚于语言本身的语法。
1.汇编是面向机器的程序设计语言.汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言.在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码.这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
因此汇编语言亦称为符号语言。
2.C适于快而小的程序,但不支持面向对象的编程。
自从C发明了以后,它就取代了汇编语言在操作系统编程的领导地位。
从性能上说,除了汇编语言,C语言是最接近机器的语言。
各种操作系统的编程接口的默认语言都是C语言。
因此,用C语言编程,可以最大限度发挥操作系统的能力。
同时,由于绝大部分的商品软件都是C或与C兼容的C++实现的,都有C编程接口,可以说,没有C不能实现的功能。
缺点是在企业级开发中,几乎无用武之地。
3.C++完全支持面向对象,但是非常复杂。
优点在于含有大量的库,如MFC,可直接调用windows库函数干很多事情。
C语言进化而来的,有强大的功能,举例吧:
软件:
微软的Office系列Macromedia网页三剑客-flash,dreamweaver,fireworks
Adobe出的超有名的作图软件-PhotoShop3D动画软件-3DMax
游戏:
PC平台几乎所有的游戏
星际争霸、魔兽争霸、CS、帝国时代、跑跑卡丁车、传奇、魔兽世界....
那数不胜数了,自己数吧:
)
以上均出自C++之手,原因是C++靠近计算机底层,编写出来的程序对系统资源依赖较小,功能强大,运行速度快,比如你的两个朋友与你分别玩用VB、Java、与C++编写的“跑跑卡丁车",你玩C++那款游戏已经跑玩结束了,发现你的两个朋友还没开始跑呢,那是相当的卡啊,所以这一系列的软件、游戏都会采用C++编写。
虽然C++很有优点,但是对于学习者来说应该是比较困难的一门语言.(再说明一点,C或C++属于语言,而VC—“VisualC++”是用来编写C或C++的工具)
4。
VisualBasic与Delphi易学,但不可移植且有专利权。
VisualBasic(简称VB)VB是快速的界面生成语言,是快速的数据库程序开发语言。
vba是vb的应用版,嵌入在MSoffice中。
编写MSoffice上的程序很好用。
缺点是只能在Windows平台运作.DelphiKylix和vb一样是快速开发环境,但性能更好,功能更强大,亦可以用于Linux平台。
语法建基于Pascal,是面向对象的程序语言
5。
Java商业编程语言。
有很多简洁的功能,但是慢。
创作工具可以以最快的速度产生你的程序,但是仅对某一些类型的程序起作用。
Java作为现代语言,具有非常丰富的语法特征,如模块和类,不像C随操作系统和编译器的不同有极大差异。
Java所有的API都是类库,相对C的函数来说,是非常大的进步。
缺点是要学的技术太多,二是在底层开发中不行。
Java开发的软件大部分是面向事业单位、公司及企业的,它的功能同样强大,结构比C++清晰,学习起来比C++简单多了,并且是跨平台运行的程序,用Java开发出来的软件可以在世界几乎所有的系统上运行(包括Linux、掌上电脑、手机等),但正因为如此,使之运行时会比C++开发的软件要慢。
6.Web类的大致说下流行的phpjspasp三者从数据库操作上而言,jsp>php〉asp从目前市场角度来说,asp几乎垄断了中小型市场。
而asp漏洞百出,原因也是市场片面比较大,垃圾程序较多。
学java,学的不仅仅是技术,而是一种思想 架构项目的思想 。
所以java是培养架构师,培养System Designer,Project Manager的 c语言和c++只能培养技术专家,资深程序员。
笔试
1。
UML
在UML2中有二种基本的图范畴:
结构图和行为图。
每个UML图都属于这二个图范畴。
结构图的目的是显示建模系统的静态结构.它们包括类,组件和(或)对象图。
另一方面,行为图显示系统中的对象的动态行为,包括如对象的方法,协作和活动之类的内容.行为图的实例是活动图,用例图和序列图。
1。
1用例图
用例图主要用来描述“用户、需求、系统功能单元”之间的关系。
它展示了一个外部用户能够观察到的系统功能模型图。
【用途】:
帮助开发团队以一种可视化的方式理解系统的功能需求。
用例图所包含的元素如下:
1.参与者(Actor)
表示与您的应用程序或系统进行交互的用户、组织或外部系统。
用一个小人表示。
2.用例(UseCase)
用例就是外部可见的系统功能,对系统提供的服务进行描述.用椭圆表示。
3.子系统(Subsystem)
用来展示系统的一部分功能,这部分功能联系紧密。
4.关系
用例图中涉及的关系有:
关联、泛化、包含、扩展.
如下表所示:
a.关联(Association)
表示参与者与用例之间的通信,任何一方都可发送或接受消息。
【箭头指向】:
指向消息接收方
b.泛化(Inheritance)
就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。
子用例可以使用父用例的一段行为,也可以重载它。
父用例通常是抽象的。
【箭头指向】:
指向父用例
c。
包含(Include)
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。
【箭头指向】:
指向分解出来的功能用例
d。
扩展(Extend)
扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。
【箭头指向】:
指向基础用例
e.依赖(Dependency)
以上4种关系,是UML定义的标准关系.但VS2010的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。
【箭头指向】:
指向被依赖项
5。
项目(Artifact)
用例图虽然是用来帮助人们形象地理解功能需求,但却没多少人能够通看懂它。
很多时候跟用户交流甚至用Excel都比用例图强,VS2010中引入了“项目"这样一个元素,以便让开发人员能够在用例图中链接一个普通文档。
用依赖关系把某个用例依赖到项目上:
然后把项目-》属性的Hyperlink设置到你的文档上;
这样当你在用例图上双击项目时,就会打开相关联的文档.
6。
注释(Comment)
包含(include)、扩展(extend)、泛化(Inheritance)的区别:
条件性:
泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;
直接性:
泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。
对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容.对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;
一个用例图示例:
1。
2类图
在UML的静态机制中类图是一个重点,它不但是设计人员关心的核心,更是实现人员关注的核心。
建模工具也主要根据类图来产生代码。
类的属性、操作中的可见性使用+、#、-分别表示public、protected、private.
类之间的关系是类图中比较复杂的内容.有泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Depen