我刚刚发现了what c# knowledge should I have?问题并且想知道同样的问题,但是对于Ruby来说。我认为Ruby是我最喜欢的编程语言,除了学习基础知识之外,至少我从众多Ruby on Rails项目和一些Ruby脚本中学到了什么,我试图通过阅读像{{3}这样的博客来学习},Gluttonous,O'Reilly Ruby和Ola Bini。我也读过像Polishing Ruby这样的书。
但是,在接受有关我的Ruby技能的采访时,我还没有充分准备。有人问过我是否知道闭包,最初我回复说我没有,但后来我问问面试官是否有代码块,比如lambda和do
... end
,他没有。我是如何进行3年Ruby编程并尝试学习语言而不学习闭包=代码块的?
那么,我的问题是Ruby程序员应该具备Ruby语言的知识吗?你有什么期望,作为Ruby职位的采访者,我知道吗?只列出一些主题,我会阅读它们。如果您认为有必要,列出Ruby on Rails,Rake,Rack等特定于Ruby的工具也很好。
答案 0 :(得分:60)
这有点像我的头脑;我确定我错过了很多。除了这里提到的东西,理解编程和面向对象编程当然是必须的。
一些重要的语言功能:
[]
,[]=
,==
,+
,<<
的方法时会发生什么等等。对象。collect
,inject
,join
,zip
等方法,那么您的Ruby代码将会更加冗长。attr_accessor
和朋友定义它们,以及如何自己定义它们。Module
和Object
中) Hash
方法参数替代命名参数(即使只是因为它是一种常见模式)。一些重要的工具:
一些框架知识:
最后,请记住以上是“只是知识”,而不是技能。如果您不熟悉它,可能很容易掌握其中的大部分内容。
答案 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
希望你觉得它们很有用!!!