C++
1 析构函数原理及步骤
2 类对象的内存存储方式
3 STL各种容器的特点以及实现方式/方式 frequency 2
4 C++进程内存空间分布(栈从高到低分配,堆从低到高分配)
5 虚函数以及虚函数的作用(多态,本质是为了封装),哪些是编译时刻确定,哪些是运行时刻确定?
6 makefile编译
7 gdb调试
8 如何定位内存泄漏 frequency 2
9 动态链接和静态链接的区别?
10 32位系统一个进程最多多少堆内存?
11 写一个C程序辨别系统是64位或32位?
12 写一个C程序辨别系统是打断或小端字节序?
13 宏定义和展开?
14 位操作?
15 内存分配?
16 哪些困函数属于高危函数?为什么?(strcpy等等)
17 一个String类的完整实现必须快速写出来(赋值构造,operator=是关键);
18 指针和引用的区别?
19 多重类构造和析构的顺序(对称)
20 extern c是干啥的?必须将编译器的函数名修饰的机制解答的很透析
21 volatile是干啥的?必须将CPU的寄存器缓存机制回答的很透彻
22 static/ const的用法 frequency 2
Linux
1 linux中各种I/O模型原理--select和epoll;阻塞和非阻塞I//O的区别;
2 linux系统文件机制
3 多进程同步方式
4 使用过哪些进程间通讯机制,并详细说明
5 linux系统的各类异步机制
6 信号,列出常见的信号,信号怎么处理?
7 i++是否是原子操作?
8 exit() _exit()的区别?
9 如何实现守护进程?
10 Linux的内存管理机制是什么?
11 linux的任务调度机制是什么?
12 系统如何将一个信号通知到进程?
13 什么是死锁?如何避免死锁?
14 共享内存的使用实现原理?
15 多进程和多线程的区别(从CPU调度,上下文切换,数据共享,多核CPU利用率,资源占用等等各方面回答,哪些东西是一个线程私有的,答案必须包含寄存器)
16 标准 库函数和系统调用的区别?
算法
1 设计一个算法将2个字符串合并按字母排序:遍历一次统计各字符出现次数,直接按照字母顺序输出,O(n)
数据结构
1 排序,查找,二叉树,图
2 哈希和B树各自特点
3 链表归并排序
4 大根堆的实现,快排(如何避免最糟糕的状态?)bitmap的运用
5 hash(列如为什么一般hashtable的桶数会取一个素数?如何有效避免hash结果值的碰撞?)
网络编程
1 netstat tcpdump ipcs ipcrm命令
2 CPU 内存 硬盘 等等与系统性能调试相关的命令
3 设置修改权限chmod
4 tcp网络状态查看
5 各进程状态
6 抓包tcpdump
7 awk sed了解
8 tcp与udp的区别
9 udp调用connect有什么作用?
10 tcp连接中的时序图,状态图,必须非常熟练
11 socket服务端的实现,socket与epoll的区别
12 epoll哪些触发模式 ,有啥区别?(详细地解释水平触发和边缘触发的区别,以及边缘触发在边缘触发在编程中要做到哪些更多的确认?)
13 大规模连接上来,并发模式怎么设计?
14 tcp结束连接怎么握手?
15 time_wait状态是什么?为什么会有time_wait状态?哪一方会有time_wait状态,如何避免?
16 time_wait状态占用的资源(必须详细回答)?
17 tcp头多少字节?哪些字段?
18 什么是滑动窗口?
19 connect会阻塞,怎么解决?(设置非阻塞,返回之后用select检测状态)
20 如果select返回可读,结果只读到0字节,有什么情况?
21 keepalive是什么?如何使用?
22 列举你所知道的tcp选项,并说明起作用
23 socket什么情况下可读?
数据库
1 sql;
2 服务器数据库大规模数据如何设计
3 db各种性能和指标
海量数据编程
1 请统计100W个不等长字符串中个字符串的出现次数:
思路:建立哈希表,遍历一遍让等长的字符串映射到同一位置,里面可以再哈希链表。有2种情况:一种哈希链表中没出现过就存储该字符串并将对应的计数器设为0,有出现过的就加一。遍历一遍就完成统计,然后遍历哈希表的计数器输出就可以了。
2 设计数据结构可以快速返回0-10亿中哪些数出现了0r没出现。用125M的bitmap就可以实现(与上一题思路相同)
3 一个每秒百万级访问量的互联网服务器,每个访问都有数据计算和I/O操作,如果让你设计,如何设计?