想问问那些面试揪着底层实现原理的面试官

2023-02-24 11:01:41 +08:00
 ThanksSirAlex
你们过往的工作里面真的有什么实际项目因为读了源代码,或者理解了这些项目的底层实现收到启发,做出了贡献的吗
11850 次点击
所在节点    职场话题
106 条回复
tianmalj0613
2023-02-24 17:03:29 +08:00
@ThanksSirAlex 至少我接触到外企:
3 年工作经验的招聘,也都是意思性的问一些操作系统+计算机网络。人家的评判标准只有一个,就是你是否愿意和他一起工作,至于问到什么程度,或者其他的评判标准并不是很重要。
5 年以上的招聘,问的问题基本都是理解性的不是记住了就行的那种,但是都是问对计算机网络、操作系统里面在实际应用中理解(比如问:为什么说线程是轻量级进程,轻量级在哪儿?比如问:能不能写一个没有系统调用的程序?),没问过系统设计。
lincanbin
2023-02-24 17:05:41 +08:00
主要还是人太多了,你不懂有的是人懂,那怎么办?
chenyu0532
2023-02-24 17:11:58 +08:00
筛人吧。

从个人经历来回答:做了多年 cocos2d 开发,中小型游戏没啥需要看源码的,几乎都是业务逻辑,代码结构是最重要的。闲来无事开始跟着论坛大佬们读读源码,确实很有收获,经常有种"卧槽,还能这么写"的感觉。虽然项目中用不到,但是在解决问题方面确实强了。
xqk111
2023-02-24 17:25:35 +08:00
说白了就是为了筛选,一个问题,看看你能理解到多深的层次,不会也没事啊,评级低一点呗,只是为了看看能力到多少,是否匹配,如果只会 curd ,也行啊,只是一份工作而已,平常心,平常心,
dfkjgklfdjg
2023-02-24 17:27:43 +08:00
因为面试官也不知道问什么好,然后随便搜了一些面试题就开始问了。他不在乎是否是一个好问题,而是它需要完面试的任务。
hsiaochi
2023-02-24 17:31:32 +08:00
可能一定程度考察你的逻辑思维吧,不过主要还是为了筛下人
ThanksSirAlex
2023-02-24 17:39:51 +08:00
@Goat121 做 IM 为啥不参考 MQTT 和 XMPP ,自己做一个私密协议你是不是要做 benchmark ,要不要做一大堆的可靠性测试,不然自己做的东西不如现成的好用有什么意义,你要是说你的项目是微信这种级别的我闭嘴。booking ,拳头,这种公司都是算法+系统设计,从来没碰见过问八股文的外企。你要说 kafak 没啥学的,那为啥有些公司就要问你 kafka 为啥快,快在哪里。我觉得我能记得一个顺序 IO 和零拷贝已经不错了,这种平时工作用都用不到的东西,怎么会有什么这么深的印象。如果是指要维护其他语言的代码,需要了解框架实现原理吗,我生涯换过 3 次编程语言,哪次不是直接上手的,做项目照葫芦画瓢还不会吗,我可不信你两三天能把框架后面的原理都能摸透,你告诉我你做什么项目需要了解框架的实现原理的。
Goat121
2023-02-24 17:59:29 +08:00
@ThanksSirAlex 需求就这样,总有些客户对保密要求高,你去和金主爸爸说我做不了我就要按我的做么?那我再告诉你
那是 863 工程,委托到我母校那边找我参与,出了事说不定要进去的,你敢擅自改需求么?
hhjswf
2023-02-24 18:05:14 +08:00
@ThanksSirAlex 系统设计更蠢
catror
2023-02-24 18:11:32 +08:00
懂原理和不懂原理的人,写出来的代码是不一样的,尤其是需要复杂设计的代码。所以我的原因很简单,想找和自己同频的人,免得 review 代码的时候自己难受。
Goat121
2023-02-24 18:14:23 +08:00
@ThanksSirAlex 你这种就是标准二极管,理解底层就是全部摸透?比如理解 mysql 事务和锁的人,解决并发 bug 是不是更快?一个理解协程的人,去学 go 的并发机制是不是比不理解的更快?这里一点那里一点,加起来就算只快一天,同样的工资人家为啥不招快一天的?

还有我从来没说过我赞成死记的八股文,就比如 mysql 理解重要,但是死记硬背的哪几个隔离等级之类毫无意义,这个是出题水平的问题不代表就不该问。外企问算法难道不是考察底层理解?那是啥?你工作整天写算法啊?
luodichen
2023-02-24 18:17:18 +08:00
这种经历多了去了。

比如几年前刚接触 flask 的时候觉得它的请求上下文访问很优雅,也好奇它在多进程或线程或协程情况下是怎样管理请求上下文的,同时也担心在特定场景下会不会串上下文。从 flask 追到 werkzeug 的上下文管理器代码,读懂后受到了很多启发。也因此解决了后面实际工作中遇到的问题(造了一些轮子)。

我在面试中也会问候选人有没有类似的经历,在这些经历中收获了什么。如果候选人有这些经历,至少能说明对方有钻研精神和技术热情,同时也可能和面试官产生共鸣,是可以加分的。
ThanksSirAlex
2023-02-24 18:25:34 +08:00
@catror 不一样不代表好坏,如果是复杂设计的代码为什么开发之前没有一个评审环节,快速讨论一下实现方式。
Yc1992
2023-02-24 18:28:00 +08:00
读了源码不一是高手,但是从来不读源码的程序员一定不是高手,多简单的道理
ThanksSirAlex
2023-02-24 18:28:35 +08:00
@Goat121 我不理解,协程就是个概念性的东西,为什么理解这个东西会对上手并发编程有帮助,rust 也有协程,但是语法和 golang 完全不一样,学这个东西步骤不都是一样的吗,翻翻文档,看一看语法,难道理解了协程可以让你看文档看的更快?
ThanksSirAlex
2023-02-24 18:40:39 +08:00
@Goat121 另外算法是偏应用的一个东西,你知道这个算法或者数据结构的特性,他是干什么的能解决你什么问题,比如 map 可以用来做唯一校验,算法不需要你知道 map 怎么实现的,但是你要知道他怎么帮你解决问题。怎么去分析一个应用的时间复杂度和占用空间,这和底层都没啥关系,关键是一个知识你碰上问题了你知不知道怎么用,就这么简单
Goat121
2023-02-24 18:48:14 +08:00
@ThanksSirAlex 难道已经理解的看文档不会比还没理解的快一点吗?再说了你照文档直接写一个能跑的当然简单,实际工作遇到各种奇葩需求产生各种奇葩 bug 不解决吗?还是那句话,不要这么二极管,就算只快一点那招聘也是选快一点的啊。
ThanksSirAlex
2023-02-24 18:56:23 +08:00
@Goat121 你说的这个东西不是一个可以量化的东西,也没有数据支撑,也没有什么证据表现实际解决问题的能力,硬要说修 bug 我觉得信息检索能力更重要,毕竟世界上这么多人,能有多大概率你碰上的 bug 其他人都没遇见过,现在有了 chatgpt 这个还更加简单
Goat121
2023-02-24 18:59:40 +08:00
@ThanksSirAlex 如果你连 map 为啥能做唯一校验都不清楚的话,你怎么知道写算法的时候该用上?
你的意思是知道在哪里能用上就行是吧?那如果你还不知道的呢?去 google ?别人为什么不招能直接写出来的要招一个花时间 google 的?
再说个事,我叔叔是我母校教授,有一年铁道部找他去,写了个算法把数据入库时间从 5 个小时提到了半小时,从来没有相似案例的你怎么知道他怎么帮你解决问题?你去哪里 google ?他转身就拿了 50w 的科研项目合同,是你的话准备咋搞?
Goat121
2023-02-24 19:02:50 +08:00
@ThanksSirAlex 算了,我是看出来了,你根本就不是来讨论问题,是来发泄你情绪的。
你坚持做自己就好吧,看你这样子也是没面上外企的。
你就不反思一下,你那套知道怎么用就好的理论那么正确的话,为啥你没写出来人家要的算法?

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

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

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

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

© 2021 V2EX