- 博客(62)
- 收藏
- 关注
原创 Go合集 | 《数据结构和算法(Golang实现)》
《数据结构和算法(Golang实现)》这本深入浅出的指南书籍,旨在帮助读者快速掌握Golang中的数据结构和算法。
2024-02-28 21:47:24
522
原创 go标准库strings — 字符串操作
Golang标准库。对于程序员而言,标准库与语言本身同样重要,它好比一个百宝箱,能为各种常见的任务提供完美的解决方案。本文主要讲解字符串的常见操作。
2024-02-28 21:40:07
1509
原创 golang goroutine 如何退出?
L13将mcall的返回地址保存到gp的g.sched.pc字段,L14将gp的栈顶,也就是SP保存到BX寄存器,L16将SP保存到gp的g.sched.sp字段,L17将g保存到gp的g.sched.g字段,L18将BP保存到gp的g.sched.bp字段。不过,maingoroutine实际上就是代表用户的main函数,它都执行完了,肯定是用户的任务都执行完了,直接退出就可以了,就算有其他的goroutine没执行完,同样会直接退出。到这里,就会去执行goexit0函数,注意,这里永远都不会返回。
2024-02-26 23:34:10
665
2
原创 解锁成功面试的秘诀,完美应对这些常见问题!
面试技术点:从面试的起航点开始,我们将帮助你掌握各种技术点。这里涵盖了从基础语法到高级技巧的全方位面试知识,为你呈现最新的面试题目,帮助你快速掌握面试技巧。面试题汇总:本文汇总了大量的面试题目,包括Go语言、Redis、Docker等热门技术栈。这些题目精心挑选,涵盖了常见的面试知识点,帮助你全面了解面试考察的广度和深度。Go小技巧:Go语言作为一门快速发展的编程语言,掌握一些小技巧能够显著提升你在面试中的竞争力。我们将分享一些Go语言的技巧和实践,帮助你在面试中脱颖而出!面试八股文。
2024-02-26 23:30:00
642
原创 Go语言设计模式·简单工厂模式
go 语言没有构造函数一说,所以一般会定义NewXXX函数来初始化相关类。NewXXX 函数返回接口时就是简单工厂模式,也就是说Golang的一般推荐做法就是简单工厂。在这个simplefactory包中只有API 接口和NewAPI函数为包外可见,封装了实现细节。
2024-02-23 21:21:38
382
原创 Go 原子操作有哪些?
原子操作仅会由一个独立的CPU指令代表和完成。原子操作是无锁的,常常直接通过CPU指令直接实现。 事实上,其它同步技术的实现常常依赖于原子操作。
2024-02-22 20:09:59
919
原创 《Go题库·16》读写锁底层是怎么实现的
题目解析 GOLANG ROADMAP社区答案(自由)读写锁的底层是基于互斥锁实现的。为什么有读写锁,它解决了什么问题?(使用场景)它的底层原理是什么?在这里我会结合 Go 中的读写锁 RWMutex 进行介绍。我们通过与 Mutex 对比得出答案。Mutex 是不区分 goroutine 对共享资源的操作行为的,在读操作、它会上锁,在写操作,它也会上锁,当一段时间内,读操作居多时,读操作在 Mutex 的保护下也不得不变为串行访问,对性能的影响也就比较大了。RWMutex 读写锁的诞.
2022-07-01 16:29:46
302
原创 《Go题库·15》go struct 能不能比较?
题目解析 GOLANG ROADMAP社区答案(engine)需要具体情况具体分析,如果struct中含有不能被比较的字段类型,就不能被比较,如果struct中所有的字段类型都支持比较,那么就可以被比较。不可被比较的类型:① slice,因为slice是引用类型,除非是和nil比较② map,和slice同理,如果要比较两个map只能通过循环遍历实现③ 函数类型其他的类型都可以比较。还有两点值得注意:结构体之间只能比较它们是否相等,而不能比较它们的大小。只有所有属性都相等而属性顺序.
2022-06-30 16:01:04
380
原创 《Go题库·14》WaitGroup的坑
题目解析 GOLANG ROADMAP社区答案(engine)① Add一个负数如果计数器的值小于0会直接panic② Add在Wait之后调用比如一些子协程开头调用Add结束调用Wait,这些 Wait无法阻塞子协程。正确做法是在开启子协程之前先Add特定的值。③ 未置为0就重用WaitGroup可以完成一次编排任务,计数值降为0后可以继续被其他任务所用,但是不要在还没使用完的时候就用于其他任务,这样由于带着计数值,很可能出问题。④ 复制waitgroupWaitGroup有noc.
2022-06-29 10:15:36
187
原创 《Go题库·13》向为nil的channel发送数据会怎么样
题目解析 GOLANG ROADMAP社区答案(栾龙生)空通道即无缓冲通道。无缓冲通道上的发送操作将会阻塞,直到另一个goroutine在对应的通道上执行接收操作,这时值传送完成,两个goroutine都可以继续执行。相反,如果接收操作先执行,接收方gorountine将阻塞,直到另一个goroutine在同一个通道上发送一个值。使用无缓冲通道进行的通信导致发送和接收goroutine同步化。因此,无缓冲通道也称为同步通道。当一个值在无缓冲通道上传递时,接收值后发送方goroutine才被再次唤醒.
2022-06-28 20:09:55
442
原创 《Go题库·12》slice和array区别?
题目解析 GOLANG ROADMAP社区答案(engine)array是固定长度的数组,是值类型的,如果进行赋值或者作为函数参数,实际上整个数据都会被重新拷贝一份。使用前必须声明长度arr := [5]int而slice属于引用类型,是一个不定长的,总是指向底层的数组array的数据结构。作为函数参数时,slice传递的是指针。创建时不需要指定长度 var s []ints := make([]int,10)s :=[]int{1,2,3}本文由 GOL.
2022-06-27 12:44:25
239
原创 《Go题库·11》channel的应用场景
题目解析 GOLANG ROADMAP社区答案(engine)channel适用于数据在多个协程中流动的场景,有很多实际应用:① 任务定时比如超时处理:select { case <-time.After(time.Second):定时任务select { case <- time.Tick(time.Second)② 解耦生产者和消费者可以将生产者和消费者解耦出来,生产者只需要往channel发送数据,而消费者只管从channel中获取数据。③ 控制并发.
2022-06-24 16:42:29
167
原创 《Go题库·10》channel和锁的对比
题目解析 GOLANG ROADMAP社区答案(engine)并发问题可以用channel解决也可以用Mutex解决,但是它们的擅长解决的问题有一些不同。channel关注的是并发问题的数据流动,适用于数据在多个协程中流动的场景。而mutex关注的是是数据不动,某段时间只给一个协程访问数据的权限,适用于数据位置固定的场景。本文由 GOLANG ROADMAP 发布!...
2022-06-22 10:11:08
330
原创 《Go题库·9》同一个协程里面,对无缓冲channel同时发送和接收数据有什么问题
解析整理 GOLANG ROADMAO社区答案(engine)同一个协程里,不能对无缓冲channel同时发送和接收数据,如果这么做会直接报错死锁。对于一个无缓冲的channel而言,只有不同的协程之间一方发送数据一方接受数据才不会阻塞。channel无缓冲时,发送阻塞直到数据被接收,接收阻塞直到读到数据。本文由 GOLANG ROADMAP 发布!...
2022-06-21 16:12:46
197
原创 《Go题库·8》channel实现方式/原理/概念/底层实现
面试企业 好未来、米哈游、跟谁学,字节跳动、美团、网易、新浪、滴滴、小米题目解析 GOLANG ROADMA社区答案(知北游)+背景:Go语言提供了一种不同的并发模型--通信顺序进程(communicating sequential processes,CSP)。设计模式:通过通信的方式共享内存channel收发操作遵循先进先出(FIFO)的设计底层结构:type hchan struct { qcount uint // channel中的元素个数.
2022-06-20 15:17:55
275
原创 《Go题库·7》介绍一下通道
面试企业 知乎*题目解析 * GOLANG ROADMAP社区答案1(栾龙生)如果说goroutine是Go程序并发的执行体,通道就是它们之间的连接。通道可以使一个goroutine发送特定值到另一个goroutine的通信机制。每一个通道都是一个具体类型的导管,叫做通道的元素类型。例如一个具有int类型元素的通道写为chan int。通道是一个用map创建的数据结构的引用。当复制或者作为参数传递到一个函数时,复制的是引用,这样调用者和被调用者都引用同一份数据结构。和其他引用类型一样,通道的零值.
2022-06-17 15:15:30
107
原创 《Go题库·6》Go和java比有什么不同?
面试企业 虾皮、知乎 题目解析 GOLANG ROADMAP社区答案(溪尾)Go也称为Golang,是一种开源编程语言,Go可以轻松构建可靠,简单和高效的软件。Go是键入的静态编译语言。Go语言提供垃圾收机制,CSP风格的并发性,内存安全性和结构类型。Java是一种用于一般用途的计算机编程语言,它是基于类的,并发的和面向对象的。Java专门设计为包含很少的实现依赖项。Java应用程序在JVM(Java虚拟机)上运行。它是当今最著名的编程语言之一。Java是一种用于为多个平台开发软件的编程语.
2022-06-16 22:09:34
95
原创 《Go题库·5》Go的GMP模型?
面试企业 深信服,百度,小米,哔哩哔哩,好未来,跟谁学,学而思,网易,腾讯,知乎,高德,字节,,新浪,虾皮,Aibee。 题目解析 GOLANG ROADMAP社区答案(溪尾)G是Goroutine的缩写,相当于操作系统的进程控制块(process control block)。它包含:函数执行的指令和参数,任务对象,线程上下文切换,字段保护,和字段的寄存器。M是一个线程,每个M都有一个线程的栈。如果没有给线程的栈分配内存,操作系统会给线程的栈分配默认的内存。当线程的栈制定,M.stack-&..
2022-06-15 10:24:38
117
原创 《Go题库·4》数组怎么转集合?
面试企业 TCL *解析整理 * GOLANG ROADMAP社区答案1:(溪尾)可以使用数组的索引作为map的key,数组的值作为map的值func main() { arr := [5]int{1, 2, 3, 4, 5} m := make(map[int]int, 5) for i, v := range arr { m[i] = v } fmt.Println(m)}本文由 GOLANG ROADMAP 发布!...
2022-06-14 14:12:41
145
原创 《Go题库·3》Go语言中是如何实现继承的?
面试企业 百度 解析整理 GOLANG ROADMAP社区答案(溪尾)对于Go语言是否像C++、Java一样是面向对象的语言,官方给出的解释如下:Yes and no. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of “interface” in Go provides a d..
2022-06-13 09:13:26
143
原创 《Go题库·2》对已经关闭的channel进行读写操作会发生什么?
面试企业: 深信服 题目解析: GOLANG ROADMAP社区答案1:(溪尾)1 . 读已关闭的channel读已经关闭的channel无影响。如果在关闭前,通道内部有元素,会正确读到元素的值;如果关闭前通道无元素,则会读取到通道内元素类型对应的零值。若遍历通道,如果通道未关闭,读完元素后,会报死锁的错误。fatal error: all goroutines are asleep - deadlock!2 . 写已关闭的通道 会引发panic: send on clos.
2022-06-10 15:53:31
445
原创 《Go题库·1》Golang里的数组和切片有了解过吗?
题目来源: 深信服、知乎、跟谁学题目解析: GOALNG ROADMAP社区答案 1:(溪尾)数组长度是固定的,而切片是可变长的。可以把切片看作是对底层数组的封装,每个切片的底层数据结构中,一定会包含一个数组。数组可以被称为切片的底层数组,切片也可以被看作对数组某一连续片段的引用。因此,Go 中切片属于引用类型,而数组属于值类型,通过内建函数 len,可以取得数组和切片的长度。通过内建函数 cap,可以得到数组和切片的容量。但是数组的长度和容量是相等的,并且都不可变,而且切片容量是有变化规律的。.
2022-06-09 23:50:15
310
原创 【第四十三期】社招面经-后端开发 蚂蚁
面试前蚂蚁的面试挺独特,每轮面试都没有 HR 约时间,一般是晚上 8 点左右面试官来一个电话,问是否能面试,能的话开始面,不能就约一个其它时间。全程 6 面,前五面技术面,电话面试,最后一面是 HR 面,现场面。一面介绍一下自己问项目经历, 聊"数据同步"接着聊上了 K8S 的项目有没有什么钻研得比较深得技术?(我:kubernetes, golang, prometheus, java)kubernetes 的架构是怎么样的?这个问题很大,拆成 apiserver、contr
2022-03-18 11:16:27
275
原创 【第四十二期】米哈游后台golang开发面经
介绍一下自己 一开始问项目(我的项目跟网络相关)中的拥塞控制、流量控制;简单介绍了一下协议做的事情。有什么拥塞控制协议:Reno和BBR介绍一下Reno协议的工作方式;UDP 和 TCP 的区别,都适合什么场景:在游戏中使用KCP协议比较多。 引申了一下HTTP 的状态码:1~5开头各是什么作用用HTTP可以实现主动推送的功能吗,为什么不使用HTTP而是使用 websocket(项目中使用了websocket )HTTP1.1 中也实现了长连接,但是这个长连接中服务器还是被动的,而且H.
2022-03-16 12:14:26
9138
原创 【第四十期】shopee-golang后台一面面经
45分钟左右,编程题没写出来,感觉凉凉......记录一下首先自我介绍 balabala...数据库:索引的优点与缺点,底层怎么实现的?B+树的特点,与二叉树的区别事务的特性,解释一下它们其中的隔离性分几个级别?每个级别解释一下什么意思?串行化的优缺点 TCP:TCP与UDP的区别TCP的优点与缺点TCP的可靠性是通过什么来保证的?解释一下确定重传机制,讲讲窗口滑动操作系统:讲讲进程与线程,系统是怎么调度线程的?hash冲突的解决办法有哪些?看我用的golang问
2022-03-14 10:53:51
1721
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人