发布于 2026-01-05 2 阅读
0

9 个技巧助你轻松拿下前端、全栈和移动端面试的家庭作业项目 DEV 全球展示挑战赛,由 Mux 呈现:展示你的项目!

9 个技巧助你轻松拿下前端、全栈和移动端面试的家庭作业项目

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

在与招聘人员或招聘经理通话之后,居家项目通常是前端/移动/全栈招聘流程中的第一步。我在面试不同公司时也经历过不少居家项目。作为面试官,我也审阅过几十个 Web 和移动端居家项目。作为招聘经理,我也设计过一些项目,而我团队的工程师每年都要审阅数百个这样的项目。

本文分享了在完成这些挑战时需要注意的事项,并提到了很多我从“另一方”提交作业中学到的东西。

典型的家庭作业项目

这项居家测试的目的是让面试公司了解你如何解决实际问题。测试设计者会尽量控制难度,以便经验丰富的开发者能在几个小时内完成。同时,他们也希望看到开发者在实践中运用日常概念,例如通过网络获取数据、操作用户界面以及处理各种极端情况。有时甚至包括测试和文档编写。

以下是一份常见外带食物的示例:

  • 使用/不使用 $specificTechnology构建 Web/移动应用程序。
  • 使用 API xzy.com/api,这是一个通常可以搜索某些术语的 API。
  • 构建一个美观的用户界面,用户可以在其中输入搜索词,然后显示可视化搜索结果。
  • 注意诸如特定技术的合理使用、代码分离、可读性、可维护性和错误处理等事项。
  • 常见的附加功能包括分页、懒加载和响应式布局。这些通常被视为锦上添花的功能。
  • 测试、文档编写以及其他体现你精益求精的工作方式都将获得额外加分。

想了解一些具体的例子,请看以下科技公司使用的家庭测试:

我的带回家成果将如何评估?

在我们深入探讨如何完成一份优秀的家庭作业之前,最好先了解一下谁会查看你的作业以及为什么会查看你的作业。

几乎在所有情况下,公司内部的开发人员都会审阅你提交的内容。以下是他们首先会关注的部分:

  • 它到底能不能运行?他们能拿到你的代码,并按照你提供的设置说明运行起来吗?
  • 它运行正常吗?一旦上线运行,开发人员就会用大量极端情况进行压力测试。别忘了:评审人员对项目非常熟悉。他们有充足的时间了解各种棘手的情况——所以他们会考察你的解决方案能覆盖多少。如果最终测试项目是基于搜索的,他们会尝试输入空值、特殊字符(例如空格)'&返回空结果或可能返回无效数据的搜索词。
  • 把代码给我看看。他们会仔细查看代码,阅读并判断其可读性和简洁性。
  • 视觉效果。尤其是在前端或移动端,用户界面看起来是否美观舒适?响应速度是否快?是否有令人眼前一亮的小细节,让评测者眼前一亮?

对于资历更深的候选人。假设以上信息都符合要求,对于经验更丰富的候选人,审核人员可能会进行更深入的检查,包括:

  • 遵循框架/语言最佳实践。即使没有明确定义框架,开发人员也应该检查框架和语言的使用是否符合行业标准。这涵盖范围很广,从简单的camelCase变量命名JavaScript到移动项目中库的正确使用都包括在内Rx
  • 类结构。定义了哪些类?这些类是否遵循单一职责原则,并具有明确的目标?
  • 代码架构。代码结构如何?业务层和表示层是否清晰分离?项目中是否使用了MVC、MVVM、MVP等设计模式?代码架构是否易于扩展?目录/模块是否划分清晰?
  • 测试。业务逻辑是否通过单元测试进行了测试?测试是否通过?测试代码是否清晰易懂?每个测试是否只有一个断言,从而保证了测试的单一性
  • 文档。安装说明是否清晰?文档是否总结了已构建和未构建的内容?是否有关于改进或扩展点的说明?

……差不多就是这样!我审阅稿件时,每篇大概花5到20分钟,对于写得好、条理清晰的稿件,我会花更少的时间;而对于比较模糊的稿件,我会多花一些时间。我观察到其他审稿人也给每篇稿件分配了类似的时间。

撰写总结报告的技巧

现在我们知道大家会关注什么了,是时候开始行动了。以下是我顺利通过这一阶段的建议。

提示1:要知道第一次会花费(多得多)的时间

在你开始写代码之前,请记住:你的第一份家庭作业所需的时间远比你(或出题人)预想的要长得。没有万能的经验法则。不过,我第一次做家庭作业时,被告知大约需要 4 个小时。但我轻轻松松就花了 12 个小时。很多考生也告诉我,他们完成的时间都超过了建议的时间范围。

为什么会这样呢?主要有三个原因。首先,你需要做很多准备工作,从运行“Hello World”程序到编写测试和文档等等。其次,大家都不想提交低质量的作品。即使你完全知道如何操作,高质量的作品也需要时间。最后,人们经常利用这个练习来尝试一些新的东西,这也会花费额外的时间。而这恰恰是件好事!这也引出了我的下一个建议。

技巧二:把带回家的作业当作学习练习,尝试更好、新的做事方法。

既然你已经要花很多时间做作业了,不如让它更有意义,还能顺便学到点新东西。这样一来,作业也会变得更有趣,而不是仅仅把它当成一项苦差事。

尝试采用比日常工作中更好的方法。这可以从建立比以往更完善的结构开始,例如使用新的设计模式或采用最近流行的风格来设计项目。

要谨慎使用那些能帮你完成繁重工作、让你只需编写少量代码的框架。大多数作业都明确要求不要这样做。这是因为如果你这样做,评审人员只能评价第三方库有多出色以及你使用得有多巧妙。他们无法了解如果没有这个特定的库,你的项目会做得如何。

技巧三:快速制作原型,之后再精心构建。

如果你要开发的功能是你以前从未做过几十次的,那么先做一个简易原型会更有利于你取得进展。这个原型可以获取数据并将其显示在屏幕上。有时候,仅仅是获取数据源的 API 密钥就可能需要一些时间。一旦你有了功能完善的原型,就可以更容易地启动一个新项目,因为新项目中的 UI 和业务逻辑是分开的。

技巧 4:编写代码前先列出所有可能出现的特殊情况。

我发现评审员拒绝一些实际可行的家庭作业最常见的原因之一就是工作马虎。这通常意味着没有处理一些非常基本的边界情况。例如,搜索时没有输入任何内容,没有任何反应;或者输入特殊字符时应用程序崩溃;又或者——对于网页项目来说——调整窗口大小导致用户界面错乱。

这些问题大多源于任务中未定义“边界情况”。大多数开发人员在了解需要处理哪些边界情况时工作效率很高。所以,请列出你的边界情况清单!花五分钟时间思考可能出现的特殊情况,并将它们列出来。然后,确保在完成任务时考虑到这些情况。这也是为什么这项工作会比你预期花费更多时间的原因之一。

技巧五:你追求的职位经验越丰富,你需要了解的范围就越广。

居家练习是面试流程中的一个“二元”关卡。通过这一关,要么你进入下一轮(通常是现场面试),要么面试到此结束。公司招聘的职位级别越高,对代码质量的要求就越高。除了代码的可读性和功能性之外,他们还希望你遵循最佳实践,并注重架构和测试。

我见过一些经验丰富的候选人因为过于关注“X 小时”的建议而导致方案质量下降,最终被拒之门外。如果他们再投入一两个小时,或许就能成功;但现在看来,这对双方来说都是浪费时间。

建议六:要求更多时间是可以的

如果你听从了我的建议,并且这是你最早完成的作业之一,那么你可能比预想的花费更多时间。你也可能没有用完之前被告知的固定时间。或者,或许还有其他事情耽搁了你,让你无法继续完成这个项目。

这里有个鲜为人知的秘密:95% 的招聘经理并不在意你完成居家测试需要多长时间。问题是,你正在交谈的招聘人员有时并不了解这一点。大多数情况下他们知道,但他们的目标是尽快让应聘者有机会参加现场面试。这就是为什么他们会设定一个紧迫的截止日期。而“你有 X 天的时间完成这项任务”这种说法,出人意料地能有效地激励应聘者提交。

作为招聘经理,我从未拒绝过任何延迟提交申请的人,前提是他们事先沟通过,而不是突然消失。在评估居家作业时,评审人员通常不会查看——甚至往往根本不知道——申请人花了多长时间完成。

我绝不是建议你花所有时间去琢磨一个完美的带回家的东西。我只是想说,如果生活中出现了其他事情,或者你决定花更多时间在这上面,也不要感到压力。

提示 7:添加(基本)文档

这一点在我看到的提交作品中,有 80% 都忽略了。很多人花了几个小时才找到解决方案,却很少有人会花 10 分钟时间写一些基本的文档,这些文档能提供背景信息,让他们脱颖而出。以下是剩下的 20% 的提交者的做法:

  • 给审阅者的关于启动或设置应用程序的说明。
  • 总结一下哪些功能已经实现,哪些功能(有意地)没有实现。这样可以避免很多吹毛求疵的情况,例如,当审阅者知道附加任务中分页功能已经实现,但延迟加载功能尚未实现时。这也有助于突出你所做的额外工作。你是否为了处理某个特殊情况而发挥了额外的创造力?一定要写下来,否则审阅者可能会完全忽略它。
  • 关于设计决策和框架选择的背景信息。如果您尝试过新的框架,或者想解释为什么选择特定的架构模式,最好提供一些背景信息。对于经验丰富的候选人来说,这一点尤其重要。不要低估背景信息的影响:评审人员考虑这些背景信息。如果他们了解您尝试过一些新的东西,他们就不太可能过于苛刻。
  • 需要改进的地方。你可能时间不够,本来可以做得更多。所以,把这些列出来吧!当审阅者看到你知道还有哪些不足之处时,会对你的工作大有帮助。另外,最好也提一下,如果这个项目投入生产,你会着手改进哪些方面。

技巧 8:将你的代码发布到 GitHub 上

如果你正在找工作,或者想为你的 GitHub 个人资料添加一些新内容,不妨考虑发布你编写的代码。假设你的代码文档完善且编写精良,那么它将来可以作为其他雇主参考的资料。发布代码后,你也能更轻松地与将来可能需要你指导的人分享。

如果你不想公开你在做家庭作业,你仍然可以发布你的代码,而无需提及它是家庭作业。尝试新技术并公开分享总是一件好事。

技巧9:做后续的打包工作会节省很多时间。

完成你的第一份居家作业,或者很久以来的第一次居家作业,都会让你感到筋疲力尽。但曙光就在前方。由于大多数居家作业都大同小异,你之前做的很多工作都可以在下次重复利用。当然,下次的作业可能需要你调用不同的 API,或许要做一些搜索以外的操作。但几乎可以肯定的是,其中仍然涉及到网络通信、列表显示、UI 调整、处理特殊情况、测试和文档编写。所有这些都是你之前投入大量精力的地方。

我希望这份指南能为你下次在面试过程中完成家庭作业时提供一些思路和灵感。你还有哪些关于如何顺利完成家庭作业的技巧可以分享,是这里没有提到的?


关于我:我是一名从工程师转型为工程经理的工程师,目前在硅谷和欧洲的初创公司及科技公司工作。欢迎关注我的博客和推特。我会在我的博客“务实工程师”(The Pragmatic Engineer)上发表关于软件工程的长篇论文。此外,我每月还会发送一份包含软件工程和技术领导力相关主题的深度文章的电子报。

文章来源:https://dev.to/gergelyorosz/9-insider-tips-to-ace-your-next-takehome-project-for-frontend-fullstack-and-mobile-interviews-41nn