实战编码面(Practical Coding Interviews)
什么是实战编码面?
实战编码面是我最喜欢的技术评估类型——因为它一般都在评估你在岗位上实际会做的事。比如你应聘 front-end 工程师,编码题可能是写一个小的 HTML/CSS/JavaScript 应用。如果你已经是 front-end 工程师,那你每天上班其实都在为这种面试做练习!
实战编码面的类型
我大体上见过两类实战编码面:
- Pair-programming(结对编程):通常你写代码并分享屏幕(现场则投屏)。面试官参与多少由公司/面试官决定。
- Take-home test(带回家测试):给你一个作业,让你在家独自完成、没人盯着。
怎么准备实战编码面
实战编码面的好处是:如果你已经在行业内工作,你每天在岗位上其实就在为这种面试做练习。即便如此,仍然有一些具体步骤你应该做。
提前问几个问题
当 recruiter 告诉你会有一场实战编码题时,务必问他们以下几个 clarifying questions:
- 我会用什么环境? 一些公司要求你用共享在线环境(如 CodeSandbox);另一些则让你用本地机器分享屏幕。不管答案是什么,提前在该环境练习。
- 是否限定语言或技术栈? Leetcode 风格题一般可以随便用语言,但实战面在这一点上相对没那么灵活。一家 React 公司可能就想和你一起搭 React 应用;Django 公司可能想和你做 Python API。务必清楚公司期望什么。
- 可以用第三方库吗? 我做过的多数实战题不需要第三方库,但提前问清楚总是好的。
- 可以 Google 吗? 很多公司不在意你用 Google——毕竟他们想看你在真实世界里怎么工作,而真实世界里我们经常用 Google。
务必满足所有需求
仔细读需求、并不断回头核对。完成作业后,主动邀请面试官一起过一遍需求清单,确保每条都已正确满足。
弄清是否需要写测试
真实世界里我们会写自动化测试。但实战编码面里,这一点远不那么确定。可以提前问 recruiter,至少面试中也要问。
弄清面试官是否希望是协作式的
他可能只想看你写代码,但也可能想体验和你协作的感觉。我个人偏爱协作式——这给你机会展示沟通能力、证明你是好同事、也让面试官保持参与感。
示例题
实战题非常领域特定。话虽如此,按你的方向,下面给一些可以练习的例子。
后端 Backend
- 写一个 CRUD API
- 在函数或类里实现特定业务逻辑
- 更多待补充
前端 Front-end
- 写一个从 API 拉取数据并显示在页面的应用
- 自己实现 JavaScript 数组方法(
map、filter、reduce) - 自己实现
Promise.all - 写一个 loading bar
- 写一个 slider 组件
- 写一个图片轮播
🎓 Frontend Interview Prep
One of the pioneers in the software interview prep space, Yangshun Tay, is now offering an extremely comprehensive frontend resource full of coding questions, knowledge challenges, system design problems, and more.
You can sign up for as low as $10/mo, which is an amazing deal if you consider the impact a new job can have on your compensation.
I'd strongly encourage any frontend engineers looking for new jobs to sign up! If you use the following link, I'll get a small referral bonus:
Check out GreatFrontEnd now »