[源码+电子书]2023全新GO工程师面试总攻略,助力快速斩获offer
时间:2023-11-03
大小:2.62KB
阅读数:152
查看他发布的资源
资料介绍
2023全新GO工程师面试总攻略,助力快速斩获offer视频教程,视频+源码+电子书下载!!
选择题
1. 【初级】下面属于关键字的是()
A. func
B. def
C. struct
D. class
参考答案:AC
2. 【初级】定义一个包内全局字符串变量,下面语法正确的是()
A. var str string
B. str := ""
C. str = ""
D. var str = ""
参考答案:AD
3. 【初级】通过指针变量 p 访问其成员变量 name,下面语法正确的是()
A. p.name
B. (*p).name
C. (&p).name
D. p->name
参考答案:AB
4. 【初级】关于接口和类的说法,下面说法正确的是()
A. 一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口
B. 实现类的时候,只需要关心自己应该提供哪些方法,不用再纠结接口需要拆得多细才合理
C. 类实现接口时,需要导入接口所在的包
D. 接口由使用方按自身需求来定义,使用方无需关心是否有其他模块定义过类似的接口
参考答案:ABD
5. 【初级】关于字符串连接,下面语法正确的是()
A. str := ‘abc’ + ‘123’
B. str := "abc" + "123"
C. str := '123' + "abc"
D. fmt.Sprintf("abc%d", 123)
参考答案:BD
6. 【初级】关于协程,下面说法正确是()
A. 协程和线程都可以实现程序的并发执行
B. 线程比协程更轻量级
C. 协程不存在死锁问题
D. 通过channel来进行协程间的通信
参考答案:AD
7. 【中级】关于init函数,下面说法正确的是()
A. 一个包中,可以包含多个init函数
B. 程序编译时,先执行导入包的init函数,再执行本包内的init函数
C. main包中,不能有init函数
D. init函数可以被其他函数调用
参考答案:AB
Q1 无缓冲的 channel 和 有缓冲的 channel 的区别?
答案:对于无缓冲的 channel,发送方将阻塞该信道,直到接收方从该信道接收到数据为止,而接收方也将阻塞该信道,直到发送方将数据发送到该信道中为止。
对于有缓存的 channel,发送方在没有空插槽(缓冲区使用完)的情况下阻塞,而接收方在信道为空的情况下阻塞。
例如:
func main() {
st := time.Now()
ch := make(chan bool)
go func () {
time.Sleep(time.Second * 2)
<-ch
}()
ch <- true // 无缓冲,发送方阻塞直到接收方接收到数据。
fmt.Printf("cost %.1f s\n", time.Now().Sub(st).Seconds())
time.Sleep(time.Second * 5)
}
func main() {
st := time.Now()
ch := make(chan bool, 2)
go func () {
time.Sleep(time.Second * 2)
<-ch
}()
ch <- true
ch <- true // 缓冲区为 2,发送方不阻塞,继续往下执行
fmt.Printf("cost %.1f s\n", time.Now().Sub(st).Seconds()) // cost 0.0 s
ch <- true // 缓冲区使用完,发送方阻塞,2s 后接收方接收到数据,释放一个插槽,继续往下执行
fmt.Printf("cost %.1f s\n", time.Now().Sub(st).Seconds()) // cost 2.0 s
time.Sleep(time.Second * 5)
}
那想成为年薪 50w 以上的 Go 语言工程师到底需要掌握哪些东西?
大的点就是 Goroutine 的调度策略,Channel 和 Golang 协程配合使用。另外,Go 的底层、并发、调度、GC 等等都是重中之中!基本 Go 语言搞定这些,跳槽薪资都会非常不错。
我明白,大家平时忙于搬砖,没太多时间去学习,为了给我的粉丝们谋取更多福利,我通过几位大厂的朋友搞到了一手面试资料,整理了 268 道「大厂 Go 工程师面试题及详细解析」,这份资料不仅仅覆盖了 Go 开发核心内容,更包含后端工程师必备知识点!通过这些面试题带你了解大厂会关注工程师哪些技术点,查漏补缺,也为你提供一个学习的方向。
Go 语言领域知识点合集(以下为部分题目)
除了面试时用,通过这些你是可以了解现在一线市场的招聘需求,可以认识到自己的问题,丰富自己的知识宽度,熟悉 Go 高频难点,巩固 Go 相关知识...
1. Go 基础类
什么是 Goroutine?你如何停止它?
Go 两个接口之间可以存在什么关系?
与其他语言相比,使用 Go 有什么好处?
……
2. Go 并发编程类
Mutex几种状态
Mutex允许自旋的条件
什么操作叫做原子操作
……
3. Go Runtime类
1.0 之前 GM 调度模型
GMP 调度流程
基于信号的抢占式调度
01 初级/中级 Golang工程师,能力有何差异?
开始招聘之前,面试官的首要工作仍然是明确岗位招聘的需求。确认岗位等级后,再从实际工作任务出发,反推候选人应该具备哪些技能和知识。
对于不同级别的 Golang 工程师,所需完成的开发工作也有所不同
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或
联系我们 删除。