资料
  • 资料
  • 专题
[源码+电子书]2023全新GO工程师面试总攻略,助力快速斩获offer
推荐星级:
类别: 软件/EDA/IP
时间:2023-11-03
大小:2.62KB
阅读数:152
上传用户:学习菜鸟小弟弟
查看他发布的资源
下载次数
2
所需E币
0
ebi
新用户注册即送 300 E币
更多E币赚取方法,请查看
close
资料介绍
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 工程师,所需完成的开发工作也有所不同
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或 联系我们 删除。
相关评论 (下载后评价送E币 我要评论)
没有更多评论了
  • 可能感兴趣
  • 关注本资料的网友还下载了
  • 技术白皮书