面试题总结(一)

寻找人生的关键点,并在关键时刻竭尽全力!
UDP包头多长:
    8个字节:源端口,目的端口,UDP长度,UDP检验和
select和epoll的区别:
    1.select为POSIX标准,epoll为Linux所特有的
    2.select的句柄数目受限,在Linux/posix_types.h头文件有这样的声明,#define __FD_SETSIZE 1024表示select最多同时监听1024个fd,而epoll没有,它的限制是最大的打开文件句柄数目
    3.epoll的最大好处是不会随着FD的数目增长而降低效率,在selec中采用轮询处理,其中的数据结构类似一个数组的数据结构,而epoll是维护一个队列,直接看队列是不是空就可以了。epoll只会对"活跃"的socket进行操作---这是因为在内核实现中epoll是根据每个fd上面的callback函数实现的。那么,只有"活跃"的socket才会主动的去调用 callback函数(把这个句柄加入队列),其他idle状态句柄则不会,在这点上,epoll实现了一个"伪"AIO。但是如果绝大部分的I/O都是“活跃的”,每个I/O端口使用率很高的话,epoll效率不一定比select高(可能是要维护队列复杂)
    4.使用mmap加速内核与用户空间的消息传递,无论是select,poll还是epoll都需要内核把fd消息通知给用户空间,如何避免不必要的内存拷贝就很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的。
多播协议:
    是一种点到多点(或多点到多点)的通信方式方式。即多个接收者同时接收一个源发送的相同信息
    可以有效的利用带宽
    在多播中,组的概念十分重要。由多播定义可知,多播报文是从一个源发到三组目的节点。在IP多播中,多播组有一个ID号,称作多播组ID号,它指定发送报文的目的组,实际上是D类IP地址。主机若要接收发到一个特定组的多播报文,就要监听发往该特定组的所有报文。为了解决因特网上多播报文的选路,主机须通过通知其子网上的多播路由器来加入一个组,多播中采用因特网组管理协议(IGMP)来达到此目的。
    应用:视频点播、电视会议、远程学习、计算机协同工作等新业务
TCP的快速重传机制:
    参考:http://blog.csdn.net/zhangskd/article/details/7174682
进程通信的方式:
    管道、有名管道、信号量、消息队列、信号、共享内存、套接字
    参考:http://www.cnblogs.com/mydomain/archive/2010/09/23/1833369.html
共享内存加的什么锁:
    读和写锁发,了解好共享内存图就行
GDB调试用到的命令:
    attach:用gdb调试一个正在运行中的进程
    br:设置断点
    n:单步跳过
    s:单步进入
    finish:执行到函数return返回
    list列出当前位置之后的10行代码
    bt(backtrace):列出调用栈 ----企鹅面试考过
    info locals:列出当前函数的局部变量
    p var_:打印变量
    info breakpoints:列出所有断点
    delete breakpoints:删除所有断点
    delete breakpoints id:删除编号为id的断点
    disable/enable breakpoint id:禁止/启用断点
    break ... if ...条件中断
如何切换函数调用栈,如何打印变量的二进制数据,如何调试core dump文件(这些都是gdb的命令)
    core dump 要先配置 ulimit -c unlimited
    gdb corefile
    gdb -tui #图形界面调试
Makefile文件的书写:
    看看源码中Makfile,好的例子
HTTP 1.0  和HTTP 1.1 的区别:
    参考:http://blog.csdn.net/elifefly/article/details/3964766




原文地址:https://www.cnblogs.com/sxmcACM/p/4498364.html