众安 golang 后台开发笔试复盘

  • 选填考了一堆计网相关的八股,已晕。

  • Mutex 的正常模式和饥饿模式的区别,是为了解决什么问题?

    Mutex 的正常模式采用非严格公平策略,新来的 goroutine 有机会直接竞争锁,这样可以减少上下文切换,提高整体吞吐量,但可能导致部分等待时间较长的 goroutine 一直抢不到锁而发生饥饿;因此 Go 在检测到某个 goroutine 等待时间超过阈值(约1ms)时,会切换到饥饿模式,此时锁会直接交给等待队列中的最老 goroutine,以保证公平性,防止长期得不到锁的问题,当竞争压力下降后再恢复正常模式,从而在性能和公平之间取得平衡。

  • GC 过程中的写屏障是什么,作用是什么?

    写屏障(Write Barrier)是 Go 在进行并发垃圾回收时,在指针写入操作前插入的一段额外逻辑,用于记录对象引用关系的变化。由于 Go 的 GC 采用并发标记算法,在 GC 标记阶段用户程序仍然可能修改对象指针,如果没有写屏障,可能导致某些新引用的对象没有被标记,从而被错误回收。写屏障的作用就是在指针发生变化时通知 GC,将相关对象重新标记为可达,从而保证并发 GC 过程中对象引用关系的正确性,避免出现误回收的问题,本质上是解决并发标记阶段的数据一致性问题。

  • 内存逃逸的定义是什么?请举出几处常见的内存逃逸的情景。为什么要尽量避免内存逃逸的出现

    Go 的 sync.Mutex 采用正常模式和饥饿模式两种工作模式来平衡性能和公平性。在正常模式下,新来的 goroutine 可以和等待队列中的 goroutine 一起竞争锁,这样可以提高系统吞吐量,但可能导致某些等待时间较长的 goroutine 一直抢不到锁,从而发生饥饿问题。当某个 goroutine 等待锁超过约 1ms 时,Mutex 会进入饥饿模式,此时锁会按照 FIFO 顺序直接交给等待队列头部的 goroutine,新来的 goroutine 不再参与竞争,从而保证公平性。因此这两种模式的设计主要是为了解决高并发场景下锁竞争的性能与公平性之间的平衡问题。

  • 讲一下 GMP 模型,什么是任务窃取机制,什么是切换机制。

    Go 的 GMP 调度模型由 G(goroutine)、M(操作系统线程)和 P(processor)组成,其中 G 是待执行的协程,M 是实际执行代码的线程,P 是调度的核心资源,负责维护本地运行队列和执行上下文,只有 M 持有 P 才能运行 G。任务窃取机制是指当某个 P 的本地运行队列为空时,会从其他 P 的队列中窃取一半的 goroutine 来执行,以提高 CPU 利用率并实现负载均衡。切换机制主要指当一个 M 因为系统调用(syscall)发生阻塞时,会主动释放绑定的 P,让 P 绑定到其他空闲的 M 上继续执行其他 goroutine,等阻塞的 M 恢复后再尝试重新获取 P,这样可以避免因为线程阻塞导致整个调度器停顿,从而提高并发执行效率。

  • 笔试两题。

    • T1 求 n () 求有多少个数 x 满足

        $\sqrt n$ 筛一下因数就行。
      
    • T2 小红的树,现在有一颗树,小红在 x 节点上,树上的边为双向边,有长度 w,小红可以到一个节点,每次移动需要消耗 w * y 的代价,然后总得分为移动的代价,加上最后停留的位置中,所有节点到该节点的路径长度之和乘以 z,求最小代价。

        换根 DP 
      
#我的求职总结#
全部评论
请问是双机位还是单机位啊
点赞 回复 分享
发布于 04-02 16:57 湖南

相关推荐

04-13 15:31
门头沟学院 Java
某游戏厂,面了 1h。大部分时间都是问纯八股,项目一点没问,手撕也很简单,网上搜到的面经大部分是C++八股文轰炸或者项目拷打。是不是因为一开始就对我不感兴趣所以干脆不为难我了面经如下:自我介绍游戏经历主要编程语言(我说的Java 但是岗位写的是C++/GoLang)求职方向是后端,为什么选择游戏服务器开发有Linux使用经历吗(项目部署)用过的Linux命令查看文件用什么命令,查看大文件呢?租服务器会关注服务器配置吗,如何确定这个配置能够满足项目部署的需求?会分析服务器使用情况吗(CPU、内存使用率),如何定位具体的线程资源使用情况?讲讲数组和链表结构、常用操作、时间复杂度为什么数组支持随机访问(内存连续+偏移量)讲讲栈和队列结构、区别、应用讲讲RabbitMQ如何用数组实现队列讲讲哈希,平时用过哪些哈希的数据结构哈希表的key如何获得什么是哈希冲突哈希底层原理了解吗面向对象三大特性现场写一下多态的例子讲讲平时用过的设计模式手撕反转链表、反转字符串反问的时候面试官说我可以自信一点()最后给点建议吧:纯八股 + 项目一点没问,大概率不是“不感兴趣所以不为难你”,更可能是:1,面试官习惯按固定流程走,先筛基础2,或者他觉得项目跟岗位匹配度不高,问了也白问,3,面了一个小时还给建议,说明你至少过了他的及格线。别自己加戏
查看23道真题和解析
点赞 评论 收藏
分享
评论
2
10
分享

创作者周榜

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