![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go语言面试
文章平均质量分 59
MLittlehands
这个作者很懒,什么都没留下…
展开
-
Golang内存管理和垃圾回收
现代高级编程语言管理内存的方式分自动和手动两种。手动管理内存的典型代表是C和C++,编写代码过程中需要主动申请或者释放内存;而Java和Go等语言使用自动的内存管理系统,由内存分配器和垃圾收集器来代为分配和回收内存,开发者只需关注业务代码而无需关注底层内存分配和回收,虽然语言帮我们处理了这部分,但是还是有必要去了解一下底层的架构设计和执行逻辑,这样可以更好的掌握一门语言,本文主要以go内存管理为切入点再到go垃圾回收,系统地讲解了go自动内存管理系统的设计和原理。转载 2022-09-26 13:05:12 · 871 阅读 · 0 评论 -
go语言面试(第一轮)请你说说channel 死锁的场景
产生死锁的场景有两种:1..当一个channel中没有数据,而直接读取时,会发生死锁。(空读)2.当channel数据满了,再尝试写数据会造成死锁。(满写)原创 2022-09-17 16:10:45 · 706 阅读 · 0 评论 -
go语言面试(第一轮)请你说说map遍历为什么是无序的
得分点:Go 语言中,当我们对 map进行遍历 时,并不是固定地从第一个数开始遍历,每次都是从随机的一个位置开始遍历。:虽然buckets是一块连续的内存,但是每次写入都会通过hash到记录到某一个bucket上,而不是按buckets顺序写入。题目评价:这道题在我们学习go语言的时候,就被告知它是无需的,但是很少有人探究它为什么是无序的。这两种方法都会对内存进行扩容,迫使元素顺序变化,导致Go的Map遍历结果无序。总结:Go的Map遍历结果无序是由于go语言的特性决定的。Go的Map的扩容有两种:(1)原创 2022-09-16 17:03:44 · 1265 阅读 · 0 评论 -
go语言面试(第一轮)请你说说 TCP 三次握手四次挥手过程
需要注意的是,这个时候的TCP连接就处于一个半关闭(half-colse)的状态,尽管客户端已经没有数据要发送了,但是服务器端还是可以向客户端发送数据的,服务器端到客户端的连接并没有被释放掉。到此TCP连接三次握手的过程就全部结束了。假设现在有一种情况,客户端发出的第一个连接请求报文段并没有丢失而是在某些网络节点上被滞留了,直到客户端和服务器端的新连接已经释放后的某个时间点,第一个连接请求报文段才到了服务器端,这时候服务器端以为客户端又发起了一次请求,于是服务器端向客户端发起了确认连接报文段,同意连接。原创 2022-09-16 16:29:37 · 147 阅读 · 0 评论 -
go语言面试(第一轮)请你说说 TCP 和 UDP 的区别
要点1: TCP 提供面向连接的可靠传输,UDP 提供面向无连接的不可靠传输。(TCP协议和 UDP 协议都是传输层协议,都是为应用层程序服务,都具有复用(不同的应用层协议可以共用 UDP 协议和 TCP 协议)和分用(将数据报解析之后分发给不同的应用层程序)的功能)。要点3:TCP在要求数据准确、对速度没有硬性要求的场景有很好的表现。应用场景如表2.(加分)提醒:面试不可能把所有的题目都答上来(很优秀的人除外),但是开始的基础题是必须回答上来的。要点2:描述TCP和UDP各自的优点和缺点。原创 2022-09-15 15:13:25 · 601 阅读 · 0 评论