## 应征职位:
Senior C++ Software Engineer
## 背景描述:
国立理工学硕,非CS。
虽然硕论是资料科学应用、也曾做过相关工作,
但是相关人才在台湾实在是过剩、职缺过少,又非数学、统计等本科系前提下,
已经认命要离这条路越来越远。
两年多工作经验,一半是 C# WinForm/WPF,其中用到 C++ 大概就半年而已。
虽然 C# 是相当好的语言,我也写得熟了,但
一来我怕自己的工作被绑死在 Windows 上(.Net Core 还没多少人用)、
二来可能对资料科学还有一点点期待,因此一直都有期望做 C++ 的工作。
做 C# 的工作部分为市场因素,大量的需求摆在那里。
那我以什么经历来应征这个 C++ 的职缺?
- 我在 Github 上 Star 最多的 repo 是 C++ 写的。
- 我在 C# 的工作上也对架构有要求,OCP 与 Design Pattern 都尽可能实践,这些也是
能用在 C++ 上的经验。
另外我也接过案子扩充 Arduino 的驱动,只是 Arduino 的 C++ 我认为不算是正统的
C++,加上佳格好像很在乎对语言标准的熟悉度,所以也就没提这部分。
但这却是离我时间最近的 C++ 工作经验,就只能给自己垫底气、不能当谈资。
## 履历投递与准备
我在 meet.job 上投递的,感觉这上面虚假职缺应该比较少....吧?
投递时已经说明“JD 最低要求 CI/CD 这部分的经验我没有”,
不过他们还是愿意花时间跟我面试,面试通知中预告会有 coding test。
可能是心得文看太多混淆了,我一直觉得他们会考 DSP,
就赶快拿大学课本出来恶补一下 FIR、IIR,
再写信去问清楚,他们有回说这个职位不需要 DSP 知识。
已经有点久没碰 C++,就是复习自己写过的程式也不够扎实、不能足够专注投入,
就计画用 C++ 写一个 IIR 来 demo 应该最能找回熟悉度、也跟他们的业务相关。
但刚换 Mac 整个开发环境都要从头弄,光 OpenCV 的坑就搞了一天,
想到加上 visualization 大概来不及写,还是复习过去的 code 就好了,别贪多。
(我尽量用 OpenCV 做 visualization,这样比较跨平台)
## 面试当天
佳格似乎是向政府租办公室,因为外面有块牌子叫做“数位经济产业推动办公室”。
在 PTT 上很罩的那位 HR 果然人如帐号,落落大方,
### 技术部份
首先是一个 coding test,就是 function prototype 都有,
你只要把实作填进去的那种,他们会同步监看过程。
最后我没完成,但不是只看结果,他们也会请我解释思路,我就说中间想过哪些方法,
但想到什么障碍所以否决;另外有些可行的方法太笨,所以又一直想迟迟没下笔。
我发现自己准备方向错了,考验比较像是 LeetCode,
而我一直想用 side project 之类的东西练手。
我对自身专业经历的介绍,就着重在介绍自己跟 C++ 或该职缺 JD 上相关的经验。
他们的工程师则是会问 C++ 标准与细节的部分,映像中都是涉及层面不广泛的问题。
这边比较有收获的部分是两个:
- 我 Star 最多的 repo 他们有帮我挑出一些毛病,蛮好的,以前同事帮我 review 都没
看出这些问题。
- 被问到 Template 我坦诚只有写作业用过,我的认知就是型别字串替换,所以应该是
在 preprocessor 阶段作用。但他们告诉我不是这样,实际上更为复杂强大,是编译器完
成,能够把一些非动态的计算在编译时期就完成。例如要产生一个99乘法表,既可以不必
手刻 lookup table、也不用在 runtime 浪费时间重复计算结果不会改变的事。
上述这两点让我学到不少,即使没有得到这份工作,也不虚此行。
本来以为会问到 Multi-Thread 但没有,可能评估我的能力没到那里,所以就省了吧。
### 管理部分
RD 与 HR 都有问我过去的工作经验,问为什么换工作、离职等。
我也会把 PTT 上对他们的各种批评问一下,不论 RD 或 HR 都还满直接面对,
也说都有持续检讨改进,这算是令人感到正面。
唯一的隐忧是:过去到现在管理层没有换人。
为什么我说是隐忧?
因为要管理人员承认错误并改变作风,是相当困难的事。
往往管理人员会害怕自己的威信因为认错而受损,于是错误越陷越深,
年资越久、地位越不稳固的人,越是如此。
短期的改善,有可能只是对舆论或市场低头,不一定是认识到更好的管理方向。
“行为上补救认错,但嘴巴上仍然要硬”虽不完美,但已经是我看过最优秀的主管了,
没有之一。
以上这部分猜测不是来自佳格,是我过去观察多位主管得到的经验。
## 总结
面试过程约 2 小时 40 分钟,没有劈头就叫人填身家资料,我没有写到任何一个字,
每一个环节都是与专业能力相关的考核,比较不会像大公司或传统台厂那样,
要测试面试者服从性。
我觉得自己会录取吗?不会,以下是自评原因
- coding test 没过
- Template 部份的知识考核,让我自觉落后团队水准太多
- 过去没有 macOS 应用开发经验,不能成为即战力
还有两点非原因,但高度相关的已知事实:
- 以前的经验里,若事后会录取的话
- 面试时就会针对我过去经历提出有挑战性的问题,大概“嫌货才是买货人”的感觉
- 小公司会在两天内就发 offer
## 后续更新
10/25 收到感谢函