面试题(3)

来源:互联网 发布:生死狙击刷矩阵技巧 编辑:程序博客网 时间:2024/06/10 19:37

软件工程基础

  • 什么是软件工程:采用工程的概念、原理、技术和方法来开发和维护软件
    • 软件是一种逻辑实体;
    • 软件开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性
    • 软件成本相当昂贵。需要投入大量的、复杂的、高强度的脑力劳动
    • 相当多的软件工作设计到社会因素。许多软件的开发和运行涉及机构、体制及管理方式
  • 软件开发原则:抽象、信息隐藏、模块化、局部化、一致性、完整性、可验证性
  • 软件危机:软件生产方式无法满足迅速增长的计算机软件需求,不能有效地开发大型、复杂的软件,从而导致软件开发与维护过程中出现一系列严重问题的现象
  • 软件的4大开发模型:
    • 瀑布模型:各项活动严格按照线性方式进行
    • 原型模型:快速建立起来的,它所能完成的功能往往是最终产品能完成功能的一个子集
    • 螺旋模型:将瀑布模型和原型模型结合起来,加入风险分析;(风险驱动)
    • 增量模型:融合了瀑布模型的基本成分和原型的迭代特征,采用随着时间的进展而交错的线性序列

软件测试:

  • 黑盒测试:根据软件产品的功能设计规格,对软件进行测试,以证实每个实现了的功能是否符合要求。完全不考虑程序内部逻辑结构和内部特性
  • 白盒测试:根据软件产品的内部工作过程,对软件进行测试,以证实每种内部操作、所有内部流程是否符合设计规则要求

什么是操作系统:用于管理计算机系统的硬件资源、软件资源及数据资源,控制程序运行,提供操作接口,为其他应用软件提供支持等的软件系统

进程是由进程控制块、程序段、数据段3部分组成

  • 进程和线程的区别:
    • 一个程序至少有一个进程,一个进程至少有一个线程
    • 进程在执行过程中拥有独立的内存单元(地址空间),而多个线程共享进程所拥有的内存
    • 进程可以独立运行,但线程不能独立执行,必须依存在进程中,由使用该进程的应用程序提供多个线程执行控制
  • 如何实现多线程的同步:可以使用临界区、互斥量和信号量等方式来实现
    • 临界区:只能用于对同一进程内的线程进行同步;在某一时间内只允许一个线程执行某个给定代码段
    • 互斥量(线程锁):多线程中的同步访问的方法,它允许程序锁住某个对象,每次只允许一个线程访问它。在访问这个对象之前锁住一个互斥量,访问完成之后解锁
    • 信号量:是特殊的线程锁,允许多个线程同时访问临界资源
  • Linux进程间的通信:
    • 管道
    • 信号:用于通知接收进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身
    • 消息队列:消息队列是消息的链接表;有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读取队列中的消息
    • 共享内存:多个进程可以访问同一块内存空间,是最快的IPC
    • 信号量:作为进程间以及同一进程不同线程之间的同步手段
    • 套接字:更为一般地进程间通信机制,可用于不同机器之间的进程间通信

内存与作业调度

作业调度:在多个作业运行时,系统如何处理作业的运行顺序
内存管理:主要包括向用户程序提供内存逻辑地址,并完成逻辑地址到物理地址的转换,完成用户程序的载入工作,采用各种技术提高内存使用率,保护内存及其安全等功能
- 内存管理方式:无管理方式(不划分系统区和用户区);单一分区;固定分区;可变分区;页模式(将内存固定划分为等长的页面,程序也划分为等长的页;程序运行时,将程序的各页装入到内存的各空闲页)
- 作业状态:进入状态,后备状态,运行状态和完成状态

计算机网络结构

  • OSI七层模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
  • TCP/IP参考模型:应用层,传输层,网际互联层,网络接入层
  • TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机
  • UDP是一个不可靠、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合
  • 什么是TCP/IP协议:是internet最基本的协议,定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。通常说的TCP/IP是Internet协议族