楼主: 张晓栋
236 0

[作业] [附电子书]2023全新GO工程师面试总攻略,助力快速斩获offer [推广有奖]

  • 0关注
  • 0粉丝

本科生

71%

还不是VIP/贵宾

-

威望
0
论坛币
40 个
通用积分
11.0725
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
875 点
帖子
50
精华
0
在线时间
42 小时
注册时间
2022-11-2
最后登录
2023-11-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
学习地址1:https://pan.baidu.com/s/1UGqwEeOuS8JOGd3ZD5ojGA 提取码: cfxq
学习地址2:https://pan.baidu.com/s/1PYh8tgvgJiWp72NM3w3g2A 提取码: gvnf

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 工程师,所需完成的开发工作也有所不同

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:offer Offe 工程师 电子书 Off

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-14 12:52