腾讯面试题
A:bind listen connect send read write等等
Q:select/poll/epoll的区别
A:三种IO多路复用 epoll性能更高,节省更多开销
Q:recv函数的返回值及其意义
A:当应用程序调用recv函数时,
(1)recv先等待socket的发送缓冲中的数据被协议传送完毕,如果协议在传送socket的发送缓冲中的数据时出现网络错误,那 么recv函数返回SOCKET_ERROR,
(2)如果socket的发送缓冲中没有数据或者数据被协议成功发送完毕后,recv先检查套接字socket的接收缓冲区,如果接收缓冲区中没有数据或者协议正在接收数据,那么recv就一直等待,直到协议把数据接收完毕。当协议把数据接收完毕,rec函数就把socket的接收缓冲中的数据copy到buffer中(注意协议接收到的数据可能大于buf的长度,所以 在这种情况下要调用几次recv函数才能把socket的接收缓冲中的数据copy完。recv函数仅仅是copy数据,真正的接收数据是协议来完成的),rec函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。
Q:进程之间通讯有哪几种方式?
A:无名管道(父子间)、有名管道(无亲缘关系也可以)、消息队列(消息的链表)、信号量(计数器,一种同步手段)、信号、共享内存、套接字等等
A:进程优点:使任务并发执行;每个进程互相独立不影响;容易扩充性能
进程缺点:逻辑控制复杂;调度开销大
线程优点:无需跨进程边界;程序逻辑和控制方式简单;所有线程可以直接共享内存和变量
线程缺点:一个线程的崩溃可能影响到整个程序的稳定性;调度开销大,性能扩充难
多线程比多进程成本低,但性能更低,线程适用于对性能要求不高的场合
Q:extern "C"的作用
A:指示编译器这部分代码按C语言的进行编译,更好地支持旧代码
Q:map和hash_map的区别
A:map的基础数据结构是红黑树,hash_map的基础数据结构是哈希表,hashmap的查询时间复杂度比较低,适合记录比较多的情况
Q:非递归求二叉树的深度搜索
A:使用队列,加个level变量++深度增加
Q:Top K海量数据查找
A:先通过Hash法,把这1亿个数字去重复,然后创建最小堆,比较、替换堆顶元素再重新调整为最小堆,直至遍历完
Q:基类的析构函数必须为虚函数吗?
A:如果确定程序中有基类指针指向派生类的问题,则必须将基类的析构函数指定为虚函数,否则不需要
Q:vector list 区别
A:vector和数组类似,list用双向链表实现,它们的区别就是数组/链表的区别
Q:单链表找环
A:保存遍历过的节点(空间更少方法:一边遍历一边反转链表(翻转指针),如果有环会掉头走回头结点)
Q:静态链接库和动态链接库的区别
A:静态:函数代码直接链接进目标程序;动态:程序运行的时候再从DLL中寻找相应函数代码
静态执行速度略比动态链接库快
动态更加节省内存,提高了可维护性和可扩展性,适合大规模开发
Q:一个C++程序从编译到运行都经历了哪些阶段
A:编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件
Q:观察者模式
A:观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新(“注册——通知——撤销注册”)
Q:大端法和小端法指的是什么
A:最高有效字节在最前面的方式称为大端法,小端法相反
Q:判断两个链表有没有交点
A:如果他们相交的话,那么他们最后的一个节点一定是相同的
相关阅读
在当前经济形势
恩……..这道题,我们来看一下,首先得明白,什么是静态变量,什么是实例变量! 看下面这个代码 class Demo1{ //静态变量 public
1. 进程的有哪几种状态,状态转换图,及导致转换的事件。(1)进程的五状态模型:运行态:该进程正在执行。就绪态:进程已经做好了准
什么是activemq activeMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的
什么是面向对象 http://blog.csdn.net/aspnet2002web/article/details/6084149 转自 面向对象OO = 面向对象的分析OOA + 面