面了个 Go 岗位,秒挂

2 天前
 sagaxu

去之前 HR 跟我确认过,熟悉不熟悉 Go ,我说会用,做项目没问题,但不熟。

我以为他们家招的是后端开发,就跋山涉水去了。虽然地铁只有 9 站路,但分属 4 条不同线路,我花了一个小时到达地点,登记信息后开始面试。

对方 CTO 和 HR 坐我对面,一番简介之后开始技术问题。

  1. Go 的并发模型是什么?其实我并不懂他在问什么,讲了一下 Go 的线程协程。后来他提示比如 chan ,让我讲一下,我不知道一个 FIFO 有啥好讲的...。
  2. Go 是静态类型的,如何定义不确定类型的数据?我说用 interface ,可以判断类型解析,读取到 list 或 map 。
  3. 对 interface 有什么理解?这又把我考倒了,我不知道他是不是问 duck typing 。

然后面试就到此结束了。

我预期的是问解决问题的方法,数百万 DAU 的后端架构设计,DB 优化,服务治理,配置中心等等...

而他唯一关心的是我熟悉不熟悉 Go 的语言小知识。

不同 CTO 的风格相差太大了,几年前被一个斯坦福海归面过,他就问点很简单的操作系统的原理,然后白板上任意语言写一段代码,判断一个数各位数字相加,不停的重复做下去,得到的数字是否会循环。然后问是否所有数都会收敛,并证明之。

前些年也被国内有名的大佬面过,围绕简历上的项目经历挖掘设计思路,最后纸上画个架构设计。也面过设计个微博消息数据库,并写出 SQL 的。

非常关心语言基础的,还是头一回碰到。好吧,我承认我确实不太熟悉 Go 语言,离了 Google 写不了代码。面 Go 的职位还是要背点儿八股,不然语言层面的东西回答不了。

回去之后又看了看他们的线上产品,核心产品首页,服务端响应稳定的 waiting 600ms 以上,这可是日 PV 不超过 100 万的网站。怀疑之前是 wordpress 改的,子功能还有 next.js 实现的,比较大杂烩。

874 次点击
所在节点    Go 编程语言
15 条回复
MoYi123
2 天前
不然怎么叫八股文呢?
SimbaPeng
2 天前
招的是一线开发,来了就能干活的那种,不问语言基础问啥
cybort
2 天前
如果你面的不是某几个知名公司,都不会问你想的这些问题,因为他们自己都不懂。
iOCZS
2 天前
讲道理问语言是比较基础的,简单的。问实际中问题,不一定有这种项目经历,而且自由度比较大,很难说谁对谁错。
NewYear
1 天前
这么和你说吧,换位思考你会发现,面试是从一群人中筛选出最想要的,而不是看到一个合适就马上招聘进来。

有很多工作,初中生都能干,有经验的话小学毕业都可以。我想说的重点是什么呢?其实小学学历也可以写代码的,也能写中大型程序(了解需求细节,设计架构不会有多难,语言嘛不懂就学)。

但如果你是面试官,你会很迷茫,因为随随便便来十几个面试者都是有经验的,基础代码大家都懂,CRUD 都很熟悉。
好了,现在你告诉我,如何从这十几个人中区分每个人的排名,你最想要选的是哪个人?

当我面临这个问题的时候,我会选择各个方向有一定深度(但工作上会遇到、会学到,但初级选手不会懂)的知识点。也就是看似“花拳绣腿”,但能探知到求职者在各个方面的深度(只能大概并不准确),以及是否主动学习、工作在技术方向是有期待的。
............................而不是死气沉沉的老油条和混子。
哦对了,现代其实不缺人才,缺的是能力又强,工资要求又不高的人才。

如果总是选错人,HR 部门会很想骂人的,而且可能平日里在背后搞小动作。所以“筛选”其实也是管理者一项很重要的能力。要做好并不容易,毕竟管理岗未必都是全栈选手,不要忘记了,世界也只是个更大的草台班子。
ryalu
1 天前
说实话,我觉着问的这几个点还是无可厚非的,既然招的是 Go ,那必然是要懂点的基础的,不然进去了就是开始堆屎山(虽然原先就已经是一座屎山了)....... 会写和写好是两码事,没有理论基础去高谈架构这些招进来也没啥用。

跳槽进公司后看着同事们留下的屎山真的两眼一黑,每天看着他们写的东西真的想跑路了。
sagaxu
1 天前
@ryalu 设计模式和实现模式,跟语言关系不大吧。就你贴的这段代码,你翻译成任何语言的代码片段,都能一眼看出问题吧,精通语法并不能避免写出这种代码。
ninjashixuan
1 天前
不算八股吧这几个问题,要了解你的熟悉度问这些理论知识无可厚非。最核心的问题无非是 hr 理解会用和 CTO 的有巨大差别。
ryalu
1 天前
@sagaxu #7 哈哈,这贴出来是我单纯想吐槽他们代码写的烂。而实际代码中比如锁、切片、interface 的使用也是更烂.....

另外,如果 op 想学 go 我倒是可以给你分享点干货
https://cupogo.dev/
https://www.ardanlabs.com/blog/
https://www.jvt.me/tags/go/
https://changelog.com/gotime
https://golangweekly.com/
https://www.bytesizego.com/blog
SenseHu
1 天前
@ryalu 好奇这一片代码他是怎么写的单元测试。
我现在的理解:能让其他同事快速省事地写出单元测试的代码 就是逻辑清晰好维护的代码,扩展性都另说
ryalu
1 天前
@SenseHu #10 能写成这样还会有单元测试吗 😂
sagaxu
1 天前
@NewYear
@ryalu
@ninjashixuan

确实都是些基础的问题,问这些无可厚非。令我比较讶异的是,这个 CTO 只在意这些问题,跟我过去的面试经历风格差异很大。很多公司招后端的时候,只要精通任意一种主流语言,然后更在意的是算法和架构设计,白板上写代码或者直接 leetcode 现场刷。

语言层面的东西,以大部分公司的规模,现学现用也就够了,需要研究 zero copy 和 off heap 甚至 SIMD 优化之流的,也不可能是年流水不过亿,日活不足百万的小厂。

可能最近一两年招聘市场供求关系剧烈变化,已经不像从前那样招一个基本功好,能个把星期快速上手的 90 分的人,现在是要招一个基本功好,且已经是这方面熟手的 90 分的人,甚至基本功差点儿也没关系,反正小厂一般也用不上那些。
f0rb
1 天前
这一面一般应该是高级或者资深开发来面的,可能对方公司没这个梯队的人?
ninjashixuan
1 天前
@sagaxu 小厂确实更看重熟练度和匹配度的。
LzzzError
23 小时 45 分钟前
我 java 正在学 go

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1074459

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX