求职 找工作分享: 顺利通过 Code Test 的 Checklist

grantbb · October 17, 2016 · Last by grantbb replied at March 03, 2017 · 10194 hits
Topic has been selected as the excellent topic by the admin.

最近在找新的工作,澳洲这里几乎所有招 Ruby 工程师的公司都会要求你先做一个 Code Test。就是给你一个需求,用代码实现。 Code Test 通过后,才会进入面对面的面试,这其中还会有Pair Programming,所以一定要自己好好实践。下面是我总结的一些经验:

需求

  • 要很好的理解需求,不要忽略一些细节
  • 不要忘记一些非功能性的需求(比如要提供 github 地址,或者发送 zip 包)

面向对象设计

  • 要符合一些基本的 OOD 的原则,比如Single Responsibility Principle, Open Close Principle
  • 充分利用语言的特性,设计好类,接口以及抽象和继承的层次
  • 使用常用的设计模式:Factory PatternTemplate PatternObserver PatternCommand PatternNull Ojbect
  • 设想一两个需求变更的场景,验证自己的代码能够很容易的扩展

系统和架构的设计

  • 尽量采用 MVC 分层架构模式,有Data ModelBusiness ModelControllerDisplay/Runner Class

异常的处理

  • 自定义异常,然后做好异常的处理
  • 提供友好的错误的提示

Test, Test, Test

  • 尽可能采用 TDD,有清楚的 commits,体现代码的更新过程
  • 每个测试尽量保证一个 assertion
  • 保证足够高的测试覆盖率,100% 是可以有的,可以使用simplecov来帮助
  • 要有集成测试,有正常的流程测试和非正常的流程测试
  • 一定要测试好各种 edge cases
  • 提供易用的rake tasks,方便运行相关的测试,比如单元测试,集成测试等

良好的接口设计

  • 非常容易安装和执行,减少需要的依赖(比如尽量少的 gems,Ruby 版本)
  • 有很好的命令行接口和帮助说明
  • 要有一份README,说明如何安装和使用

注意代码质量和规范:

  • 按照产品级别的代码要求自己
  • 采用Rubocop进行质量检查
  • 不要遗留任何的TODO
  • 方法尽可能短小,不要超过 5 行

最后祝所有找工作的朋友好运!

实际上是一个优秀的 Rubyist 的自我修养总结。

lgn21st mark as excellent topic. 17 Oct 19:18

虽然没啥新东西,但很实用~

订阅楼主的博客已久,时常会有干货文章,支持。

Test, Test, Test

已逼死处女座强迫症。

#1 楼 @lgn21st 谢谢版主,加精太给力了!

楼主能不能提供几个题目练练手?谢谢。

够严格,非常赞同

lz 在澳洲哪个公司就职?

#9 楼 @mengqing 目前在 travelport locomote

@grantbb 上个月的 Rubyconf 你们公司有来吗?貌似好像看到过你们公司

@mengqing 你是哪位?我们公司去了好多人。

You need to Sign in before reply, if you don't have an account, please Sign up first.