栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

后端面试接触golang

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

后端面试接触golang

1、go调度器:GMP模型,线程运行是goroutine的实体,调度器的功能是把可运行的goroutine分配到工作线程上。

(1)我们通过go func()来创建一个goroutine

(2)有两个存储G的队列,局部调度器P的本地队列,一个是全局G队列。新建的G会保留在P的本地队列,如果P的本地队列满了就保留在全局中。

(3)G只能运行在M中,一个M必须有一个P,M与P是1:1的关系。

(4)一个M调度G的过程,必须是一个循环机制;

(5)当M执行一个G如果发送syscall和阻塞,M会阻塞,如果当前有一部分G,runtime把M从P中摘除,再新建服务这些P;

(6)当M系统调用结束时候,这个G会尝试获取一个空闲的P执行,并放入到这个P的本地队列。

TCP协议之握手和挥手:TCP是一种面向连接的,可靠的,基于字节流的传输层通信协议,是端到端的传输,TCP提供稳定的链接服务,连接三次握手进行初始化的,又因TCP是双工模式,所以需要四次挥手关闭连接。

第一次握手:建立连接时,由客户端发送Sync包到服务端,并进入SYN_SEN状态,等待服务端确认;

第二次握手:服务端收到Sync包,确认客户端的Sync包,再给客户发送一个Sync包,进入SYN_RECV状态,等待客户端接受确认;

第三次握手:客户端接到服务端的Syn+ack包,向服务端发送确认包ack,之后客户端和服务端都进入ESTABLISH状态,表示TCP连接成功,即完成三次握手。

四次挥手,终止TCP连接,就是指断开一个TCP连接时需要客户端和服务端一共4个包确认链接的断开,双端都发送Fin包,首先关闭一方主动关闭,另一方则被动关闭。

第一次挥手:客户端发出连接释放报文Fin包,并停止发送数据,客户端进入FIN-WAIT-1状态。

第二次挥手:服务端接收到释放报文,发出确认ACK包,服务端进入CLOSE-WAIT。

第三次挥手:服务端将最后的数据发送完毕,向客户端发送释放报文Fin包,服务端进入LAST-ACK状态。

第四次挥手:客户端接收到服务端的连接释放报文,必须发出确认,客户端进入TIME-WAIT状态。此时TCP链接还没有释放,需经过2*MSL(最长报文寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。

服务端收到客户端的确认即进入CLOSED状态。

切片:是数组连续片段的引用,结构体包含数组的指针,数组的量和容量。

切片的扩容就是append,如果在容量之内就append;超过了容量底层数组会复制到新的数组上去,容量扩充2倍,再append。

锁:保证线程安全,主要针对多个线程对一个全局变量修改,如果涉及读写用读写锁更好。

Mysql索引底层原理:B+树存储的是数据的地址,一个节点可以存很多个数据,算法复杂度O(h*logn),大大减少了磁盘IO的读写次数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821408.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号