美文网首页找工作
后台开发面试问题总结

后台开发面试问题总结

作者: 1angxi | 来源:发表于2016-08-21 20:37 被阅读1430次

    云服务器到期了,这是备份的文章。

    今天看了几篇关于后台开发的面试经验贴,感受到了来自面试官
    的满满恶意。
    下面是关于后台开发会被问到的问题总结,唉,想短时间全部搞定得一天用25个小时才够吧?天哪
    主要考察领域:C++、Linux、算法、数据结构、网络编程、海量数据处理、数据库。

    C++:

    析构函数原理以及步骤;
    类对象的内存存储形式;
    STL各种容器的特点和实现方式;
    c++进程内存空间分布(注意栈从高道低分配,堆从低到高分配);
    虚函数以及虚函数的作用(简单来说是多态,本质是为了封装)(哪些是编译时确定、哪些是运行时确定);
    makefile编译;
    gdb调试;
    如何定位内存泄露;
    动态链接和静态链接的区别;
    32位系统一个进程最多多少堆内存;
    写一个c程序辨别系统是64位 or 32位;
    写一个c程序辨别系统是大端 or 小端字节序;
    宏定义和展开;
    位操作;
    内存分配;
    哪些库函数属于高危函数?为什么?(strcpy等等);
    一个String类的完整实现必须很快速写出来(注意:赋值构造,operator=是关键);
    sizeof一个类求大小,变量、对象、指针、类等等;
    指针和引用的区别;
    多重类构造和析构的顺序(对称);
    stl各容器的实现原理(必考);
    extern c 是干啥的(必须将编译器的函数名修饰的机制解答的很透彻);
    volatile是干啥用的,(必须将cpu的寄存器缓存机制回答的很透彻);
    static const等等的用法;

    Linux:

    linux中各种I/O模型原理——select和epoll;
    阻塞和非阻塞I/O区别;
    linux系统文件机制;
    多进程同步方式;
    使用过哪些进程间通讯机制,并详细说明(重点);
    linux系统的各类异步机制;
    信号:列出常见的信号,信号怎么处理?
    i++是否原子操作?
    exit() _exit()的区别?
    如何实现守护进程?
    linux的内存管理机制是什么?
    linux的任务调度机制是什么?
    系统如何将一个信号通知到进程?
    什么是死锁?如何避免死锁?
    共享内存的使用实现原理;
    多线程和多进程的区别(从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答。哪些东西是一个线程私有的?答案中必须包含寄存器);
    标准库函数和系统调用的区别?

    算法:

    设计一个算法将两个字符串合并按字母排序:遍历一次统计各字符出现次数,直接按字母顺序输出,O(n)。

    数据结构:

    排序、查找、二叉树、图;
    哈希和B树各自特点;
    链表归并排序;
    大根堆的实现,快排(如何避免最糟糕的状态?),bitmap的运用;
    hash(例如为什么一般hashtable的桶数会取一个素数?如何有效避免hash结果值的碰撞);

    网络:

    netstat tcpdump ipcs ipcrm命令;
    cpu 内存 硬盘 等等与系统性能调试相关的命令;
    设置修改权限chmod;
    tcp网络状态查看;
    各进程状态;
    抓包tcpdump;
    awk sed了解;
    tcp与udp的区别;
    udp调用connect有什么作用?
    tcp连接中时序图,状态图,必须非常非常熟练;
    socket服务端的实现,select和epoll的区别(必问);
    epoll哪些触发模式,有啥区别?(详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认);
    大规模连接上来,并发模型怎么设计?
    tcp结束连接怎么握手,time_wait状态是什么,为什么会有time_wait状态?哪一方会有time_wait状态,如何避免?
    time_wait状态占用资源(必须回答的详细)?
    tcp头多少字节?哪些字段?(必问)
    什么是滑动窗口?(必问)
    connect会阻塞,怎么解决?(必考必问,提示:设置非阻塞,返回之后用select检测状态);
    如果select返回可读,结果只读到0字节,什么情况?
    keepalive 是什么东东?如何使用?
    列举你所知道的tcp选项,并说明其作用。
    socket什么情况下可读?

    海量数据处理:

    1、请统计100W个不等长字符串中各字符串的出现次数:建立哈希表,遍历一遍让等长的字符串映射到同一位置,里面可以再哈希链表。有两种情况:一种哈希链表中没出现过就存储该字符串并将对应的计数器设为0,有出现过的就+1。遍历一遍就完成统计。然后遍历哈希链表的计数器输出就行了。
    2、设计数据结构可以快速返回0~10亿中哪些数出现了or没出现。这题和一面的一样,而且更简单,125M的bitmap就够了。
    3、一个每秒百万级访问量的互联网服务器,每个访问都有数据计算和I/O操作,如果让你设计,你怎么设计?

    数据库:

    sql;
    服务器数据库大规模数据怎么设计;
    db各种性能指标;

    相关文章

      网友评论

        本文标题:后台开发面试问题总结

        本文链接:https://www.haomeiwen.com/subject/ysvejttx.html