BigBing 技术博客

顺利通过Code Test的Checklist

最近在找新的工作,澳洲这里几乎所有招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:

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

良好的接口设计

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

注意代码质量和规范:

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

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