最近面试的时候,HR 说我简历做不了他们的后端工程师,不断强调我没有分布式经验。 还说他们公司的 ful stack 岗位百分之 80 都是做前端工作,所以叫我要投的话那么就投前端做 typescript + react, 然后叫我重新拾起 javascript 用它来刷 leetcode, 最好要刷到 hard 难度, 所以我的总结是大厂的后端和中小后端要求不一样,所以这是不是和 github 使用 rails 做前端,使用 GO 做后端分布式有点类似啊? 这换 tech stack 对我好不好???
那是因为那个 HR 的后端 hc 差别不多够了,但前端 hc 还没够,拿你完成 kpi 所以这么和你聊而已。不用理会的。
“没有分布式经验就不能参加分布式系统开发”,也是伪命题。即使没有相关经验,你可以先学习分布式系统相关知识,向面试官证明你知识储备和学习能力都足以胜任,其实就可以了。
分布式系统无非是性能,一致性,容错,冗余等话题。已经是几十年的话题,太多资料可以学。
关于做前端和后端,还有换 tech stack。前端还是后端,我也经历过从 ruby on rails 换到 java,其实不用太关注“用什么语言写代码”这个事,这在日常工作中是个特别微不足道的点。
一般一个团队只要一个有经验的人来处理一下架构问题,其他人搬砖 crud 即可。各个人都要求无短板的话,团队成本会过高。而且团队里对于架构都会有自己的看法,到时候要统一思想也是问题。
没岗位,比较难坚持,还是挺难撑下去的。
我之前在阿里,Ruby 写了 3 年,能用的项目少,各方面原因都有,后面不得不写一些其他的,比如 Java、Node.js
然后看你说的,难道你作为 Rails 工程师,不会前端么?
首先,是人家怎么看的问题 大家可能对后端的理解不一样,或者 hr 不是很理解 RoR 的工作方式。可能工作内容 ok,但别人没理解。面试什么,主要还是面试官说的算。。。
然后分布式个人经验来说,这个还是有用的。 我们被分布式数据库坑了两次,最后是了解了实现,才解掉。 不久前才刚跟同事扯时间戳没有办法保证时序(起因是我需要调用他的服务,我的业务需要有时序保证,他建议用时间戳,我跟他解释说时间戳帮助不大)。
分布式会影响思考和解决问题的方式。想说的是有影响,但有没有意义,是不是好的影响,这就要看情况了。
我们招聘对分布式没硬性要求,问到的情况也不多。
我三年前做过 1 年前端,现在这个职位 (一个 10 个 rubyist 的团队) 几乎是纯 Ruby, 前端要求不高,也就刚开始过来的时候改了一下前端,所以我个人认为自己做的是后端工作, 我会好好学和点满 js / typescript 外加 react 技能树的,leetcode 也刷了 2 百题以上了,以后要两个语言一起刷。 现在想好了,不受 HR 的分布式单词迷惑了,也对自己在就业市场有个定位了解。
恩,是这样的。改数据的时候,数据库,要知道两次操作的先后顺序。
比如 put(a, 1) 和 put(a, 1) 这两个操作发生的先后顺序。
如果这两个请求先后发送到两个服务器上个,server0,server1。
如果 server1 的时间比 server0 慢的话,用时间戳的话,顺序可能就反了,数据就是错的。
服务器之间需要 ntp 之类的协议同步时间,这个是不准的,有可能会差 100ms(只是打比方)之类的,还不考虑时间配错了之类的。
具体的可以看,设计数据密集型应用 里有关于时间戳的说明。
简单来说,就是分布式场景下,使用时间戳,作为顺序是不可靠的。
恩,是的
其实这个场景,比较合适的是 compare and set,设置之前,先查,之后掉 comap and set,失败了就重试,好处就是实现简单。
或者那个服务把查询请求代理到我这。