← 回文章书架

求职与成长

北美高科技程序员逻辑之六 - 如何面试

上一篇我说了说自己对 2024 年关于裁员和经济形势的看法。如果您想抱着批判的态度看看,就请您发财小手点我主页,我把它顶置了 - 它就在那里,默默的等着你。

上篇刚说完我觉得形势应该开始好转,马上这涨息就似乎到了尽头。随之股票似乎又要开始一轮大涨。不过就像我上篇说的,我觉得 2024 年还会是起伏不平的,在这个时候如果你有一次面试的机会,抓住这个机会就尤其显得重要。这篇我就来简单说说面试。这篇主要是以程序员为主,就是包括 eng,tech lead 和一二线的 manager。

公司的分类和分别对应面试的特点

鲁迅家门口有两棵树,一个是枣树,另一棵还是枣树。程序员的世界和这个稍有不同:这里的公司也分两类,一种叫大厂,另一种叫非大厂。其特点如下:

  • 大厂
    • 以 FLAG 为代表。
    • 招人特点,尤其是前几年,就是像那首歌唱的-"像疯了一样"
    • 打着以人为本的旗号,面试招人都是在公司而不是 HM 的层面。你过了公司的面试之后再去选组。
    • 由此造成的特点就是面试程序化,虽然你觉得问题难,但是答题会有固定的套路。
    • 面试官唯一的目的就是看在和你面试的过程中,你是不是呈现出她/他想发现的 signals。面试官会考虑你是不是和公司契合,但不会把你带入到他/她所在的组来衡量你是不是应该被录用。
    • 面试的重点
      • 技术轮 - 写程序和做系统设计
      • 非技术轮 - 行为方式。如果你面 manager 的话 会有 people management 和项目管理尤其着重你和其他 function 的协作性。
  • 非大厂
    • 所有不是大厂的厂😀
    • 其实说实话我也不知道 Apple,Uber 这样的算不算大厂。应该算吧。
    • 不管怎么算,因为大厂就那么寥寥几个。所有这些非大厂集合起来,是绝大多数程序员的栖身之所。 所以不管经济如何,总有会那么一些公司在招人。
    • 明星 start up 应该严格来说是另外一个范畴。但是因为太难以预测,姑且把明星 start up 当作每天都会出现也会消亡的普通 start up 吧。
    • 招人面试的特点: 面试你的人就是你未来的老板,老板的老板(如果你是 Sr 以上)和同事。
    • 如何形容面试流程和重点
      • 薛定谔的猫
      • 像雾像雨又像风
      • 也就是说没啥章法可循。
        • 你有可能在技术轮写 code,或者给你一段程序让你优化,或者你现场用你简历里面你吹牛说精通的 framework 写个 web service。
        • 你有可能在非技术轮里和几个人现场模拟 role play。我就曾经面过一家: 一个 eng 和一个 manager 和我 role play 1:1, 准备了 N 多稀奇古怪的问题问我,看我能不能让他们觉得我能帮助他们。然后旁边四个人一言不发的观察我。整个过程充满了后现代浪漫主义的神秘气息……

你该怎么办?

说了这一堆,有啥实际用处?到底该咋办?

  • 咋办也不如凉拌
    • 面试根本上来说是一个概率游戏。
    • 不是说进大厂就比非大厂强。
    • 面试官不通过你,有可能是他错了,而不是你回答的不对。
  • 不糊弄了,说点实在的。
  1. 你需不需要去 LinkedIn 找你面试官的材料?

    • 面大厂完全不需要。因为面试官的背景和面试无关
    • 面大厂的时候不用花特别的时间和精力在面试现场来 build connection。面试官坐在那里就是为了采集你的 signal,你又 body language 又一顿铺垫的,对于面试官来说,你就是在浪费答题时间
    • 你面非大厂的话,把上面的答案反过来。 因为面试官想要知道的就是你能不能解决组里的特殊问题,他们能不能,愿不愿意和你一起工作,从 HM 的角度,你能不能帮他升官晋爵。
  2. 你面试的哪一轮最重要?

    • 大厂有大厂各自的规矩,比如 amazon 有个 bar raiser 可以 veto。但基本来说你每一轮都需要至少不错。没别的原因,面试大厂的人太多,宁愿拒个对的也不愿找个错的。
    • 非大厂招人有点玄学的味道。理论上来说你的 HM(Hiring Manager)在听取了各方面意见后是作出决定的人,但实际上又有各种不同可能,大体来说:
      • 你老板的老板(或者面试里面的那个级别最高的人) 是个隐形的决定者。他/她说 No 的话、你是直接凉。因为作为你 HM 的角度,哪怕再喜欢你,老板说不行,他还招你进来 take risk,完全不值得。从老板的老板的角度: 你入职之后表现不好 - "你(HM)看,我都告诉你了,你小子不听话; 如果你表现好 - 行啊,小子,你(HM)想证明你比我强,是不?"
      • 你老板的老板说还行,这时候你老板才会有决定权。 所以你需要非常小心地准备和这个隐形决定者的 30 分钟(如果你招聘 manager 或者 director,你可能会面到 CTO,说不定只有 15 分钟)
      • 你老板(HM)喜欢你,下面有些不同意见,如果不是全体反对的话,你老板可能会降你的级,或者给你找点条条框框的,但很大可能会给你 Offer
      • 你老板不喜欢,下面所有人都喜欢你也没用。
      • 所以你看到了,面试之前一定去 LinkedIn,了解他们的背景和对事情,项目的倾向。
  • W哦 C! 那么烦啊!我死了算了
    • 别。没到那个程度。
    • 面试最需要的能力是 see through interview question. 也就是说,别局限在你被问的问题表面,你要知道面试官到底想问你啥。哪怕是 tech question. 你遇见不会的题 不要蒙。慢慢地捋 logic。
    • 比如说面试官问你 - "昨天纳斯达克被黑客攻击瘫痪了,你来设计一套系统防止黑客吧"
      • 刚听到这题的时候你有可能眼前一黑,直接就想放弃。
      • 慢慢的想,慢慢地问。你会发现面试官不想问你什么什么 security 什么内部的 access control,什么 SQL injection 这类的。
      • 这可能就是怎么设计防止 DDos Attack 的问题。
      • 也就是说其实这就是一套系统可以做到实时计数。
      • 你心里看得滚瓜烂熟的什么 message queue,NoSQL DB ,各种 streaming service 终于可以派上用场了吧。

说一个 Behavior 的问题吧。这个也是我时不时的用来来面试大厂或非大厂程序员的问题。

问题:说说你最讨厌的同事

我面试过的人大体上分这么几种答题方式:

  • 过于圆滑型:
    • "别说讨厌了,我就没有不喜欢的同事!我到哪儿也都是乐于助人,每个人也都喜欢我。你给我 Offer 吧,你一定不会后悔哦"
    • 作为面试者,我觉得这人不诚实。不管是不是大厂,我不想和他/她做同事。
  • 沉默型:
    • 大家很是尴尬的大眼瞪小眼的对视了两分钟,没有例子。然后换题。
  • 大脑没有皱褶型:
    • "哎呀,我跟你说哈,那伙计就坐我边上,天天不洗澡。哎呀,你说愁人不愁人?"
    • 这事估计是真事,也确实挺愁人。但是你面试的时候说这个,你到底想表达啥? 算了,招你进来,我就该发愁了。
  • 问题表面型:
    • 花了七八分钟讲述了组里的一个 eng 是怎样 piss off 了所有人,最后被 fire 了的凄美故事。
    • 你想没想过我为啥问这问题?真是想听故事吗? 我面试的时候还算是好的,过程中会给几个 hint 最后实在不行 会打断然后 move on 到别的问题。 一般的静静听完了也就 Pass 了。
  • 到底想问啥?
    • 归根结底,这是一个你在工作中遇见不同意见的时候。怎么 resolve conflict 的问题。
    • 你是不是能够共情? 哪怕对方看起来那么讨厌,你是不是试着理解对方的立场?
    • 你是不是能够保持 professional 而不是被情绪左右? 面对问题而不逃避?
    • 你是不是努力的解决问题,包括各退一步,meet in middle ground。是不是用数据说话?
    • 你有没有尝试帮助别人?
    • 你是不是 keep business as priority。

答到这里,你猛然想起你在面试非大厂,对面是你的 HM,他 LinkedIn 说他的 management style 是 hold 别人 accountable。而你刚才说了半天各退一步,会不会他觉得你不够强硬? 不能帮他解决问题?

这时候你就可以慢慢的抬起头,直视对方的眼睛,坚定地说 " 我职场的座右铭就是讲原则。you know…………"

所以面试就是戏如人生,你需要演技随时在线。