go高阶知识

1.GMP

GMP原理

  • sysmon sysmon是我们的保洁阿姨,它是一个M,又叫监控线程,不需要P就可以独立运行,每20us~10ms会被唤醒一次出来打扫卫生,主要工作就是回收垃圾、回收长时间系统调度阻塞的P、向长时间运行的G发出抢占调度等等。
  • G会运行在M上需要一个P 1/61概率

2.go struct能不能比较

  • 不同类型的 struct 之间不能进行比较,编译期就会报错(GoLand 会直接提示) 同类型的 struct 也分为两种情况, struct 的所有成员都是可以比较的,则该 strcut 的不同实例可以比较 struct 中含有不可比较的成员(如 Slice),则该 struct 不可以比较

3.select可以用于什么

  • 常用语gorotine的完美退出 golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作 每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作

4.context包的用途

Context通常被译作上下文,它是一个比较抽象的概念,其本质,是【上下上下】存在上下层的传递,上会把内容传递给下。在Go语言中,程序单元也就指的是Goroutine 用于协程退出

5. 主协程如何等其余协程完再操作

waitGroup channel context

6.slice,len,cap,共享,扩容

slice底层实现是数组 可以用cap 和len 扩容后地址会变 双倍扩容 超过1024 就1024点四分之一增长

7. map如何顺序读取

map的key进行排序然后输出

8. 实现set

type inter interface{}
type Set struct {
    m map[inter]bool
    sync.RWMutex
}

func New() *Set {
    return &Set{
    m: map[inter]bool{},
    }
}
func (s *Set) Add(item inter) {
    s.Lock()
    defer s.Unlock()
    s.m[item] = true
}

9.http get跟head/状态码/http keep-alive/http能不能一次连接多次请求,不等后端返回

  • http的get和head本质都是一次请求,区别是head只会获取头信息,状态码1000-500 -http本质上市使用socket连接,因此发送请求,接写入tcp缓冲,是可以多次进行的,这也是http是无状态的一种
  • client发出的HTTP请求头需要增加Connection:keep-alive字段 Web-Server端要能识别Connection:keep-alive字段,并且在http的response里指定Connection:keep-alive字段,告诉client,我能提供keep-alive服务,并且"应允"client我暂时不会关闭socket连接

10. tcp与udp区别,udp优点,适用场景

tcp 有状态连接 3次握手 可靠 字节流 socket udp 无状态连接 传输流 不可靠 速度快

11.time-wait的作用

  • 为了保证客户端发送的最后一个ack报文段能够到达服务器。因为这最后一个ack确认包可能会丢失
  • 原因2:在第四次挥手后,经过2msl的时间足以让本次连接产生的所有报文段都从网络中消失,这样下一次新的连接中就肯定不会出现旧连接的报文段了。

12. slice和数组,slice底层结构

slice是动态的 是引用类型 数组是固定的 不同大小的数组就是不同的类型 切片的底层结构是一个指向数组地址的指针和cap len

全部评论

相关推荐

个人背景:学院二本计科专业 大二开始实习个人经历:安克创新 、理想汽车、字节跳动碎碎念:我做事只有三分钟热度。看到进了大厂的同学,我会羡慕,也会跟着努力上进;但遇到好看的小说,我又会放下手头的事沉迷其中,之前的坚持也就中断了。我有些自卑,总觉得自己学历和外貌都不够好。之前偶然在网上受到关注,我就喜欢上了上网,因为这里有很多人认可我。但我也很在意别人的评价,偶尔看到嘲讽的言论,会触发我的自卑情绪,让我感到愤怒。有时候我会强硬地回怼,有时候又会懦弱地选择无视。我也有虚荣心。不管是拿到安克、理想还是字节的机会,我在分享的时候都会带着这份心思。我会特意强调自己学历不好,是为了衬托出过程的艰难,以此显得自己更厉害。我知道,人往往会炫耀自己缺少的东西,来掩盖内心的空洞。我总想着走捷径,不太喜欢踏踏实实地做事。找实习的时候,我花了更多时间在研究面试技巧上,而不是提升专业能力。我会反复听面试录音分析技巧,看面试教程学习怎么和不同的面试官沟通,还会每天自言自语练习语言表达,同学都觉得我有点奇怪。我的实习生涯里,侥幸和运气占了很大一部分。我总在想,如果有一天我失去了这份幸运,这些特质可能会让我一蹶不振。ps: 很多人会问我学习路线和经验 但是就像我上面说的 我的实习过程靠的很多是关键节点的运气 技术上面我可能不如很多人  所以请大家理性求助和理性参考我的回答 附上我的投递记录
我的offer在哪里...:从去年看到现在,飞升哥就是榜样
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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