我应该拥有什么Ruby知识?

时间:2009-07-07 14:30:17

标签: ruby

我刚刚发现了what c# knowledge should I have?问题并且想知道同样的问题,但是对于Ruby来说。我认为Ruby是我最喜欢的编程语言,除了学习基础知识之外,至少我从众多Ruby on Rails项目和一些Ruby脚本中学到了什么,我试图通过阅读像{{3}这样的博客来学习},GluttonousO'Reilly RubyOla Bini。我也读过像Polishing Ruby这样的书。

但是,在接受有关我的Ruby技能的采访时,我还没有充分准备。有人问过我是否知道闭包,最初我回复说我没有,但后来我问问面试官是否有代码块,比如lambda和do ... end,他没有。我是如何进行3年Ruby编程并尝试学习语言而不学习闭包=代码块的?

那么,我的问题是Ruby程序员应该具备Ruby语言的知识吗?你有什么期望,作为Ruby职位的采访者,我知道吗?只列出一些主题,我会阅读它们。如果您认为有必要,列出Ruby on Rails,Rake,Rack等特定于Ruby的工具也很好。

6 个答案:

答案 0 :(得分:60)

这有点像我的头脑;我确定我错过了很多。除了这里提到的东西,理解编程和面向对象编程当然是必须的。

一些重要的语言功能:

  • 意识到在Ruby中,一切都是表达式,并且能够应用该原则,即使您认为它使您的代码不可读。
  • 提到
  • 关闭;我还希望Rubyists能够知道块和proc(和lambdas)之间的区别,并知道如何在它们之间进行转换。在我看来,关闭掌握对于能够写出漂亮的Ruby非常重要。
  • 运算符重载:了解定义名为[][]===+<<的方法时会发生什么等等。对象。
  • 精通数组可枚举哈希的大多数实例方法(即使您不知道确切的定义) 。如果您在适当的时候不使用collectinjectjoinzip等方法,那么您的Ruby代码将会更加冗长。
  • 彻底了解符号是什么,何时应该使用/避免它们。
  • 了解元类是什么,了解类变量类实例变量之间的区别。
  • 了解对象属性如何在Ruby中工作,如何使用attr_accessor和朋友定义它们,以及如何自己定义它们。
  • 能够将模块用作混合命名空间工具。您还应该了解如何混合实例方法类方法(或者能够弄清楚如何做到这一点)。
  • 了解 raise / rescue throw / catch 之间的区别,并且能够正确使用它们。
  • 了解元编程的工作原理,至少对所有允许您进行元编程的方法有一个基本概念(主要隐藏在类ModuleObject中)
  • 能够使用 Hash方法参数替代命名参数(即使只是因为它是一种常见模式)。
  • 了解并发性在Ruby中是如何工作的。
  • 延续,即使它们很少使用。

一些重要的工具:

  • 了解并了解 Ruby gems
  • rake
  • RDoc
  • YAML

一些框架知识:

  • Rails 的基本知识会很有用。即使这只是因为外界有时似乎并不知道Rails和Ruby之间的区别。
  • 知道其他网络框架而不是Rails:Merb,Sinatra,Camping,......

最后,请记住以上是“只是知识”,而不是技能。如果您不熟悉它,可能很容易掌握其中的大部分内容。

答案 1 :(得分:15)

你可以通过阅读Ruby的创始人,Yukihiro Matsumoto的The Ruby Programming Language来填补你作为真正的程序员而不是学者的知识空白。它涵盖了许多模糊的细节,例如在不同类型的lambdas中进行多次赋值的变幻莫测,并且相对较新,涵盖了Ruby 1.9中的新语义。

我的一位老板曾告诉我,他认识并信任的长期程序员曾向他求助,并问道:“我忘了......一个字节中有多少位?”这个故事的寓意并不是说这个家伙是个白痴 - 有时可能会长期编写一些合格的代码并错过其他似乎应该是基本的东西。

答案 2 :(得分:9)

要@ molf的列表,我要添加:

DSL - 如何使用它们,以及如何编写它们。深入研究rake和capistrano的内部结构对此非常有用。

Rack - 使用Ruby(尤其是Python)来创建Web应用程序的关键优势。了解它为何具有优势,如何运作以及如何使用它。

消息传递与函数调用 - Ruby相对于Java等其他关键优势。使用method_missing以及如何使ActiveRecord和DSL成为可能。

答案 3 :(得分:7)

闭包是关键(了解他们的范围),特征类(或元类或任何你想称之为的东西),mixins(包括和扩展以及你可以用它们做的所有愚蠢的技巧),元编程是特定于Ruby的想到的事情。标准面向对象和函数式编程技术也是公平的游戏。

答案 4 :(得分:3)

听起来你正在寻找一些一般理论。我最近没有读过任何内容,但是有关“编程语言原理”主题的书可能会有所帮助(寻找一个讨论面向对象语言和函数式语言的书)。

此外,您可能会发现有关Rails或Rake如何工作的启发(与使用它的方式相反)。这可以帮助您更深入地了解Ruby可以做什么。

答案 5 :(得分:2)

我写了一篇关于ruby和rails面试问题的详细博客,这些问题是我在采访中遇到过的。

http://anilpunjabi.tumblr.com/post/25948339235/ruby-and-rails-interview-questions-and-answers

希望你觉得它们很有用!!!