华橙网络-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 法国

相关推荐

迷惘,看不到未来,做不出选择。本人是四非本,黑龙江人,家庭条件一般,但是好在温馨,虽然什么请求都会《五猖会》,都需要和我提一提这个钱很多,挣钱有多么不容易,但是唯独在学习上没有亏待过我,哪怕的成绩并不顶尖,但是好在高考成绩也可以上个一本。但是本人似乎很难做决定,也很容易做错,高考后选专业的需求,也是说挣得多就行。于是误打误撞,选择了互联网这个行业。大一的时候了解了培训机构,因为完全不知道学些什么,第一门语言是cpp,因此打算学习cpp,一是听说cpp挣的多,二是因为不想放弃已经学过的东西。最后还是拗着报了培训机构,那时候的目标比较清晰,就是抓紧学完找实习,然后毕业找一段大厂。听着一些其他学长的进大厂面试录音,感觉难度也还行,真的以为自己可以,于是,不断的学习,跳班。最后在大二上开学就写完了培训班的所有内容,并开始准备简历面试。当时发现自己八股会的东西还是不够多,了解到了小林,于是疯狂背小林的八股。仔细一想,自己学习过好多方向,可惜一点也不精,大一,学着做了几个cpp小游戏demo,后来又学了推流,想走音视频。后边又把项目变成了sylar的服务器。然后24.9.25迎来了自己的第一次面试,抖音生活服务,第一次面试颇为紧张,面试官大部分在把八股融入场景题考,可惜我并不能很好的理解,于是,那次很遗憾的挂了,然后进入了半年冷静期。期间一直在boss上投简历,多多少少也沟通了一千五左右,投出了100个简历,各种大厂也都投递了,但是都简历挂了,依旧0面。后来,还面了两次字节,似乎面评也都不好,都挂了,一个是ios客户端开发,另一个互娱。转折点125年4月份左右,腾讯约面了,四月份是腾讯云服务器约的面,此时的博主八股大成,拷打了一个半小时,面评不错,但是二面只面了20多分钟后秒挂。之后的博主心灰意冷,认为还是会的不够多的原因,于是暑假后,专心在家转golang了。转折点2七月份,腾讯再次约面了。面试官看我面评不错,就约面了。这次成功把握住了,去了微信搜索做代码质量……。但是本人做的选择真的都是对的吗?拿到腾讯offer后,我和mt都不知道必须一周后入职,于是花了高于均价800左右的机票,坐飞机提前去了深圳。父母一直劝我别租房,怕我被抓回校,但是我认为我能干六个月,没听,于是压二租了1800一个月的房子。在腾讯干了一个多月,迎来了开学,开学三周的课设实验。因为点名是写纸上,就没找代课。此时是9.1号,9.3号有形式与政策的补考(学习通忘记提交了),本来打算的是第三周回去答辩,但是9.5号,二次点名,有人误以为我是正规渠道去的实习,和老师说我去实习了,老师非常生气,直接去找校领导了,然后导员让我必须回去,mt让我回校找导员沟通。回校了,导员狠骂我,让我写了个八百字的检讨。当时的计划是,先稳住导员,然后再偷摸出去。安稳一段时间后,当时买完机票准备回去,结果突然说,学业预警要谈话(因为之前没补考,所以直接重修了,重修两门课要谈话)。按照以往的经历,这个谈话会在这两天完事,但是机票就是明晚,没办法,去找导员问,能不能提前谈话,被质问为啥要提前谈话,这次决定爆了,于是说我在微信实习,以后不会被抓等等,但是已经被一顿臭骂。没办法,离职?,可这个机会实在太难了,于是询问能不能远程实习,但是很遗憾,不能,于是另辟蹊径,询问能不能一个月来一次,平常请假,但是接着干活产出。同意了。于是我就这样开始了我的实习之旅。一个月飞一次。于是回去处理房子,准备转租,收拾东西后立马又回来了。之后,以为的谈话并没有谈,三个星期过去了,也没有谈。但是要到续日期饭时候了,于是刚打算走,导员发消息了,说这两天别远走,要谈话,于是把机票改到一个月后了,花了一千多改签。但是7天过去了还是没谈,如果不改签我现在已经回来了。终于把谈话完事了,买了个去长春的车票和长春飞深圳机票。本来时间很充裕,但是检完票上车坐好后,导员突然让本人去签字,没办法,下车,我也是第一次知道检完票没发车还能退票,回去签完字后,感觉还有机会到机场,于是重新买去长春的票,100块钱,去长春了,结果发现长春西到机场要常规路线要一个半点,不赶趟,于是发车,走高速猛跑,40km,打车花了180,终于是在飞机登机的队列末尾排上了。之后就慢慢这样过去了,房子尝试转租也没转出去,花了300找中介帮忙转也没转出去,到期了,3600的押金没了。虽然活的真的很苦,就是了……今后打算目前打算干到三月份转暑期实习,因为干的是代码质量,虽然也是开发,但是因为是qa,平常干的事代码cr,开发ci流水线,开发内网的服务给老板展示成果,虽然可以提升cpp技术,但是还是怕业务不行,所以还是有点担心的。虽然现在只有两个实习生和mt在干,并且可能提供转正机会,但是那个实习生在技术上远比我厉害,如果只给一个名额我可能拿不到,所以很焦虑。开暑期实习之后也是准备多面面,到时候看看能不能更多的选择。现在的组真的很好,很wlb,很想在这个组留下。
点赞 评论 收藏
分享
评论
5
12
分享

创作者周榜

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