西北大学软工专硕专业课面试可能会问到的问题

20届西北大学软工专硕刚刚上岸,本着上岸分享资料的想法, 把自己复试期间整理的一点东西(包括但不仅限于这些问题)分享出来,供大家参考,内容只代表我的观点,假如与标准答案有所不同,敬请谅解!
Ps:今年因为疫情的原因,面试改为线上,和之前的套路稍微有点不同,大方向还是一样的,我还是按之前的形式准备的。

首先是专业面试可能会问到的问题:

抽题范围包括计算机网络,数据结构,操作系统,计算机组成,数据库,软件工程

计算机网络

1.无线局域网为什么不冲突检测,而选择冲突避免?
答:因为无线环境不像有线广播媒体那样容易控制,来自其他局域网中的用户传输会干扰冲突检测的操作,且在无线环境中检测冲突是困难的,因此不可能终止相互冲突的传输,只能使用CSMA/CA尽量避免冲突。

2.邮件发送需要那些协议
发送邮件采用STMP协议,接收邮件一般采用POP3协议和IMAP协议 。

3.网络7层体系结构
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

4.网络服务问题与质量
指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。
补充:
在这里插入图片描述

5.下一代网络发展方向
下一代网络(Next Generation Network),又称为次世代网络。主要思想是在一个统一的网络平台上以统一管理的方式提供多媒体业务,整合现有的市内固定电话、移动电话的基础上(统称FMC),增加多媒体数据服务及其他增值型服务。简称IP-NGN。

6.什么是 BS/CS
BS结构(Browser/Server,浏览器/服务器模式),只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。
CS结构(Client/Server,客户/服务器模式),服务器通常采用高性能的计算机、工作站或小型机,并采用大型数据库系统,如Oracle、 SQL Server等。客户端需要安装专用的客户端软件。
C/S:
优点:交互性好,对服务器压力小,安全;
缺点:服务器更新时需要同步更新客户端;
B/S:
优点:不需要更新客户端;
缺点:交互性差,安全性低;

7.什么是 Thin Client
Thin Client(瘦客户机),采用高效的嵌入式高效能CPU,利用嵌入式开发工具开发的独立嵌入式操作系统,具有稳定可靠、完全兼容PC应用、使用方便、体积小巧、安静节能的众多优点。

数据结构

1.如何解决哈希冲突
(1)开放定址法(再散列法):Hi=(H(key)+di)%m
又可以分为:①线性探测再散列(di=1,2,3……)
②二次探测再散列(di=12,22,32……)
③伪随机探测再散列(di=伪随机数序列)
(2)再哈希法:Hi=RHi(key) i=1,2,…… 构造不同的哈希函数
(3)链地址法:将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。
(4)建立公共溢出区:将哈希表分为基本表和溢出表,凡是和基本表发生冲突的元素一律填入溢出表。

2.哈希函数构造方法
数字分析法、平方取中法、分段叠加法、除留余数法、伪随机数法。

3.各排序算法复杂度

4.什么是面向对象程序设计,面向对象开发,以及他们区别
面向对象程序设计就是对象+消息。
第一,程序一般由类的定义和使用两部分组成,而类的实例即对象;
第二,程序中的一切操作都是通过对象发送消息来实现的,对象接收消息后,启动有关方法完成相应的操作。在面向对象的程序设计中,对象是组成程序的基本模块。
面向过程程序设计:就是函数的定义和调用。简单地说,过程就是程序执行某项操作的一段代码,函数是最常用的过程。

5.面向对象的三大特性:
封装
是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。
继承
  子类可以自动拥有父类的全部属性和服务。
多态性
 在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为。

6.面向过程与面向对象
面向过程
优点:性能比面向对象高。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,
缺点:性能比面向过程低

操作系统

1.什么是操作系统
控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境的程序集合。

2.操作系统的功能(OS)
处理机管理(进程管理):处理中断事件和处理器调度。
存储器管理:是指针对内存储器的管理(分配内存空间)。
设备管理:是指负责管理各类外围设备。
文件管理:是指操作系统对信息资源的管理。
作业管理:每个用户请求计算机系统完成的一个独立的操作称为作业。包括作业的输入和输出,作业的调度与控制。

3.这本书讲了什么? 整本书的框架?
本书主要介绍了操作系统的概念和发展,系统地讲述了操作系统的基本概念、原理和方法。
框架:操作系统的概念和发展,然后介绍了进程管理、内存管理、文件管理和IO管理等内容,最后进行了总结。

4.死锁、饥饿等

计算机组成

1.冯诺依曼计算机的特点
(1)计算机硬件系统有运算器、存储器、控制器、输入设备和输出设备5大部件组成;
(2)指令和数据以同等地位存于存储器内,并可按地址寻访;
(3)指令和数据均用二进制代码表示;
(4)指令由操作码和地址码组成;
(5)指令在存储器内按顺序存放;
(6)早期的冯诺依曼机以运算器为中心,输入输出设备通过运算器与存储器传送数据。

2.浮点数是如何存储的
采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit。
无论是单精度还是双精度在存储中都分为三个部分:
1、符号位(Sign) : 0代表正,1代表为负。
2、指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储。
3、尾数部分(Mantissa):尾数部分。
公式如下:
X = a * 2e
a为浮点数的二进制表示,范围为[1,2) ;
e为小数点移动的位数;
对于float型数据,其长度是4个字节,右边23位用来表示小数点后面的数字,中间8位用来表示e,左边一位用来表示正负。
对于double型数据,其长度是8个字节,右边52位用来表示小数点后面的数字.中间11位表示e,左边一位用来表示正负。

3.高速缓存
高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。

数据库

1.什么是事务?事务的特征是什么?
所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。(例如,在关系数据库中,一个事物可以是一条SQL语句、一组SQL语句或整个程序)
事务具有4个特征,原子性、一致性、隔离性和持续性,简称为ACID特征。
游标 存储过程

2.文件
电脑上储存数据的文件,是数据库的物理体现。每个数据库有一个主数据文件和若干个从文件。

3.数据挖掘的定义
数据挖掘是从大量数据中发现并提取隐藏在内的、人们事先不知道的但又可能有用的信息和知识的一种新技术。
目的是帮助决策者寻找数据间潜在的关联,发现经营者忽略的要素。

4.查询优化
查询优化在关系数据库系统中有着非常重要的地位,其优点不仅在于用户不必考虑如何更好地表达查询以获得较高的效率,而且在于系统可以比用户程序的“优化”做得更好。总目标是选择有效的策略,求得给定关系表达式的值,使得查询代价较小。

5.语义树
利用语句中文字的特征码,结合该文字前面的特征码组建。主要技术为特征码和链式存储。

6.触发器
触发器是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,触发器将被保存在数据库服务器中。任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在关系数据库管理系统核心层进行集中的完整性控制。

7.范式
范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。

8.什么是 5NF? 先答3NF,4NF,BCNF…
1NF:每个关系r的属性值为不可分的原子值。
若关系模式R(U)中每个关系r的属性值为不可分的原子值,则称R(U)属于第一范式。
2NF:满足1NF,非主属性完全函数依赖于候选键。
若关系模式R(U)满足1NF,且U中的每一非主属性完全函数依赖于候选键,则称R(U)属于第二范式。(候选键:能够完全决定所有属性的属性或者属性组。非主属性:不包含在任何候选键中的属性。完全函数依赖:如果x决定y,那么x的任何一个真子集x’都不能决定y)
3NF: 满足2NF,消除非主属性对候选键的传递依赖。
设关系模式R<U,F> ∈ 1NF,若R中不存在这样的码X,属性组Y及非主属性Z(Y∉Z)使得X→Y,Y→Z成立,Y不能决定X,则称R<U,F>∈3NF。(F是函数依赖的集合)
BCNF:满足3NF,消除每一属性对候选键的传递依赖。
关系模式R<U,F> ∈ 1NF,若X→Y且Y∉X时X必含有候选键,则R<U,F> ∈ BCNF。(函数依赖一定依赖于候选键,X要包含候选键)
4NF:满足BCNF,限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖(MVD)。
5NF: 如果关系模式R中的每一个连接依赖均由R的候选键所隐含,则称此关系模式符合第五范式。(在4NF的基础上,消除不是由候选码所蕴含的连接依赖。)

9.sql语言
结构化查询语言(Structured Query Language)是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。(其功能不仅仅是查询, 而是包括数据库模式创建、数据库数据的插入与修改、数据库安全性完整性定义与控制等一些列功能)
SQL功能:数据查询、数据操纵、数据定义、数据控制。
SQL主要特点:综合统一、高度费过程化、面向集合的操作方式、以同一种语法结构提供多种使用方式、语言简洁,易学易用。

10.关系代数
关系代数是一种抽象的查询语言,用对关系的运算来表达查询。
关系代数的运算对象是关系,运算结果也是关系。用到的运算符包括两类:集合运算符和专门的关系运算符,所以按照运算符的不同,主要将关系代数分为传统的集合运算和专门的关系运算两类。

11.数据模型三要素
数据结构、数据操作、数据约束。
最常用的数据模型是概念数据模型和结构数据模型。

软件工程

1、软件工程定义?目前有哪几种主要的软件工程方法?
(1)应用系统的,规范的,可量化的方法来开发、运行和维护软件,即将工程应用到软件。
(2)对上述各种方法的研究。
目前主要有:传统方法(也称为经典软件工程方法或生命周期方法)和面向对象方法。
面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO,是建立在“对象”概念基础上的方法学。
面向对象:对象+类+继承+通信。如果一个软件系统是使用这样4个概念设计和实现的,那这个软件系统是面向对象的。

2.简述对象、类、消息、方法的基本概念。
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和它可以执行的一组操作组成。
类是具有相同属性和服务的一组对象的集合。对象的抽象是类,类的具体化就是对象。
消息是对象发出的服务请求。

3. 软件
软件是计算机系统中与硬件相互依存的部分,它是包括程序、数据及相关文档的完整集合。

4.软件工程中的需求
需求就是用户的一种期望,软件系统通过满足用户的期望来解决用户的问题。

5.UML 里面有哪些图?
用例图、分析类图、序列图、状态图等

6.软件设计的核心思想
抽象和分解

7.软件设计
是关于软件对象的设计,是一种设计活动,自然具有设计的普遍特性。

8.耦合与内聚
耦合描述的两个模块之间关系的复杂程度。
内聚表达的是一个模块内部的联系的紧密性。

9.三个特性
封装
是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。
继承
  继承(Inheritance)是指子类可以自动拥有父类的全部属性和服务。
多态性
  多态性(Polymorphism)是指在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为。

10.需求分析的方法
结构化分析方法:适合于数据处理类型软件的需求分析。 其要点是"自顶向下"地开发系统,由整体 到各组成部分,由抽象到具体。
包括:数据流图、实体关系图
面向对象分析方法:就是运用面向对象的方法进行需求分析的方法。
包括:用例图 类图 顺序图 状态图

11.MVC 模型-视图-控制
以程序调用为连接件,将系统功能组织为模型、视图和控制三个部件。

12.面向对象设计
  根据已建立的分析模型,运用面向对象技术进行系统软件设计。
  
13.面向对象编程
  用一种面向对象的编程语言将面向对象设计模型中的各个成分编写成程序。
  
14.统一建模语言UML
  是一种通用可视化建模语言。
  
15.面向对象的五大基本原则:SPR, OCP, LSP, DIP, ISP
单一职责原则SRP(Single Responsibility Principle)是指一个类的功能要单一,不能包罗万象。
开闭原则OCP(Open-Close Principle)一个模块对扩展开放,对修改关闭。
里氏替换原则LSP(the Liskov Substitution Principle LSP)子类型必须能够替换掉他们的父类型而起同样的作用。
依赖倒置原则DIP(the Dependency Inversion Principle DIP)高层模块不应该依赖于低层模块,而是双方都依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
接口分离原则ISP(the Interface Segregation Principle ISP)将一个统一的接口匹配为多个更独立的接口。

16.软件测试的目标是什么,有哪几种主要有测试方法?
  以最少的时间和人力 系统地找出软件中潜在的各种错误和缺陷。
黑盒测试VS白盒测试
黑:把测试对象看作一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性。
白:将测试对象看做透明的,不关心测试对象的规格,而是按照测试对象内部的程序结构来设计测试用例进行测试工作。

17.什么是软件维护?目标是什么,有哪几种维护类型?
软件维护是指在软件交付之后修改软件系统或其部件的活动过程,以修正缺陷,提高性能或其他属性。
软件维护的分类: 纠错性维护、适应性维护、预防性维护和完善性维护。
软件的生命周期
是软件的产生直到报废或停止使用的生命周期。

18.软件工程模型
瀑布模型:将软件生命周期中的各个活动规定为线性连接的模型,包括需求分析、设计、编码、测试、运行与维护,由前至后、相互衔接的固定顺序,如同瀑布流水逐级下落(以文档作为驱动)。
优点:1)容易理解,管理成本低;
缺点:1)客户必须能够完整、正确和清晰地表达他们的需要;
增量模型:融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。
演化模型:将软件开发活动组织为多个迭代、并行的瀑布式开发活动。(典型的演化模型有原型模型和螺旋模型)

19.面向对象和面向过程软件工程有哪些区别?
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把构成问题事物分解成各个对象,用对象的概念去描述事物在解决问题的步骤中的行为。

20.简述面向对象分析设计的三个模型。
对象模型、动态模型、功能模型

21.软件复用
  软件复用就是利用某些已开发的、对建立新系统有用的软件元素来生成新的软件系统。
22.用户需求
  用户需求(user requirement)描述了用户使用产品必须要完成的任务。

23.一些图的概念
类图
  类图描述系统的静态结构,表示系统中的类以及类与类之间的关系。

对象图
  对象图描述了一组对象以及它们之间的关系,表示类的对象实例。

状态图
  状态图表示一个状态机,强调对象行为的事件顺序。

时序图
  时序图表示一组对象之间的动态协作关系,反映对象之间发送消息的时间顺序。

协作图
  协作图表示一组对象之间的动态协作关系,反映收发消息的对象的结构组织。

活动图
  活动图反映系统中从一个活动到另一个活动的流程,强调对象间的控制流程。

组件图
  组件图描述组件以及它们之间的关系,表示系统的静态实现视图。

分布图
  分布图反映了系统中软件和硬件的物理架构,表示系统运行时的处理节点以及节点中组件的配置。

再次强调,这是根据历年经常问到的问题并添加了一下我自己认为可能会问到的问题整理出来的,仅个人观点,单单这些还不算够,还需要更加充足的准备。

猜你喜欢

转载自blog.csdn.net/Su_Del/article/details/106241791