新西兰 - 码农如何从0到1找工作 [实战篇]

avatar 40863
davidlu1001
7446
12
一、知己知彼

研究JD

通过 [instant.1point3acres.cn] 里提到的渠道发现感兴趣的公司和职位后,可能需要做的几件事:

  • 确认职位是公司直接发布的,还是中介。
  • 查看技术栈,与自身是否匹配。
  • 记录下关键字,在后续的简历修改中有所体现。


调研公司及职位

  • 公司性质(是否 白名单 / 垄断 / Startup ...)
  • 行业领域 (是否有前景)
  • 产品(是否有可盈利的实际产品,因为存在 PPT 产品和常年 PoC 的产品)
  • 规模(员工人数,风投,是否扩张阶段等等)
  • 口碑(避免入坑,可在 Glassdoor 上查看,或查看历年 NZ Hi-Tech Awards 获奖公司,或直接进本地 IT 群询问。此处应有群广告)
  • 地理位置与交通(有时候起决定性作用)
  • 福利(有时候起决定性作用,比如买房贷款优惠)


沟通确认

需要向中介进一步了解的情况包括:

1. 预算

决定了工资的上限。一般跳槽的薪水涨幅是 20-30 % 左右。对底层的码农而言,一个比较粗暴的薪水和级别对应关系是:初级 5-7 W,中级 7-9 W,高级 9-12 W。13 及上需要看运气,14 基本到顶,架构 15 - 18,管理另算。

P.S. 这里所提及的薪水只针对 Permanent Full Time 全职员工,非 Contractor 合同工 (对应的薪水一般是 $80-120 / 小时)

悄悄说一句,之前并没有遇到过要求提供之前工资流水的情况……所以如果之前薪水严重低于市场或与实际能力不符,觉得可以直接要期望薪水,而不用基于当前薪水加 20% 这么严格。

了解了基本情况后,可以根据职位紧急程度,自身稀缺性,市场趋势,以及职位匹配度等方面来确定要价,建议向中介或公司 HR 提供一个薪水范围,并表明可议价。如果要价过高且远超对方预算并且没有议价空间的话,就木有然后了……

2. 职位

  • 是否新成立的部门 / 组
  • 具体工作项目内容 (比如还技术债,做本地上云的迁移项目,都是体力活)
  • 组内成员:避免孤军深入三哥扎堆的组,君子不立危墙之下。
  • 针对 SRE / DevOps 需要关注:是否需要 on-call,是否有补贴 allowance,是否有 backup。比如面过的创业公司,包括 CTO 在内都需要 24 / 7 on-call。在跟我面试的半小时里,CTO 一直在收告警接电话,最后面试草草收场。实在让人「两股战战,几欲先走」。


3. 信息不对称

其他信息确认渠道,比如在 Linkedin 查看公司 all employees,看是否有认识的。我曾经就遇到过,拿到 Offer 后,才发现新公司里有国内的前同事……

如果可以了解到内幕消息,比如,不差钱公司下的不靠谱项目紧急缺人,如果有勇往直前虽千万坑吾往矣的精神,那工资往高了要准没错。身边就有这样的成功例子,远高于市场价。

同样是内推,在得到内部消息后,可以在职位正式放出去前,“内部” 消化掉,从而尽可能避免和市场上大量的求职者竞争。打的是个时间差。

不过,这个“早”是相对的。比如通过中介在公司职位放出的第一时间推了过去(虽然也很快,但已经正式对外了),而如果自己是头一两个面试者,公司一般会等面完所有的,才会做决定是否来第二轮,期间的时间很难控制,这样也就没法达到在多个 Offer 之间进行权衡和相互 match 的理想情况了。后面「薪资」部分会作讨论。

二、动手

修改简历

具体可参考 [instant.1point3acres.cn],不再赘述。

神交之面

不同的公司,可能情况不同。

所有正式 Onsite 面之前的(不看脸 / 无听说交流)的步骤都归在这里。基于个人经历,大部分情况在这一步是动手居多。

可能是在线做技术题(code 或非 code,限时或不严格限时)。纯代码的测试可能会使用 Codility,当然自己拿 LeetCode 和 Geeksforgeeks 练手也绝对没问题,不过可能会有点杀鸡用牛刀的感觉。

也可能是在线做智力题,类公务员考试。当时听了中介推荐,脑子一抽就去了一家公司。被老板娘一面后(后来才知道),先让回去做一套冗长的在线智力题,花几小时做到头晕眼花完成后,过几天告诉我 fail 掉了。又过了几天,通过中介告诉我当时打分有问题,问我有没有时间再重做一次。抱歉我爆粗口了,直接拉黑。

三、动口

这里「动口」不是爆粗口,而是把口条练顺溜。

面试模拟

理论上来说,只要简历中写出来的,都有可能被问到。这也是为什么 简历篇 里提到的,要定制简历并使用版本控制,以便在面试前可以先过一遍提交的简历,以免坑到自己。

针对一些常见的问题,比如「自我介绍」或者「描述最有成就感的项目或技术解决方案」,笨办法可以先写下来并不断改进内容,然后背下来,最终达到不假思索说出来的程度。

比如自我介绍,可以基于 KISS (Keep It Simple, Stupid) 原则,尝试按「电梯演讲」来推销自己。

Self-introduction:bit.ly

同时,最大程度地回忆项目和技术细节,需要达到随时上手白板画图并讲解的水平。比如项目的背景描述、规模、系统架构 、数据流转、技术难点及如何解决,方案优缺点及后续优化思考等等。细致到每次做面试回顾时,都让我想起了公司内部的职级评审。

公司用到的技术,或者简历中涉及到的,至少需要能用英语解释基本概念、原理、技术优缺点和比较等等。尽量使用数字或实际案例来阐述或支撑自己的观点。常见的热门技术,比如 Docker / Microservices / Kubernetes 等等。

其他还有一些算是锦上添花的内容。

多留意日常英文技术文章里的通用说法,面试时会显得更专业一些,比如:

  • Back-of-the-envelope calculations 粗略估计
  • Single-pane-of-glass 一站式 [体验 / 解决方案]

e.g.
Cost Optimization Monitor solution as a reference deployment which provides dashboard and reporting capabilities giving customers a single-pane-of-glass view of their current AWS service inventory.

比如注意某些易读错的技术单词的发音,让自己更容易被理解,清晰无误地表达自己的观点:

程序员容易发音错误的单词:bit.ly

电话面试

半小时或一小时不等。

这里可能是 HR 来问些 behavioural questions。比如:

  • 为什么跳槽
  • 为什么选这家公司
  • 这个职位哪里吸引你
  • 期望的下一个职位是什么
  • 个人职业发展规划
  • 什么是理想的工作环境 / 公司文化
  • 同事一般怎么形容你
  • 工作有分歧了如何处理
  • 项目需求调整了如何排优先级
  • 目前持什么签证,多久能入职
  • 可能会直接问到期望的薪水,后面会有专门段落讨论。


更多关于行为面试的问题,可以参考这里:

Behavioral Questions:bit.ly

电话面试也可能是技术面。

不过,个人感觉在电话里讨论纯技术细节的情况并不多。一般就是自我介绍,项目,用来做初步筛选的通用技术,比如 OS 基本概念 / 编程基本概念 / Git / Troubleshooting 等等。

如果是公司 HR 打来的电话,通话结束后,可以存下号码,下次再来电时有所准备。

四、正式 Onsite 面

一面

  • 面试前,再过一遍自己当时提交的简历。
  • Linkedin 查看面试官信息,知己知彼。
  • 不要迟到。查看地图,预计好时间,如在市中心需考虑找停车位的时间。
  • 尽量正装,或者至少 Smart Casual Dress Code。再怎么正式也不为过。


这里,一般是直属 Lead 和骨干组员来面。

对于 SRE / DevOps:

可能会根据简历,着重问之前的项目细节,以及对方重度使用的技术栈比如 K8S / ECS / Lambda / ES / Kafka 等等。

现在新兴技术和新工具琳琅满目,让人目不暇接。学海无涯,只能保持终身学习。「再也学不动了」的说法可以休矣,别得罪有娃的中年人,他们狠起来什么都可以学。

拿 CNCF (Cloud Native Computing Foundation) 为例,来感受下:goo.gl

Preview


还有 DevOps 工具界的氢氦锂铍硼碳氮氧氟氖 :goo.gl

Preview


对于 Dev 面试:

可能会基于之前 code test 的完成情况来询问细节。也可能会基于公司的技术栈来做进一步询问,比如和编程语言相关的内容。Github 上已有人整理了和语言相关的技术面问题:

Awesome Interview Questions:goo.gl

Front-end Developer Interview Questions:goo.gl

同时贴一份整理的关于 coding 面试的建议:

Basic Steps:

  1. Make sure you understand the problem.
  2. When you understand the question, try a simple example. P.S. starting with an example also demonstrates a methodical, logical thought process.
  3. Focus on the algorithm and data structures you will use to solve the problems.
  4. After you figure out your algorithm and how you can implement it, explain your solution to the interviewer.
  5. While you code, explain what you're doing.
  6. Ask questions when necessary.
  7. After you write the code for a problem, immediately verify that code works by tracing through it with an example. P.S. it also illustrates a logical thought process and your intention to check your work and search for bugs.
  8. Make sure you check your code all error and special cases, especially boundary conditions. P.S. the interviewer may ask you questions about what you wrote, focus on running time, alternative implementations, and complexity. If your interviewer does not ask you these questions, you should volunteer the information.


When You get stuck:

Show interest in the problem and keep trying to solve it.

  1. Go back to an example.
  2. Try a different data structure.
  3. Consider the less-commonly used or more-advanced aspects of a language.


二面

可能会是直属 Lead / 架构师 / 其他相关组 (比如 Data Team Mgr) 面试。

这里个人更倾向于在「系统设计 & 解决方案」层面来做准备。虽然 NZ 的技术面可能还没到这种级别,不过「取乎其上,得乎其中」,这也是硅谷 Senior 级别必须要打的硬仗。这个领域更多的和实际工作经验相关。问题包括但不限于系统架构,数据库设计,分布式系统设计,高可用高扩展系统等。这个课题过于庞大,很难短时间速成,只能多看多思考,慢慢积累。具体可参考以下资料:

system-design-primer:bit.ly

highscalability:bit.ly

遇到过硬核技术 Lead,拿着一张问题清单一个一个往下问的,边听边做笔记和打勾。

也有可能群面,遇到过 5 个人群面的,不过见过大场面的咱怕过谁?

对于 SRE / DevOps,这里会要求白板画图,以及分析解决基于实际场景的 Troubleshooting 问题等等。其实更考验在遇到实际问题时,如何有效提问交流,快速获取有用信息,进而做出合理推断,并提出可行性方案及优化措施。

还有遇到问题,问如何做技术选型,需要考虑哪些方面,如果做 trade-off 等等。之前做过的技术方案调研分析和实操经验,就派上用场了。可以算有过相应的思考总结和沉淀,从而在极短的反应时间内给出相对不错的回答。

也有考查技术广度和深度的常见问题,比如「点击某网址,背后发生了什么」。该问题可深可浅,需要基于具体职位,做出最合适的回答。

到了这里,个人感觉其实更依赖于之前的积累和思考,输入和输出。包括技术和非技术的。

三面

一般会是 Director / CTO / Head of Engineering 来面。到了这里,估计也就走走过场了,只要没什么严重失误。

其他奇葩的,比如三四五轮有 PM / Agile Coach / Scrum Master / CXO Personal Assistant 来加面的小众情况,就不展开讨论了。

有什么问题要问吗

这里,需要表现出对公司和职位的强烈兴趣,否则干嘛来了,对吧? 所以当听到这个问题时,千万不要胸中百转千回,最后觉得无话可说没啥可问。

不同级别的面试官,问的问题最好也可以区别对待。

针对 Hiring Manager,未来的直属 Lead,常见的问题比如:

  • What are the most important skills for the job?
  • How would you describe your ideal candidate?
  • What are the biggest challenges that the team is facing right now?
  • What's a common career path at the company for someone in this role?


针对 Co-worker,可以问些更细节的问题,比如:

  • What's a typical day like for this role in the department?
  • How would you describe the work environment at the company?
  • What's the most enjoyable part of your job? What's the most challenging part?


而针对 CTO 级别的,可以问些偏公司管理、产品战略等方面的问题可能会更好些。

这里给出了一些例子以供参考:

questions-to-ask:bit.ly

薪资谈判

即使通过中介而不是直接面对 HR,讨价还价总是最难的部分。

这个主题对我而言过于宏大,而且自己也不擅长。有兴趣的可以看下 这篇文章 ,里面总结了比较实用的原则以供参考:goo.gl

这里只简单列下自己的处理方案和注意事项。

薪资组成和福利

关于薪资(包括福利)可以在多个纬度进行谈判。通常 package 的组成包括:

  • salary
  • signing bonuses (个人没遇到过)
  • stock
  • year-end or performance bonuses
  • commuter benefits (free parking)
  • health wellbeing (医疗保险、意外伤害和人寿险等)
  • relocation expenses
  • educational stipend (培训、考证、购买技术书籍等)
  • childcare stipend
  • extra vacation time


我个人会比较关心的包括:

  • 裁员补偿 (大公司说裁就裁,小公司就更不好说了。之前待过的公司有 13 周或 6 周不等)
  • 圣诞期间是否会强制休年假 & 休多久 (比如之前公司圣诞强制休掉 2 周年假,但这个时间点不管去哪儿机票都不便宜,剩余的 2 周年假用来回国也紧张)


不算经验的经验

遇到的大部分情况,都是电话下口头 Offer,并在电话里讨论具体的薪水。如果觉得通过电话自己不能达到最好的状态,可以尝试通过邮件的方式。

比如:

Hi recruiter, I hope your day is treating you well!
Re: your previous e-mail, I’d prefer to discuss the details of the offer over e-mail. I sometimes get nervous during important phone calls, so discussing the offer over e-mail helps me to keep a clear head and communicate more clearly. I hope this is okay with you. :)

常见的情况是手拿多个 offer 并以此进行谈判:

Yeah, [COMPANY_NAME] sounds great! I really thought this was a good fit, and I’m glad that you guys agree. Right now I’m talking with a few other companies so I can’t speak to the specific details of the offer until I’m done with the process and get closer to making a decision. But I’m sure we’ll be able to find a package that we’re both happy with, because I really would love to be a part of the team.

策略固然重要,这里列一些个人认为比较重要的点:

  • 表现要专业
  • 利用现有资源
  • 保持积极主动开放的态度
  • 不要当做决定的那个人
  • 有备选公司,并用来谈判
  • 对项目和团队真正感兴趣
  • 保持耐心和自信
  • 诚实直接,不要撒谎


可参考的书籍

amazon.com
amazon.com

---

未完待续,敬请期待 [新西兰工作] 系列其他文章:[instant.1point3acres.cn] 和 [instant.1point3acres.cn]

时间仓促,难免挂一漏万,望不吝指正,欢迎留言交流!
  • 136
12条回复