面了个 Go 岗位,秒挂

64 天前
 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 实现的,比较大杂烩。

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

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

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

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

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

跳槽进公司后看着同事们留下的屎山真的两眼一黑,每天看着他们写的东西真的想跑路了。
sagaxu
63 天前
@ryalu 设计模式和实现模式,跟语言关系不大吧。就你贴的这段代码,你翻译成任何语言的代码片段,都能一眼看出问题吧,精通语法并不能避免写出这种代码。
ninjashixuan
63 天前
不算八股吧这几个问题,要了解你的熟悉度问这些理论知识无可厚非。最核心的问题无非是 hr 理解会用和 CTO 的有巨大差别。
ryalu
63 天前
@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
63 天前
@ryalu 好奇这一片代码他是怎么写的单元测试。
我现在的理解:能让其他同事快速省事地写出单元测试的代码 就是逻辑清晰好维护的代码,扩展性都另说
ryalu
63 天前
@SenseHu #10 能写成这样还会有单元测试吗 😂
sagaxu
63 天前
@NewYear
@ryalu
@ninjashixuan

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

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

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

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

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

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

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

© 2021 V2EX