软件工程师考试

1、计算机系统基础

  1. 在程序执行过程中,Cache与驻村的地址映射是由硬件自动完成的。

  2. 计算机系统的主存主要是由DRAM构成的;Cache是SRAM。

    DRAM:动态随机存储器,最为常见的系统内存; SRAM:是一种具有静止存取功能的内存,不需要刷新电路即能保存它的内部存储数据,用来作为高速缓存存储器,即Cache; EEPROM:一般即插即用(Plug&Play),常用在接口卡中,用来存放硬件设置数据。 CPU内部:通用寄存器、专用寄存器、控制寄存器。

  3. 计算机运行过程中,CPU需要与外设进行数据交换。采用中断方式和DMA方式控制技术时,CPU与外设可并行工作。

    程序查询方式是按顺序执行的方式,由CPU全程控制,不能实现外设与CPU并行工作,且占用CPU时间最多; 在外设做好数据传送之前,CPU可以做自己的事情,发出中断请求之后,CPU响应才会控制器数据传输过程,能在一定程度上实现CPU和外设并行; DMA方式由DMA控制器向CPU申请总线的控制权,而获得CPU总线控制权之后,由DMA代替CPU控制数据传输过程; 无条件传送、中断、程序查询,通过CPU执行程序实现数据交换,DMA不用,速度最快。

  4. 运算器&控制器

    累加寄存器AC:存放算术逻辑运算部件ALU运算结果信息;
    程序计数器PC:存放下一条指令;
    指令寄存器IR:保存当前正在执行的指令;
    地址寄存器AR:保存当前CPU所要访问的内存单元地址。

图片描述

  1. 为了解决对存储器要求容量大、速度快、成本低三者之间的矛盾,目前通常采用多级存储器体系结构即采用高速缓冲存储器,主存储器和外存储器。

    高速缓冲存储器:高速存取指令和数据存取速度快,但存储容量小;
    主存储器:存放计算机运行期间的大量程序和数据,速度较快,存储容量不大;
    外存储器:存放系统程序和大型数据文件及数据库存储,容量大、成本低。

6.设机器字长为n,各种码制下带符号数的范围
图片描述

2、操作系统

  1. 文件名应该从根目录开始。

  2. 设计操作系统的时候,不需要考虑的问题是语言编译器的设计实现。

    操作系统的作用:对系统软件资源实施管理的一组程序,用户与计算机之间的接口。

  3. 嵌入式系统初始化过程中主要有三个环节,按照自底向上,从硬件到软件的次序依次为片级初始化,板级初始化,系统初始化。系统初始化的主要任务是以软件初始化为主,主要进行操作系统的初始化。

  4. 用户双击一个文件名时,windows系统通过建立的文件关联来。决定使用什么程序打开。

  5. 实时操作系统主要用于有实时要求的过程控制等领域。实时系统对于来自外部的事件,必须在被控对象规定的时间内做出及时的响应,并对其进行处理。

    实时操作系统
    在规定时间内系统完成操作软时只要按照任务的优先级,尽可能快的完成操作即可

  6. 死锁

    共享锁(S锁):又称读锁,事务T对A加了S锁,其它事务只能对A加S,而不能加X直到T释放A上的S锁。
    排他锁(X锁):又称写锁,事务T对A加了X锁,其它事务不能对A加任何锁,直到T释放A上的X锁。

3、数据库基础

  1. JDBC(Java database connectivity,Java数据库连接)是一种用于执行SQL语句的API。可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。常用于Web开发。

  2. 查询条件

    where:是针对单条记录的判断条件
    Having:是针对分组之后的判断条件
    Distinct:去掉重复

  3. 数据库管理系统DBMS:保证数据库的安全性和完整性;数据库管理员DBA:为不同用户授权,为了保证数据安全性。

  4. 关系代数

    笛卡尔积:×,属性相加,记录相乘
    投影:π,选列
    选择:σ,选行
    连接:⋈,相同属性只保留一个(自然连接,等值连接)

  5. 三级模式二级映像

图片描述

  1. 分布式数据系统中有分片透明、复制透明、位置透明、逻辑透明。

    分片透明:用户不知道关系数据是如何分片的(逻辑上访问的表是如何分块的)
    复制透明:用户不用关系数据库在网络中各个节点的复制情况
    位置透明:用户不知道操作的数据放在何处
    逻辑透明:最低层次的透明性,用户不用关心局部DBMS支持哪种数据模型,使用哪种操纵语言

  2. 遗传算法模拟生物进化的三个基本过程“繁殖(选择)→交叉(重组)→变异(突变)

    在适应函数选择不当的条件下,可能收敛于局部最优,而不能达到全局最优

4、程序语言基础

  1. 中间代码(中间语言、中间表示)常用形式:后缀式、三元式、四元式、树形式。

    特性:生成时可不考虑机器的特性,并且生成中间代码的编译程序相对容易; 由于中间代码与具体机器无关,能将生成中间代码的编译程序方便移植到其他机器上,只需为其开发一个解释器或将中间代码翻译成目标指令,就能在目标机上运行; 在中间代码上更便于做优化处理,某些优化方法在中间代码上比在汇编机器代码上更容易实施。

  2. 在高级语言程序中常见命名对象:变量、函数、数据类型;关键字和注释不能作为标示符给对象命名。

  3. 程序设计语言中的大多数语法现象,可用上下文无关文法描述。

  4. 编译过程:词法分析,语法分析,语义分析,中间代码生成、代码优化、目标代码生成6个阶段。

    词法分析:检查单个词是否正确
    语法分析:识别判断程序语句形式是否正确
    语义分析:上下文性质的审查、进行类型审查

  5. 通过编译,存在死循环——动态语义错误,编译能功过,符合词法、语法、静态语义。

  6. 脚本语言为了缩短传统的编写——编译——链接——运行过程。不需要编译,可直接用。

    脚本语言可使用变量和函数,标记语言常用于描述格式化和链接;
    脚本语言采用解释方式实现,编译型语言,执行效率更高;
    与编译器相比,解释器参与运行控制,程序执行速度慢。

  7. 移进——规约分析法:自底向上。自顶向下:递归下降分析法,预测分析法。

  8. 变量具有左值和右值,在程序运行过程中,局部变量右值可改变。

  9. C程序

    代码区:存放函数体的二进制代码 栈区:编译器自动分配释放,存放函数的参数值、局部变量的值; 堆区:程序员分配释放,若程序员不释放程序结束的可由操作系统回收 静态数据区:内存在程序启动时再分配,程序开始执行,被初始化,所分配的内存在程序整个运行期间,都存在如全局变量、static变量

  10. 编译过程中分配寄存器在目标代码生成阶段.

    此时考虑影响目标代码速度的三个问题:

    • 如何生成较短目标代码?
    • 如何充分利用计算机中的计算器,减少访问存储单元次数
    • 如何充分利用计算机指令系统的特点,提高目标代码质量
  11. Fortran:科学计算
    Pascal:为教学开发,表达能力强
    Prolog:逻辑推理

5、软件工程基础知识与开发方法(结构化与面对对象)

  1. DFD:数据流图,ERD:实体关系图

  2. 配置管理:版本控制、变更管理、配置状态报告(过程支持)

  3. 极限编程XP:解决代码质量低;由价值观、原则、实践、行为组成

    12个最佳时间:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户、编码标准 水晶法:每一个不同的项目都需要一套不同的策略、约定和方法论 并列争球法:迭代法,把每段时间(30天)一次的迭代成为一个冲刺,并按需求的优先级来实现产品,多个自组织和自治的小组并行的递增实现产品

  4. 成本估算时COCOMOⅡ方法以规模作为成本的主要因素,考虑多个成本驱动因子。该方法包括三个阶段性模型,即组装模型、早期设计阶段模型、体系结构阶段模型。

  5. 计算机系系统的可靠性、可用性、可维护性。

    计算公式 平均无故障时间 MTTF
    可靠性 = MTTF/(1+MTTF)
    无失效运作的概率 平均失效间隔时间 MTBF
    可用性 = MTBF/(1+MTBF)
    正确运作的概率 平均修复时间 MTTR
    可维护性 = 1/(1+MTTR)
    完成维护的概率

  6. 软件开发模型

    结构化方法:适合数据处理领域,不适合大规模、特别负责的项目,难适应需求变化 Jackson:适合小规模项目,时序特点较强的系统 原型化方法:用户需求不清,小规模 面对对象方法:用户需求经常变化,规模复杂的项目 瀑布模型:面向过程 原型模型、螺旋模型:演化模型、是迭代的过程模型 喷泉模型:面向对象

  7. 逆向工程工具属于软件维护工具。

  8. 软件工程三要素:方法、工具、过程。

  9. 在概要设计阶段选择适合的解决方案,将系统分为若干子系统,建立整个系统的体系结构。

    控制流结构:规定了处理模块与处理模块之间的流程关系,检查处理模块之间的控制转移关系与形式 数据流结构:规定了数据模块是如何被处理模块进行加工的流程结构的对应关系,检查处理模块与数据模块之间的对应关系 模块结构与功能结构之间的对应关系:功能结构与控制流结构的对应关系;功能结构与数据结构结构的对应关系;每个模块的定义。

  10. 代码行数是度量软件复杂性的一个主要参数.

  11. 统一过程UP的基本特征是,用例和风险驱动,以架构为中心,受控的迭代式增量开发。

    UP的4个阶段: 起始阶段:建立项目的范围和版本,确定项目目标的可行性和稳定性,提交结果包括需求和用例 进化阶段:对问题与进行分析,建立系统需求和架构,确定实现的可行性和稳定性,提交结果包括系统架构、问题领域、修改后的需求及项目开发计划等相关文档 构建阶段:增量式开发,可以交付给用户的软件产品 移交阶段:将软件产品交付给用户 迭代:计划、分析、设计、构造、集成、测试、内部和外部开发

  12. 软件质量评审

    软件规格说明是否合乎用户的要求及总体设计思想和方针是否正确
    可靠性,即避免输入异常,硬件或软件失效产生的失效
    密保措施实现情况
    操作特性实施情况
    性能实现情况
    软件是否具有可修改性,可扩展性,可交互性,可移植性
    是否具有可测试性
    是否具有复用性

  13. 软件性能

    可维护性包括:易分析性,易改变性、稳定性,易测试性 维护类型:改正性维护25%,适应性维护20%,完善性维护50%,预防性维护5% 功能性:适合性,准确性,或用性,依从性,安全性 可靠性:成熟性,容错性,易恢复性 应用性:易理解性,易学性,易操作性 可移植性:适应性、易安装性、一致性、易替换性

  14. 仓库风格包括数据库系统,黑板系统,超文本系统。

    优点:

    • 具有解决问题的多方发性
    • 支持可更改性和可维护性
    • 有可重用的知识源
    • 支持容错性和健壮性
  15. 子系统结构设计确定划分后的子系统规模,并画出规模的结构图。

    过程中需考虑:

    • 每个子系统如何划分成多个模块
    • 如何确定子系统之间,模块之间传送的数据及其调用关系
    • 如何评价并改进模块结构的质量
    • 如何从数据流图导出模块结构图?
  16. 数据流图中某个加工的一组动作,依赖于多个逻辑条件的取值,则用NS盒图能够清楚地表达复杂条件组合与应做的动作之间的对应关系。

  17. 自底向上集成

    优点

    • 对底层组件行为较早验证;
    • 工作最初可以并行集成,比自顶向下效率高;
    • 减少了桩的工作量;
    • 支持故障隔离

    缺点

    • 驱动的开发的工作量大;
    • 对高层的验证被推迟,
    • 设计上的错误不能及时发现
  18. 数据流图中的守恒加工原则对同一个加工来说,输入与输出的名字必须相同;对于每个加工必须有输入输出数据流。

    加工规格说明主要目的是表达做什么而不是怎么做

  19. 单元测试链接测试、错误处理测试、路径测试、局部数据结构测试、模块接口测试。

  20. 划分模块原则:模块大小要合适;扇入扇出要合理;深度和宽度适当。

  21. 结构化设计

    体系结构设计:定义软件主要结构元素及其关系
    数据设计:根据ER图确定文件系统结构及数据库结构
    接口设计
    过程设计:各组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法

  22. 冗余技术(储备技术)

    冗余附加条件:

    • 冗余备份程序的存储及调用
    • 实现纠错检测及恢复的程序
    • 为实现容错软件所需的固化程序
  23. 模块结构图中的模块类型

    传入:从下属模块取数据,处理,传给上级模块
    传出:从上级模块取数据,处理。传给下属模块
    变换:(加工)从上级模块取数据,转换行式再传回上级
    协调:对所有下属模块进行协调管理

  24. 甘特图

    优点:能清晰描述每一个任务从何时开始,何时结束及并行性
    缺点:不能反映任务间的依赖关系,难以确定整个项目关键所在,也不能反应计划中有潜力的部分

6、网络与信息安全基础知识

  1. HTTPS和HTTP的区别:

    HTTPS要到CA申请证书,一般免费较少,需要缴费 HTTP是文本传输协议,信息文明传输 HTTPS是具有安全性的SSL加密传输协议 连接使用端口不同,HTTP为80,HTTPS为443 连接方式不同, HTTP连接简单是无状态的,HTTPS协议是由SSL+HTTP协议构建的,可进行加密传输、身份认证的网络协议比HTTP安全

  2. 攻击

    主动攻击拒绝服务攻击DOS,分布式拒绝攻击DDOS,信息篡改,资源使用,欺骗,伪装,重放,会话拦截
    被动攻击只获取、不修改信息;系统干涉、窃听、流量分析、破解弱加密的数据流

  3. TCP和UDP的区别:

    TCP面向连接,UDP无连接; TCP提供更好的服务,传输的数据无差错、不丢失、不重复,且按需到达;UDP尽最大努力交付,即不保证可靠交付 TCP面向字节流;UDP面向报文,无拥塞控制,出现拥塞不会使主发送率下降 TCP连接只可是点到点的;UDP支持1V1、1VN、NV1、NVN的交互通信 TCP的逻辑通信信道是双全双工的可靠信道;UDP则不可靠信道,开销较小 TCP是流量控制器,采用可变大小的滑动窗口

  4. TCP/IP监测网络故障

    ping 172.0.0.1 检查TCP/IP协议栈是否正常
    ping 本地IP 检查网卡是否正常工作
    ping 网关地址 检查和网关的连接性
    ping 远程网站 检查远程连接