考研复试问答(十二)

1、什么是存储程序原理?

      存储程序原理又称“冯·诺依曼原理”(1946年提出)。将程序像数据一样存储到计算机内部存储器中的一种设计原理。程序存入存储器后,计算机便可自动地从一条指令转到执行另一条指令。现代电子计算机均按此原理设计。

1、首先:把程序和数据通过输入输出设备送入内存。

一般的内存都是划分为很多存储单元,每个存储单元都有地址编号,这样按一定顺序把程序和数据存起来,而且还把内存分为若干个区域,比如有专门存放程序区和专门存放数据的数据区。

2、其次:执行程序,必须从第一条指令开始,以后一条一条地执行。

一般情况下按存放地址号的顺序,由小到大依次执行,当遇到条件转移指令时,才改变执行的顺序。每执行一条指令,都要经过三个步骤:第一步,把指令从内存中送往译码器,称为取指;第二步,译码器把指令分解成操作码和操作数,产生相应的各种控制信号送往各电器部件;第三步,执行相应的操作。这一过程是由电子路线来控制,从而实现自动连续的工作。

 

2、哈佛结构和冯诺依曼结构的区别?

冯诺依曼结构和哈佛结构区别为:存储器结构不同、总线不同、执行效率不同

存储器结构不同

1、冯诺依曼结构:冯诺依曼结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构。

2、哈佛结构:哈佛结构使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存。

总线不同

1、冯诺依曼结回构:冯诺依曼结构没有总线,CPU与存储器直接关联。

2、哈佛结构:哈佛结构使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

执行效率不同

1、冯诺依曼结构:冯诺依曼结构其程序指令和数据指令执行时不可以预先读取下一条指令,需要依次读取,执行效率较低。

2、哈佛结构:哈佛结构其程序指令和数据指令执行时可以预先读取下一条指令,具有较高的执行效率。

3、同步方式和异步方式的优缺点?

4、差分曼彻斯相比于曼彻斯特的优势?什么是自同步?

有优势,曼彻斯特比传统的基带传输好在自带了同步信号(每个时钟周期的中间的跳转就是位同步信号,同时又用信号的跳转方向表示了二进制的1或0),而差分曼彻斯特是保持了周期中间的跳变做为位同步信号,但用位开始边界有无跳变来表示二进制的0或1,将位同步和位识别信号就分离出来了

曼彻斯特编码,不论是差分还是非差分,每个码元都有从一个电平到另一个电平跳变的过程(如用上升沿代表1,下降沿代表0;或差分的:沿的方向不变代表0,变化代表1),因此可以在任何数据传输过程中,通过判断上升/下降沿和下一个上升/下降沿之间的间隔,来得到两个码元之间的时间,从而得到通信使用的频率,也就实现了自同步。

 

5、CSMA/CD出现碰撞采用的策略是?

二进制指数退避算法。

6、受限广播地址和直接广播地址的区别?

直接zhidao广播地址:网络号+后面的数全1如192.168.1.255
在192.168.1.0这个子网内广播
受限广播地址:专255.255.255.255
在所处路由器的广播域内广播
一个子网可属能不止一个路由器,受限广播路由器不转发

7、IP地址的分类?内部IP地址的分类?

A:1.0.0.0~126.255.255.255

B:128.1.0.0~191.255.255.255

C:192.0.1.0~223.255.255.255

8、CDMA/CD的优缺点

9、简述一下CRC检错技术

其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。
 

 

12、冯诺依曼计算机有何局限性?

冯诺依曼计算机的核心是存储结构的思想,它将数据和指令混合存储,程序执行的时候,CPU按照程序计数器的指令,顺序地线性地读取下一条指令和数据,以运算器为中心,注定了其本质是线性的和串行的。主要体现在存储器存取的串行性和指令执行的串行性。解决冯诺依曼“串行”瓶颈的是哈佛结构,哈佛结构采用了指令存储和数据存储分开存储的方式,可以提高指令的并发性,提高指令执行效率。

13、什么是专用机和通用机?

14、进程的PCB的结构是怎样的?

描述信息、控制和管理信息,资源分配清单,处理器清单(主要是放各种寄存器的值)

15、进程切换和处理机模式切换的区别?

进程切换是进程运行改变了,进程环境变化了。而处理机模式的切换是CPU状态的转换,比如从用户态到核心态,从核心态转换成用户态。

16、什么是优先级数组?

每个运行队列都有两个优先级数组,一个活跃的和一个过期的。优先级数组在kernel/ sched.c中被定义,它是prio_array类型的结构体。优先级数组是一种能够提供O(1)级算法复杂度的数据结构。优先级数组使可运行处理器的每一种优先级都包含一个相应的队列,而这些队列包含对应优先级上的可执行进程链表。优先级数组还拥有一个优先级位图,当需要查找当前系统内拥有***优先级的可执行进程时,它可以帮助提高效率 

17、总线周期

总线周期通常指的是CPU完成一次访问MEM或I/O端口操作所需要的时间。一个总线周期由几个时钟周期组成

18、结构冲突是什么?解决的办法有哪些?

由于硬件资源有限导致的,多个指令执行阶段对同一硬件提出访问请求,导致的冲突。

插入暂停周期
比如在运行时同时有两个指令对资源提出访问请求,一个指令在取指阶段提出取指令的请求访问内存,一个指令在运算阶段提出对数据的访存,这时会产生访存冲突,这时可以暂停一个周期,等待上一条指令的访存结束,之后进行下一条指令的执行,进行取指操作,这样去除了结构相关,但是对应暂停的那一周期内无指令完成执行。


设置备用硬件资源
同样,对于上面情况中,有同时对内存的访问来获取数据和指令,我们可以将数据与指令进行分开存储设置相互独立的指令存储器与数据存储器。推广一下就是对于其他的硬件资源都可以通过设置多个备用的硬件资源来防止结构冲突,但是这样会导致成本的提升。
 

19、微指令的格式?各自的优缺点?

格式: 
    垂直型微指令、水平型微指令、混合型微指令。 
    1.垂直型微指令 
        一条微指令定义并执行一种基本操作。 
        优点:微指令短、简单、规整、便于编写微程序。 
        缺点:微程序长,执行速度慢;工作效率低。  
    2.水平型微指令 
        一条微指令定义并执行几种并行的基本操作。 
        优点:微程序短,执行速度快。 
        缺点:微指令长,编写微程序比较麻烦。 
    3.混合型微指令 
    在垂直型的基础上增加一些不太复杂的并行操作。微指令不长,便于编写;微程序不长,执行速度快。 
 

20、打开文件的过程?

用户进程首次使用文件时,使用系统调用open将指明文件的FCB从外存复制到系统打开文件表的一个表目中,并将该表目的索引返回给用户进程,然后进程打开文件表中会增加相应的表目,并通过指针与系统打开文件表中的表目相连。

21、什么是接口?

接口是对类的抽象描述,只有方法的特征而无方法的实现,因为这的方法可以在不同的地方被不同的类实现,而这些类可以具有不同的行为。

22、面向对象的6大原则?

开闭原则(OCP),李氏替换原则(LSP),依赖注入原则(DIP),接口隔离(ISP),单一职责(SRP),迪米特法则(LKP)

1.单一原则。一个类应该有且只有一个变化的原因。单一职责原则将不同的职责分离到单独的类,每一个职责都是一个变化的中心。需求变化时,将通过更改职责相关的类来体现。如果一个类拥有多于一个的职责,则多个职责耦合在一起,会有多于一个原因来导致这个类发生变化。一个职责的变化可能会影响到其他的职责,另外,把多个职责耦合在一起,影响复用性。

2.里氏替换原则,就是要求继承是严格的is-a关系。所有引用基类的地方必须能透明地使用其子类的对象。在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。例如:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是我喜欢狗,不能据此断定我喜欢动物,因为我并不喜欢老鼠,虽然它也是动物。

3.依赖倒置原则。依赖倒置原则的核心就是要我们面向接口编程,理解了面向接口编程,也就理解了依赖倒置。低层模块尽量都要有抽象类或接口,或者两者都有。变量的声明类型尽量是抽象类或接口。

4.接口分离原则。一个类对另一个类的依赖应该建立在最小的接口上,通俗的讲就是需要什么就提供什么,不需要的就不要提供。接口中的方法应该尽量少,不要使接口过于臃肿,不要有很多不相关的逻辑方法。

5.多用组合(has-a),少用继承(is-a)。如果新对象的某些功能在别的已经创建好的对象里面已经实现,那么应当尽量使用别的对象提供的功能,使之成为新对象的一部分,而不要再重新创建。可以降低类与类之间的耦合程度。

6.开闭原则。对修改关闭,对扩展开放。在软件的生命周期内,因为变化,升级和维护等原因需要对软件原有代码进行修改,可能会给旧代码引入错误,也有可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现。不过这要求,我们要对需求的变更有前瞻性和预见性。其实只要遵循前面5中设计模式,设计出来的软件就是符合开闭原则的。

 

 

 

23、面向过程与面向对象编程的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为

面向过程
  优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 
  缺点:没有面向对象易维护、易复用、易扩展

面向对象
  优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 
  缺点:性能比面向过程低

 

 

24、对称加密和非对称加密?

  • 对称加密: 加密和解密的秘钥使用的是同一个.
  • 非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
  • 非对称加密算法:

      公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

  • 常见的非对称加密算法有:

      RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

25、变量的分类

根据作用域:可分为全局变量局部变量

根据生存周期:可分为静态存储方式和动态存储方式,具体地又分为自动的auto)、静态的static)、寄存器的register)、外部的extern

静态存储方式是指在程序运行期间分配固定的存储空间的方式,动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式

26、奈奎斯特抽样

奈奎斯特抽样定理指若频带宽度有限的,要从抽样信号中无失真地恢复原信号,抽样频率应大于2倍信号最高频率。

27、数据链路层和网络层的接口

28、java和c++的本质区别

通常,我们聊到Java,第一印象“面向对象”,“没有指针,编写效率高,执行效率较低”。更深入、专业一点就谈论 “java内存自动回收(GC垃圾回收机制),多线程编程”。** 
C++的三大特性是封装、继承和多态。**

总结如下:

1、 JAVA的应用在高层,C++在中间件和底层

2、 JAVA离不开业务逻辑,而C++可以离开业务为JAVA们服务

3、 java语言给开发人员提供了更为简洁的语法;取消了指针带来更高的代码质量;完全面向对象,独特的运行机制是其具有天然的可移植性。

4、 java 是运行在JVM上的,之所以说它的可移植性强,是因为jvm可以安装到任何的系统

5、 c++不是不能在其他系统运行,而是c++在不同的系统上运行,需要不同的编码(这一点不如java,只编写一次代码,到处运行)。java程序一般都是生成字节码,在JVM里面运行得到结果。

6、 java 在web 应用上具有c++ 无可比拟的优势

7、 java在桌面程序上不如c++实用,C++可以直接编译成exe文件,指针是c++的优势,可以直接对内存的操作,但同时具有危险性 。(操作内存的确是一项非常危险的事情,一旦指针指向的位置发生错误,或者误删除了内存中某个地址单元存放的重要数据,后果是可想而知的)。

8、 垃圾回收机制的区别。c++用析构函数回收垃圾,java自动回收(GC算法),写C和C++程序时一定要注意内存的申请和释放。

9、 java 丰富的插件是java 发展如此迅速的原因 
10、 java 很大的沿袭了c++的一些实用结构 
11、 对于底层程序的编程以及控制方面的编程,c++很灵活,因为有句柄的存在。

 

 

29、计算机系统层次结构?

微程序机器层、传统机器语言层、操作系统层、汇编语言层、高级语言层

30、计算机网络的功能有哪些?

数据通信,资源共享,分布式处理,负载均衡,提高可靠性

31、new/delete 和malloc/free的区别

new/delete是C++的关键字,而malloc/free是C语言的库函数,后者使用必须指明申请内存空间的大小,对于类类型的对象,后者不会调用构造函数和析构函数

 

32、数据库的三级模式和两级映像?

三级模式:内模式、模式、外模式     两级映射:外模式-模式映射、模式-内模式映射
为什么要有三种模式和两级映射:有这三种模式能有效地组织、管理数据,提高数据库的逻辑独立性和物理独立性,用户级对应外模式,概念级对应模式,物理级对应内模式。

逻辑独立性:当模式发生改变,只要改变外模式-模式之间的映射关系,就可以保持外模式不变,对应的应用程序也可以不变。

物理独立性:通过模式-内模式的映射,定义建立数据的逻辑结构和物理结构的映射的对应关系,当存储结构发生变化时,只需改变模式-内模式映射,就能保持模式不变,因此应用程序也可以保持不变。

内模式:

内模式也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。需要定义所以的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。

例如,记录的存储方式是顺序存储、B树结构存储还是Hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定

模式:又称为概念模式或逻辑模式,它是由数据库设计者综合所有的用户数据,按照统一的观点构造全局逻辑结构,是对全部数据的逻辑结构和特征的总体描述。它由数据模定义语言DDL来描述、定义、体现和反映数据库系统的整体观。概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作、数据的完整性和安全性等要求。但是,概念模式不涉及存储结构、访问技术等细节。只有这样,概念模式才算做到了物理数据独立性

外模式:外模式也称用户模式或子模式,是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部记录类型组成。用户使用数据操纵语言对数据库进行操作,实际上是对外模式的外部记录进行操作。

总之,数据按外模式的描述提供给用户;按内模式的描述存储在磁盘上;而模式提供了连接这两级模式的相对稳定的中间层,并使得两级中任意一级的改变都不受另一级的牵制。

 

33、数据库怎么对共享数据进行保护

完整性约束:主键约束,外键约束, 属性约束, 域约束, 断言约束, 触发器约束

数据库安全性:指数据库的任何部分都不允许受到恶意侵害或未经授权的存取和修改

技术:

    身份认证:用户名加口令、生物特征识别技术、基于USB Key的身份认证方法

    存取控制:不同用户可以被授权使用相同或不同的数据库数据集合,通过数据库系统的存取控制机制实现

    建立视图:隐藏用户不需要看见的数据,其构造基于基本表或视图

    数据加密:根据一定的算法将原始数据变换为不可识别的格式,从而使得不知道解密算法的人无法获知数据的内容

    审计跟踪:即监视功能

34、数据库的并发控制有什么好处?会带来什么问题?如何解决?

并发控制:在多个事物对数据库并发操作的情况下,对数据库实行的管理和控制

 并发控制的好处:1.提高吞吐量和资源利用率    2.减少等待时间

带来的数据不一致性问题

丢失更新:事物并发执行时,一个事物的提交的结果破坏了另外一个事物提交的结果,导致一个修改丢失

不可重复读:一事物读取数据后,另一事物执行更新操作,使上一个事物无法在重复前一次的结果

读“脏”数据:事物1修改了某一数据并将其写回磁盘,事物2读取同一数据后,事物1由于某种原因被撤销,这时事物1将已修改过的数据恢复原值,事物2读到的数据就与数据库中的数据不一致,这种读也称为脏读

原因:事物执行时收到其他事物干扰,破坏了事物的隔离性

解决方法:封锁技术和时标技术

35、排他锁和共享锁的区别?

封锁

    排他锁(X锁):只用获得了数据的X锁的事务才可以对数据进行读取与修改,其他事务不能再对该数据加其他锁

    共享锁(S锁):获得数据共享锁的事物可读但不可修改数据,其他事物只能加S锁不能加X锁

36、活锁和死锁的区别?

活锁:

简单描述:


事务T1封锁了数据R

事务T2又请求封锁R,于是T2等待。

T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。

T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……

T2有可能永远等待,这就是活锁的情形 


解决方法:

采用先来先服务的策略

死锁:

简单描述:


事务T1封锁了数据R1

T2封锁了数据R2

T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁

接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁

这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远不能结束,形成死锁


死锁的预防:

一次封锁法
每个事务必须一次将所有要使用的数据全部加锁

37、计算机网络系统分层的优缺点?

计算机网络系统分层结构的优点(OSI模型):
  1、各层之间相互独立,即不需要知道低层的百结构,只要知道是通过层间接口所提供的服务。
  2、灵度活性好,是指只要接口不变就不会因层的变化(甚至是取消该层)而变化。
  3、各层采用最合适的问技术实现而不影响其他层。降低层与层之间的耦合度。
  4、有利于促进标准化。
       5、是网络变得简单、有利于模块化设计、

计算机网络系统分层结构的缺点(OSI模型):

       1、层次数量与内容不是最佳的,会话层和表示层这两层几乎是空的,数据链路层和网络层包含内容太多,有很多子层的插入,每个子层都有不同的功能。

        2、模型及相应的服务定义和协议十分复杂,它们很难实现,有些功能,如流量控制和差错控制,都会在每一层重复出现,降低了系统的效率。

TCP/IP参考模型与协议也有它自身的缺陷 :

1) 它在服务、接口与协议的区别上不清楚。一个好的软件工程应该将功能与实现方法区分开来,TCP/IP恰恰没有很好的做到这点,这就使得TCP/IP参考模型对于使用新技术的指导意义不够。

2) TCP/IP的主机-网络层本身并不是实际的一层,它定义了网络层与数据链路层的接口。物理层与数据链路层的划分是必要和合理的,一个好的参考模型应该将它们区分开来,而TCP/IP参考模型却没有做到这点。

OSI参考模型与TCP/IP参考模型的主要差别

1) TCP/IP一开始就考虑到多种异构网的互联问题,并将网际协议IP作为TCP/IP的重要组成部门。但ISO最初只考虑到使用一种标准的公用数据网将各种不同的系统互联在一起。

2) TCP/IP一开始就对面向连接各无连接并重,而OSI在开始时只强调面向连接服务。

3) TCP/IP有较好的网络管理功能,而OSI到后来才开始这个问题,在这方面两者有所不同。

osi只是参考,一般用不到 互联网就是用的tcp/ip

38、RUP是什么

RUP往往和UML联系在一起,对软件系统建立可视化模型帮助人们提供管理软件复杂性的能力。RUP告诉我们如何可视化的对软件系统建模,获取有关体系结构与组件的结构和行为信息。

验证软件质量

在RUP中软件质量评估不再是事后进行或单独小组进行的分离活动,而是内建于过程中的所有活动,这样可以及早发现软件中的缺陷。

控制软件变更

迭代式开发中如果没有严格的控制和协调,整个软件开发过程很快就陷入混乱之中,RUP描述了如何控制、跟踪、监控、修改以确保成功的迭代开发RUP通过软件开发过程中的制品,隔离来自其他工作空间的变更,以此为每个开发人员建立安全的工作空间

39、什么是敏捷开发?

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。相对于非敏捷,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。

40、讲一下极限编程XP

极限编程(ExtremeProgramming,简称XP)是由KentBeck1996年提出的,是一种软件工程方法学,是敏捷软件开发中可能是最富有成效的几种方法学之一。

极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是

XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

极限编程的主要目标在于降低因需求变更而带来的成本。在传统系统开发方法中,系统需求是在项目开发的开始阶段就确定下来,并在之后的开发过程中保持不变的。这意味着项目开发进入到之后的阶段时出现的需求变更将导致开发成本急速增加。

41、什么是用例图?它的基本组件有哪些?

用例图(Use Case Diagram):用例图显示谁是相关的用户,用户希望系统提供什么服务(用例),以及用例之间的关系图。用例图主要的作用是获取需求、指导测试。 

用例图的4个基本组件:参与者(Actor)、用例(Use Case)、关系(Relationship)和系统。 

42、堆、栈的特点、作用?

栈:容量小,存取速度 快,适合存储生命周期短的数据,栈中存储变量(称为局部变量),特点是先进后出,使用完后就会销毁
堆:容量大,存取速度慢,适合存储生命周期长的数据,堆适合存储对象,可以取出任意位置的数据。

 

43、栈在函数调用起什么作用?

       函数调用的局部状态之所以用栈来记录是因为这些数据的存活时间满足“后入先出”(LIFO)顺序,而栈的基本操作正好就是支持这种顺序的访问。可以看到,函数的调用有完美的嵌套关系——调用者的生命期总是长于被调用者的生命期,并且后者在前者的之内。
这样,被调用者的局部信息所占空间的分配总是后于调用者的(后入),而其释放则总是先于调用者的(先出),所以正好可以满足栈的LIFO顺序,选用栈这种数据结构来实现调用栈是一种很自然的选择。

44、设计模式有哪些?

 

设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

 

45、触发器的作用?

       触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

 

46、索引的作用?和它的优点缺点是什么?

      索引就一种特殊的查询表,数据库的搜索可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度同时也增加了数据库的尺寸大小。

47、游标是什么?

 游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

 

48、列举几种表连接方式,有什么区别?

内连接、自连接、外连接(左、右、全)、交叉连接 内连接:只有两个元素表相匹配的才能在结果集中显示。 外连接: 左外连接:左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。 右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。 全外连接:连接的表中不匹配的数据全部会显示出来。 交叉连接: 笛卡尔效应,显示的结果是链接表数的乘积

 

 

你可能感兴趣的:(计算机考研复试)