腾讯后端开发岗若干面
腾讯-0
2020/3/19-电话面 16:00-17:00
1. 缓存环、多线程、线程冲突、性能优化
2. Sbrk、mmap
3. Linux指令
4. Shell指令、source、./
5. Sizeof
6. 为什么三次握手、四次挥手、2MSL
7. Static全局变量、extern、头文件
8. Struct中两个线程访问不同变量,CASS
9. Map、hashmap的结构、原理
10. 虚构造函数、虚析构函数、申请、释放顺序
11. Struct内存对齐
12. 判断质数优化?
13. 进程通信、socket和管道区别
14. 线程锁
15. 类中增加函数是否增加位置
16. 内存拷贝函数memcpy、strcpy原理
17. 为什么用红黑树
18. 动态链接和静态链接发生了什么
腾讯微信-1
2020/3/24-电话面 15:00-16:00
1. free和delete
2. 有序链表数组合并
3. New和malloc,申请了可以直接用吗
4. Tcp 3和4,为什么四次,不用三次
5. Seq为什么用x不用0
6. Vector取内存,第五个位置的值,不断push,安全吗
7. 静态和全局
腾讯微信-2
2020/3/26-电话面 11:00-11:30
1. delete / delete[]
2. map / unordered_map,空间,效率,底层
3. 三次握手
4. 100000个数,取出最小的10个
5. 多线程并发
腾讯微信-3
2020/3/30-视频面 14:15-15:25
1. 判断一个int是否为回文数,回文数定义为首位置和末尾一样,如1234321,123321,要求10分钟内完成。bool check(int num);
2. 判断二叉树是否为平衡二叉树,要求10分钟内完成。
struct Node
{
struct Node * left;
struct Node * right;
int value;
};
bool IsBalance(Node* root);
3. 请实现LRU缓存类,实现Get、Set接口
class LruCache
{
public:
LruCache();
// value返回key对应的数据,成功返回0,如果不存在,返回1
int Get(int key, std::string& value);
// 成功返回0,是吧返回-1
int Set(int key, const string& value);
private:
//请定义必要的存储参数
}
key=1,value=tom
key=2,value=cat
key=3,value=jerry
使用频率:key=2,key=1,key=3
存储只能放三个key,那新插入一个,淘汰key=3
4. vector<int> vec;
map<int, int*> int_map;
for (int i = 0; i < kMaxNum; ++i)
{
vec.push_back(i);
int_map[i] = &vec.back();
}
代码有什么问题。
5. 项目简单介绍
6. 内存泄漏的场景、处理方法
7. New 和 malloc的区别
8. 为什么基类的析构函数要是虚函数
9. 为什么要有虚函数
10. 拥塞控制
11. Vector的实现机制
12. IO复用、区别