腾讯面试2

2016/05/25 C和C++基础

腾讯面试

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)

Search

    Post Directory