[转载]计算机网络
来源: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。