分享一下近期在台积电不错的面试经验。
人资主动邀请面试。面试一共会有专业项目三关 + 人资一关,由于主管希望面试者能有较
充足的准备,因此专业项目每一关的间隔时间预定是两个礼拜,如果有需求需要加快面试
速度也是可以调整时程。现在疫情期间,除了测验要去厂区之外,其他面试一率都是视讯
面试。
第一关:专长简介和专业问题 (60 分钟)
一面的流程会分成四个部分:
1. (主管) 部门介绍
2. (主管) 整体面试流程介绍
3. 面试者专长简介和简答题
4. Q & A
主管在介绍完部门和面试流程后,会请面试者介绍自己擅长的领域。这边比较特别的是,
主管有说明已完整看过我的履历,所以希望我能只就自己专业领域和擅长方向介绍即可,
而他会根据我所说的内容进行提问。而我回答我比较擅长的方向是:Golang 和 Web
backend。
主管提问内容包含:
1. sorting algorithm / BST / stack / queue / binary tree / hash map 具体实作和
相关 time complexity
2. HTTP protocol 流程和 package format
3. cookie
4. Linux 环境的操作 (包含查看内存、 network package、service port、process)
自认在 Linux 这一块没有回答的很好,知道用哪些 tool 去查看,但是问到更细节的部
分就不太了解。不过主管说这样问是想了解面试者的程度在哪里,所以不会就说不会就好
。
一面完后就直接约了第二关的时间,第二关其实就是台积的程式测验 HackerRank,主管
给两周的时间做准备,所以应该是没有所谓补考的机会。主管很贴心地说该怎么循序渐
进地去准备线上测验考题,像是可以先从 leetcode acceptance 较高的题目开始练习。
第二关:HackerRank 线上测验 (90 分钟)
HackerRank 90 分钟要做 3 题,我觉得 3 题的难度都在 leetcode easy 而已,如果有
在刷题的面试者应该可以做很快。
3 题中我 2 个题目的 test case 全过,最后 1 题有两个 test case 没有过 (大概是
code 判断没有写完整)。
HackerRank 提交之后,隔天人资就很有效率地打电话约二面时间和人资面试时间,并且
请我找时间去厂区进行适性和英文测验。
英文测验
英文测验网络上很多资讯就不多说,自己写起来是觉得有点难度,尤其阅读测验字体每一
篇都不一样 (有些看起来有点模糊),对于一个格式狂来说看起来有点痛苦 QQ 多益 755
(3 年已过期),台积英文测验 7 级。
第三关:Algorithm 面试 (120 分钟)
最后一关是在 120 分钟内写 3 题 leetcode 题目,每题 40 分钟,流程包含:
1. 看题目并思考解法,如果有问题也可以提问
2. 跟主管口头讨论解题逻辑和 time complexity
3. 和主管讨论后,分享 IDE 画面,并且根据刚刚所叙述的解题逻辑把 code 实作出来
4. 跟主管逐步解释 code 内容并讨论有没有更好的解法或是提高 code 可读性
我是使用 Golang 和 Go playground 来答题。老实说,我因为紧张和缺乏实务算法面
试经验,所以第 1 题出现逻辑失常,没办法在短时间内思考出答案,不过幸好后来有冷
静下来回复正常,赶在时间内给出指定 time complexity 的解答,后面 2 题则是都可以
在第一次就给出正确的解题逻辑。
另外,我觉得比较难的是实作 code 的正确度。因为主管会全程观看我写 code 的流程,
所以一但有思考停顿、出现 compile error、或是不小心没写到逻辑就执行程式导致
test case 结果错误,这些行为都会在解题完之后被拿出来讨论。讨论过程中,主管态度
都是很好的,不会给面试者压迫感。
面试完后,主管有提到我的算法逻辑和 code 可读性不错, Golang 掌握程度也很好。
不过缺少面试练习,所以一开始因为紧张而失常,第一题应该是最简单的题目但我却思考
最久。还有就是第 2 题的时候,写 code 流程不够谨慎沈稳,导致有一个地方踩到
invalid memory access。
整体面试时程超过一个月时间,虽然时间上拉的比较长,但是面试过程能感受到主管是一
位很重视技术能力,并且很认真地想要筛选符合职缺的人。从面试过程中学习到蛮多经验
,是一个很好的面试体验。