12 min read

面试感受后记

面试感受后记
Photo by Krzysztof Niewolny / Unsplash

本篇为上一篇 猫本求职记 之后续

> 此部分内容依然在更新,我想到的部分我都会尽量更新上来。

如内容有冒犯或者想单独讨论的,请单独联系我 ✉️ michael#wonng.com

有用的网站

  • LinkedIn, 这应该就不用我多说了
  • Glassdoor, 这里有各个公司的 Review,如果对公司想了解的话,可以多看看 Review,当然还有些其他的,比如工资啊,面试之类的,不过这些都会比较主观,仅供参考。
  • HackerRank, 遇到几家澳洲公司喜欢用这个来做测试的,虽然其实我更喜欢 Leetcode。
  • Leetcode, 这个应该也不太用我说了,不过我还是要补充一下,澳洲极少面试时候单独让你做算法的,这可能几乎只有在澳洲的美国公司会考算法题目,其他的几乎都是一个题目让你写 OOP 的方案。
  • Refactoring Guru 这是一个讲重构的内容的,可能和面试没关系,但是里面的设计模式应该是可以针对一下澳洲公司的面试

视频或者电话面试

除非你语言非常出色,否则单纯进行电话面试和视频面试都会有吃亏的部分。

比如如果电话面试,你需要有非常好的听力,毕竟跟你说话的人并不是考官,你也无法预知对方是不是有口音。你需要非常集中精力在听力上,而此时可能会很难展现自己的特点。而如果面对面交谈,可能就会放松很多,根据对方的表情和神情可以判断对方的谈话,即时听的不是特别明白。如果视频电话,那很明显在网络状况以及对方的情况会影响你,比如如果对方在一个空旷的会议室里面直接开免提跟你进行视频沟通,或者视频时候有些杂音,在面试时候都会很明显的干扰你的听力,当然也许是因为我的听力还不够优秀。

但是如果在情况允许的时候,请尽量去对方的 Office 进行面试。这可能会对你申请更有利。

自信

首先我想说的是,如果你再国内已经有超过5年的 IT 工作经验了,再绝大多数情况下,你可能已经比同样工龄的澳洲人厉害很多了,毕竟国内能按照真正每天8小时工作的公司可能少的可怜。在技术水平上我觉得,应该对自己抱有自信。

我非常相信,在纯技术上,中国的程序员是有非常大的优势的,只是在很多时候我们习惯的说法和用法和澳洲本地并不一样。所以在技术沟通上是有 gap 的,一旦能跨过这个 gap, 我相信一定会很容易找到满意的雇主。

自负

其实通过面试可以了解到,很多面试人的技术水平应该还很难达到能面的我没脾气的水平,但是无论如何,绝大多数的白人都会觉得自己很厉害,知道的很多。因为很多人可能连中国都没有去过,甚至是澳洲都没有出过。老外的自信,我是真的佩服。

如果你真的遇到了非常自负的人,你也可以直接告诉面试官,我们来换个模式进行,比如,一般被面试者都会被要求最后提一些问题,你可以直接要求先提几个问题,再进行原有的面试流程。这样你可以通过你的问题来了解一下面试官的水平,当然这需要你有非常良好的准备,你的问题要能直击要害,能迅速了解到你想了解的方面。

面试的难点

我的感觉是,首先简历上有针对性的进行描述,跟申请职位无关的就不要留着了,你去跟老外说我这个也会,那个也会,结果对方会觉得,为什么你这个也会那个也会,那你是不是这个懂的不够,那个懂的也不够呢。

其次,如果再面试时候把你的擅长的特点描述出来,也是一个并不是很容易的事情,就我来看,我们有时候觉得不值一提的事情,反而在他们看来是比较不错的资历。有时候就会发现,明明很小的东西,他们确很感兴趣,而再我们的观念里面这根本不是什么啊。

面试遇到的问题

很多面试官可能是为了显示他懂的你不懂而给你提出的问题。在我看来,每个人都会有知识盲点,面试的目地并不是考你会哪些知识点,毕竟程序员这个职业,重要的是看对整个体系思路是否清晰,以及概念是否明确。而且解决问题的方式也是值得思考的。但是就这次面过的这么多公司,其实真正能感觉到明显在面能力而不是面熟练度的公司是非常少的。

OOP, OOP

众多澳洲IT部门,对于 OOP 的执念可能已经近乎到了疯狂的地步。所以如果你 OOP 的部分并不是很熟悉,那么还是请好好看 OOP 的特点,SOLID 原则 等等的概念,而在做 Code challenge 的时候务必一定要进行封装和解隅,最好能把多态啊,设计模式啊都应用进去。虽然我觉得这真的没啥必要,但是确实大部分,绝大部分澳洲公司确实就是这么疯狂的追求 OOP。

当面试的时候聊到 OOP 的时候,我主要发现就是其实基础知识大部分我都用于实践了,而且都是长期的习惯,一下突然要单独拿出来说,好像就是把很多顺其自然的事情要解释一下的那种感觉,是有点奇怪的。如果你并不能很清楚明确的解释,那么还请再回头看看基础概念然后找几个对应的你做过代码的例子,起码可以举例说出来。

随便聊聊

我的感觉就是,澳洲招聘的程序员,更多的还是在找 CRUDer,如果你 对某个技术非常熟悉,而技术栈又完全匹配某个公司的话,你是有极大优势的。而更多 Engineer 在澳洲,实际上并不吃香,比如根本就没有人会问出高级点的问题,比如说各种整合的问题,Micro Service 部署,以及管理,甚至是在应用中如何快速整合第三方接口这类的问题。

而对于中国程序员来说,主要的问题是,第一,签证,第二,语言,第三,整体设计的思路,第四,代码文档,这些都是需要提升的部分。

槽点满满

到了最精彩的部分了,注意前方高能。这部分基本都是技术面试环节的部分,所以非技术读者可以跳过次章节。

Senior 不 Senior,到底谁说了算?

我面试的职位以 Senior Software Engineer/ Senior Frontend Developer/ Senior Frontend Developer/ Senior Full Stack Developer 这几个职位为主。我是真的不得不佩服老外对自己的自信简直有时候可以到自负的程度。

鉴于我之前的工作经验,自己开过公司,做过产品,做过解决方案,所以本质上我前后段都比较熟悉,而且基础面比较广,所以简历上提到了后端部分,比如 API, AWS 以及 GraphQL 的部分。

有一个公司拒我的理由是: > 因为我们要招的是 Senior Frontend Developer 而你经验里面并不全是 Frontend 还有 Backend 的部分,所以我们不能要你,因为我们需要的是一个 pure frontend。

当时告诉我的时候我都怀疑这公司是不是有病,我到底是不是 Senior 这跟我之前做过什么有什么关系, 我做过后端并不代表我前端不 Senior,甚至是再还没有问过一个技术问题的时候就直接下结论。

其实本身在 IT 行业内就没有很明显的能区分 所谓 Senior/Middle/Junior 的东西,至今为止说实话我还是不知道澳洲人是如何界定的。

面试官你到底写没写过代码?

我去面过一家非常著名的公司,当然本身公司并不是做IT的。然后那里的面试官问了我几个问题,说实话我都觉得这几个问题问的非常没有水平。其中一个问题是:让做一个 React 的 auto-complete 的下拉框,问我如何设计。本身题目的关键点是应该在如何获取数据和在哪个 Life cycle 进行判断以及动作敲击后应该进行过滤之类的。我就按照我的思路回答了,但是似乎对方并没有听懂,于是不停问究竟怎么做怎么做,我自己觉得已经回答的挺清楚的了,听起来就感觉面试官并没有用过 React。 然后问了我第二个问题我就震惊了,对方的问题是 > 在 JavaScript 中, TRUE == 1 这个结果是什么?

我听到这个问题第一反应就是,这真的是他妈的 Senior 职位面试么,这还要问么,然后我就想都没想的告诉他,这个结果是 True,因为这个是逻辑相等。然后面试官打断了我说, > 这个结果是 False。(这里应该配图,黑人问号??)

后面他说的什么我都没兴趣听了,结束后我就跟自己说,这公司给 Offer 我也不可能去,这也太扯了。

OOP,OOP,OOP

所有涉及到 Code challenge 的东西,无一例外的都极端的在要求 OOP,甚至连某些算法题目,都被要求写成 OOP,而且这几乎是所有澳洲公司的通病,就是过分的强调 OOP,以至于不是 OOP 考点的部分,都能蹭上 OOP。有些题目在描述上根本就没有要求 OOP 和任何扩展,但是提交上去以后回复你的就是,你代码结构不是很 OOP。这要注意,所有 Code challenge 都需要 OOP。 我就想吐槽的是,你要看OOP,你倒是说啊,你不说你跟我说你不够OOP是什么个意思,这世界上又不是只有OOP

你好像对我们公司并不是很感兴趣哦

这个公司也是很有意思,就喜欢问我希望能日常做哪些工作,因为技术栈还是 RoR 但是我也很明确表达了我希望参与项目里面的 React 部分,并且我并不是特别看好 RoR 之后的发展。然后最后一轮面完之后就一直没有吭声,我也不能确定是公司没有吭还是 RA 没有吭,后来我写邮件问了两次的这个 RA 然后给我的回复是这家公司觉得虽然 Code pair 不错,但是他们觉得我对他们的公司没有没兴趣。 > 这我只是对技术发展表示了担心,咋就变成我对你们没兴趣了捏,不过这种玻璃心我倒是真没啥兴趣了

面试官 TM 你能说人话吗?

这次我还遇到一些面试官,喜欢说一些晦涩的问题,比如说,当问道 let, var 的区别的时候,我就把作用域,还有let的声明特点还顺便把const的特性详细的讲了一边,然后对方就一脸疑惑的看着我说我们想听到的不是这个答案。然后我就很奇怪,你问区别这不就是区别么,而且我讲的很细了啊。然后对方告诉我说,我们希望得到的回答是 let 和 var的区别在于 hoist。就有的时候我就怀疑,有些面试官是不是真的写过代码,为什么要把一个那么简单的事情表述成那么晦涩不好懂的来问你。有经验的人不应该听不懂我再说什么,要么就是自己刚接触,在照搬教程上的所谓标准用词在问你问题。