美团面试-2020-11-11
这次面试主要分为三部分:
1、介绍项目
2、基础知识
3、现场写代码
第一部分:
介绍项目,这部分会问的很详细,包括:线程模型、架构、数据交互、网络,如何查找内存泄漏。
第二部分:
select和epoll区别(https://www.cnblogs.com/aspirant/p/9166944.html),边缘触发、水平触发,惊群(这个词没听过),如何创建线程,线程之间的通信方式,sleep函数为啥会耗时(具体有哪些方式)。
第三部分:
(1)内存拷贝,但是可能存在src和dest重叠的情况,需要分别讨论。
void *memmove(void* dest, void* src, int count) { if (src == dest) return dest; void *tmp = dest; if (src > dest || (int*)dest + count < src) { int i = 0; while(i < count) { *((char*)dest+i) = *((char*)src+i); i++; } } else { while(count--) { *((char*)dest+count) = *((char*)src+count); } } return tmp; };
(2)给定无序数组,找到前k大的数。
#include <iostream> #include <random> #include <queue> using namespace std; void getValue(vector<int>arr, int k) { if(k >= arr.size()) return ; priority_queue<int, vector<int>, greater<int>> pq; for (int i = 0; i < k; i++) { pq.push(arr[i]); } for (int i = k; i < arr.size(); ++i) { if (pq.top() < arr[i]) { pq.pop(); pq.push(arr[i]); } } while(pq.size()) { cout << pq.top() << endl; pq.pop(); } return ; } int main() { vector<int> arr = {1,2,3,4,5}; getValue(arr, 3); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通