刷题不是唯一出路
很多人一听说要面试,立马打开力扣、牛客网,从第一道题开始猛刷。其实面试准备远不止刷题这么简单。特别是中小型公司,更看重你能不能快速上手项目、用对工具、写出可维护的代码。
熟悉主流开发工具链
你在简历里写了“熟练使用 Git”,那面试官很可能直接问:“合并分支时冲突了怎么办?” 别只背命令,得真动手过。比如你在本地改了 login.js,同事也改了同一行,push 时被拒,这时候执行:
git pull origin main
git add login.js
git commit -m "resolve merge conflict in login"
git push origin main
这种流程得像吃饭喝水一样自然。
别忽视本地调试能力
有次面试官让我现场调试一段 Node.js 脚本,功能是读取 JSON 文件并输出用户年龄总和。我一看,报错说 data.forEach is not a function。打印 typeof data 发现是字符串,马上意识到忘了解析:
const fs = require('fs');
const rawData = fs.readFileSync('users.json', 'utf8');
const data = JSON.parse(rawData); // 关键这一步
let sum = 0;
data.forEach(user => { sum += user.age; });
console.log(sum);
这类问题不靠死记硬背,靠平时 debug 积累的手感。
模拟真实项目场景
很多面试现在会给你一个需求,比如“写个简单的 Todo API”。这时候别急着敲代码,先问清楚:需要数据库吗?用 REST 还是 GraphQL?要不要用户认证?
然后选你熟悉的框架,比如 Express + SQLite。项目结构清晰比炫技更重要:
todo-api/
├── routes/
├── models/
├── controllers/
└── app.js
哪怕最后只实现增删改查,只要结构合理、代码有注释、能跑通,就比堆一堆乱糟糟的函数强。
准备好你的“工具箱”
面试前把自己常用的开发环境整理好。比如 VS Code 配置好 Prettier 和 ESLint,Chrome 开发者工具常用断点技巧练熟。有家公司让我远程共享屏幕写代码,我顺手打开了代码格式化快捷键,面试官笑着说:“看得出来你平时就是这么写的。”
沟通比写对代码更重要
遇到不会的题,别说“我忘了”,试着说:“我没用过这个方法,但我猜它可能和 Array.map 类似,都是遍历处理数据。我可以试一下吗?” 面试官往往更想看你怎么思考,而不是背标准答案。
还有,解释代码时别光指屏幕说“这里是对的”,换成“这个循环是为了避免重复请求,我在上个项目里因为没加这个,导致接口被调用了十几倍,后来加了防抖才解决。” 这种话一出,可信度立马不一样。