Ruby面试题

Python015

Ruby面试题,第1张

下面是对 Rails Interview Questions 中的

Ruby 部分的解答:

从上面可以看出,其实Proc和lambda都是 Proc 对象

首先我们来回答第一问:怎么通过某个字段来对对象数组排序?

假设我们有一个对象数组 @users ,我们需要让他对字段 name 排序,则我们可以:

如果是在 ActiveRecord 中,则我们只需:

下面列举我喜欢的几个常用的gems及它的可替代备选方案

首先我们说明一下递归(recursive)和迭代(iterative):

递归 :一个树结构,每个分支都探究到最远,发现无法继续走的时候往回走,每个节点只会访问一次。

迭代 :一个环结构,每次迭代都是一个圈,不会落掉其中的每一步,然后不断循环每个节点都会被循环访问。

由此我们可以看出 ruby 中更加常用的选择是 迭代 ,就像 .each , .times , .map 等都是迭代循环的形式。

ruby之父,松本行弘,日本人

于 2015-03-20

在Ruby中,一切都是对象。这里有一个例子来说明这个功能更直观的Ruby语言。

在Java中,寻找一些低于绝对代码。

诠释C = Math.abs(-20)

在Ruby语言,一切都是对象,意为“-20”这个数字是一个对象,因此,寻求Ruby代码中的一些绝对值的形式如下。

C = -20.abs这个代码不写在一种风格的它的一些更多的图像?

Rails框架是一个需要更现实和更高效的Web开发框架,Rails的结合了PHP系统(快速发展)和Java系统(正常计划)的优点的优势。

Rails是一个全栈MVC框架,换句话说,可以通过Rails的MVC模式,在各级实现,并让他们一起工作完美地结合在一起。

在Web应用程序项目MVC模式的实际开发中,如果你使用Java开发,需要使用Struts,Hibernate和Spring框架等,也是另外三个框架的集成开发的内容。而使用相同的项目Ruby语言开发,只需要使用Rails框架就可以完成。

回报率的Java高效率肯定比一个数量级更好的,这的确是事实,至少比PHP高几倍,这也是事实,在本文中不进行,但为什么开发效率如此之高,我也想谈一谈,当然我的看法,仍然是不成熟的意见:

之一,主要红宝石语言的语法是非常强大的,我记得庄威说表视图: “框架强化语法”,即语法相对薄弱,有必要帧N多,如果语法是非常强的,非常小的框架。这是在Java和红宝石的身体已经得到了验证。

1,Ruby的公开课VS Java进行AOP,反射,动态代理,字节码增强技术引进JDK1.3反射,它已经打开了通往一个静态类型语言Java的这种动态类型语法潘多拉的盒子。那么动态代理技术,字节码增强技术,静态和动态AOP技术开始出现,为什么?是需要动态地改变在程序运行时对象的行为。但对于红宝石是公开课,上水平,支持程序运行对象行为矫正的语法,所以需要很复杂的Java技术实现的功能,红宝石,这是很简单的就搞定了。

2,红宝石的鸭打字VS Java的IoC的,通用的Java的IoC不用说,在库中的通用层面开始广泛使用。 IoC的是基于对象的行为的对象组件,通用的交互式对象,以确定下不确定的情况下的对象的行为。但是红宝石对象行为是在运行理所当然的通用行为不是一成不变的,所以没有国际奥委会确定。

3,红宝石的块,封VS Java的匿名内部类春季模板确保每个人都非常深刻的印象,但这是红宝石标准用法,所以各种资源的释放,异常处理在支持的语法水平是非常好的,这是非常简单的事情。

4,Ruby的元编程VS Java的大家耳熟能详的,缺乏method_missing的机制,Java是没有那么强的元编程,许多红宝石魔力发挥出来。

5,VS编译语言的脚本语言,这也是一个很大的优势,脚本的速度真快。

二,Rails框架确实做了伟大的工作,

1,全stackrails是一个概念性的框架一致fullstack不知道为什么,在Java世界目前只充斥着这一项可以比和回报率的fullstack框架,但执行并不好赖夫(作者PHP翻过来,口水战爆发DHH)。因为在Java中不同的底层语法的支持然而,就是制订的RoR框架。因此,它是做使用Groovy的Grails,但这些家伙不辜负大家的期望。

2,COC不用说,许多Java框架开始吸收这一点。

3,良好的量身定制,提供所有的Web开发人员Web开发需要使用多种技术,绝对私密,如果Java的,这些东西需要整合或实现自己的,节省了不少的麻烦。

4,快速部署的发展和这个就不多说了测试,Java是太明显的缺点

关于颁发的“源效率”,我的理解是,轻微的复杂度降低到极端的ROR。直截了当地说,没有ROR太聪明,但我们已经做了愚蠢的事情太多了。人们各种各样的xml,标签库,单元测试困难......登录到到网的项目下进行的都知道的很多,这些小的情况下,是真正可怕的复杂性。 ROR没有降低软件,这是业务问题的固有的复杂性。但它减少了的无限复杂复杂趋于业务,有一个称为ROR的DSL网络的发展。解决业务问题,其中人才是人,ROR无法取代人,但它把人从二级复杂的泥潭救出。

参考:南京赛威信息技术

在java的时代,因为不满面向类/对象的复杂机制,自己借鉴研究了对象装备模式,后来发现就是spring的原理。当时不知spring的情况下,还自己实现了利用运行时反射机制来动态的给对象设置空类,拼装方法共享实例对象属性,做出来虽然很欣慰,但是很难看,很慢,不可能到生产环境。 后来了解了js的函数原型prototype,可以动态的定义方法和传递闭包,简直口水直流,直接转成了web前台开发,只做ajax,直到ruby的出现。大概是06年,那时候资料贼少,全是日文,英文的都不多,学了皮毛就搁置了。 今年,因为自己回归开发,想实现一些想法,尝试了php之后,毅然决定打死不用php,与其深入研究php不如决心搞ruby,打眼一看,发现中文资料太多了,太幸福了,当看到这本元编程的时候,马上想起java时候的辛酸啊。 Ruby让人快乐,元编程更是快乐的魔法,创造出令人兴奋激动的东西。 计算机不再是仆人,而是朋友,我能理解你,你也能理解我。 如果说写java就像写论文,那么用js就像写英文诗,而ruby像五言绝句。 所以不学元编程,不如用java