软件面试题目

软件面试题目

1、死锁产生的原因及解决方案

产生死锁的原因主要是:

(1) 因为系统资源不足。

(2) 进程运行推进的顺序不合适。

(3) 资源分配不当等。

如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。

产生死锁的四个必要条件

(1) 互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

死锁的解除与预防:

理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。

2、软件需求说明说中包含的一些内容

软件需求说明书的主要内容及写作要求

编写目的

软件需求说明书的编制是为了使用户和软件开发者双方对该软件的运行环境、功能和性能需求的初始规定有一个共同的理解,使之成为整个开发工作的基础,为概要设计提供需求说明。

主要内容及写作要求

软件需求说明书的主要内容及写作要求如下:

1 引言

  1.1目的

     A. 说明开发本软件的目的;

     B. 说明编写软件需求说明书的目的;

     C. 说明软件需求说明所预期的读者。

  1.2 背景

     A. 标识要开发的软件产品(名称、代码);

     B. 列出本项目的任务提出者、项目负责人、系统分析员、系统设计员、程序设计员、程序员、资料员以及与本项目开展工作直接有关的人员和用户。

     C. 说明该软件产品与其它有关软件产品的相互关系。

1.3 参考资料

     A. 列出该项目经核准的任务书或合同和上级机关的批文;

     B. 列出编写本软件需求说明书时参考的文件、资料、技术标准以及他们的作者、标题、编号、发布日期和出版单位等。

1.4术语

     列出本软件需求说明书中专门属于的定义以及英语缩写词的原词组。

2 项目概述

   2.1 被开发软件的一般描述

      描述被开发软件的主要组成,相互联系和外部借口(可用系统流程图的层次结构描述)。

   2.2 被开发软件的功能

简述被开发软件的功能(可采用系统流程图的层次结构描述)。

   2.3 实现语言

列出所采用的编程语言。

   2.4 用户特点

描述最终用户(包括操作员、维护人员和系统工作人员)具有的受教育水平、工作经验及技术专长。

   2.5 一般约束

      给出影响承办单位在设计软件时的约束条款和当需求发生变化时该软件对这些变化的适应能力即灵活性的需求,包括:

        A. 管理方针、如经费限制、开发期限等;

        B. 运行环境,包括硬件设备和支持软件;

        C. 其它应用接口;

        D. 并行操作的用户数;

        E. 实时功能:包括响应时间、更新处理时间、数据转换和传送时间、解题时间;

        F. 安全保密方面的考虑。

3 具体需求

    3.1 功能需求

      用文字、图表或数学公式详细描述被开发软件的输入处理、输出以及在上述过程中发生的基本操作(可采用系统流程图的层次结构描述)。对每一类功能(或每一功能),按下述四小节描述。

      3.1.1 引言

        A. 描述该软件功能及使用方法;

        B.列出与功能有关的背景材料。

      3.1.2 输入要求

        A. 输入数据的描述,包括输入源、数量、度量单位和精度;

        B. 操作员具体的操作控制需求(如输入格式、数据类型、精度、范围自动检验等);

      A. 指明引用的输入设备接口资料(包括设备型号、数量)。

      3.1.3 处理要求

        描述为获得期望的输出,对输入数据及中间参数进行的操作,包括:

        A. 输入数据有效性(如0不能取对数、流压大于静压等)检查手段;

        B. 操作顺序和处理过程;

        C. 非正常情况的响应。如溢出、通讯故障、错误处理;

      B. 输出数据有效性检查手段。

      3.1.4 输出要求

        A. 输出数据的描述,包括目的地(存储媒体和用途)、数量、度量和精度;

        B. 非法数据的处理;

        C. 指明引用的输出设备接口资料(包括设备型号、数量)。

   3.2 外部接口需求

      3.2.1 用户界面

              A. 指出用户使用软件产品时的界面需求。若用户用过显示终端操作,则需指定如下需求:

      l 对屏幕格式的要求;

      l 报表或菜单的页面显示格式及内容;

      l 用户命令的格式。

     B. 列出输出错误信息的格式。

    3.2. 2硬件接口

A. 软件产品与系统硬设备之间每一接口的逻辑特点;

B. 硬件接口支持的设备;

C. 软件与硬件接口之间以及硬件接口与支持设备之间的约定。

    3.2.3 软件接口

描述该软件产品与其它有关软件的接口关系,并指出这些软件的名字、助记符及版本号。

    3.2.4 通讯接口

说明各种通讯接口及协议。

  3.3 性能需求

      A. 输入输出数据精确度

      B.时间特性[如响应时间、更新处理时间、数据转换与传输时间、运行时间等。

      C.适应性[在操作方式、运行环境、与其它软件的接口以及开发计划等发生变化时,应具有的适应能力。

D. 正常情况下和峰值工作条件下,在一定时间内要处理的数据总量;

  3.4 属性需求

      A. 正确性(指程序运行所完成的功能与需求说明书规定的各种功能相一致的程度)需求;

      B. 健壮性需求(健壮性指在不合理的输入情况下,程序仍能运行的程度。如果在不合理的输入情况下,如打错命令、输入数据超界、提供参数不合理等;程序能够运行,或给出错误信息后转到预先规定的错误处理程序运行,则程序的健壮性好。反之,则不好);

      C. 安全保密性(指对程序进行以防止意外的或蓄意存取、使用、修改、损坏或泄密的程度和遭受意外损坏后的恢复能力)需求;

      D. 易使用性(指掌握、使用该软件的难易程度)需求;

      E. 可理解性(指程序使用那些使人们易读、易懂的编码规定、指南和规则,例如模块长度、标识符长度、注释、编写格式、常数定义等)需求;

      F. 可维护性(指对程序进行维护的难易程度)需求;

      G. 可测试性(指程序的功能和性能的可测试的难易程度)需求;

      H. 可移植性(指在规定的条件下,程序从一个环境转移到另一个环境进行运行的难易程度)需求;

  3.5 数据需求(如果是较大规模的软件本节内容取消,由数据要求说明书详细描述)。

    3.5.1 数据描述

      A. 列出作为控制和引用而使用的静态数据元素;

      B. 列出动态输入数据元素;

      C. 列出动态输出数据元素;

      D. 列出软件内部生成的数据元素。

    3.5.2数据获取

      A. 列出提供输入数据的机构;

      B. 列出数据输入介质和设备;

    列出数据输出介质和设备。

3、考察C语言的一些基本概念,基本应用。

    比如:

    1、编写一个strcpy函数

    2、简介进程和线程的区别

    3、写一个简单的makefile,static和extern c的作用

    4、栈、堆和全局变量和局部变量等方面的概念

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林中青木

原创不易,请多多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值