2025 资深前端、全端工程师面试心得 (日本求职经验分享)
2025年2月13日
既《2021 转职前端工程师的海外求职 (德荷英日新) 心得 II — 找工作与面试篇》与《2022 转职前端的海外求职与面试心得 (Amazon 与 ByteDance/TikTok 等)》 这两篇文后,笔者从德国公司到新加坡,再搬到日本生活,也因此有了这篇写在 2025 年的求职心得。
因为实际写这篇文是在 2025 年,所以文章的标题写 2025,但笔者实际的面试都是发生在 2024。不过因为今年开始也协助团队招募相关的事,以目前笔者对日本整体求职市场与状况的理解,认为跟 2024 没有太多差异,因此相信对于 2025 年要准备求职 (特别是找日本工作) 的读者,这篇文章应该会有一些帮助。
由于过去两次换工作都有写下心得,让今年写这篇求职心得时,有一个具体的对照。从 2021 年面初阶工程师,到 2022 年面中阶工程师,再到这次的资深工程师,随着逐渐变更资深,面试所遇到的题目、追问的深度也有所不同。
希望透过这篇文章,分享这次求职过程中遇到的不同问题,让有意准备面试的读者们有个具体的参考。不过,有别前两次的心得文是以公司来区分,因为先前读到《2024 资深前端工程师面试心得》这篇心得,觉得文中以题目分类的方式很值得参考,因此这次也决定以这种方式来撰文。
在往下谈之前,先简述这次的求职背景。因为决定来搬到日本,这次主要都是投日商为主,透过 LinkedIn、TokyoDev、Japan Dev 以及一间叫 Build+ 的日本猎头来投,主要是前端与全端的缺,多数人可能听过的 PayPay、Mercari 都有面,也面了几间新创公司。以下会分成技术面试与行为面试两种类型的面试,分别分享具体有遇到什么类型的题目。
另外,如果是想了解如何准备资深前端、资深全端工程师的面试,笔者预计另外写《如何准备资深前端、全端工程师面试 (2025 版) 》一文,等完成后会放上超连结,届时有兴趣的读者可以一读。
技术面试
这次求职过程有遇到的面试题目,不外乎是以下四个类型:知识点问题、程式题、实作题、系统设计题。以下分别谈实际有遇到的问题 (备注:这次在申请时,有遇到三间公司是要先做回家作业的,但因为笔者是在职找工作,光准备面试与实际面试就几乎没时间,所以基本上有回家作业就跳过没往下,因此这篇文章没有多谈回家作业关卡)。
知识点题
知识点问题在笔者这次的面试经验中,比重不算太大,但是每个有问的技术问题,都有进一步的追问。值得一提的点,是因为笔者有几间公司是透过猎人头申请,其中一间公司的面试几天前,该猎头还特别约了一个 15 分钟的准备对谈 (prep call),然后特别提醒,说先前几位候选人,没通过技术面试,主要因为被认为回的内容没有洞见 (insights)。
从这个角度来看,即使被问到的题目跟初阶或中阶工程师一样,资深工程师在回答的深度、有洞见程度,也必须有所不同。
以下是这次有被问到的不同前端相关题目
- JavaScript 相关问题:被问到最多的莫过这类,因为题目比较多,基本都有涵盖在 ExplainThis 写过的 JavaScript 面试系列 (连结),感兴趣的读者可以参考那系列
- 前端技术趋势相关题目:例如有被问到对 React 最新趋势的理解,包含 React Server Component、React Compiler
- 执行环境类问题:例如最常见的 event loop 跟其判读题这次也遇到不只一次。也有问 event bubbling 问题,同时给一个 HTML、CSS、JS 档案,以及一个
logger
, 然后问点画面中不同元素,分别会印出什么 - 微前端类的问题:不确定是不是日本特别流行,或可能是近年来微前端变热门,被问到这相关的很多次,之前写过《什么是微前端架构? 为什么要用微前端架构?》,有兴趣的读者可以一读
- 不同的渲染模式 (rendering patterns) 的相关问题:例如比较 CSR 与 SSR,以及分别优缺点、适用的情境
- 效能优化相关问题:不同间公司切入的问法有些许不同,有从 Web Vitals 切入问,也有从单一点来问 (例如图片的加载可以如何优化)
- 安全相关的问题:例如问完对 cookie 的理解后追问
SameSite
、HttpOnly
相关的问题
以下是这次有被问到的不同全端相关题目
- 程式语言相关问题:因为笔者前一份工作有用 Go 写一些后端,就被问了相关问题,例如对 Go 的 concurrency 的理解
- 软体设计相关问题:例如被问到 DDD (domain-driven design)、抽象化、模组化设计的理解,然后追问一些实务上使用的经验
- 资料库相关问题:SQL vs. NoSQL、ACID 是什么、在 SQL 中遇到 slow query 会如何处理、optimistic locking 与 pessimistic locking 的比较
- 设计模式的问题:例如被问 MVC vs MVVM 的区别
- 架构模式的问题:例如 Event-driven design 架构的理解,以及相关追问,也有一个面试被问到 Micro-services 相关的问题
- 网路相关问题:例如「在网址中输入,接下来会发生什么事 」以及后面一连串的追问
- API 设计问题:RESTful API 相关的问题 (从对 RESTful 的理解,到后面一些追问,包含跟其他的 API 风格作比较、分别适用的情境)
- 云端相关使用经验的问题:这块然后追问一些偏向 DevOps 的问题
- 对软体测试的理解与实务经验:这块是因为笔者的履历有写带领团队提升测试覆盖率的点,所以被从那边提问
程式题
前端类型的程式题,这次没有被问到很多,即使有被问到,也都在 ExplainThis 先前整理的前端手写 50 题,例如有遇到要实作 JavaScript 原生方法 (像是 reduce
),也有 Lodash 的效用函式 (例如 deepClone
)。
即使有些题目不是完全一样,但基本上掌握那 50 题有的题型,应该没问题。例如有遇到一题Promise.all
的实作变形,虽然需求有一点不同,但如果写得出 Promise.all
就一定写得出那个变形。
全端的缺则是以资料结构演算法题为主,这部分基本上就是多练习 LeetCode 的不同题型。这次的经验,有遇到不少经典的考古题,写完后在网路上都能找到相似的题目。从这个角度看,多练习考古题还是有不小的帮助。
另外,不同公司遇到的题型也蛮不一样的,有基本的阵列操作,也有需要不同演算法的。举例来说,有遇到一题在解的时候,当下想到用贪婪算法 (greedy algorithm)。题目是给定一个数 target
(用字串表示) ,可以翻转任一个位置,翻转代表把自己以及右手边的位置的 0 与 1 对调,要找到从 0 能翻转到 target
的最小次数。
例如 target = '01011',从 '00000' 开始,可以是先翻转索引 2,变成 '00111',接着翻转索引 1,变成 '01000',最后翻转索引 3,就得到 '01011',这样需要翻转 3 次。这题用贪婪算法 (greedy algorithm),每次从最左边开始看,如果值跟 target
在当前索引的值不同,就翻转 (翻转就是把值赋予 target[i]
),同时把 count
加上 1,翻的时候代表右边的会跟着翻,所以更新 currentNumString
,然后跟 target
的下一个索引的值比较,如果不同话就翻。
另外,这次也有遇到一些对效率有要求的追问,例如给两个阵列,一个是 wordSet
,一个是 sentences
,要找出每次基于 wordSet
中的字来替换 anagram 时,sentence 可以有几个不同的可能,然后输出该数字。举例来说
const words = ["listen", "silent", "it", "is"];
const sentence = "listen it is silent";
const numSentences = countSentences(words, sentence);
console.log(numSentences); // 输出: 4
这题是直观可以暴力解出来的,但是在面试中被追问如何在某些极端情况提升效率,这时就需要想不同的解法。笔者当时是透过一些字串的预处理,然后加上 hash map,来避免 words
中的单字数量大的时候会让整体效率很差的状况。
除了上面谈到的不同类题目、追问题,这次还有遇到相对有趣的题目,印象比较深的是下面这题。不算是传统的资料结构演算法,反而比较像平常写一些有趣小程式时会写的。
// 输入
messages: string[][]
userWidth: number
width: number
// 范例输入
[
["1", "hello how r you"],
["2", "I am good"],
]
// 输出要画出下面这样的题
+*************+
|hello |
|how |
|r |
| I|
| am|
| good|
+*************+
实作题
这次在前端相关的面试,相对高频率有问到实作类型的题目。有遇到最基本的 CRUD 问题 (要实作一个 memo app);也有给定的后端 API 以及相关文件,在 90 分钟内要做出一个类似 ChatGPT 前端的应用 (要有个输入框,然后收到讯息时要用串流的方式呈现)。
这类问题多半在实作结束后,会有追问的问题,例如有被追问说某一段程式码假如要改成更好维护一点,会怎么做? 也有实作后接着追问某个知识点,例如实作那个 AI 聊天机器人前端的面试,就有在后面被顺着问对 React 渲染机制的理解。
另外想特别提,在这类实作题,因为是从零开始做,所以很多工作上已经被处理好的东西,也会要自己从头写,例如呼叫 API 那段,笔者先前工作上都是用已经包好的东西,所以在这次求职历程中第一次遇到实作题时,写得相对卡。所以在那场面试后,就特别多练习能在一分钟内把 fetch 某个 API 到转成 result.json()
到中间的 try...catch...
以及 loading
状态都练得反射能写出。
这些东西其实并不难,但如果很久没处理,一时间真的会写得非常卡,笔者现在想到还是觉得有点汗颜,毕竟都是面资深的职缺,那场面试光是包个 API 花了快十分钟,实在很不应该。不过再多练习写几次后,后面遇到实作题面试,处理这种都是极快完成,能把时间花在最核心的部分。这边分享这个经验,推荐读者们先练习好,避免面试时很尴尬。
还有一个特别值得提的点,某一间前端的面试中,有被问到要用 Grid 来实现某种排版,然后面试官要求要用香草 CSS。因为笔者过去两份工作上,都是用 Tailwind CSS 这种工具,所以要直接写香草 CSS 反而卡住,当时还是在面试官的提示下才完成,再次觉得非常汗颜。因此推荐,平常在练习实作类的题目,务必要练习不依赖框架写。
在实作类的问题时,除了把功能实作出来,面试官通常也都会追问一些问题。最基本的是先问整体的架构,以及追问某段程式码「为什么要这样写? 有考虑其他写法吗?」,进阶一点的是会往设计面去追问,举例来说有被问到「假如这段要改写成不论接什么框架都通用的 (framework agnostic),可以如何重构? 会选择什么样的设计模式?」
像这类的追问题,推荐可以结合实务工作经验,来展现深度。以这题追问来说,刚好先前工作上有处理过一些用 Adapter Pattern 的东西,所以就花了点时间跟面试官聊那个设计模式,以及实作上要注意的细节。
系统设计题
可能因为面资深的职缺,所以遇到系统设计面试的比例跟前几年比高了不少。所谓的系统设计面试,基本上是不用写程式,而是要先厘清需求,然后根据需求去设计。
比较有趣的是,这次有遇到的系统设计题目中,有一半是跟 AI 系统相关的。也许是近两年生成式 AI 浪潮的关系,感觉日本的公司对于 AI 的发展,也是高度关注。
虽然说是 AI 相关的系统,但是都是给定 AI 的部分有 API 会处理。举例来说,有遇到要设计 AI 客服系统,也有遇到一个是影像辨识系统。以影像辨识系统为例,要处理的是图片上传、存储,到展示这段,中间会有一些给定的 API (例如 image segmentation、image cropping),然后因为这些 API 都需要时间处理影像,所以系统设计的重点,是如何最有效率地同时处理各类非同步的问题。
另外,有遇到非 AI 类但又比较特别的题目,印象最深的是要设计 Observability System。这题笔者先前读 《System Design Interview – An Insider's Guide: Volume 2》这本社群上多数人推荐的书时,某个章节有读到 Metrics Monitoring 系统,但那时感觉这应该是比较冷门的题目,所以就草草看过,结果没想到在面试时被问到。
因此必须说,在面试时什么题目都可能出现,在准备时还是能越全面越好。关于如何准备系统设计题,之后笔者在《如何准备资深前端、全端工程师面试 (2025 版) 》一文也会分享一些准备时用的资源。
行为面试
很早以前就有看过一位 Amazon 的首席工程师,说越资深的软体工程师面试,行为面试占的比重越大 (影片连结)。这次面下来的心得,确实有验证这一点,行为面试的比重相当高。以下分两个部分谈遇到的行为面试问题,一个是不论哪一轮次几乎都有遇到的问题;另一个是在 VP 轮有遇到的行为面试问题。
高频率遇到的行为面试问题
- 自我介绍 (这题基本是每轮都会出现的,之前写过《面试时如何自我介绍? 一起练习回答 Tell me about yourself》一文,有兴趣的读者可以参考)
- 针对履历的经验提问 (例如问目前工作中扮演的角色、近期做的专案有遇到的挑战,然后也会从这两个问题延伸下去追问,在这次行为面试中,这类从过去经验的追问,占了非常大的比重)
- 为什么想来日本? 为什么对我们公司感兴趣? 这一题几乎是每一间公司都有问的题目,在准备日本公司的行为面试时,如果时间有限的话,推荐至少要准备这题。因为太频繁被问到了,加上现在协助公司招募时的体认到这题的重要性,笔者之后预计专门写一篇文章来谈如何准备这题
- 为什么想离开现职工作? 现在选择换工作,主要原因是什么? 想找什么样的公司? 这题跟上一题几乎是一体两面,当被问到为什么想换工作时,我的回答都是去特别强调想到日本,以及对该公司很感兴趣
- 在 XXX 工作可以如何协助你迈向职涯的理想? (What would being at XXX contribute to your career goal?) 这题也算是「为什么对我们公司感兴趣」的变形
- 在过去带团队时,有没有跟其他团队有过什么冲突? 如何解决? 学到什么? 下次会怎么做不一样?
- 请分享过去跨文化、跨时区的协作经验,有遇到什么挑战? 如何克服? (这题是因为笔者谈到自己当时在新加坡的团队,平时是跟在美国的团队协作)
- 请分享过去 mentor 他人的经验,你会如何描述自己的风格? 你觉得自己哪里能做更好?
- 请分享一个你在过去一年中最有收获的学习,平时偏好用什么方式分享自己的学习?
- 请分享你接下来的职涯目标 (这个问题也有一些变形,例如,目前职涯的发展偏好是技术路线,还是管理路线?)
除了这些问题外,几乎每间公司的面试,最后都会有「你有没有什么想问的」这个问题。关于这个问题,之后笔者在《如何准备资深前端、全端工程师面试 (2025 版) 》一文也会讨论可以如何准备。
VP 轮面试的行为相关问题
除了上面提到的行为面试问题外,这次的面试中,有面到几个公司规模超过两千人的 VP 轮 (之前也面到 CTO 或 VP 都是在相对小的公司)。而不约而同地在这轮面试中,几乎都是参杂着部分技术的行为面试问题。换句话说,在这轮面试都没有实际写程式,有问的技术问题基本是从谈到的专案经验中追问。
所谓「参杂技术的行为面试问题」,通常是比较高层次的思考,所以虽然需要懂技术,但更多同时透过问题来了解候选人如何思考与在特定情境下会有什么行为表现。
举例来说,就有被问到「你在带团队进行产品开发时,有没有遇到团队中对于选什么技术有不同意见的状况? 有的话当时是如何解决的?」或是「有没有过去公司决定采用某个新的框架,但你不喜欢该框架,当时你怎么做?」
上面这两个问题,就是一方面需要谈对技术的理解 (技术面),一方面又要谈冲突解决 (行为面),所以会说是参杂技术的行为面试问。
因为很多问题都是从履历出发来问,因此特别有感,如果是要面 Director / VP,在准备时务必特别准备履历追问题的回答。推荐对履历上做过的东西要很熟,包含担任的角色具体做什么、遇到的困难、如何解决、中间深刻的学习点是什么、未来预计会怎么样进一步改进。因为这轮的面试官很可能再谈某个专案时,针对某个技术度提问,没有充足准备很可能后面会招架不住。
当然,不是所有在这轮问的问题笔者都有相关经验,所以有些在如实回答说没有相关经验后,面试官会追问说「假如遇到这种情况,你会怎么解决?」,例如有一题就被改问「如果你要带领开发新的产品,在时间有限的状况下,你会怎么做技术选择」。这题就是一方面要答对技术选择的观点,一方面要答如何面对紧迫的时间限制,既是技术问题又是行为问题。
当然,除了上面提的「参杂技术的行为面试问题」外,与产品相关的问题,也在不同公司的 VP 轮分别有被问到。举例来说,有被问到过去甚至有位 VP 在面试最开头,就先跟笔者聊「你最喜欢的软体产品是什么」这个问题。
然后前面的十分钟都针对这个问题延伸出来聊,包含问「觉得好的软体产品应该具备什么条件」。然后在聊完,该 VP 接着把话题转到生成式 AI 的讨论,并问「如果产品端想要导入生成式 AI,你会如何评估并与产品端沟通?」,其中也追问到「过去有没有遇过很赶的期限,工程端评估后没办法那么快做出来,你会怎么处理这种状况?」
先前就有听过越资深的工程师,越需要有产品思维;先前甚至听过当做到主任工程师以上的职级,对产品的掌握度要不亚于一个产品经理。在这次的几个 VP 轮,似乎应证了这个说法。
阅读更多
以上分享了这次面试资深前端、全端工程师的心得,如果有阅读「如何准备面试」的内容,之后笔者预计会写另一篇《如何准备资深前端、全端工程师面试 (2025 版) 》,届时可以参考。
如果你想透过线上课程了解如何有效求职。笔者参与的 E+ 成长计划中,有一门长达 8 小时 57 分钟的《软体工程师求职全攻略》课程,推荐感兴趣的读者可以加入观看。
《软体工程师求职全攻略》课程会涵盖找职缺、投履历、面试准备,再到谈薪水等内容。此外,如果观看线上课程时有任何问题,也都可以在 E+ 的专属 Discord 社群中提问。另外 E+ 也有专门的履历健检频道,让读者们可以问到饱、改到好。
感兴趣的读者,可以点此了解 E+ 的详细介绍