Ruby on Rails Interview Questions

Ruby on Rails 面试问题

2025年3月17日 | 阅读 10 分钟

下面列出了最常问的 Ruby on Rails 面试问题和答案。

1) 什么是 Ruby on Rails?

Ruby on Rails 是一个用 Ruby 语言编写的服务器端 Web 应用程序开发框架。它允许您编写比其他语言和框架更少的代码。它包含创建符合 MVC 模式的数据库支持的 Web 应用程序所需的一切。

欲了解更多信息:点击此处


2) 解释 Rails 中的 DRY?

DRY 代表“不要重复自己”。它是一个软件开发原则,指出“每个知识点在系统中都必须有一个权威的、明确的、单一的表示。”如果代码的同一部分不再重复,代码将更易于维护、可扩展且错误更少。

欲了解更多信息:点击此处


3) Ruby on Rails 的当前版本是什么?

Rails 5.0.1 于 2016 年 12 月 21 日发布。它引入了 Action cable、Turbolinks 5 和 API 模式。


4) 解释 Rails 中的 CoC

CoC 代表“约定优于配置”。它提供了关于在 Web 应用程序中完成许多事情的最佳方式的不同观点。

欲了解更多信息:点击此处


5) 谁开发了 Rails?

Ruby on Rails 由 David Heinemeier Hansson (DHH) 创建。

欲了解更多信息:点击此处


6) 安装 Ruby on Rails 有哪三种方法?

安装 Ruby on Rails 有三种方法

  • 使用 rbenv(推荐)
  • 使用 rvm
  • 从源代码

欲了解更多信息:点击此处


7) 列举一些 Rails IDE 或编辑器。

Ruby on Rails 可以与简单的文本编辑器或 IDE 一起使用。

下面列出了一些 Rails IDE

  • TextMate
  • E
  • Intellij IDEA
  • NetBeans
  • Eclipse
  • Heroku
  • Aptana Studio
  • RubyMine
  • Kuso IDE
  • Komodo
  • Redcar
  • Arcadia
  • Ice Coder

欲了解更多信息:点击此处


8) 什么是 Rails 脚本?列举一些?

Rails 提供了一些用于开发 Rails 应用程序的优秀工具。这些工具作为命令行脚本打包。

以下是 Rails 应用程序中最有用的一些 Rails 脚本

  • Rails Console
  • WEBrick Web Server
  • 生成器
  • 迁移

欲了解更多信息:点击此处


9) Ruby on Rails 有缺点吗?如果有,请说明。

Ruby on Rails 不支持的一些功能是

  • 链接到多个数据库。
  • 在数据库中包含外键。
  • 同时建立到各种数据库的连接。
  • 与 Soap 相关的 Web 服务。

10) Ruby on Rails 中 super 函数的用途是什么?

Ruby 中的 super 函数用于调用原始方法。它调用当前方法的超类实现。


11) 什么是 Rails 中的 Active Record?

一个完美的 ORM 将数据库的关​​联数据细节隐藏在对象层次结构后面。在 Rails 中,ORM 由 Active Record 实现,它是 Rails 库中最重要的组件之一。

使用 Active Record 时,您无需再处理表、行或列等数据库构造。您的应用程序只处理类、属性和对象。

欲了解更多信息:点击此处


12) 谁设计了 Rails 中的 Active Record?

Active Record 基于 Martin Fowler 创建的设计模式。Active Record 就是从这个设计模式中得名的。它的代码即使行数较少也能很好地工作。它非常易于使用。如果您的数据库和类遵循适当的命名方案,Active Record Rails 应用程序根本不需要任何配置。

欲了解更多信息:点击此处


13) 解释 Rails 中的模型?

模型是 Rails 中的类。此子系统在 ActiveRecord 库中实现。此库提供了数据库表与操作数据库记录的 Ruby 程序代码之间的接口。

欲了解更多信息:点击此处


14) 使用哪个命令创建迁移?


18) 什么是哈希?

哈希是键值对的集合。


19) 如何创建块?

创建块的语法是


20) 变量的命名约定是什么?

变量名称以小写字母给出,名称中的不同单词用下划线分隔。


21) proc 和块之间的主要区别是什么?

Procs 是对象,而 Blocks 是代码的一部分。


22) 字符串可以用单引号和双引号表示。两者之间有什么区别?

单引号字符串表示不允许执行字符串插值和处理 ASCII 转义码。


23) 解释 Rails 迁移。

借助 Rails 迁移,Ruby 可以更改数据库模式。


24) 如何为主题创建控制器?

您必须使用以下命令为主题创建控制器


25) 解释 Rails 中的视图?

视图以特定格式在应用程序中为用户呈现数据。此子系统在 ActionView 库中实现。此库是一个基于嵌入式 Ruby (Erb) 的系统,它定义了数据呈现的演示模板。

欲了解更多信息:点击此处


26) 解释 Rails 中的控制器?

控制器将流量引导到视图和模型。此子系统在 ActionController 库中实现。此库是位于 ActiveRecord 和 ActionView 之间的数据代理。

欲了解更多信息:点击此处


27) 解释 Rails 中的 RVM?

RVM 代表 Ruby Version Manager。它是一个命令行工具,允许您有效地安装、管理和使用不同的 Ruby 环境。使用 RVM,您可以轻松安装不同版本的 Ruby 并快速切换它们。

语法

RVM 的基本语法是,

欲了解更多信息:点击此处


28) 什么是 Rails 中的 Gemsets?

Ruby 中的 Gem 用于扩展核心 Ruby 分布的功能。它们在程序中添加特定的功能。一些 Gem 也随 Ruby 安装以提供特定的环境,这些环境称为 Gemset。您可以在一个系统中安装相同 Gem 的不同版本。

要了解 Ruby 中所有可用的 Gem,请使用以下命令

欲了解更多信息:点击此处


29) 编写在 Rails 中更新 RVM 的命令。

要升级 RVM,请使用以下命令

欲了解更多信息:点击此处


30) 解释 Rails 中的 bundler。

Rails bundler 通过跟踪所需的合适 Gem 为应用程序提供了一个恒定的环境。

要使用 bundler,请使用以下命令

欲了解更多信息:点击此处


31) 为什么我们在 Rails 中使用迁移?

迁移通过使用 DSL 以一致且有组织的方式更改应用程序的数据库模式。

创建迁移文件的语法

欲了解更多信息:点击此处


32) 编写运行迁移的命令。

欲了解更多信息:点击此处


33) 路由器在 Rails 中如何工作?

Rails 路由器识别 URL 并将其分派给控制器的操作。它还生成路径和 URL。Rails 路由器与其他语言路由器处理 URL 的方式不同。它确定请求的控制器、参数和操作。

Rails 路由器的主要目的是

  • 将 URL 连接到代码
  • 从代码生成路径和 URL

欲了解更多信息:点击此处


34) 解释 Rails 路由中的 REST。

REST 对于理解 Rails 中的路由非常有益。它代表 Representational State Transfer。几个 HTTP 方法与 REST 一起使用,以表示用户或应用程序执行的操作类型。

欲了解更多信息:点击此处


35) 解释嵌套脚手架的一些功能。

嵌套脚手架是为 Rails 4.2 和 5 生成一组正确工作的嵌套资源的命令。

特点

  • 使用单个命令生成嵌套的子资源
  • 生成一组精美可用的代码
  • 自动为 ActiveRecord 生成适当的模型关联
  • Haml 就绪

欲了解更多信息:点击此处


36) 有多少种方法可以创建 Rails 布局 HTTP 响应。

从控制器的角度来看,有三种创建 HTTP 响应的方法

  • 调用 render 创建完整的响应发送回浏览器
  • 调用 redirect_to 发送 HTTP 重定向状态码到浏览器
  • 调用 head 创建响应发送回浏览器

欲了解更多信息:点击此处


37) 解释 Rails 中 yield 语句的重要性。

Rails 中的 yield 语句决定了在布局中何处渲染操作的内容。如果布局中没有 yield 语句,布局文件本身将被渲染,但操作模板中的附加内容将不会正确地放置在布局中。

欲了解更多信息:点击此处


38) Rails 中有多少种过滤器。

Rails 过滤器是在控制器操作方法执行之前或之后运行的方法。Rails 支持三种类型的过滤器方法

  • 前置过滤器 (Before filters)
  • 后置过滤器 (After filters)
  • 环绕过滤器 (Around filters)

欲了解更多信息:点击此处


39) 如何在 Rails 中保护过滤器方法?

所有 Ruby 方法都至少具有以下保护级别之一。

  • 公共 (Public): 这些方法可以从使用它们定义的相同类的任何外部类或方法访问。
  • 受保护 (Protected): 这些方法只能在它们定义的类中以及继承自它们定义的类的类中访问。
  • 私有 (Private): 这些方法只能在它们定义的类中访问。

欲了解更多信息:点击此处


40) 解释 Rails 中的测试。

Rails 也使用单独的数据库进行测试。Rails 使用 Ruby Test::一个单元测试库。Rails 应用程序测试通常使用 Rake 实用程序运行。

Rails 支持三种类型的测试

  • 功能测试 (functional)
  • 集成测试 (integration)
  • 单元测试 (unit tests)

欲了解更多信息:点击此处


41) 解释 Rails 缓存级别。

Rails 缓存有三个粒度级别

  • 操作
  • Fragment

欲了解更多信息:点击此处


42) Rails 验证的用途是什么?

Rails 验证为您的每个 Active Record 模型类定义了有效状态。它们用于确保只将有效详细信息输入到您的数据库中。

欲了解更多信息:点击此处


43) 解释 Rails 中的 valid 和 invalid?

valid? 触发您的验证,如果没有发现错误则返回 true,否则返回 false。

invalid? 仅仅是 valid? 的反向。它触发您的验证,如果无效则返回 true,否则返回 false。

欲了解更多信息:点击此处


44) 解释 Rails 中的非侵入式 JavaScript。

“非侵入式 JavaScript”技术被认为是前端社区中最好的技术。

欲了解更多信息:点击此处

45) 什么是符号垃圾收集器?

传递符号会增加系统中发生多次攻击的可能性。符号垃圾收集器收集符号,防止您的系统受到多次攻击。


46) 什么是 Action Cable?

它是一个框架,用于通过 WebSockets 扩展 Rails 以添加一些功能。它将 WebSockets 与 Rails 应用程序的其余部分非常顺畅地集成。它允许您快速向应用程序添加一些实时功能。


47) 解释 Ruby on Rails 的各种 IDE。

TextMate:TextMate 主要用于 Mac 操作系统。它允许您编写基本环境的扩展。这些扩展插入 TextMate 以向基本编辑器添加新功能。这些扩展称为 Bundles。

E:E-text 编辑器就像 TextMate 编辑器一样,可在 Windows 上运行。它复制了 TextMate 的许多功能,甚至允许使用 TextMate bundles。

IntelliJ IDEA:IntelliJ IDEA 是 JetBrains 制造的商业 IDE。早期,它也用于 Java 开发。JetBrains 7.0 版已将 Rails 支持添加到 IntelliJ IDEA 中。

NetBeans:NetBeans 是 Sun 公司的 IDE。早期,它用于 Java 开发。Sun 7.0 版已将 Rails 支持添加到 NetBeans 中。

Eclipse:Eclipse IDE 是当今最常用的 IDE。使用插件 RadRails,您可以完全将 Rails 支持添加到 Eclipse 环境中。

Heroku:Heroku IDE 提供了一种新的独特方式来编写 Rails 应用程序。它完全在线用于开发应用程序。您无需在系统上安装任何软件即可使用 Heroku。它不支持 Internet Explorer。

Aptana Studio:Aptana 的产品是一个基于 Eclipse 项目的独立桌面 IDE。它与 Eclipse 非常相似。Rails 功能作为插件打包到 Aptana Studio 环境中。

RubyMine:RubyMine IDE 是 Ruby 爱好者的首选。它提供了比其他 IDE 更多的额外功能。其中一个功能是点击并跟随。当您单击一个函数时,它会带您到被调用的函数。当多个函数共享相同的名称并位于不同的文件和文件夹中时,此功能非常方便。其他功能包括 Git annotate 和 Git compare。


48) 什么是 Rails 控制台?

Rails 控制台是一个命令行实用程序,它从命令行运行 Rails 应用程序。Rails 控制台是 Ruby IRB 的扩展。它提供了 IRB 的所有功能以及自动加载 Rails 应用程序环境的能力,包括其所有类和组件。它帮助您逐步遍历应用程序。


49) Ruby on Rails 中的生成器是什么?

Rails 包含代码生成器脚本,用于自动为应用程序生成模型和控制器类。代码生成提高了您开发 Web 应用程序时的生产力。通过运行生成器命令,将生成所有模型和控制器类的骨架文件。它还为它生成的每个模型生成数据库迁移文件。


50) 什么是 webrick Web 服务器?

Rails 配置为自动使用 WEBrick 服务器。该服务器用纯 Ruby 编写,支持几乎所有平台,如 Windows、Mac 或 Unix。或者,如果您的系统安装了 Mongrel 或 Lighttpd 服务器,Rails 会使用其中任何一个服务器。

所有三个 Rails 服务器都具有代码自动重新加载功能。这意味着,当您更改源代码时,您无需重新启动服务器。