1.什么是软件开发环境? Linux 和 unix 有啥区别?
软件开发环境(Software Development Environment,SDE)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE,由软件工具和环境集成机制构成
Linux就是类Unix,什么叫类Linux,就是类似于Unix,是Unix的分支,从文件系统的结构、命令等方面比较相似。
Linux一般运行在PC机上,不太稳定,并行度不够,一般应用在小型企业;而Unix系统则运行在Unix服务器上。
2.介绍 case 技术?
指一种智能化计算机辅助软件工程工具。
CASE工具已成为保证软件质量,解决软件危机的主要手段。
3.检查点和里程碑的区别?
检查点(Check Point) 是指在整个项目生命周期中有几个时间点需要进行重大的检查动作,一般是均等的分布在项目整个生命周期的时间点上;
里程碑(Milestone)是指项目的进展已经达到了某一个关键节点,一般是指关键性的成果已完成。
所以里程碑的设定一般是依据某项关键成果的完成为设定标志;
4.软件维护为什么不可避免?
为了纠正在开发阶段未发现的错误和缺陷,使软件适应新的计算机环境并满足变化的用户要求,对正在使用的软件进行修改是不可避免的。
因此,如果希望软件系统能延长寿命,必须要对它进行维护。
如果希望软件系统有效益,则必须设法降低维护的代价。
5.交换机和路由器的区别?
交换机工作在数据链路层,通过自学习算法来增加转发表,根据mac地址转发
路由器工作在网络层,基于网络层不同协议形成路由表,根据Ip地址转发网络报文
6.喷泉模型的特点
它是以面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动的模型。
“喷泉”一词本身体现了迭代和无间隙特性。
系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演进的系统。
所谓无间隙是指在开发活动,即设计、分析和编码之间不存在明显的边界。
可维护性较好,各阶段相互重叠,迭代,增量开发特性,对象驱动的,支持软部件的重用。
7.C与Java的区别
C语言是面向过程的语言,执行效率高;Java是面向对象的语言,执行效率比C语言低。
C语言最关键的是比Java多了指针,这也说明了Java的健壮性,还有Java的多线程机制使程序可以并行运行,Java程序多用于网络。
C语言的安全性不如Java,C语言没有Java的垃圾回收机制,申请的空间要手动释放。
Java的通用性好,可以跨平台直接移植,只要有安装Java虚拟机(JVM)就可以了。
Java可以支持方法重载和重写。
8.IP 地址和 MAC 地址有啥区别?
MAC地址是数据链路层和物理层使用的地址;IP地址是网络层及其以上层使用的地址。
9.如何解决系统高并发?
1. HTML静态化
效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的 网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。
2. 图片服务器分离
把图片单独存储,尽量减少图片等大流量的开销,可以放在一些相关的平台上
3. 数据库集群和库表散列及缓存
数据库的并发连接为100,一台数据库远远不够,可以从读写分离、主从复制,数据库集群方面来着手。
另外尽量减少数据库的访问,可以使用缓存数据库如memcache、redis。
10.什么是人工智能
人工智能是研究、开发用于模拟、延伸和扩展人的智能理论、方法、技术及应用系统的一门新的技术科学,它是计算机科学的一个分支。
能够说这是一门集数门学科精华的尖端学科中的尖端学科——所以说人工智能是一门综合学科。
四大分支:机器学习、模式识别、数据挖掘、智能算法。
三种形态:弱AI(某些方面)、强AI(类人类)、超AI。
11.什么是机器学习
研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,从新组织已有的知识结构是指不断完善自身的性能,或者达到 *** 作者的特定要求;
(1) 监督学习(有导师学习): 输入数据中有导师信号,以几率函数、代数函数或人工神经网络为基函数模型,采用迭代计算方法,学习结果为函数。
(2) 无监督学习(无导师学习): 输入数据中无导师信号,采用聚类方法,学习结果为类别。
典型的无导师学习有发现学习、聚类、竞争学习等。
(3) 强化学习(加强学习): 以环境反惯(奖/惩信号)做为输入,以统计和动态规划技术为指导的一种学习方法。
人工智能是追求目标,机器学习是实现手段,深度学习是其中一种方法。
12.面向对象的四大特性?
面向对象的四个基本特征是:抽象、封装、继承、多态。
抽象:
封装:把客观事物封装成抽象的类。
继承:可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”、“父类”或“超类”。
多态:
13.敏捷开发过程是什么?
敏捷开发是一种以人为核心,以迭代方式循序渐进开发的方法,其软件开发的过程称为“敏捷过程”。
在这一过程中,软件项目的构建被切分成多个子项目,各个子项目的成功都经过测试,具备集成和可运行的特征。
敏捷开发的关键是在软件质量和开发速度之间找到一个有效的平衡点。
14.C++的多态性?
一个父类的指针去调用子类中被重写的方法,用父类的指针指向子类,是为了面向接口编程。
“一个接口,多种实现“。
将父类比喻为电脑的外设接口,子类比喻为外设,现在我有移动硬盘、U盘以及MP3,它们3个都是可以作为存储但是也各不相同。
如果我在写驱动的时候,我用个父类表示外设接口,然后在子类中重写父类那个读取设备的虚函数,那这样电脑的外设接口只需要一个。
但如果我不是这样做,而是用每个子类表示一个外设接口,那么我的电脑就必须有3个接口分别来读取移动硬盘、U盘以及MP3。
若以后我还有SD卡读卡器,那我岂不是要将电脑拆了,焊个SD卡读卡器的接口上去?
15.快速原型模型是什么?
快速原型模型需要迅速建造一个可以运行的软件原型,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。
快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。
16.Java平台无关性?
平台无关性就是一种语言在计算机上的运行不受平台的约束,一次编译,到处执行 。
17.抽象和逐步求精?
抽象:简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。
抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。
抽象包括两个方面,一是过程抽象,二是数据抽象。
它侧重于相关的细节和忽略不相关的细节。
逐步求精:将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。
即**将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单
一、简单易实现的模块。
**求解过程可以划分为若干个阶段,在不同阶段采用不同的工具来描述问题。
在每个阶段有不同的规则和标准,产生出不同阶段的文档资料。
18.数据流和事务流?
数据流:一组有序,有起点和终点的字节的数据序列。
包括输入流和输出流。
事务流:信息沿着输入通路到达一个事务中心,事务中心根据输入信息的类型在若干个动作序列中选择一个来执行。
19.面向服务的软件
MySQL、Oracle
20.软件工程模型
21.Public 类和友好类有啥区别?
访问范围不同。
PUBLIC类可以不受限制地用和访问 友好类最大用和访问范围是同一个包
22. *** 作系统进程的三种状态
a)就绪状态:进程已获得除CPU以外的所有必要的资源,只等待cpu的状态。
一个系统会将多个出于就绪状态的进程排成一个就绪队列。
b)执行状态:进程已获得CPU,正在执行。
单处理系统中,出于执行状态的进程只有一个,多处理系统中,有多个出于执行状态的进程(并行进程)
c)阻塞状态:正在执行的进程由于某种原因而暂时无法继续执行,便放弃处理机而处于暂停状态,即进程执行受阻。
(这种状态又称等待状态或封锁状态)
23.Ipv4和ipv6的区别
IPv4和IPv6用于用户标识和Internet上不同设备之间的通信。
IPv4是32位IP地址,而IPv6是128位IP地址。
IPv4是数字地址,用点分隔。
IPv6是一个字母数字地址,用冒号分隔。
24.自上而下和自下而上的语法分析的区别
自上而下(Top-down)
从文法的开始符号出发,反复使用各种产生式,寻找"匹配"的推导
推导:根据文法的产生式规则,把串中出现的产生式的左部符号替换成右部 从树的根开始,构造语法树 递归下降分析法、预测分析程序
自下而上(Bottom-up)
从输入串开始,逐步进行归约,直到文法的开始符号
归约:根据文法的产生式规则,把串中出现的产生式的右部替换成左部符号 从树叶节点开始,构造语法树算符优先分析法、LR分析法
25.++i 与i++哪个效率更高?
在内建数据类型的情况下,效率没有区别; 在自定义数据类型的情况下,++i效率更高!
因为前缀式(++i)可以返回对象的引用,而后缀式(i++)必须产生一个临时对象保存更改前对象的值并返回(实现过自定义类型++运算符定义的就知道),所以导致在大对象的时候产生了较大的复制开销,引起效率降低
26.语法分析和语义分析在编译中的作用
语法分析:按照文法的产生式(语言的语法规则) , 识别输入符号串是否为一个句子(合式程序)
语义分析:检查语法错误,构造符号表。
27.可靠性的理解,数据指标
软件可靠性定义是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率
数据指标:平均无故障时间
28.谈谈编译原理里的 LL(1) 和 LR 分析法。
LL(1) 分析法又称预测分析法 ,是一种不带回溯的非递归自上而下分析法。
LR 分析法是从左至右扫描和自底向上的语法分析
29.SQL 中的捆绑变量
绑定变量是为了减少解析,提高效率。
30.内聚有哪些?
功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚。
31.模块的作用域和控制域
模块的作用域应该在控制域之内 作用域:受该模块内一个判定影响的所有模块的集合 控制域:这个模块本身以及所有直接或间接从属于它的模块的集合
32.功能模块的可预测性
模块的功能应该能够预测,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。
33.与用户沟通的方法
访谈
面向数据流自顶向下求精
简易的应用规格说明技术
快速建立软件原型
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)