go⾯试题整理(附带部分⾃⼰的解答)
解答题:go相关
go的调度
答:
go的调度原理是基于GMP模型,G代表⼀个goroutine,不限制数量;M=machine,代表⼀个线程,最⼤1万,所有G任务还是在M上执⾏;
P=processor代表⼀个处理器,每⼀个允许的M都会绑定⼀个G,默认与逻辑CPU数量相等(通过
runtime.GOMAXPROCS(runtime.NumCPU())设置)。
go调⽤过程:
创建⼀个G对象
雅思机经下载如果还有空闲的的P,创建⼀个M
M会启动⼀个底层线程,循环执⾏能找到的G
G的执⾏顺序是先从本地队列找,本地没找到从全局队列找。⼀次性转移(全局G个数/P个数)个,再去其它P中找(⼀次性转移⼀半)以上的G任务是按照队列顺序执⾏(也就是go函数的调⽤顺序)。
另外在启动时会有⼀个专门的sysmon来监控和管理,记录所有P的G任务计数schedtick。如果某个P的schedtick⼀直没有递增,说明这个P⼀直在执⾏⼀个G任务,如果超过⼀定时间就会为G增加标记,并且该G执⾏⾮内联函数时中断⾃⼰并把⾃⼰加到队尾。
你在哪英文>英孚教育网站
go struct能不能⽐较
答:
可以能,也可以不能。
大学生英语自我介绍因为go存在不能使⽤==判断类型:map、slice,如果struct包含这些类型的字段,则不能⽐较。
这两种类型也不能作为map的key。
go defer(for defer)
答:
ice breakers
类似栈操作,后进先出。
letting go什么意思
dpph因为go的return是⼀个⾮原⼦性操作,⽐如语句 return i,实际上分两步进⾏,即将i值存⼊栈中作为返回值,然后执⾏跳转,⽽defer的执⾏时机正是跳转前,所以说defer执⾏时还是有机会操作返回值的。
lect可以⽤于什么byul
nice to meet you什么意思
>referrals