腾讯面试
1、C/C++ 中怎么分配和释放内存
2、最大堆的最坏运行时间复杂度 O(nlogn)
3、线程和进程间的区别
4、TCP3 次握手,4次挥手
5、1-1000 中有多少个7
1-100公有20个7 20*10+100(700-799)=300个
6、了解开源项目
7、字符串压缩算法
哈夫曼编码、重复个数转换成数字、转换为整数
8、有一个程序每次都是跑了 2 天之后就崩溃了,问怎么样找出这个问题?
程序能编译通过,说明不是语法的问题,极有可能是内存泄漏或内存溢出造成的。检测工具等等
9、问了I/O复用,问select,epoll的区别
10、HTTP
超文本连接协议、浏览器和万维网、TCP、80端口
11、map是用红黑树实现,红黑树能实现查找,插入和删除都在O(lgn)的时间内。
12、有10000个数据,如何找出最大的10个数。
可以用一个长度为10的数组先存放前10个数字,然后把这10个数字按升序排好序,和最小的比,比最小的小就直接删除,如果比最小的大,就先删除最小的元素,然后用二分查找的方式将这个元素插入到正确的位置。
这个算法的时间复杂度是:n个数,一共要排列m个数,二分查找是 O(lgn),则时间复杂度为O(nlgm)
13、假如每天有10亿次的QQ登录记录,可是有的人登录了多次,实际只有6亿个不同的人登录了,问如何找出这6亿个 QQ号?6 亿个数据放进去会占用多少内存?
可以用哈希,一条一条的放,每次插入之前先查询是否存在,存在则直接进行下一个,如果不存在则插入到哈希表中。,你怎么设计这个哈希的键值呢?我当时就想到面试官问我的如何压缩字符串的问题,我说可以用int型的数据去表示
14、如何查看CPU占用率
任务管理器的最下面就可以看到CPU的使用率。
top命令是Linux下常用的性能分析工具:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
15、如何查看TCP的连接状态?
方法一:通过命令提示符程序(cmd.exe):第一步,查看TCP连接 使用命令
netstat -ano -p tcp
netstat -ano | find "ESTABLISHED"
第二步,使用tasklist列出发起连接的进程:
tasklist | find "4288"
16、I/O复用,问我epoll为什么高效?
17、进程间通信IPC有哪些方式?
18、查找字符串的子串算法(kmp)