华橙网络-C++后端-一面-2025秋招

就面了15分钟,因为有项目是go,所以问了

  1. 你这个(Go 的)模型能讲讲吗?— 候选人:好的。Golang 的 GMP 调度模型是 Go 运行时(runtime)管理的协程调度机制。G、M、P 分别代表 goroutine(G)、OS 线程(M) 和 逻辑处理器(P)。使用 go 关键字启动一个协程后,协程会先进入工作队列并绑定到某个 P,然后由运行时把该 P 调度到具体的 M(线程) 上执行。协程切换开销小,初始栈空间也很小。
  2. 这个GMP模型和线程的关系是什么?— 候选人:Go 运行时维护 G–P–M 的绑定与调度关系:goroutine 先与 P 绑定,再由运行时把 P 绑定到 M 上运行,也就是把任务交给具体的 OS 线程执行。
  3. GC(垃圾回收)原理是什么?— 候选人:Go 的 GC 由运行时后台自动进行,主要基于三色标记法。大致步骤:STW 初始标记:从根对象开始标记为黑色,会有短暂 STW(Stop The World)。并发标记:与程序并发,从已标记对象出发递归遍历可达对象,把新发现对象标为灰色并继续处理。STW 重新标记:短暂停顿,处理剩余的灰色对象,完成标记闭包。并发清理:回收未被标记到的白色对象。
  4. 你项目里限流、熔断一般怎么实现?— 候选人:我先做流量统计,分 全站/服务/用户三种粒度,使用 Redis 以带前缀的 key 进行原子自增统计。限流使用 Go 标准库基于令牌桶的限流器,请求无法满足令牌条件时直接拦截并返回相应状态码和消息。熔断也做了(此处候选人未展开细节)。
  5. 你的“微服务架构高性能网关系统”是在实习公司里做的还是自己做的?— 候选人:主要是自己做的。
  6. 压测你是怎么做的?— 候选人:在 Linux 上用 wrk 压测:先启动管理服务,再启动网关代理服务,用 wrk 发送高并发请求,观察服务器可承载的最大请求量等指标。
  7. 你在“分布式 KV 存储”里也用了协程,协程库是 C++ 官方的吗?— 候选人:不是 C++ 官方的协程库,用的是开源脚手架来实现协程。
  8. 协程与线程(以及进程)的差别?— 候选人:协程是用户态的轻量级线程,切换在用户态完成,初始栈很小(比如 Go 协程初始栈 ~2KB)。线程是 OS 调度的最小单位,多个线程共享进程地址空间,切换涉及内核态/用户态转换,开销更大;一个线程崩溃可能影响同进程内其他线程。进程是 OS 资源分配的最小单位。

9.(追问)如何监控大量协程下的系统瓶颈或负载上限?— 候选人:主要通过日志输出 CPU/内存占用来关注。

10.(追问)在操作系统层面,用什么命令分析程序是否已到瓶颈?— 候选人:常用 top(配合管道与过滤)来关注进程/线程的系统资源占用。(候选人简要回答,未细化其它工具。)

  1. DNS 协议位于 TCP/IP 的哪一层?— 候选人:应用层。
  2. DNS 的解析过程是怎样的?— 候选人:DNS 用来把域名解析为 IP。解析流程一般先查本地缓存(浏览器、系统、路由器),都没有则向本地域名服务器查询;若本地域名服务器没有,则进入递归查询:从根 DNS → 顶级域 DNS(TLD) → 权威 DNS,得到结果后返回并缓存,最后返回给客户端。
  3. “域名解析托管”这个概念听说过吗?— 候选人:不了解(未接触)。
  4. TCP/IP 里的“流量控制”是做什么、怎么实现?— 候选人:为防止发送方发送速率超过接收方缓冲能力,通过滑动窗口机制实现流量控制。
  5. STL 常用容器:举一个你熟悉的,说说实现原理— 候选人:以 vector(动态数组)为例:底层是连续内存,支持动态扩容和基于迭代器的插入,尾部插入/弹出高效;在中间位置的插入/删除需要大量元素移动,时间复杂度 O(n)。
  6. 你还有什么想问的?— 候选人:如果能加入公司,您建议我再补充学习哪些技术?另外可能会负责哪一块业务?— 面试官:技术学习会围绕业务展开;岗位是 C++ 服务端编程,但具体方向需以校招集中安排为准。— 候选人:好的,没有其他问题了。

全部评论
c++的岗,怎么全是golang的问题
点赞 回复 分享
发布于 09-28 20:51 法国

相关推荐

耐挂王,两次三面挂了已经,终究还是做不到吗## 一面1.实习项目2.搭建k8s用的什么工具,讲一讲搭建过程3.nginx在流量架构中起到什么样的作用4.service的作用是什么,具体流量调度算法是什么,用的什么协议5.dns底层协议是什么6.查看系统io吞吐量7.查看内存使用率,解释下free -h下所有字段的意思8.web访问404什么意思,500是什么意思,如果是500该从哪些方面排查9.详细讲讲tcp可靠传输机制10.如果想查看nginx里用户访问请求的延时该怎么做11.系统调用和系统中断之间的关系12.说说常见的排序算法,快排的时间复杂度是多少13.展开讲一讲哈希表14.进程间常见的通信方式15.为什么要用k8s,k8s能起到一个什么样的作用16.手撕 判断对称二叉树## 二面1. 实习和项目2. 假如现在外部访问服务的url出现了502该怎么去排查3. jwt的组成结构是什么样的,以及整个生成和验证的流程是怎么样的4. redis做点赞缓存如何避免产生数据不一致的问题5. DNS的工作流程是怎样的,查询方式有哪几种,各自有什么区别6. 双向队列具体定义是什么,和普通的队列还有栈有什么样的区别7. linux给定一个log,给定一个日志文件给你,第一列是IP地址,第二列是客户端访问服务器的状态,比如success或error,现在想统计不同IP访问错误的次数,按从大到小的每一个IP次数去进行排列,应该用什么样的命令8. 浏览器输入www.tiktok.com,当敲下回车后,发生的整个流程,越详细越好9. TCP层为什么是四次挥手不是三次10. 手撕 买卖股票的最佳时机改良版## 三面1. 实习和项目2. DNS解析方式有哪几种3. 浏览器输入www.tiktok.com,当敲下回车后,发生的整个流程,越详细越好4. CNAME查DNS server会返回什么,下一步又该怎么去查5. DNS 递归查询一层一层是怎样递归的6. 讲一讲TCP三次握手,为什么第二次握手ack等于第一次的syn+1?如何知道第一次握手这个数据包是一个syn包?这个数据包除了标志位还有什么信息?第二次握手回的SYN和ack里又包含什么信息?7. 讲一讲四次挥手8. 你是一个站点的管理员,现在用户访问你这个站点特别慢,该怎么去排查9. top会给你哪些数据字段10. cpu使用率会超过100%吗11. cpu load是什么概念,怎么能看到load12. cpu利用率不高,但是系统就是慢,该怎么排查13. 讲一讲零拷贝14. 进程和线程有什么区别15. 线程之间可以做同步吗,它同步机制有哪些16. 手撕 给三个现成可用函数(isfile(),isdir(),listdir()),实现linux里面的tree命令
点赞 评论 收藏
分享
评论
5
11
分享

创作者周榜

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