C++服务器开发面试题

上传人:豆浆 文档编号:45665334 上传时间:2018-06-18 格式:PDF 页数:7 大小:132.22KB
返回 下载 相关 举报
C++服务器开发面试题_第1页
第1页 / 共7页
C++服务器开发面试题_第2页
第2页 / 共7页
C++服务器开发面试题_第3页
第3页 / 共7页
C++服务器开发面试题_第4页
第4页 / 共7页
C++服务器开发面试题_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《C++服务器开发面试题》由会员分享,可在线阅读,更多相关《C++服务器开发面试题(7页珍藏版)》请在金锄头文库上搜索。

1、一、选择题(每题 5 分)1. 链表不具有的特点是( B)。(A) 不必事先估计存储空间;(B) 可随机访问任一元素;(C) 插入删除不需要移动元素;(D) 所需空间与线性表长度成正比;2. 下列数据结构中,按先进后出原则组织数据的是(D)(A) 线性链表;(B) 顺序表;(C)循环链表;(D) 栈;3. 如果定义一个 C+类 CDate, 语句“CDate *p = newCDate;”的含义是(A )。(A) 调用 CDate 类的缺省构造函数从内存中分配一个 CDate 类型的对象, 并将该对象地址赋值给指针 p;(B) 调用 CDate 类的拷贝构造函数从内存中分配一个 CDate 类

2、型的对象, 并将该对象地址赋值给指针 p;(C) 调用 CDate 类的析构函数从内存中分配一个 CDate 类型的对象, 并将该对象地址赋值给指针 p;(D) 从内存中释放指针 p 所指向的 CDate 类的对象;4. 下列关于静态数据成员正确的是( B)(A) 可以通过 this 指针访问静态数据;(B) 可以用类名和作用域访问静态数据;(C) 静态数据在类内声明并初始化;(D)只能由该类的静态成员函数访问;5. 在 TCP/IP 协议栈里,如果出现阻塞的情况,下面那种情况最有可能发生? ( A)(A) 连接错误(B) 释放缓存 (C) 包错误 (D) 丢包6. 下面的类图表示的是哪个设计

3、模式?(D)(A) 代理模式(Proxy)(B) 装饰模式(Decorator)(C) 桥接模式(Bridge)(D) 观察者模式(Observer)二、简答题(每题 7 分)1. C+中指针和引用有什么区别答:1.引用访问一个变量是直接访问,而指针是间接访问。2.引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。3.引用在开始的时候就绑定到了一个内存空间(开始必须赋初值),所以他只能是这个内存空间的名字,而不能改成其他的,当然可以改变这个内存空间的值.2. C+特点是什么,如何实现多态?画出基类和子类在内存中的相互关系继承,封装,多态用虚函数实现多态子类可以继承父类

4、的非私有数据成员3. 请写一个算法删除数组1,1,1,2,2,2,2,2,7,7,1,5,5,5,0中重复的数字,使其转变成1,2,7,1,5,0voidNoReplicatedSubstring(int s,int len)vector vectTemp;int nData= s0;vectTemp.push_back(nData);for(int i=1;im_pNext!=NULL)pNode=pNode-m_pNext-m_pNext;Num-;while(pNode-m_pNext!=NULLpMidNode=pMidNode-m_pNext;return pMidNode;5. T

5、CP/IP 建立连接的过程?(3-way shake)答:Client 与 server 建立 TCP 连接时:首先 Client 向 server 发 SYN(请求),然后 server回复(应答请求),最后 Client 回复,这样 TCP 就建立一次连接(三次握手)的过程就建立了6. 使用 udp 和 tcp 进程网络传输,为什么 tcp 能保证包是发送顺序,而 udp 无法保证?1.主机每次发送数据时,TCP 就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认, 如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。接收主机

6、利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等, 接收主机一旦收到已经顺序化的数据, 它就将这些数据按正确的顺序重组成数据流并传递到高层进行处理。2.UDP 不提供可靠的数据传输!一个端口发往同一个目的端口的几个数据包的顺序可能会出现混乱7.Linux epoll 的 LT(level triggered)与 ET(edge-triggered)工作方式的区别?答:LT:水平触发,效率会低于 ET 触发,尤其在大并发,大流量的情况下。但是 LT 对代码编写要求比较低,不容易出现问题。LT 模式服务编写上的表现是:只要有数据没有被获取,内核就不断通知你,因此不用担心事

7、件丢失的情况。ET:边缘触发,效率非常高,在并发,大流量的情况下,会比 LT 少很多 epoll 的系统调用,因此效率高。 但是对编程要求高, 需要细致的处理每个请求, 否则容易发生丢失事件的情况。从本质上讲:与 LT 相比,ET 模型是通过减少系统调用来达到提高并行效率的。8. 网络编程中设计并发服务器,使用多进程与多线程 ,请问有什么区别?答:两者都可以提高程序的并发度, 提高程序运行效率和响应时间。 线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP 机器上运行,而进程则可以跨机器迁移9. 请列举进程间通迅都有哪些方式?并说明工作

8、方式,优缺点等。常见三种方式:管道,消息缓冲,共享内存1.无名管道简单方便 但局限于单向通信的工作方式 并且只能在创建它的进程及其子孙进程之间实现管道的共享; 有名管道虽然可以提供给任意关系的进程使用 但是由于其长期存在于系统之中,使用不当容易出错。2.消息缓冲,使用方便,但是信息的复制需要额外消耗 CPU 的时间不适宜于信息量大或操作频繁的场合。3.共享内存,针对消息缓冲的缺点改而利用内存缓冲区直接交换信息,无须复制,快捷、信息量大是其优点但是不方便网络通信。10. 你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块,如果你只能将金条切割两次,你怎样分给这些工人?第一次切割七分之一 第二次切割七分之二这样就分为三段 七分之一一段 七分之二一段 七分之四一段然后根据每天工作量交换

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号