当个北欧编猿人(ㄧ)(二)
Medium好读版:
https://medium.com/@aeggli/d206d429ad0f
https://medium.com/@aeggli/f35d5b35a485
破个题:我要去瑞典当编程猿了。
距离上次写文章已经隔了好一段时间了,这几个月以来发生了很多事,也不乏许
多人来问我到底发生了什么事情,其实也没有什么大了的,只要是新创产业,就
是要有失败的心理准备,差别只在于你有没有遇到而已,认真讲,我觉得能够在
一间公司遇到失败这件事,是一个很好的经验,理由后面会提到。
在事情发生后,也让我仔细思索了养家活口的另外出路,正巧,前一篇文章中提
及的瑞典公司Recruiter,也在事情发生前不久与我联系,希望能够得知我的近
况,于是我就跟他约了个时间线上聊聊。
算起来,这算是我第一次面试海外工作,虽然这次聊聊只是简单介绍,但是透过
视讯会议与相隔半个地球远的人以英文对话还真是第一次,对我来说,能够当面
聊天是最轻松的,也还好对方是位住在伦敦的法国人,口音虽然奇特,但是比起
Singlish来说,也不算难懂。
这次的视讯,主要是让对方介绍整个面试的流程,总共会有几关,每一个关卡中
会有哪些内容,以及面试将如何进行等介绍,这边列举一下全部的关卡:
1. 线上智力测验
2. 线上Coding test
3. 线上技术面试
4. 线上文化面试
5. On-site智力测验
6. On-site技术面试
7. On-site文化面试
8. 背景调查
其中1, 2是一起进行,失败就没有后续,3, 4也是一起进行,这两关都通过后,
对方会出机票跟住宿邀请你去瑞典进行On-site interview,也就是5, 6, 7三
项,而最后发合约之前,则会请征信社进行背景调查。
相较于多数技术公司将LeetCode等算法题目奉为圭臬,这间公司则是将智力测
验视作最基本的入门关卡,也是整个面试过程中我觉得最难的部分,再来是文化
面试,着重实务经历,而多数人觉得很重要的技术面试从我的角度来看,难度并
不高,换句话说,这间公司找的是“能够以正确态度解决问题的聪明人”而非
“算法考100分的程序猿”。
这到底是怎样的一间公司呢?说实话,大多数的台湾人都没有听过这间公司,相
关的中文报导并没有很多,能够找到且介绍比较完整的,只有这一篇2016年的报
导:
https://www.bnext.com.tw/px/article/38851/bn-2016-03-07-014145-187
Klarna,是一间在2005由瑞典发迹的FinTech,成立至今已经过了十四个年头,
掌握了瑞典约40%的线上交易,为了让自己在FinTech上的经营更加稳健,在瑞典
取得了银行执照,目前在全球十四个国家提供服务,主要服务对象为经营电子商
务的店家,提供各式金流整合工具,提供消费者“稍后付款”的选项,大幅降低
结帐过程中的阻碍,提升转换率,也提升订单平均金额,并且以十四年下来累积
的交易资料为大数据,借此防止呆帐的发生。目前的总用户数量为六千万人,总
签约商家为十三万间,每日交易量约一百万,员工人数为两千五百人。
当然,这些资料很多都是开始面试流程后才知道的,对于瑞典的一切也都是面试
到了最后才慢慢去挖掘,其实在我飞抵斯德哥尔摩之前,我对于是否要离开台湾
去瑞典,心中有着非常大的疑惑,去或不去,大概各占了50%的比例,然而,我
在On-site interview的期间,就下了决心一定要来这里度过余生。
仅以这一系列的文章为我人生中最巨大的冒险进行记录,除了面试心得以外,也
会有移民签证与搬家的纪录,以及为何我想要离乡背井前往瑞典的心路历程。
(二)
在跟我的recruiter聊完之后,他也就马上寄了两封信过来,一封信是线上智力
测验的连结,另外一封则是线上Coding test的连结。这两份测验就是最基本的
入门测验,必须要通过这两个测验之后,才能继续进行,不外乎就是希望能够过
自动化的测验工具进行前期的筛选,说真的,有当过面试官的人多少都能够理解
recruiter丢来面试的人并不符合期待时有多么的阿杂,彼此都浪费了时间,而
这两份测验都使用了线上工具来进行,recruiter也跟我说明这两份测验的重点
为何:
智力测验
其实并非完整的智力测验,而是在智力测验中常见的一种题型:抽象推理
(Abstract reasoning),这个测验严格来说,是整个面试中最困难的一关,困难
的原因在于它的条件:
1. 总计18题
2. 限时15分钟
3. 只能错两题
而抽象逻辑推理困难的地方就在于“抽象”,题目本身并不会有任何的文字描
述,只会有一堆图形给你看,你必须要推理出这些图形之间的关联性后,回答符
合逻辑推理的答案。而推敲出题者意图正是这测验困难的地方,难一点的题目甚
至会有陷阱,下面是一份难度适中的测验,有兴趣的可以做做看:
https://www.123test.com/abstract-reasoning-test/
这个网站并没有计时,但各位可以测试看看,能否在12分钟内写完,并且只能错
一题,这样的条件就大约接近Klarna所要求的智力测验门槛了。为了准备这份测
验,我自己花了大概三四个小时的时间做了一些题库,整理了一堆笔记,有记录
下来的题型约莫三十种,全部写过的题数大约快一千题,但是,Klarna考的题目
应该是他们自己设计的一套独一无二的题库,严格来说比市面上的题库都简单一
些,但是也因为没有类似的题型,写起来压力也就特别大,可以说是可以准备,
但是却永远也无法准备周全的一个关卡。
说真的,我一开始也无法理解为何这间公司会把智力测验看的如此重要,有听说
即便是客服人员,也会需要考智力测验。直到准备智力测验的时候,我才惊觉这
抽象推理的能力,其实比你我想像中的还来的重要。
有某一天刚加入团队的React Native工程师一起午餐聊天,他担忧专注在一个
Framework上,会不会侷限了自己的职涯发展,我说并不会,我的看法是,实际
上侷限自己职涯发展的,并不是Framework或是Language的选择,更不是Title上
的选择,而是一个工程师面对问题时,脑袋中的想法,才会去侷限你的发展,今
天一个问题摊在你眼前,你可以选择用惯用的方式去解,也可以大胆的尝试自己
从来没有使用过的技术,而我觉得一位好的工程师,在面对新技术时的学习能力
是非常重要的一件事,我也面试过不少工程师,其中令我最担忧的,都是职训班
出来的,你说这些人会不会写code?会。但是有没有自己的想法?很难说。对于
陌生的技术能不能快速pick up?会的话还会需要职训吗?这些特质反而会是我
看重的重点。
而抽象推理能力,说穿了就是在面对未解问题时最重要的一项能力,无论是学习
新的语言或是工程技术,或是融入新的文化,能否从未知的context中整理出一
套pattern出来,是一项非常重要的技能。
https://reurl.cc/p0vGb
在上面这篇专访Klarna CEO的文章中,也提到了Klarna聘人的原则,他们并不需
要高手大大,他们要的是拥有正确心态的人,这远比任何技术能力还来得重要。
"At Klarna, we hire smart-our employees think creatively, start
small and learnfast."
Coding Test
这一关相较于智力测验来说,压力跟难度都比较低,Klarna在这边使用的是
Qualified.io作为线上测验的平台:
https://www.qualified.io/
由于我应征的职位是Senior JavaScript Engineer,收到的也是两道Node.js的
题目,实际上这两个题目以我的角度来看,难度并不高,稍微具备一些现代
JavaScript基础的人都能够轻松胜任:
以阵列给定一批带Timestamp的未排序交易纪录,每一笔交易纪录都有分类,算
出这批纪录中指定时间区间及指定交易分类的总金额。
同上,给定一批未排序交易纪录,假定系统有问题,有些时候会重复产生交易纪
录,重复的交易纪录有一定的特征:同金额同分类同帐号且前后发生时间在一分
钟之内,找出重复交易后回传。
这两个题目说穿了就是最基本的JS阵列资料操作,难度上大约是HackerRank
Interview Preparation Kit中Array项目中的Easy~Medium难度之间而已。
https://reurl.cc/gy6dL
Coding Test并没有计时,但有交卷期限,一周内必须要送出,而我的recruiter
有特别提醒我写code时候的注意事项:
1. 简单易懂最重要
2. 切勿overengineering
3. 请勿写出太过华丽的code,也不需要使用复杂的算法
这三件事情,其实相较于大多数的线上coding test或是白板题来说,是有点背
道而驰的,说真的,我自己在写的时候,也一直在想,为何会开出这样的需求?
甚至在往后的几关之中,只要是技术的部分面试官都会保持同样的原则请你写
code,然而,我也是到了面试最后,才了解为何他们会这样子要求。
约莫一周后,我收到了recruiter的结果通知,两项测试都顺利过关,希望我下
周约个时间准备进行下一关的线上面试。
文末附上当时写抽象推理题库时的笔记整理,主要是针对看过的题型种类做简单
笔记:
1. 顺、逆时针
2. 数量
3. 多边型边数
4. 单数、偶数图配对
5. 相加、相减
6. 移动
7. 抽象数学运算
8. 等差、等比
9. 颜色变化
10. 与自身所在题目中顺序相关
11. 大小
12. 隐藏图
13. 贪食蛇
14. 包含、反相
15. 镜像
16. 河内塔
17. 单、偶数增减数量
(未完待续)