3.23 美团C++后端一面(挂了)
- 数据库(一点不会,直接凉了)
- get和post区别
- cookie和session,适合什么场合
- redict和forward
- 知道什么网络攻击(SYN),怎么预防SYN?
- 三次握手,为什么不两次
- 口述归并排序,空间复杂度
- 链表有环,环的入口
- 进程线程区别,线程同步方式
- 死锁什么条件
- 系统平均负载
- Linux下查看进程
- 设计模式了解吗
4.8 美团C++后端一面(捞起来面的)
- 面向对象和面向过程
- 封装 继承 多态
- final 关键字
- int double 各种类型占用内存大小
- 指针函数和函数指针
- 虚函数实现
- if 和 switch 的效率问题
- 三次握手四次挥手
- TCP和UDP
- 滑动窗口
- 算法1:环形链表的节点个数(找环的入口)
- 算法2:图上两个点最短距离(有障碍,BFS合理)
- 算法3:旋转打印 N*N 数组
4.9 阿里钉钉C++开发一面
- 内存泄漏怎么回事
- 平时怎么调试程序的,网络服务器出了问题怎么办
- 为什么你的服务器用多线程而不是多进程
- 进程间的同步方式?
- 智能指针线程安全吗?
- 线程池是怎么实现的?
- 面向对象有什么特性?
- 虚函数,纯虚函数(为啥要有纯虚函数?)
- 100亿数据,内存只有256M,怎么找相同的数据
- C++的异常机制,为什么要使用异常?
- 算法:单例模式(要求线程安全)
- 算法:组合(可以重复元素)
4.9 360机器学习C++开发一面
- 机器学习会什么?
- C++了解什么?
- 让你写vector怎么写
- vector的迭代器,扩容机制
- 迭代器有什么类别,前向,双向,可随机存取
- 右值引用,移动构造函数
- new和malloc什么区别
- Linux了解什么?
- socket是啥,进程间通信方式。。socket就是一种但是我没说。。。
- 算法:反转从L到R的部分链表
4.11 百度一二三连面
一面
- const的作用
- 智能指针说一说
- delete 和 delete[] 的区别,怎么使用,对数组直接delete会发生什么?
- 内存泄漏怎么检测?valgrind
- 一个8G内存的计算机,进程能不能拥有10G的内存空间?(虚拟内存和换页)
- 缺页置换的算法有哪些
- 什么时候要显式的写拷贝构造函数?
- 拷贝构造函数为什么要传引用?(防止不断拷贝套娃)
- 迭代器失效了解什么?为什么失效了
- vector怎么实现,怎么扩容
- 进程线程,线程崩溃对进程有啥影响
- fork后都共享什么内容,子进程改东西父进程会改吗
- 并发任务中线程越多越好吗,为什么呢?
- 说说阻塞和非阻塞
- select和epoll说一说,epoll的LT和ET模式,具体怎么使用
- socket流程
- TCP可靠性的保证:序列号,拥塞控制,流量控制
- TCP客户端宕机有什么保证机制,不说保活,说说TCP自己的
- 数据库按照男女加索引为啥不行(就是在问什么时候加索引)
- 算法1:盛水最多的容器
- 算法2:二叉树层序遍历
- 算法3:反转链表
二面
- 算法:手撕hashmap
- hashmap怎么rehash的,什么时候rehash
- 怎么优化STL中的hashmap(红黑树代替链表)
- 进程间通信手段