那些年的口试总结

那些年的面试总结

博客会慢慢更新。找工作前温习一下。

岗位:后台开发,C/C++、JAVA

  • 阐述一下系统调用–参考帖子:http://blog.****.net/chosen0ne/article/details/7721550

    要点:通过中断从用户态切换到内核态。中断有两个重要属性–中断号和中断处理程序,中断号表示不同的中断。中断号是一种很稀缺的资源。内核维护一张系统调用表,可以通过系统调用号,明确哪个系统调用,这样就完成了系统调用的函数名称转换。参数传递是通过寄存器完成的。用户态和内核态运行的进程使用的栈不同,栈切换是通过寄存器(栈指针,%esp)来回赋值,并且寄存器传参需要额外的保护和恢复过程。从上面可以看出系统调用很费时间:1. 系统调用通过中断实现,需要完成栈切换;2. 寄存器传参,需要额外的保存和恢复的过程。

  • HTTP1.1和HTTP1.0的区别,参考:http://blog.****.net/hguisu/article/details/8608888

    持久连接–connection,一个tcp连接上可以传送多个请求;
    host域–使用虚拟主机技术,这样可以区分一台主机上的多个应用;
    增加了一些请求方法

  • gdb调试相关

    查看变量的二进制值:p /t 变量;
    bt:列出函数调用栈;
    info frame:查看当前栈的信息;
    frame 帧号:切换帧;
    gdb调试core文件:ulimit -c unlimited,gdb exec coreFile,运行至crash,会打印crash的信息,bt查看栈信息,一般都是段错误:访问了错误的内存段或者没权限,或者根本不存在对应的内存段;

  • HTTP的头部字段解析:http://www.cnblogs.com/xcsn/p/4308228.html

  • TCP、UDP和IP报文的格式:http://blog.****.net/kernel_jim_wu/article/details/7447377

  • 字符串中子字符串的替换:http://blog.****.net/songjinghao/article/details/11659051

  • ascii和Unicode、UTF-8的区别:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

  • 动态链接和静态链接:

  • TCP的慢启动、快重传:tcp有一个接收窗口用于流量控制,窗口为1是停等协议,效率低下,如果窗口太大,那么可能会出现网络拥塞。所以拥塞控制依赖于拥塞窗口(cwnd)来进行控制。慢启动有点类似于车辆启动的时候,具体待阐述,参考:http://blog.****.net/loverooney/article/details/38323907

  • 多播协议、多播协议的应用场景:一点对多点,节省网络带宽;IP多播广泛应用在网络音频、视频中。依赖IP多播地址,是D类地址。

  • 几种linux下面的进程间通信方式:管道、socket、共享内存、消息队列; 共享内存,上锁,上什么级别的锁?

版权声明:本文为博主原创文章,未经博主允许不得转载。