Golang 逃逸分析

题目序号:(168、2762、2880、4829、5529、3442)题目来源:百度、哔哩哔哩、字节跳动、蚂蚁、网易、阿里频次:6答案1:(hello w...

获取不到锁会一直等待吗?

题目序号:(664)题目来源:网易题目频次:1答案1:(自由)会。在 2016 年 Go 1.9 中 Mutex 增加了饥饿模式,让锁变得更公平,不公平的...

如何实现一个 timeout 的锁?

题目序号:(665)题目来源:网易题目频次:1答案1:(自由)用 for 循环和 TryLock 实现。先记录开始的时间,用 for 循环判断是否超时,没...

go 的切片扩容机制

题目序号:(850)题目来源:小米题目频次:1答案1:(自由)扩容是为切片分配新的内存空间并复制原切片中元素的过程。在 go 语言的切片中,扩容的过程是:...

管道是否能二次关闭?

题目序号:(3597、2008)题目来源: 百度 、shein 频次:2答案1:(栾龙生)关闭已关闭的通道会引发panic: close of close...

管道关闭是否能读写?

题目序号:(2005、3596、3685、5203、6236)题目来源: 百度、深信服、微步、滴滴 频次:5答案1:(peace)往已关闭的channel...

channel是否线程安全等

题目序号:(6632)题目来源:有色频次:1答案1:(peace)channel为什么设计成线程安全?不同协程通过channel进行通信,本身的使用场景就...

go的map是线程安全的吗?

题目序号:(3493)题目来源:字节频次:1答案1:(peace)线程安全:对map进行并发读写时,如果程序能正常运行并能得到预期的结果。Map默认不是并...

Go语言Slice是否线程安全

题目序号:(1909)题目来源:字节频次:1答案1:(peace)Go语言实现线程安全常用的几种方式:1.互斥锁;2.读写锁;3.原子操作;4.sync....

goroutine 为什么轻量

题目序号:(2558)题目来源:字节频次:1答案1:(peace)从资源消耗方面来看,它只需要一个2Kb的内存栈就可以运行;从运行时来看,它的运行成本很低...

内存模型

题目序号:(119、4911)题目来源:字节、米哈游频次:2答案1:(趁醉独饮痛)+Go语言运行时依靠细微的对象切割、极致的多级缓存、精准的位图管理实现了...

Kratos 框架的特性

题目序号:204题目来源:好未来频次 :1答案1:(自由)Kratos 是一套轻量级的微服务框架,包含了大量微服务相关框架以及工具,它就像一个工具箱,目前...

defer 是怎么用的

题目序号:215题目来源:好未来频次 :1答案1:(自由)从 defer 关键字的常见使用场景和使用时需要注意什么来回答这个问题(不深入到实现原理)。de...

Context 包的作用

题目序号:6780题目来源:腾讯频次 :1答案1:(自由)Context 就像糖葫芦中的竹签子它的作用是在上下文中传递除了业务参数之外的额外信息,这个额外...

golang并发模型

题目序号:(120)题目来源:米哈游频次:1答案1:(阿纪、)+参考文章golang控制并发有三种经典的方式,一种是通过channel通知实现并发控制 一...

go 语言的 panic 如何恢复

题目序号:(1629)题目来源:腾讯频次:1答案1:(自由)recover 可以中止 panic 造成的程序崩溃,或者说平息运行时恐慌,recover 函...

defer 的执行顺序

题目序号:(5362)题目来源:七牛频次:1答案1:(自由)在同一个函数中,defer 函数调用的执行顺序与它们分别所属的 defer 语句的出现顺序完全...

服务器能开多少个M由什么决定

题目序号:487题目来源:跟谁学答案1:(Evan.C)由于M必须持有一个P才可以运行Go代码,所以同时运行的M个数,也即线程数一般等同于CPU的个数,以...

M和P是怎么样的关系

题目序号:487题目来源:跟谁学答案1:(Evan.C)M必须拥有P才可以执行G中的代码,理想情况下一个M对应一个P,P含有包含多个G的队列,P会周期性地...

同时启动了一万个G,如何调度?

题目序号:487题目来源:跟谁学答案1:(Evan.C)首先一万个G会按照P的设定个数,尽量平均地分配到每个P的本地队列中。如果所有本地队列都满了,那么剩...

用火焰图的优势?

题目序号:825题目来源:高德 频次:1答案1:(peace)火焰图(FlameGraph)是 svg 格式的矢量图,是先通过 perf 等工具分析得到...

struct的传递场景

题目序号:253题目来源:映客 频次:1答案1:(趁醉独饮痛)struct的特点用来自定义复杂数据结构struct里面可以包含多个字段(属性)struc...

runtime提供常见的方法

题目序号:261题目来源: 频次:1答案1:(趁醉独饮痛)Gosched():让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程...

go的profile工具

题目序号:265题目来源:频次:1答案1:(趁醉独饮痛)官方文章profile就是定时采样,收集cpu,内存等信息,进而给出性能优化指导。Go 存使用采样...

怎么检查go问题

题目序号:935题目来源:好未来频次:1答案1:(趁醉独饮痛)golangci-lint:golangci-lint 是一个集成工具,它集成了很多静态代码...

context包内部如何实现的?

题目序号:935题目来源:好未来频次:1答案1:(趁醉独饮痛)+context是 Go 语言在 1.7 版本中引入标准库的接口。context主要用于父子...

syncpool的实现原理

题目序号:361题目来源:频次:1答案1:(趁醉独饮痛)Pool是什么:Go标准库中提供的一个通用的Pool数据结构,可以使用它创建池化的对象。sync....

Git 常用命令

Git 常用命令仓库# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [pro...

番外篇二、BUG分支

bug分支在开发过程中,bug 就像家常便饭一样。有了 bug 就需要修复,在 Git 中,由于分支是如此的强大,所以,每个 bug 都可以通过一个新的临...

番外篇一、feature 分支

feature分支在开发过程中,除了 bug 外,也还会有无穷无尽的新的功能要不断添加进来。添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支...

十、git 标签

git 标签发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打...

九、git 的多人协作

git 的多人协作当你从远程仓库克隆时,实际上 Git 自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是orig...

八、Cherry Pick

Cherry Pick对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采...