腾讯
项目相关:
-
http断开,返回给客户端什么?要看各种情况
-
如何查看报文长度?如何查看头部长度?
-
如何确定报文已经发送完毕?(粘包问题)
-
为什么用优先队列,先进先出不行吗?优先队列线程安全问题
-
压测?环境?几台机器?
-
短连接,长连接怎么做到的?
-
线程池满了怎么办?
-
一次发送,再次发送怎么处理》
-
recv函数返回大于0,小于等于0
-
智能指针如何做到安全
普通问题 -
红黑树查找时间复杂度,哈希表复杂度
-
static声明局部变量与非static区别?为什么
百度:
项目相关:
11. 服务器上面放的什么?
12. 输入Url发生什么过程?
13. 百度服务器都有什么架构?
腾讯ieg:
基本的:
递归锁
链表创建?
#include <iostream>
using namespace std;
/* 创建一个单链表 */
struct ListNode{
int m_key;
ListNode* next;
};
void createList(ListNode* pHead){
ListNode* p = pHead;
for (int i = 1; i < 10; ++i) {
ListNode* pNewNode = new ListNode;
pNewNode->m_key = i; // 将新节点的值赋值为i
pNewNode->next = NULL;
p->next = pNewNode; // 上一个节点指向这个新建立的节点
p = pNewNode; // p节点指向这个新的节点
}
}
int main(){
ListNode* head = NULL;
head = new ListNode;
head->m_key = 0;
head->next = NULL;
createList(head);
return 0;
}
优先队列?
#include<iostream>
#include<vector>
#include<queue>
#include<map>
using namespace std;
void createWordList(vector<string> & a)
{
for(int i = 0; i < 3; i++)
{
a.push_back("i am is" + to_string(i));
}
a.push_back("i am is" + to_string(2));
a.push_back("i am is" + to_string(3));
a.push_back("i am is" + to_string(2));
a.push_back("i am is" + to_string(3));
}
int main()
{
vector<string> word_list;
createWordList(word_list);
map<string,int> word_map;
for(auto item:word_list)
{
if(word_map.find(item) == word_map.end())
word_map.insert({item,1});
else
{
word_map[item]++;
}
}
for(auto item:word_map)
{
cout << "the word: " << item.first << "the num is : " << item.second << endl;
}
priority_queue<pair<int, string>> top_n;
for(auto item:word_map)
{
top_n.push({item.second, item.first});
}
for(int i = 0; i < 2; i++)
{
auto item = top_n.top();
cout << "the num is : " << item.first << "the word: " << item.second <<endl;
top_n.pop();
}
return 0;
}
项目:
消息队列加锁吗?
消息队列几读几写?(生产者消费者都有几个)?
get解析,post怎么处理?
定时器用小根堆,其他都有什么方式?
链表方式有个问题,删除的话消耗内耗,小根堆的方式插入删除比较方便?
智能指针原理?智能指针是c++11 ?
右值引用?移动构造函数?
移动构造函数的好处?
右值,std::move的功能,我答的是减少构造函数。
函数里面创建一个对象,再把他return。编译器优化?
服务器线程?
项目性能优化?
如何查看内存泄露?项目的内存泄露?
redis?跳表?
虚函数?虚函数表什么时候生成的?虚函数表是在什么时候进行初始化?
new的过程会执行哪些操作?
内存分配,对象构造。
多继承的虚函数表,a继承自b,c, b,c都有虚函数,它里面有几个虚函数,几个虚指针。
a,继承自b,c, a的内存布局是什么样的?
linux内存布局?
linux内存分配器实现方案?
tcmalloc gmalloc redis, nagix? c++开源的东西用的不多?
udp数据包有大小限制吗?超过最大传输单元,会导致什么问题?
客户端time_wait可以占用这个端口吗?
不同进程可以绑定同一个ip同一个端口?
美团到店:
- 输入url过程
- dns解析
- http 密等性
- ping
- 用户,内核,linux如何管理权限
- 数据库相关知识
- 分段和分页区别
- http https
参考 - vim 如何到达最前面
- 有Ip地址为什么还需要mac地址
首先,ip地址是在网络层上面,mac地址是基于数据链路层上的; ip地址是基于网络的拓扑结构分布的,而每个以太网设备在出厂时都有一个唯一的MAC地址.若将高效的路由选择方案建立在设备制造商的基础上而不是网络所处的拓朴位置基础上,这种方案是不可行的。
其次,这样使得更换设备,更换网络变得容易.例如,如果一个以太网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡
最后,ip地址是基于网络层的,不能单独工作.我觉得是由于历史原因, 如果因特网从开始制定之初,就定义了从物理层到传输层的协议,那么因特网就不再依赖于其它任何的网络,这时就不用什么MAC地址了。
假设网络上要将一个数据包(名为PAC)由北京的一台主机(名称为A,IP地址为IP_A,MAC地址为MAC_A)发送到华盛顿的一台主机(名称为B,IP地址为IP_B,MAC地址为MAC_B)。这两台主机之间不可能是直接连接起来的,因而数据包在传递时必然要经过许多中间节点(如路由器,服务器等等),我们假定在传输过程中要经过C1、C2、C3(其MAC地址分别为M1,M2,M3)三个节点。A在将PAC发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的MAC地址M1,然后在其数据包中封装(Encapsulation)这些地址:IP_A、IP_B,MAC_A和M1。当PAC传到C1后,再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的MAC地址M2,然后再将带有M2的数据包传送到C2。如此类推,直到最后找到带有IP地址为IP_B的B主机的地址MAC_B,最终传送给主机B。在传输过程中,IP_A、IP_B和MAC_A不变,而中间节点的MAC地址通过ARP在不断改变(M1,M2,M3),直至目的地址MAC_B。
IP地址通常工作于广域网,路由器处理的就是IP地址。 MAC地址工作于局域网,局域网之间的互连一般通过现有的公用网或专用线路,需要进行网间协议转换。
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
top_k算法
参考链接