2020.6.29 14:30-15:20(50分钟)
编程题
-
一个树从根节点到叶节点表示一个数,比如1->2->3表示123。把所有的数加起来。很简单
int ans; void dfs(Tree* root, int a){ if(!root) { ans += a; return; } dfs(root->left, a*10+root->value); dfs(root->right, a*10+root->value); return; } int main() { dfs(root, 0); cout << ans; return 0; }
-
一个N+1大小的数组,里面有1~N,外加一个重复的数,找出这个重复的数,时间复杂度O(n),空间复杂度O(1)。也比较简单
int main(){ vector<int> v; for(int i = 1; i < 10; i ++) v.push_back(i); v.push_back(5); int i; for(i = 0; i < v.size(); i ++){ if(v[i] != i){ if(v[v[i]] == v[i]) break; swap(v[v[i]], v[i]); //cout << v[i] << ' '; i --; } } cout << v[i] << endl; for(int i: v) cout << i << ' '; return 0; }
STL和C++虚函数
- vector和map的底层实现
- 稍微介绍一下红黑树
- vector和map的迭代器在什么时候失效
- 虚函数表有关的机制
- 析构函数为什么要是虚函数
- 构造函数为什么不能是虚函数
- 智能指针,把知道的都说一下
操作系统
-
进程和线程的区别
-
进程切换和线程切换(进程切换不知道)
-
进程内存空间的分布
-
说一下编译、链接之类的(链接说的不好)
-
说下硬链接和软链接的区别吧(说的不好)
-
你有用过什么调试工具吗?例如用来检查有没有内存泄漏
我:我没有过,这方面还没有实践过。。
计算机网络
-
TCP和UDP的区别
-
说下三次握手
-
要是接收方没收到SYN怎么办:超时重传
-
TIME_WAIT知道吗,说一下
-
你说你看了select/poll/epoll,说一下吧
-
epoll怎么实现那种回调的呢:不知道
-
假如服务端还没有绑定端号和IP,这个时候SYN来了,怎么办
我:返回一个错误,告知客户端这边服务器还未启动
面:返回的这个错误,是什么形式,是http的状态码吗?
我:应该是状态码
-
假如是服务器主动放弃了SYN,会是什么情况
我:可能是连接太多,把端口号占满了?
面:啊?
我:(重复一遍)
面:好吧
-
你有什么想问我的
结束
我:大概多久能收到通知
面:我们会讨论一下,之后说不定还有面试,有消息会第一时间通知你的