[转载]计算机网络

来源:http://wenku.baidu.com/view/c5192928bd64783e09122bb9.html

计算机网络

1.网络结构

在OSI参考模型中,物理层的作用是透明的传输比特流。对等实体在一次交互作用中传送的信息单位称为协议数据单元,它包括控制信息和用户数据两部分。上下层实体之间的接口称为服务访问点(SAP),网络层的服务访问点也称为网络地址,通常分为网络号和主机号。

OSI参考模型分为:物理层、数据链路层,网络层,传输层,会话层,表示层,应用层。

物理层涉及到在信道上传输的原始比特流。数据链路层的主要任务是加强物理层传输原始比特流的功能,使之对应的网络层显现为一条无错线路。发送包把输入数据封装在数据帧,按顺序传送出去并处理接受方回送的确认帧。网络层关系到子网的运行控制,其中一个关键问题是确认从源端到目的端如何选择路由。传输层的基本功能是从会话层接受数据而且把其分成较小的单元传递给网络层。会话层允许不同机器上的用户建立会话关系。

TCP/IP的五层结构图:物理层、数据链路层、网络层、运输层,应用层。

2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?

答:IP是Internet Protocol的简称,是网络层的主要协议,作用是提供不可靠、无连接的数据报传送。TCP是Transmit Control Protocol(传输控制协议)的缩写,在运输层,TCP提供一种面向连接的,可靠的字节流服务;UDP是User Datagram Protocol(用户数据报协议)的缩写,在运输层,UDP提供不可靠的传输数据服务。

3.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?

答:交换机属于OSI第二层即数据链路层设备。它根据MAC地址寻址,通过站表选择路由,站表的建立和维护由交换机自动进行。路由器属于OSI第三层即网络层设备,它根据IP地址进行寻址,通过路由表路由协议产生。交换机最大的好处是快速,路由器最大的好处是控制能力强。

4.交换和路由的区别是什么?VLAN有什么特点?

交换是指转发和过滤帧,是交换机的工作,它在OSI参考模型的第二层。而路由是指网络线路当中非直连的链路,它是路由器的工作,在OSI参考模型的第三层。交换和路由的区别很多。首先,交换是不需要IP的,而路由需要,因为IP就是第三层的协议,第二层需要的是MAC地址;再有,第二层的技术和第三层不一样,第二层可以做VLAN、端口捆绑等,第三层可以做NAT、ACL、QOS等。

VLAN是虚拟局域网的英文缩写,它是一个纯二层的技术,它的特点有三:控制广播,安全,灵活性和可扩展性。

5.什么是SNMP协议?它有什么特点?SNMP协议需要专门的连接么?

答:SNMP(Simple Network Manager Protocol)即简单网络管理协议,它为网络管理系统提供了底层网络管理的框架。SNMP的特点是:SNMP易于实现;SNMP协议是开放的免费产品;

SNMP协议有很多详细的文档资料,网络业界对这个协议也有较深入的了解,这些都是SNMP协议进一步发展和改进的基础;SNMP协议可用于控制各种设备。

SNMP是一种无连接协议。无连接的意思是它不支持像TELNET或FTP这种专门的连接。通过使用请求报文和返回响应的方式,SNMP在管理代理和管理员之间传送消息。

6.路由表是做什么用的?在Linux环境中怎么配置一条默认路由?

答:路由表是用来决定如何将包从一个子网传送到另一个子网的,换句话说就是用来决定从一个网卡接受到的包应该送到哪一个网卡上去。路由表的每一行至少由目标网络号、netmask、到这个子网应该使用的网卡这3条信息。当路由器从一个网卡接受到一个包时,它扫描路由表的每一行,用里面的netmask和包里的目标IP地址做并逻辑运算(&)找出目标网络号。如果此网络号和这一行里的网络号相同,就将这条路由保留下来作为备用路由。如果已经有备用路由了,就在这两条路由里将网络号最长的留下来,另一条丢掉。如此接着扫描下一行直到结束。如果扫描结束仍没有找到任何路由,就用默认路由。确定路由后,直接将包送到对应的网卡上去。

在Linux上可以用“route add default gw<默认路由器IP>”命令配置一条默认路由。

7.在网络中有两台主机A和B,通过路由器和其他交换机设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么判断故障点?怎么排除故障?

答:测试这两台机器是否连通:从一台机器ping另一台机器。如果ping不同,用traceroute命令可以确定是哪个路由器不能连通,然后再找问题是否在交换设备或HUB或网线等。

8.每个路由器在寻找路由器时需要直到哪5部分信息?

答:所有的路由器需要如下信息为报文寻找路由:目的地址 报文发送的目的主机。邻站的确定  指明谁直接连接到路由器的接口上。路由的发现  发现邻站知道哪些网络。 选择路由  通过从邻站学习到的信息,提供最优的到达目的地的路径。 保持路由信息 路由器保存一张路由表,它存储所知道的所有路由信息。

9.什么是BGP?

答:BGP(Border Gateway Protocol,边界网关协议)是一种在自治系统之间动态交换路由器信息的路由协议。一个自治系统的经典定义是一个管理机制控制之下的一组路由器,它使用IGP和普通度量值向其他自治系统转发报文。

10.自适应网卡只有红灯闪烁,绿灯不亮,这种情况正常?

答:自适应网卡红灯代表Link/Act(连通/工作),即连通时红灯长亮,传输数据时闪烁;绿灯代表FDX(全双工),即全双工状态时亮,半双工状态时灭。如果一个半双工的网络设备和自适应网卡相连,由于这张网卡是自适应网卡,它就会工作在半双工状态,所以绿灯不亮也属于正常情况。

11.两台笔记本电脑连起来后ping不通,你觉得可能存在哪些问题?

答:(1)首先想到的就是你的网线问题。确认网线是否正确,电脑之间连的线和电脑与HUB之间连的线分正线、反线,是不同的。但是对于使用千兆位网卡的除外,千兆位网卡有自动识别的功能,既可以是正线也可以是反线。(2)局域网设置问题。电脑互连是要设置的。看看是否安装了必要的网络协议,最重要的是,IP地址是否设置正确。互连的时候,最好一台为主,一台为副,主的设为网关。(3)网卡驱动未正确安装。(4)防火墙设置有问题。(5)是否有什么软件阻止ping包。

12.解释什么叫“透明”?什么叫“网格”?

答:透明即向高层隐蔽其具体实现。网格就是有规律的方格集,是虚拟的。网格是把整个因特网整合一台巨大的超级计算机,实现各种资源的全面共享。网格的根本特征不是它的规模,而是资源共享,消除资源孤岛。在不同地区的计算机各自分析某一项计算的一部分,综合起来计算出同一项东西。

13.我们在南京,与深圳的网络是通的,但和北京的网络不通,你以怎样的顺序查找问题所在?

答:查找路由器是否可以测试到目的地、所经过的路由器及路由延迟状态。通过这个命令看最后的一个数据包是在哪儿被丢弃或中断的。

14.香农定理是什么?

答:香农定理:香农定理描述了有限带宽、有随机热噪声信道的最大传输速率与信道带宽、信号噪声功率比之间的关系。在有随机热噪声的信道上传输数据信号时,数据传输率Rmax与信道带宽B、信噪比S/N的关系为:Rmax=B*log2(1+S/N)。

香农定理由如下的公式给出:C=B*log2(1+S/N),其中C是可得到的链路速度,B是链路的带宽,S是平均信号功率,N是平均噪声功率,信噪比(S/N)通常用分贝(dB)表示,分贝数=10*lg(S/N)。

15.IP地址的分类

A类、B类和C类地址的网络号字段net-id分别为1,2和3字节长,而在网络号字段的最前面有1~3bit的类别比特,其数值分别规定为0,10,110。A类、B类和C类地址的主机号字段分别为3个、2个和1个字节长。

IP地址的使用范围

网络类别

最大网络数

第一个可用的网络号

最后一个可用的网络号

每个网络中的最大主机数

A

126(27-2)

1

126

16777214(224-2)

B

16384(214)

128.0

191.255

65534(216-2)

C

2097152(221)

192.0.0

223.255.255

254(28-2)

一般不使用的特殊IP地址

net-id

host-id

源地址使用

目的地址使用

代表的意思

0

0

可以

不可

在本网络上的主机

0

host-id

可以

不可

在本网络上的某个主机

全1

全1

不可

可以

只在本网络上进行广播

net-id

全1

不可

可以

对net-id上的所有主机进行广播

127

任何数

可以

可以

用作本地软件环回测试之用

16.TCP/IP 建立连接的过程?(3-way shake)

答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

17. IP组播有那些好处?
答:Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的急剧
消耗和网络拥挤问题。组播是一种允许一个或多个发送者(组播源)发送单一的数据包
到多个接收者(一次的,同时的)的网络技术。组播可以大大的节省网络带宽,因为无
论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。所以说组播
技术的核心就是针对如何节约网络资源的前提下保证服务质量。

18.基础知识

1)    计算机网络:利用各种通信手段,把分散的计算机有机的连在一起,达到互相通信而且共享软件、硬件和数据等资源的系统。

2)    组成数据通信网络的基本要素为信源、信宿、传输系统3项。

3)    通信模型:信源(工作站)->发送器(调制解调器) ->传输系统(公用电话网) ->接收机(调制解调器) ->信宿(服务器)

4)    10BASE-T标准规定的网络的网络拓扑结构是星形,网络速率是10Mb/S,网络所采用的网络介质是双绞线。

5)    传统的加密方法可以分成两类:替代密码和换位密码。现代密码学采用的算法主要有:秘密密钥算法和公开密钥算法。

6)    数据传输通常可以分成5个阶段:(1)建立通信链路;(2)建立数据传输链路;(3)传送通信控制信号和传输数据信息;(4)数据传输结束,双方通过控制信息确认传输结束;(5)切断数据传输链路。

7)    在WWW中,使用统一资源定位器URL来唯一地标识和定位因特网中的资源,它由3部分组成:客户与服务器之间所使用的通信协议和主机域名(或IP地址)和文件路径和文件名。

8)    第一代网络以单计算机为中心的联机系统,第二代网络以远程大规模互联为主要特点。

9)    单工是只能有一个方向的通信而没有反方向的交互;半双工是通信的双方都可以发送信息。但不能双方同时发送信息。全双工是通信的双方都可以同时发送信息和接受信息。

10)计算机通信子网技术发展的顺序是线路交换-报文组交换-帧中继-ATM。

11)使用同样网络操作系统的两个局域网络连接时,为使连接的网络从网络层到应用层都能一致,连接时必须使用网桥。

12)IEEE 802将数据链路层划分为两个子层,上子层是逻辑链路控制LLC,下子层是媒体接入控制MAC。 

13)涉及OSI模型层次最多的设备是网关。

14)FTP工作时使用2条TCP连接来完成文件传输。

15)ICMP是Internet控制报文协议,处于网络层(IP层)。

16)主要拓扑结构:总线、星形、树形,环形。

17)异步传输模式(ATM)本质上一种高速分组交换模式,用固定大小的分组单元传送信息,支持多媒体通信,包括音频、视频和数据,结合了线路交换和分组交换的优点,被用于B-ISDN。

18)分组交换:以分组为单位,在网络层上进行;帧中继:以帧为单位,在数据链路层上进行;异步传输:以信元为单位,在数据链路层上进行,建立在大容量光纤介质基础上的,适用于LAN和WAN。

19)有线传输介质:同轴电缆,双绞线和光纤。

20)转发器将信号放大并整形后再转发出去,转发器又称为中继器,转发器的作用是消除信号由于经过一长段电缆而造成的失真和哀减,使信号的波形和强度达到所要求的指标,它工作在物理层,中继器获取衰减或损失的信号并重新生成它。

21)Internet采用TCP/IP协议;Internet物理地址和IP地址转换采用ARP (Address Resolution Protocol)(地址解析协议;IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与之后才能区分哪些是网络位哪些是主机位。

19.试题(选择题,只是答案中之一。):

1)    如果把一个网络40.15.0.0分为两个子网,第一个子网是40.15.0.0/17,那么第二个子网将会是40.15.128.0/17。解析:让主网分成两个网段,子网掩码分别是0xff 0xff 0x80 0x00和0xff 0xff 0x00 0x00。

2)    如果一个蠕虫病毒攻击了一个家用PC机的A类地址主机的话,这个地址最有可能接受很多ICMP目的无法抵达包。 解析:大量发出IP请求,肯定很多不可达,返回不可达错误。

3)    在一个IP数据包到达目的地址之前,它可能成为碎片,而且不会重组。 解析:网络问题,包未达到终点不可能重组,但可以分散成碎片。

4)    在TCP/IP协议栈里,如果出现阻塞情况,下面哪种情况最有可能发生?丢包 解析:网络阻塞问题,拥塞导致丢包。

5)    文件传输是基于哪种协议?TCP  解析:FTP是有连接的服务,所以必须基于TCP协议。

6)    一个C类网络最多能容纳多少台主机? 254 解析:子网中IP为0~255,其中0和255不能用,所以是254个。

7)    SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。 SMTP 协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP服务器就是遵循SMTP协议的邮件发送服务器。

8)    以太网转换控制包是基于目的IP地址。

9)    如果TCP服务器在客户端发出数据报之前已经崩溃了,TCP/IP栈可能返回一个SYN。解析:SYN包是TCP连接的第一个包,是非常小的一种数据包。SYN攻击包括大量此类的包。由于这些包看上去来自实际不存在的站点,因此无法有效地进行处理。SYN攻击就是利用TCP 连接的3次握手机制,但发起攻击端只来一两次握手,而被攻击端一直在试图完成TCP连接,因此造成资源不足。

10)在Windows2000操作系统中,配置IP地址的命令是ipconfig。若用ping命令来测试本机是否安装了TCP/IP协议,则正确的命令是ping 127.0.0.1。如果要列出本机当前建立的连接,可以使用的命令是netstat –a。

操作系统

1.基本知识点:

1)    操作系统是控制和管理计算机软硬件资源,以尽量合理有效的方法组织多个用户共享多种资源的程序集合。

2)    操作系统的基本功能:(1)处理机管理。主要功能包括进程控制、进程调度、进程同步和进程通信。(2)存储器管理。主要功能包括内存分配、地址映射、内存保护和内存扩充。(3)设备管,也叫I/O管理。主要功能包括缓冲区管理、设备分配、设备驱动和设备的无关性处理。(4)文件管理。主要功能包括文件存储空间的管理、文件操作的一般管理、目录管理、文件的读写管理和存取控制。(5)用户界面管理。操作系统的用户界面就是操作系统与用户的接口,包括控制接口和程序接口。

3)    现代操作系统的基本特征:并发性、共享性、虚拟性、异步性和不确定性。

4)    所谓中断是指系统发生某一事件后,CPU暂停正在执行的程序去执行处理该事件的程序过程,处理中断事件的程序称为中断处理程序,产生中断信号的那个部件称为中断源。中断处理具体过程:保存现场;分析原因,转中断处理程序;恢复现场。

5)    进程是一个具有独立功能的程序关于数据集合的一次可以并发执行的运行活动,其基本特征:动态特征、并发特征、独立性、相互制约性。进程的构成:程序、数据和进程控制块。进程有三种基本的调度状态:执行状态、就绪状态和等待状态。

6)    进程的引入大大地提高了资源的利用率和系统的吞吐量,而引入线程的目的是为了减少程序并发所付出的系统开销。进程是资源分配的单位,而线程是系统调度的单位。

7)    所谓死锁是多个进程间的一种僵持状态。进程死锁的原因:资源竞争及进程推进顺序非法。死锁的4个必要条件:互斥、占有等待、不可剥夺、环路。死锁的处理:鸵鸟策略、预防策略、避免策略、检测与解除死锁。

8)    临界资源是一次只允许一个进程使用的资源。临界区是在进程中操作临界资源的程序段。

2.进程和线程的区别?
答:线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

3.网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?

解析:(1)进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品

(2)线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。

两者都可以提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

答:用多进程时每个进程有自己的地址空间,线程则共享地址空间。所有其他区别都是由此而来的:(1)速度:线程产生的速度快,线程间的通信快,切换快等,因为它们在同一个地址空间内。(2)资源利用率:线程的资源利用率比较好也是因为它们在同一个地址空间内。(3)同步问题:线程使用公共变量/内存时需要使用同步机制,还是因为它们在同一个地址空间内。

4. 操作系统中常见的进程调度策略有哪几种?

答:FCFS(先来先服务),优先级,时间片轮转,多队列、多级反馈队列。

5.进程间的通信如何实现?

答:现在最常见的进程间通信的方式有:信号,信号量,消息队列,共享内存,管道。信号是使用信号处理器来进行的,信号量是使用P、V操作来实现的。消息队列是比较高级的一种进程间通信方法,因为它真的可以在进程间传送消息。

6.在Windows编程中互斥器(mutex)的作用和临界区(critical section)类似,请说一下二者间的主要区别。

答:两者的区别是mutex开业用于进程之间互斥,critical section是线程之间的互斥。

7.进程进入等待状态有哪几种方式?

答:CPU调度给优先级更高的Thread(线程),原先Thread 进入Waiting(等待)状态。阻塞的Thread获得资源或者信号,进入Waiting状态。在时间片轮转的情况下,如果时间片到了,也将进入等待状态。

8.试说明进程在三个基本状态之间转换的典型原因。

答:a.处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态变为执行状态。b.当前进程因发生某事件而无法执行,如访问已被占有的临界资源,就会使进程由执行状态变为阻塞状态。c.当前进程因事件片用完而被暂停执行,该进程便由执行状态变为就绪状态。

9.同步机构应遵循哪些基本准则?

答:a.空闲让进;b.忙则等待;c.有限等待;d.让权等待。

10.在单处理机环境下,进程间有哪几种通信方式?

答:a.共享存储器系统通信方式;b.消息传递系统通信方式;c.管道通信方式。

11.试比较消息队列与管道通信机制。

答:a.所谓管道,是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称pipe文件,管道通信是属于共享存储系统的。b.消息队列通信机制属于消息传递系统通信机制,存在通信链路,有消息的格式,有若干缓冲队列,采用独特的发送原语和接受原语。

12.在请求分页系统中,常采用哪几种页面置换算法?

答:a.最佳置换算法;b.先进先出算法;c.最近最久未使用LRU置换算法;d.Clock置换算法;e.此外,还有最少使用置换算法和页面缓冲算法。

数据库

1.基础知识点:

1NF:第一范式。如果关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R属于第一范式模式。第一范式的模式要求属性值不可再分裂成更小部分,即属性项不能是属性组合或由组属性组成。2NF:第二范式。如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称R为第二范式模式。(如果A是关系模式R的候选键的一个属性,则称A是R的主属性,否则称A是R的非主属性。) 3NF:第三范式。如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。 BCNF:BC模式。如果关系模式R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R为BCNF的模式。4NF:第四范式。设R是一个关系模式,D是R上的多值依赖集合。如果 D中成立非平凡多值依赖X→→Y时,X必是R的超键,那么称R是第四范式的模式。

2.试题

1)    设有关系R(S,D,M),其函数依赖集F={S→D,D→M}。则关系R至多满足2NF。 解析:属于依赖关系,所有至多满足第二范式。

2)    找出表ppp里面num最小的数,不能使用min函数。  答:select * from ppp where num<=all(select num from ppp) 或者:select top 1 num from ppp order by num。

3)    找出表ppp里面最小的数,可以使用min函数。 答:select * from ppp where num=(select Min(num) from ppp)。

4)    选择表ppp2中num重复的记录。 答: select * from ppp2 where num in(select num from ppp2 group by num having(count(num)>1))。

5)    写出复制表、拷贝表和四表联合的SQL语句。  答:复制表(只复制结构,源表名:A,新表名:B): select * into B from A where 1=0   拷贝表(拷贝结构,源表名:A,新表名:B): select * into B from A  四表联查: select * from A,B,C,D where 关联条件

6)    在SQL Server中如何用SQL语句建立一张临时表?  答: create table #Temp(字段1 类型,字段2 类型…)   注意,临时表要在表名前面加 “#”。

7)    %代表任意长度(长度可以为0)的字符串,_ 代表任意单个字符。如果用户要查询的语句本身就含有%或_,这时就要使用escape’<换码字符>’短语对通配符进行转义了。

8)    集函数SUM,AVG中的列必须是数值型。

综合的是选择题

9)    每一个部门的每个工种的工资最大值? select dept_id,job_cat,max(salary)from employee group by dept_id,job_cat;

10)在primary 和unique两种约束的情况下,Oracle数据库会隐形创建一个唯一索引。

11)在select语句中包含一个where关键词,group by关键词一般在where关键词之后,order by 关键词一般在select语句中所有关键词之后。

12)select last_name,salary from employees order by salary; select last_name,salary from employees order by 2 asc; 这两个SQL语句是相同的结果。

13)如果你想把时间显示成像“2005111014:44: 17”这样的格式,SQL语句: select to_char(sydate,’yyyymmdd hh24:mi:ss’)from dual;

14)select语句中用来连接字符串的符号是+。

15)如果要从字符串“Hello world”中提取出“ello world”这样的结果,SQL语句: select lower(trim(‘H’from ‘Hello world’))from dual;

3.存储过程和函数的区别是什么?

答:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程。而函数通常是数据库已定义的方法,它接受参数并返回某种类型的值,并且不涉及特定用户表。

4.事务是什么?

答:事务是作为一个逻辑单元执行的一系列操作。一个逻辑工作单元必须有4个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能称为一个事务。

5.游标的作用是什么?如何知道游标已经到了最后?

答:游标用于定位结果集的行。通过判断全局变量@@FETCH_STATUS可以判断其是否到了最后。通常此变量不等于0表示出错或到了最后。

6.触发器分为事前触发和事后触发,这两种触发有何区别?语句级触发和行级触发有何区别?

答:事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。

7.什么叫做SQL注入式攻击?如何防范?

答:所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。防范SQL注入式攻击闯入:只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。第一,替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。第二,删除用户输入内容中的所有连字符,防止攻击者顺利获得访问权限。第三,对于用来执行查询的数据库账户,限制其权限。第四,用存储过程来执行所有的查询。第五,检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行。第六,将用户登录名称、密码等数据加密保存。第七,检查提取数据的查询所返回的记录数量。

8.为了防止在查询记录的时候被其他用户更改记录,应该采用什么方法?如何用查询语句实现该方法?

答: 添加一个“时间戳”类型的字段就可以了。timestamp这种数据类型会根据当前时间自动产生一个时间字符串,确保这些数在数据库中是唯一的。timestamp一般用做给表行加版本戳的机制,存储大小为8个字节。一个表只能有一个timestamp列。每次插入或更新包含timestamp列的行时,timestamp列中的值均会更新。这一属性使timestamp列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改timestamp值,从而更改键值。

9.有一个数据库,只有一个表,包含着1000个记录,你能想出一种解决方案来把第五行到第七行的记录取出来么?不要使用航标和索引。

答:第一步建立数据库:

declare @i int

set @i=1

create table #T(userid int)

while (@i<=10)

begin

insert into #T

select @i

set @i=@i+1

end

select userid from

(select top 3 userid from(selec top 7 userid from #T order by userid)Ta order by userid desc

)TB order by userid

删除数据库: drop table #T

提取数据:

select top 3 userid from T where userid not in(select top 4 userid from T order by userid)order by userid

或者:select top 7 userid from T where userid >ANY(select top 4 userid from T order by userid)order by userid

或者:select top 7 userid from T where userid >ALL(select top 4 userid from T order by userid)order by userid

10.什么是聚集索引?什么是非聚集索引?什么是主键?

答:表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键。聚集索引确定表中数据的物理顺序。一个表中只能包含一个聚集索引。非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储。

11.现有一张表,有两个字段:ID,NAME。ID为主键。如果希望查询出所有拥有2个或更多ID 的NAME,查询语句应该如何写?

答:select [Name] from [table] group by(name) having(count([ID]>=2)。

12.设供应商供应零件的关系模式为SP(Sno,Pno,Qty),其中Sno表示供应商号,Pno表示零件号,Qty表示零件数量。整个数据库如下表:

Sno     Pno      Qty

168      r1        3

168      r2        4

168      r3        7

169      r2        1

169      r3        5

170      r4        8

171      r7        5

172      r2        1

172      r7        3

请问下面的SQL语句返回值是什么?

Select * from SP SPY where exists (select * from SP SPZ where Sno)

解析:在exists 中的子查询在这个例子中只返回一个值。因为从子查询中返回的行数至少有一行exits返回为true,这使得表中的所有记录都被显示了出来。

请问下面的SQL语句返回值是什么?

Select * from SP SPY where exists (select * from SP SPZ where Sno=’168’ and SPZ.Pno=SPY.Pno);

解析:返回与168号供应商所提供零件相同编号的情况。

若想得到与168号供应上所提供零件相同的全部供应商的全部产品情况?

解析:Select * from SP  where Sno in (select Sno from SP where Pno in (select Pno from SP from SP  where Sno=’168’));

或者:Select * from SP SPX where exists (select * from SP SPY where SPY.Sno=’168’ and exists (select * from SP SPZ where SPZ.Sno=SPX.Sno and SPZ.Pno=SPY.Pno));

13. 触发器怎么工作的?

答:触发器主要是通过事件进行触发而被执行的,当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,数据库就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。

14.在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可。(腾讯笔试题)

答:(1)把整数分成256M段,每段可以用64位整数保存该段数据个数,256M*8 = 2G内存,先清0。(2)读10G整数,把整数映射到256M段中,增加相应段的记数。(3)扫描256M段的记数,找到中位数的段和中位数的段前面所有段的记数,可以把其他段的内存释放。(4)因中位数段的可能整数取值已经比较小(如果是32bit整数,当然如果是64bit整数的话,可以再次分段),对每个整数做一个记数,再读一次10G整数,只读取中位数段对应的整数,并设置记数。(5)对新的记数扫描一次,即可找到中位数。

如果是32bit整数,读10G整数2次,扫描256M记数一次,后一次记数因数量很小,可以忽略不记。

解释一下:假设是32bit整数,按无符号整数处理整数分成256M段? 整数范围是0 - 2^32 - 1 一共有4G种取值,4G/256M = 16,每16个数算一段 0-15是1段,16-31是一段,...整数映射到256M段中? 如果整数是0-15,则增加第一段记数,如果整数是16-31,则增加第二段记数,...其实可以不用分256M段,可以分的段数少一些,这样在扫描记数段时会快一些,还能节省一些内存。

15.一般数据库若出现日志满了,会出现什么情况,是否还能使用?

答:只能执行查询等读操作,不能执行更改,备份等写操作,原因是任何写操作都要记录日志。也就是说基本上处于不能使用的状态。

16.SQL Server是否支持行级锁,有什么好处?

答:支持,设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据

的一致性和准确性,行级封锁确保在用户取得被更新的行到该行进行更新这段时间内不

被其它用户所修改。因而行级锁即可保证数据的一致性又能提高数据操作的并发性。

17.磁盘柜上有14块73G的磁盘, 数据库为200G 大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?

答:这个问题应该是考察硬件知识和数据库物理部署。首先需要知道这些磁盘是否要用于存放数据库备份文件和数据库性能(读/写)要求。来决定raid的级别。1)、如果偏重于性能考虑,而且不用存放数据库备份文件的话,考虑使用raid0+1,这样可使用的磁盘容量为:14*73*50%=511G。2)、如果读/写性能要求不高,而且还比较抠门的话,可以考虑raid5,这样可使用的磁盘容量为:13*73=949G。至于如何使用应该是说数据库物理文件的部署。注意说出将tempdb,data file,log file分开存放以减少I/O竞争即可。其实现在的条带化磁盘一般都会自动将文件分存,人为的分布已经越来越不重要了。

18..有两服务器群集,分别为node1和node2 现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。

答:这个具体操作有点忘了。大致是:首先看哪个节点正在使用,通过节点IP(私有)访问另一个空闲节点,为其打上补丁,然后在群集管理器中停止该节点(也可以用命令行方式),重新启动。等到启动完毕,将切换使用节点,为另一个节点打补丁。然后重新启动。

19.有一个A 数据库,分别复制到B和C, B 要求 每次数据更新 也同时更新,C 每天更新一次就行,如何制定复制策略!

答:这个应该考察的是复制知识。a->b  1)、如果使用SQL Server复制功能,那么让a->b使用事务性复制方式(同步复制)。2)、如果表不多,也可以自己写触发器,利用linkserver+distribute transaction。    a->c  1)、如果使用SQL Server复制功能,那么让a->b使用快照复制方式,在某一时间点进行一次性复制。2)、也可以自己写bat,将a备份后,通过ftp传输备份介质,恢复c。(比较麻烦,不推荐)

20.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进行优化

答:这个问题问的比较没水平。你不详细说明这个表的使用方式(读写类的,还是几乎是静态表),就问人家怎么优化?!!还不如问问索引的分布访问原理更好。

看得出他就想让你说:那三个索引超过10个,B树遍例效率很低,适当减少字段数目。如果是SQL2005,可以将选择性不好的字段放在“索引附加字段”中,以保证索引覆盖。而且SQL Server由于有锁升级的毛病,可以考虑拆开表。

21..有一个数据库200G大小,每天增加50M 允许用户随时访问,制定备份策略(详细说明)。

答:这种情况可以采用增量备份方式。每周日做一次全备份,周一到周六作增量备份(由于数据量较少,可以考虑每30分钟增量备份一次)。这样可以尽量减少性能消耗,而且如果transaction log丢失的情况下,可以保证最多丢失30分钟数据。

22..管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?

答:这个比较简单。在每台机器上建立linkserver,然后在DBA管理服务器上做个分布式视图,每次查询该视图,各个机器上的作业情况一目了然。分布式视图写法:

create view vw_job

as

select '机器一' as MName,* from linkserver1..sysjobactivity

union all

select '机器二' as MName,* from linkserver2..sysjobactivity

union all

select '机器三' as MName,* from linkserver3..sysjobactivity

23.自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程

答:这个应该是考察存储过程编写经验。一般自定义函数主要用于其他sql中的调用,如:

select yourfunc(...) from table 这种情况下,一般只能通过函数实现。存储过程的功能要远远强于函数,例如动态执行sql(sp_executesql)的使用和一些特殊的功能,自定义函数中是不支持的,只能用存储过程实现。

24.如果想配置SQL Mail 应该在服务器安装哪些软件!

答:需要哪些软件?安个outlook express就可以了。sql server提供接口存储过程,非常简单。

25.学生其存放在Student表中,学生选课情况存放在SC表中,课程情况存放在Course表中。

(1)查询与“刘晨”在同一个系学习的学生。

答:SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN(SELECT Sdept FROM Student  WHERE Sname=’刘晨’);

或者:SELECT S1.Sno,S1.Sname,S1.Sdept FROM Student S1,Student S2 WHERE S1.Sdept=S2.Sdept AND S2.Sname=’刘晨’;

(2)查询选修了课程名为“信息系统”的学生学号和姓名

答:SELECT Sno,Sname FROM Student WHERE Sno IN(SELECT Sno FROM SC) WHERE Cno IN(SELECT Cno FROM Course WHERE Cname=’信息系统’);

或者:SELECT Sno,Sname FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Course.Cname=’信息系统’;

COM

1.什么是COM?你怎么理解COM?

答:Components Object Model(COM)是软件组件互相通信的一种方式。它是一种二进制和网络标准,允许任意两个组件互相通信,而不管它们是在什么计算机上运行(只要计算机是相连的),不管各计算机运行的是什么操作系统(只要该系统支持COM),也不管该组件是用什么语言编写的。COM还提供了位置透明性:当你编写组件时,其他组件是进程内DLL、本地EXE,还是位于其他计算机上的组件,对用户而言都无所谓。

首先,COM对象被很好地封装起来。你无法访问对象的内部实现细节,你无法知道对象使用了什么数据结构,但是我们可以通过接口来访问COM对象里面的方法。

概括地说,COM具有如下一些优越性:(1)编程技术难度和工作量降低,开发周期变短,开发成本降低。(2)实现分层次的编程,从而促进了软件的专业化生产。(3)软件的复用率提高,使软件的使用效率得到提高并延长了使用寿命。

2.COM是接口么?

答:(1)COM不是接口,也不是对象,它是一种标准。(2)符合COM标准的对象就是COM对象。其实COM对象无非是实现了很多接口的对象而已。(3)COM对象必须实现IUnKnown接口,这个接口是管理COM对象生命周期的。当COM对象不使用的时候,这个接口定义的方法负责释放内存。(4)QueryInterface(QI),即所谓查询接口。由于COM对象有很多个接口,不同的接口管理着COM的不同类型的方法。因此从一个接口可以使用的方法转到另一个接口可以使用的方法的过程称为QI,这个过程是由Idispatch接口管理的。(5)GUIDs每个组件都有一个独一无二的标识,这个标识符就是COM组件的身份,它是一个128位的数字,由系统自由分配。(6)一个COM对象可以有多个接口,一个接口也完全可以被多个COM 对象实现。(7)接口分为两种:内置接口和外置接口。前一种定义的是COM对象的方法和属性,用implements实现,COM对象必须实现所有的接口内容;后一种定义的是COM对象的事件,用withEvents实现,这种接口在实现的时候不必实现所有的内容。(8)COM组件必须被注册后才能使用,它得到注册表那里去登记“户口”。

3.COM有什么缺陷?

答:COM组件很不错,可是它也有致命的缺陷,这个缺陷就来自它本身。COM是可以被重用的,COM对象的实现过程也可以被修改升级(定义是不能修改的)。如果两个程序都使用一个COM对象,而这个COM组件升级的话,很可能会出现某个程序无非使用新组件的情况,这被称为“DLL  HELL”(DLL灾难)。有时候我们安装了新软件后很多别的软件就无法使用了,很大程度上就是因为这个DLL HELL。

posted on 2011-07-14 16:04  zlh840  阅读(669)  评论(0编辑  收藏  举报

导航