首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏余生开发

    go语言面试题

    结构体⽐较规则之⼀: 只有相同的类型的结构体才可以⽐较(1 结构体的属性类型, 2 属性的顺序)

    1.3K40发布于 2020-12-31
  • 来自专栏Lemon黄

    Go 基础面试题

    本文是 Go 基础常见面试题,结合ChatGPT的详细解释版,全背是不可能,假如面试碰上了,挑出要点用自己的语言回答就好了。 1. 与其他语言相比,Go 语言的优点有哪些? 强大的标准库:Go 有一个丰富的标准库,尤其是对于网络编程和 Web 服务。 工具链:Go 语言自带一套完整的工具,如 go fmt 用于格式化代码,go get用于管理依赖等。 Go 中使用的数据类型 基本类型 布尔类型:bool ,值为 true或false 数值类型: 有符号整型:int,int8,int16,int32,int64,uint,uint8,uint16,uint32 ,int64 和 uintptr 浮点型:float32和float64 复数类型:complex64和complex128 其他类型:byte(uint8的别名) 和rune(int31的别名,表示一个 8. Go 当中同步锁有什么特点?作用是什么 在 Go 语言中,同步锁主要通过 sync包中的互斥锁(Mutex)和读写锁(RWMutex)来实现。

    85410编辑于 2023-12-06
  • 来自专栏Lemon黄

    Go 并发编程面试题

    Mutex 几种状态 在 Go 语言的同步库中,sync.Mutex是用来提供互斥锁的基本同步原语。 互斥锁在内部状态实现可能因 Go 语言的不同版本而有所不同。 Go 语言团队不断优化sync.Mutex,以找到公平和效率之间的平衡点。有关 sync.Mutex 的更多权威信息,建议查看最新的 Go 语言源码和文档。 3. 需要注意的是,在实现细节方面,Go 的标准库不提供关于互斥锁内部行为的具体参数。自旋的逻辑和上述条件可能在 Go 不同的版本之间有所变化,以上内容主要基于 Go 语言当前和之前版本的实现。 8. Cond 中 Wait 使用 在 Go 语言中,sync.Cond的Wait方法被用来挂起当前 goroutine,直到被Signal或Broadcast方法唤醒。

    1.3K10编辑于 2023-12-13
  • 来自专栏十二的树洞

    go面试题目收集

    (2)sliceTwo := sliceOne[2:4] 这种方式是基于其他切片或数据创建容量,长度为创建切片是指定的结束-起始位置, = 4-2=2;容量就等于切片的容量-起始位置=10-2=8.且两个切片共享同一个数据区 B uint8 // 指示bucket数组的大小 ... 由于每个bucket可以存放8个键值对, 所以同一个bucket存放超过8个键值对时就会创建一个桶, 用链表的方式将bucket关联起来。 go语言中协程 协程和线程都可以实现程序的并发执行; 通过channel来进行协程间的通信; 只需要在函数调用前添加go关键字即可实现go的协程,创建并发任务; 关键字go并非执行并发任务 G-M-P三者的关系与特点: P的个数取决于设置的GOMAXPROCS,go新版本默认使用最大内核数,比如你有8核处理器,那么P的数量就是8 M的数量和P不一定匹配,可以设置很多M,M和P绑定后才可运行

    97352编辑于 2021-12-24
  • 来自专栏mousemin

    Go 语言笔试面试题

    Go 语言笔试面试题 日常收集的题 一. 基础语法 1 = 和 := 的区别? 答案 := 声明+赋值 = 仅赋值 1var a int 2a = 10 3// 等价于 4a := 10 2 Go 有异常类型吗? 答案 Go 没有异常类型,只有错误类型(Error),通常使用返回值来表示异常状态。 1f, err := os.Open("/tmp/a.txt") 2if err ! 答案 编译失败:cannot use M (type int32) as type int in assignment Go 语言中,常量分为无类型常量和有类型常量两种,const N = 100,属于无类型常量 0 1 2 3 4 1 6 7 8 9]

    60730编辑于 2023-06-10
  • 来自专栏Java

    go语言面试题:为什么选择go语言

    选择Go语言的原因: 并发和高并发:Go 语言在设计之初就考虑了并发和高并发方面的问题,将其内置于语言层面上,在编写代码时容易实现并发,提升程序的性能。 高效率:Go 语言的速度非常快(如 C/C++),同时又简单易用(如 Python)。Go 语言通过 Go 语言自身的编译器即可生成本地机器码,无需虚拟机,加快了执行效率。 开发工具丰富:Go语言是开源的,所以有很多优秀的开发工具,例如Goland、Visual Studio Code等。 学习曲线低:Go 语言语法类似于C/C++,容易学习,对于其他编程语言的用户来说更加容易上手。 例如,在高并发的Web应用程序中,Go 语言被广泛应用,如微服务框架、云原生应用开发、区块链等。 Go语言的优秀性能和高可靠性已经在实际应用中得到了验证。

    14710编辑于 2025-01-21
  • 来自专栏go程序例子

    Go程序例子(8):数组

    Go 中,数组是具有特定长度的元素编号序列。在典型的 Go 代码中,切片(slice)更为常见;数组仅在一些特殊场景中有用。 twoD = [2][3]int{ {1, 2, 3}, {1, 2, 3}, } fmt.Println("2d: ", twoD)}运行结果:$ go run

    20610编辑于 2024-12-09
  • 来自专栏Devops专栏

    8.Go工程管理

    8.Go工程管理 1.工作区介绍 通过前面函数的学习,我们能够体会到函数的优势,就是可以将不同的功能放在不同的函数中实现,主函数(main( ))可以直接调用。 GO语言规定如下的文件夹如下: (1)src目录:用于以代码包的形式组织并保存Go源码文件。 (比如:.go .c .h .s等) (2)pkg目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“.a”归档文件。 (2.1.2)在该目录下创建不同的go源码文件,如下图所示: image-20210505235111375 在src目录下创建main.go文件和test.go文件(注意:这个两个文件是在同一个目录下面 如果导入的是标准库中的包(GO语言自带,例如:”fmt”包)会在安装 Go 的位置找到。Go 开发者创建的包会在 GOPATH 环境变量指定的目录里查找。

    51920编辑于 2022-01-17
  • 来自专栏猫头虎博客专区

    2023年88Go生态洞察:Go 1.21 版本发布探索

    2023年88Go生态洞察:Go 1.21 版本发布探索 摘要: 大家好,猫头虎博主今天带来的是关于Go语言的最新消息 - Go 1.21版本的发布! 搜索词条:Go 1.21, 语言改进, 标准库, 性能提升。 引言 亲爱的Go开发者们,又是激动人心的时刻!Go 1.21正式发布了。 如果在主包目录中存在default.pgo文件,go命令将启用PGO构建。PGO的影响是显著的,对各种Go程序进行了测试,性能提升了2-7%。 go工具现在支持向后和向前的语言兼容性。 在未来的Go版本中,我们计划解决Go编程中一个常见的问题:循环变量捕获。Go 1.21带来了这个特性的预览,你可以通过设置环境变量来启用。 你们的努力帮助确保Go 1.21尽可能稳定。如果你发现任何问题,请提交问题。 祝大家使用Go 1.21愉快!

    38810编辑于 2024-04-09
  • 来自专栏Lemon黄

    Go 运行时面试题

    Goroutine 的定义 在 Go 语言中,goroutine 是一种非常轻量级的执行线程。goroutine 是 Go 语言并发模型的核心,允许同时执行多个函数调用。 并发简单:Go 语言提供的 goroutines 使并发编程变得更简洁易懂。通过go关键字,开发者可以非常方便地启动新的并发任务。 需要注意的使,Go 的调度器细节可能随着版本更新而变化,上述描述适用于 1.x 系列的 Go 版本。 5. Go 1.14 版本引入了基于信号的抢占,这标志着 Go 语言实现了抢占式调度的一大步。 8. 升级 Go 版本:Go 团队不断优化 GC 机制。新的 Go 版本可能会带来更优化的 GC 行为,因此保持在最新的稳定版可以使应用受益于这些优化。 在调优之前,了解应用的内存使用模式是很重要的。

    78110编辑于 2023-12-13
  • 来自专栏码农编程进阶笔记

    Go面试必会的面试题

    引用类型的内存在堆中分配,当没有任何变量引用堆中的内存地址时,该内存地址对应的数据存储空间就变成了垃圾,就会被GO语言的GC回收。 五、堆和栈 堆:在Go中,栈的内存是由编译器自动进行分配和释放,栈区往往存储着函数参数、局部变量和调用函数帧,它们随着函数的创建而分配,函数的退出而销毁。 注意:在go中 var是声明关键字,不会开辟内存空间;使用 := 或者 make 关键字进行初始化时才会开辟内存空间。 七、深拷贝和浅拷贝 操作对象 深拷贝和浅拷贝操作的对象都是Go语言中的引用类型 区别如下: 引用类型的特点是在内存中存储的是其他值的内存地址;而值类型在内存中存储的是真实的值。 九、go的map实现排序 我们知道go语言的map类型底层是有hash实现的,是无序的,不支持排序。 如果我们的数据使用map类型存储,如何实现排序呢?

    64722编辑于 2022-12-21
  • 来自专栏编程基础

    Go编程基础-基础篇 8

    如果在匿名函数内,使用了外部环境的变量,就构成了一个闭包。简单来讲就是一个函数内,使用匿名函数来操作函数内声明的变量。

    25321发布于 2021-03-01
  • 来自专栏全栈程序员必看

    JDK8新特性_JDK8面试题

    JDK8新特性 lambda表达式 要求:接口必须是函数式接口,一个接口如果只有一个抽象方法,那他就是函数式接口,我们可以在一个接口上使用__Functionallnterface__注解 package 可以将流中的元素反复结合起来,得到一个值,返回一个T // 练习:计算1-10自然数的和 List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10

    1.2K40编辑于 2022-09-21
  • 来自专栏章工运维

    k8s面试题

    什么是Kubernetes(k8s)?它的主要功能是什么? Kubernetes(简称 k8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。

    70011编辑于 2023-05-19
  • 来自专栏Java

    go语言面试题go与cpp和java的对比

    Go语言、C++和Java语言是三种性能较好的编程语言,它们在某些方面有不同的优势。下面是一个简单的比较: 内存管理 C++需要手动管理内存,而Java和Go语言使用垃圾回收机制。 Go语言的垃圾回收机制与Java相似,但是Go语言在设计上更加注重高性能和高并发,在实际生产环境中表现也很好。 Java和Go语言在执行速度方面与C++相差不大,但是Go语言在处理高并发方面更加出色,因为Goroutines使Go代码并发执行非常容易。 而Go语言使用Goroutines和Channels来处理并发性,使得Go语言非常适合于高并发场景,简单易用。 如果你需要处理高并发,则选择Go语言。

    20800编辑于 2025-01-21
  • 来自专栏码农编程进阶笔记

    Go 语言笔试面试题(实现原理)

    答案 init() 函数是 Go 程序初始化的一部分。 Go 程序初始化先于 main 函数,由 runtime 初始化每个导入的包,初始化顺序不是按照从上到下的导入顺序,而是按照解析的依赖关系,没有依赖的包最先初始化。 答案 Go 语言中,interface 的内部实现包含了 2 个字段,类型 T 和 值 V,interface 可以使用 == 或 != 比较。 Q5 简述 Go 语言GC(垃圾回收)的工作原理 答案 最常见的垃圾回收算法有标记清除(Mark-Sweep) 和引用计数(Reference Count),Go 语言采用的是标记清除算法。 答案 这在 Go 中是安全的,Go 编译器将会对每个局部变量进行逃逸分析。如果发现局部变量的作用域超出该函数,则不会将内存分配在栈上,而是分配在堆上。

    85630编辑于 2022-05-24
  • 来自专栏码农编程进阶笔记

    Go 语言笔试面试题(基础语法)

    Go应用程序同时运行数千个 Goroutine 是非常常见的做法。 Q6 如何高效地拼接字符串 答案 Go 语言中,字符串是只读的,也就意味着每次修改操作都会创建一个新的字符串。 Go 语言中,字符串的底层表示是 byte (8 bit) 序列,而非 rune (32 bit) 序列。 例如下面的例子中 语 和 言 使用 UTF-8 编码后各占 3 个 byte,因此 len("Go语言") 等于 8,当然我们也可以将字符串转换为 rune 序列。 //每个中文utf8 编码 占3个byte fmt.Println(len("Go语言")) // 8 fmt.Println(len([]rune("Go语言"))) // 4 Q8 如何判断 map Q9 Go 支持默认参数或可选参数吗? 答案:Go 语言不支持可选参数(python 支持),也不支持方法重载(java支持)。

    78320编辑于 2022-05-24
  • 来自专栏码农编程进阶笔记

    Go 语言笔试面试题(并发编程)

    例如: func main() { st := time.Now() ch := make(chan bool) go func () { time.Sleep time.Sleep(time.Second * 5) } func main() { st := time.Now() ch := make(chan bool, 2) go func query() int { ch := make(chan int) for i := 0; i < 1000; i++ { go func() { ch <- There is no limit to the number of threads that can be blocked in system calls on behalf of Go code; 1 从官方文档的解释可以看到,GOMAXPROCS 限制的是同时执行用户态 Go 代码的操作系统线程的数量,但是对于被系统调用阻塞的线程数量是没有限制的。

    69610编辑于 2022-05-24
  • 来自专栏Java

    go语言面试题:两数之和

    以下是使用go语言实现两数之和的代码,已加上详细注释: package main import "fmt" // twoSum 函数接收一个整形数组 nums 和一个目标值 target,返回满足条件的两个数的索引

    20710编辑于 2025-01-21
  • 来自专栏维C果糖

    Go 语言常见的编程面试题

    文章目录 启动两个协程,交替打印 123456 写一个程序,控制 Goruntine 数量 记录 Go 语言常见的编程面试题。 创建 3 个通道,A、B 和 Exit A := make(chan bool) B := make(chan bool) Exit := make(chan bool) go = <-A; ok { fmt.Println("A 输出", i) B <- true } } }() go ; i < taskCount; i++ { wg.Add(1) // 如果通道满了,就会阻塞 ch <- true // 开启一个新协程 go bizMethod(ch, i) } wg.Wait() } // 业务方法 func bizMethod(ch chan bool, i int) { fmt.Println("go

    56540编辑于 2022-11-28
领券