恒生一面10-15

1、自我介绍
2、项目中的通信中间件是怎么封装的,为什么这么封装(具体到接口,这个是真想不起)
3、项目中你主要负责的是哪些模块,具体是怎么做的
4、有栈协程与无栈协程分别是什么
6、有栈协程和无栈协程的优缺点
7、将一块内存区域拷贝到另一块内存区域怎么实现,可以使用操作系统的接口或者你自己实现的接口(只说了memcpy)
8、让你自己实现一个memcpy,你会怎么实现
9、select与epoll的区别
反思:问的有些东西了解还是不够深,项目有的东西已经有点遗忘了,具体到具体函数的封装是真记不起来了#发面经攒人品#
全部评论
自己的东西一定准备好
点赞 回复 分享
发布于 2025-10-17 23:46 北京
最后那个问题,我平时就用自己习惯的,还真没考虑过区别
点赞 回复 分享
发布于 2025-10-16 17:47 陕西
项目做太久确实容易忘
点赞 回复 分享
发布于 2025-10-16 15:29 广东
感觉面试官是个技术大佬
点赞 回复 分享
发布于 2025-10-16 15:29 江苏
恒生一面就这么难吗
点赞 回复 分享
发布于 2025-10-16 15:29 湖北
好详细的面经
点赞 回复 分享
发布于 2025-10-16 14:32 四川

相关推荐

头像
04-02 21:11
已编辑
常州大学 Java
题目:无环树求所有路径最大值的和笔试的时候没写出来,想到了边权按贡献算,但只写了个暴力20%。正解:并查集每个点视为一个联通块,先按边权从小到大排序,逐个加入边。联通块里的值肯定都小于当前边权,那么左右联通块大小就分别代表边左右两侧的节点数,相乘就是路径数。所以贡献 = 左边连通块大小 × 右边连通块大小 × 边权。代码如下struct edge {int u, v, w;edge(int u = 0, int v = 0, int w = 0) : u(u), v(v), w(w) {}bool operator<(const edge &other) const { return w < other.w; }};ll res = 0, n;vector<edge> e;int fa[N], sz[N];int find(int x) { return fa[x] = ((fa[x] == x) ? x : find(fa[x])); }void unite(int x, int y) {int rx = find(x), ry = find(y);if (rx == ry)return;if (sz[rx] < sz[ry])swap(rx, ry);fa[ry] = rx, sz[rx] += sz[ry];}void solve() {cin >> n;for (int i = 1; i < n; i++) {int u, v, w;cin >> u >> v >> w;e.emplace_back(u, v, w);}for (int i = 1; i <= n; i++) {fa[i] = i, sz[i] = 1;}sort(e.begin(), e.end());for (const auto &e : e) {int ru = find(e.u);int rv = find(e.v);if (ru != rv) {// 贡献 = 左边连通块大小 × 右边连通块大小 × 边权res = (res + (ll)sz[ru] * sz[rv] % mod * e.w % mod) % mod;unite(e.u, e.v);}}cout << res << endl;}
查看1道真题和解析
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务