千家信息网

golang面试题有哪些

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,今天小编给大家分享一下golang面试题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解
千家信息网最后更新 2024年11月19日golang面试题有哪些

今天小编给大家分享一下golang面试题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1 new 和make 有什么区别

  new 初始化T类型的零值,返回指针
make 初始T 类型, 返回T类型

2 变量类型不携带任何信息且是0 值。地址是否相同?

    s := struct {}{}
d := [0]int{}
if unsafe.Pointer(&s) == unsafe.Pointer(&d) {
fmt.Println("same adress")
} else {
fmt.Println("not same adress")
}

  result:same adress

3 变量逃逸

当变量(或者对象)在方法中分配后,其指针被返回或者被全局引用(这样就会被其他过程或者线程所引用),这种现象称作指针(或者引用)的逃逸(Escape)。

4 隐式赋值,下面的输出结果可能会是什么

func assginParameter() (ret int){
i := 0
ret = 0
for i < 3 {
go func() {
time.Sleep(1)
fmt.Println("get value %v", ret)
}()
i++
}
return 1
}

func TestInterface2(t *testing.T) {
assginParameter()
time.Sleep(3)
}

隐式赋值返回值
0 0 0
0 0 1
0 1 1
1 1 1

5 包级变量初始化循序

var a = b + c
var b = f()
var c = 1

func f() int {
return 100
}

func TestInterface2(t *testing.T) {
fmt.Println(a , b , c )
}

101 100 1
包级别的变量按照声明顺序初始化, 在依赖解析完毕的情况下 ,根据依赖的顺序进行。
包的初始按照导入的顺序进行。

5 变量作用域生命周期怎么区分

作用域:编译属性
生命周期 :运行期属性。

   var a = 0
if true {
a,b := 1, 5
fmt.Print(a, b)
}
fmt.Print(a)


if true {
b := 0
a,b = 2, 5
fmt.Println(a, b)
}
fmt.Println(a)

0 1 5 0  2 5 2

考察 := 对外围重名赋值的覆盖问题。

6 字符串s , 则s[0] 表示什么

第一个字节? 第一个字符?
答案:第一个字符( 一个字符根据不同编码可能对应多个字节)

7 字符串内容永远不可变:

s := "12345"
s[0] = '0' // 编译错误!!!

8 slice 是否可以做map的key 为什么

slice 不可以做slice 的key, slice 没有 " == " 操作

9 在go 中() 是面向对象编程方式的核心

A 组合 B 继承
答:A

9 go 语言的函数调用栈可达多少(其他语言 64K - 2MB)?

go 的函数调用栈可变长,最多可达 1GB 左右

以上就是"golang面试题有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0