金美通信北京面试题_第1页
金美通信北京面试题_第2页
金美通信北京面试题_第3页
金美通信北京面试题_第4页
金美通信北京面试题_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、网络及基础1、 简述网络的五层协议模型。五层模型主要是结合了osi的七层和tcp/ip的四层得出,主要是物理层、数据链路层、网络层、传输层、应用层五层,下层向上层提供服务,上层向下层提供接「1。2、 请简述TCP协议连接的建立和删除过程,并简述TCP协议进行拥塞控制的机制。TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN,ACKo这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗II协议。第一次握手:建立连接时,客户端发送SYN包(SEQ二x)到服务器,并进入SYN.SEND状态,等待服务器确认。第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+l),同时自己也送一个SYN包(SEQ二y),即SYN+ACK包,此时服务器进入SYN.RECV状态。第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK3CK二y+1),此包发送完毕,客户端和服务器时入Established状态,完成三次握手.结束时两个两次握手,即A端告知B端它终止从A端到B端的连接,即A端不会再往B端发送数据了(通过向B端发送一个FIN标志)。A端的关闭即告完成,此时,我们说A到B的这条TCP连接处于半关闭状态(half-close)o但这时,B端还是可以向A端发送数据的,B端可以在将来的任一时间内向A端发送FIN来完成它这端的半关闭。此时,A端的socket可能已经不存在(超时删除),但A主机的TCP/IP协议栈中有一个tcpcontrolsocket会代为完成一个ACK动作,完成第二个两次握手,从而彻底断开这条TCP连接最初的TCP协议只有基于窗II的流控制(flowcontrol)机制而没有拥塞控制机制,流控制是一种局部控制机制,其参与者仅仅是发送方和接收方,它只考虑了接收端的接收能力,而没有考虑到网络的传输能力:而拥塞控制则注重于整体,其考虑的是整个网络的传输能力,是一种全局控制机制。拥塞控制机制使得TCP连接在网络发生拥塞时回退(backoff),也就是说TCP源端会对网络发出的拥塞指示(congestionnot辻ication)(例如丢包、重复的ACK等)作出响应。针对TCP在控制网络拥塞方面的不足,后来又提出了“慢启动”(SlowStart)和"拥塞避免"(CongestionAvoidance)算法。TCPReno版本增加了"快速重传”(FastRetransmit)>,"快速恢复"(FastRecovery)算法,避免了网络拥塞不严重时釆用“慢启动”算法而造成过人地减小发送窗II尺寸的现彖,这样TCP的拥塞控制就由这4个核心部分组成。近几年又出现TCP的改进版本如NewReno和选择性应答(selectiveacknowledgement,SACK)等。3、简述路由表的作用以及普通路由器路由查找过程。在LinuxF如何配置一条默认路由?路由表的主要作用是供路由器查找目标网络,进而确定转发接II及下一跳路由,完成数据包的转发功能。1,路由器根据数据包中的目的IP地址,查找级别1路由:网络路由(包括父路由)、超网路由、默认路由;如果最佳匹配(指的是最长子网掩码)是级别1的最终路由,这条路由被用来转发数据包:如果最佳匹配是级别1中的父路由,继续下一步查找;如果在父路由中找到了匹配,继续查找该父路由下的子路由。如果有一条子路由匹配,这条路由用来转发数据包;如果没有子路由匹配,则看下一条分析:如果路由器执行的是有类路由查找,则执行第八步;如果执行的是无类路由查找,则执行第九步:有类路由查找:终止查询,丢弃数据包;无类路由行为:继续查找级别1的超网路由和默认路由,有匹配就使用超网和默认路由转发数据包没找到超网路由也没配置默认路由,则终止查找丢弃数据包。routeadddefaultgw192.168.0.1添加192.168.0.1为默认路由(即网关)也可以写成ttrouteadd-netO.O.O.Ogw192.168.0.1:前提必须加上-net参数4,SNMP是什么协议,请简述其get、set、next、walk操作的报文交互流程。SNMP是在路由器里最为常用的网管协议。由一组网络管理的标准组成,包含一个应用层协议(applicationlayerprotocol)、数据库模型(databaseschema)和一组资料物件。SNMP是一种简单的请求响应协议。网络管理系统发出一个请求,管理器则返回一个响应。这一行为的实现是通过使用四种协议操作中的其中任一种完成的。这四种操作分别是GET、GETNEXT、SET和TRAP。NMS通过GET操作,从SNMP代理处得到一个或更多的对彖(实例)值。如呆代理处不能提供请求列表中所有的对象(实例)值,它也就不提供任何值。NMS使用GETNEXT操作请求代理从请求列表或对象列表中取出下一个对彖实例值。NMS通过SET操作向SNMP代理发送命令,要求对对彖值重新配置。SNMP代理通过TRAP操作不定时的通知NMS所发生的特定爭件get是获得单个数据。walk是从起始到最后的所有数据。具体是不是还有待考究。5、请简述进程跟线程的概念及他们的关系,并简要介绍卜你所知道的线程间数据交互方式。进程概念进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、WindowsNT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。线程概念线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗II中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求一一工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。线程可以在处理器上独立调度执行,这样,在多处理器坏境卞就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性引入线程的好处(1) 易于调度。(2) 提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。(3) 开销少。创建线程比创建进程要快,所需开销很少。。(4) 利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。进程和线程的关系(1) 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。(2) 资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。(3) 处理机分给线程,即真正在处理机上运行的是线程。(4) 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。1•是通过共享变量,线程之间通过该变量进行协作通信;通过队列(本质上也是线程间共享同一块内存)来实现消费者和生产者的模式来进行通信;二.逻辑分析请给出下面流程图的编码,并给出相应结果。intx=2inty=4y十二y;V,•— * .Printfy\n;Printfx\n;2、己知A、B、C、D四个消息类型,消息A、B、C为当前模块需要接收的消息类型。请根据以下条件绘制流程图:1) 若收到消息A则直接转发出去;2) 若在收到消息B后5秒内收到消息C,则将发送消息D出去,否则则将B发出;3) 若只收到消息C则不进行任何处理。三、C/C++1、设有枚举类型定义:enumDrinking{cola,coffee=4,tea,water=O}:则枚举类型量tea的值是 oA:3B:2 C:5D:-l2、C++的STL库中,有哪些容器?3、请找出下述代码中的问题。char*GetMemory(void){charp[]="helloworld";returnp;}voidTest(void){char*str=NULL;str=GetMemory();printf(str);}4、请写出下边的函数声明中三个const各自的含义。classCMyClass{public:const①CMyClass&fun(const②std::string&)const③;};5、写出下面代码的运行结果。#inelude<iostream>usingnamespacestd;classMyTestClass{private:intNumA;public:MyTestClass(inta){cout«a«/\t,«,,isConstructor/«endl;NumA=a;}MyTestClass(MyTestClass&b){cout«,,CopyConstructor.,,«endl;NumA=b.NumA;}voidPrint(){cout«,,Theprivatedatais:NumA=,z«NumA«endl;}~MyTestClass(){cout«NumAc</\t"«"isDestructor・"《endl;}};intmain(){MyTestClassMyclassl(lO),Myclass2(Myclassl);Myclass2.Print();return0;}运行结果为:(1)(2)(3)(4)(5)6、请说明PostMessage和SendMessage的区别7、请实现以下结构体报文的序列化和反序列化函数序列化,即将结构体内的数据放在一段尽可能短的内存中反序列化,即根据序列化的情况,将内存中的数据解析到结构体中structA{boolbl;std::string

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论