总结:
1、重点介绍项目
2、如何学习go语言的
3、从搜索引擎输入数据到显示结果的流程
4、通过ip地址如何找到目标地址
5、进程线程区别
6、进程间通信方式 共享内存通信
7、https请求流程
7、http和tcp
8、主协程如何等待所有协程都完成
9、go中的uint无符号整型是否可以相减
10、go的数组和切片 如何更改对应值
11、map数据根据key进行排序
12、go的反射
13、如何定义接口返回类型
14、go的结构体能不能比较
15、GMP调度模型
16、linux常用命令
17、如何查看端口是否被占用
18、如何停止一个进程
19、查找文件中的特定字符
20、git命令 merge和rebase的区别

来还愿了 整理背诵了一个月的八股文,再回来看发现能回答个七七八八。不全面或者有错误的地方希望大家指出来
3、域名解析(说明缓存和一级二级等域名服务器查找),TCP三次握手,发送HTTP请求,后端处理请求,返回HTTP响应,渲染页面,TCP四次挥手。
4、题目说的可以更清晰一点,我感觉应该是根据ip地址找到目标主机吧,私网公网,arp协议,地址转换,路由协议,路由器表等。
5、进程是资源分配基本单位,线城是调度的基本单位,从使用资源,安全性,切换等方面回答。
6、大概5中,管道(具名匿名管道),消息队列,socket,共享内存,信号量。进程通信和同步区别,共享内存更高效,可以用于大文件传输,可以访问一块内存空间,但是需要同步机制控制多个进程。
7、https比http多了ssl,再建立http之前主要交换一次密钥,对称和非对称区别,以及数字签名,CA机构作用等,http是建立在tcp之上的。
8、最简单sleep,但是不好控制,太笨,waitgroup或者channel
9、不可以,涉及到原码补码反码,计算机存储,减去一个数,相当于加上这个数的相反数的补码,负数的补码是符号位不变,其他位取反,相加变成一个很大的数,因为是无符号位,首位也会再变。
10、数组是值类型,切片是抽象的数组,函数传值最好传递数组指针或者传递切片
11、key需要是可比较类型,先把key放到一个切片中排序,然后根据这个排序的数组再取值
12、程序动态的执行过程中,动态获取对象属性或者创建新对象,比较效率比较低,要避免使用reflect
13、不太清除,定义返回接口类型,可能会返回实现该接口的结构体类型
14、可以,但是分情况,如果包含不可比较的成员,可以比较指针,但是不能比较实例,如果不包含不可比较成员,可以比较指针和实例
15、GMP:P是调度器,M是内核线程,G是Gortoutine,work stealing和hand off等调度策略
16、cat grep,ls sudo等等
17、netstat -tunlp | grep 端口号
18、ps -aux,然后 kill
19、cat -n 文件名 | grep 字符

一、GC原理?

golang的GC大概可以分为3个阶段。

1.3版本:标记清除。

原理:开启STW,标记,清除,关闭STW。

问题:最大的问题就是需要开启STW,导致整个程序停止运行。

1.5版本:三色标记法。

1.8版本:混合写屏障。