zhcn 技术 数据管理 非公開: 40 多个 Ruby on Rails 面试常见问题及解答 [2023]

40 多个 Ruby on Rails 面试常见问题及解答 [2023]

Ruby on Rails 可能是最著名的 Ruby 框架。它的流行得益于其易用性、MVC 架构、社区和可扩展性。

使用 Ruby on Rails 的主要公司包括 GitHub、Dribble、Shopify、Airbnb、Etsy、Kickstarter、Twitch 和 Zendesk 等。

如果您是一名中级或经验丰富的 Ruby on Rails 工程师,那么明智的做法是了解您在下次面试中可能会遇到的问题的性质。

如果你没有做好准备,面试可能会很可怕。然而,如果你做好了充分的准备,你的信心就会飙升,你可能会很幸运地在你梦想的公司找到一个新的职位。

这些是常见的 Ruby on Rails 面试问题和答案。

Ruby-on-Rails 面试问题和解答
Ruby-on-Rails 面试问题和解答
40 多个 Ruby on Rails 面试常见问题及解答 [2023]
40 多个 Ruby on Rails 面试常见问题及解答 [2023]

什么是 Ruby on Rails?

Ruby 是一种语法简单的面向对象的编程语言。

Ruby on Rails是开发人员用来创建 Web 应用程序的 Ruby 框架。

40 多个 Ruby on Rails 面试常见问题及解答 [2023]
40 多个 Ruby on Rails 面试常见问题及解答 [2023]

讨论 Ruby on Rails 的好处

  • 比其他语言更少的代码:使用 Rails,您只需几行代码即可完成很多工作。
  • 广泛的库和 gem :有大量库和 gem 可用于改进 Ruby on Rails 应用程序的功能。
  • 易于学习: Ruby on Rails 代码看起来像简单的英语。
  • 这是一个大社区。
40 多个 Ruby on Rails 面试常见问题及解答 [2023]
40 多个 Ruby on Rails 面试常见问题及解答 [2023]

讨论 Ruby on Rails 的局限性

  • 与Django和Node.js相比,Rails的执行速度和性能较低。
  • 有关某些宝石的文献有限。
  • Ruby on Rails 是任意的,这限制了开发人员的灵活性。
40 多个 Ruby on Rails 面试常见问题及解答 [2023]
40 多个 Ruby on Rails 面试常见问题及解答 [2023]

什么是 Rails 控制器?

这是 Ruby on Rails 应用程序的逻辑核心。 Rails 控制器管理、编排和监控用户、模型和视图之间的所有交互。

Rails 中的活动记录是什么?

Active Record 是一种对象关系映射 (ORM) 技术。这一层 Ruby 代码在代码逻辑和数据库之间运行。编写 Ruby 代码后,运行“迁移”以对数据库进行更改。

什么是 MVC?它是如何工作的?

模型视图控制器 (MVC) 架构模式将业务逻辑与输入和表示逻辑分开。

  • 模型:处理 Rails 应用程序中的所有数据逻辑。
  • 视图:这是用户看到的应用程序部分。
  • 控制器:它就像一个桥梁或代理,允许模型和视图进行通信。

Ruby on Rails 中的动作控制器是什么?

动作控制器是MVC模式中的C。动作控制器接收传入的请求,理解它们并产生适当的输出。

Rails 中的 rake 是什么?

Rake 是 Ruby on Rails 和 Ruby 应用程序的任务运行程序。 Rails 预定义了 Rake 任务,用于运行测试、运行迁移和创建数据库。

Ruby on Rails 中的产量是什么?

Yield 是调用该块的方法中使用的关键字。 Yield 可以传递给块的参数数量没有限制。在这种情况下,块是一个未命名的方法,可以作为附加参数传递给其他方法。

什么是垃圾收集 Ruby on Rails?

垃圾收集是控制计算机程序使用的内存的过程。 Ruby on Rails 跟踪程序使用的对象,而不是程序员使用的对象。因此,开发人员可以专注于逻辑和规则,而不用担心内存分配。

垃圾收集在 Rails 应用程序中的作用是什么?

这会释放计算机上的内存以供其他进程运行。垃圾收集通过删除程序执行后留下的不可访问的对象来实现此目的。

什么是资产管道?

Ruby on Rails 资产管道提供了一个用于缩小和连接 CSS 和 JavaScript 资产的框架。该框架允许您自动将 Rails 应用程序中的所有资产与其他 gem 的资产组合起来。

动态脚手架和静态脚手架的区别

脚手架是生成 Rails 应用程序主要部分的过程。

静态脚手架涉及显式输入命令来生成每个字段所需的数据。要完成静态脚手架,必须执行迁移。

动态脚手架在运行时生成内容和用户界面。此过程可用于在 Rails 应用程序中创建、修改和删除操作。

什么是类库?

类库由 Ruby on Rails 中的域组成,线程编程和数据类型就是此类域的示例。类库允许开发人员创建代码抽象,以便他们可以在应用程序的不同元素中使用相同的逻辑。

解释 Rails 中的多态关联

多态关联是一种活动记录关联。多态性意味着一个对象可以有多种形式。在 Rails 的上下文中,多态关联允许您定义一个可以与其他模型相关并属于其他模型的模型,而无需编写重复的代码。

Ruby 中的字符串插值是什么?

字符串插值添加引用字符串对象内其他值的占位符。使用加法运算符是插值的最简单方法。

考虑以下示例。

 name = "Titus"

puts "Hello " + name

输出应如下所示:

你好,提图斯

什么是对象关系模型 (ORM)?

ORM 是数据库和面向对象程序之间的桥梁。 Rails 中的对象关系指示类何时映射到数据库中的表。

解释 Rails 迁移

迁移允许开发人员轻松更改数据库模式。因此,开发人员可以在受控环境中管理数据库架构的推出和回滚。此方法消除了管理单个 SQL 脚本来定义更改的能力。

解释 Rails 命名约定

  • 类和模块:使用混合大小写,但没有下划线。类和模块名称以大写字母开头。
  • 数据库表:数据库表名称必须是复数且蛇形。
  • 变量:声明变量的字母必须是小写、蛇形,并用下划线分隔。
  • 模型:使用混合大小写指定模型并确保名称是单数。
  • 控制器:控制器名称是复数。

Rails 中的字符串和文本有什么区别?

:string适合存储最多255个字符的短文本。可与姓名、用户名、电子邮件、密码和职位一起使用。

:text适合长描述。对博客文章或商店描述进行评论的完美示例。

 class CreatePosts < ActiveRecord::Migration

   def self.up

      create_table:posts do |t|

         t.string:description

         t.text :content 

      end

   end

描述跨站请求伪造 (CSRF)

跨站点请求伪造 (CSRF) 是一种在线攻击,攻击者会诱骗经过身份验证的用户代表该用户执行特定操作。

Rails 要求开发人员在 ApplicationController 中添加“protect_from_forgery”以避免 CSRF 攻击。应用程序始终需要 CSRF 令牌来对用户进行身份验证。

解释什么是 Rails mixin

Mixin 提供了一种向类添加功能的受控方式。各种 mixin 组成一个类。 Mixins 消除了多重继承的需要。

如何在 Ruby 中使用 load 和 require?

require()用于导入库/gems

load()用于执行一段代码

Ruby on Rails 中的回调和观察者有什么区别

当方法与对象的生命周期不直接相关时,将使用Rails 观察器。它的生命周期很大,可以随时安装或拆卸。

回调只能在对象生命周期内的特定实例上调用。此类实例的示例包括更新、创建和验证。回调仅在短时间内有效。

Ruby的装备和装备是什么?

夹具是指组织正在测试的数据的方式。这些可以在以 .yml 扩展名结尾的文件中创建。

线束是用于运行 Rails 测试的环境或测试运行器。将设备放在安全带上。

Extend 和 include 和有什么不一样?

包含”将实例方法添加到类中。因此,可以通过类方法访问代码。

扩展”将模块中定义的实例方法添加到扩展类中。

Ruby 中的 gem 和插件相同吗?

Gems是您需要安装的打包 Ruby 应用程序。它们是通用的并且在功能上独立于 Rails。

Ruby on Rails插件与 Rails 应用程序一起部署。这些修改或添加到 Rails 的核心功能。

什么是铁路观察员?

Rails 观察者提供了一种机制,让一个对象在其状态发生变化时通知其他对象。这可以应用于一对多关系,例如当一个对象发生更改时,所有依赖对象都会收到通知并自动更改。

使用哪些命令来创建迁移?

 bin/rails db:migrate 

展示如何在 Ruby 中定义类、实例和全局变量。

  • 类变量:可以在类中的任何位置使用。该阶层的后代也可以访问它们。以@@开头。
  • 实例变量:在特定于所创建对象的实例的局部范围内使用。它们可能因对象而异。以@开头。
  • 全局变量:可以从程序中的任何位置访问。以 $ 开头。

Ruby demo目录下的rakefile起什么作用?

Rakefile 对于测试和打包 Rails 代码非常有用。该文件定义运行测试或演示应用程序功能的任务。

Rails 中的扫地机是什么?

清理器充当缓存的终结者。它们充当一半过滤器和一半观察者并实现双重角色回调。 ‘expire_cache’查找并清除所有需要过期的缓存片段。

什么是过滤器?

这些是执行控制器操作的“之前”或“之后”方法。只要在 ApplicationController 中配置了这些方法,这些方法就会被继承并在您的应用收到的每个请求上运行。

Rails 中重定向和渲染的区别

渲染:用于渲染模板并根据请求将其发送给客户端。该模板生成一个在浏览器中显示的页面。

重定向:将新的 HTTP 请求发送到不同的 URL。此操作将客户端重定向到另一个控制器或操作。如果您想要更改客户端在其浏览器中显示的 URL,此方法非常有用。

区分 super() 调用和 super 调用

  • Super :向当前对象的父对象发送消息并调用被调用方法的所有参数。
  • super():不向父级发送任何参数。

过程和块有什么区别?

  • 区块: A do/end 语句或用花括号括起来的一段代码。每次调用该方法时都会创建并执行它们。
  • Procs:绑定到一组局部变量的代码块。该代码可以在不同的上下文中调用,并且仍然可以访问变量。

put 和 print 语句有什么区别?

如果您想在屏幕上打印一些内容,请使用put 。例如,

 puts “Hello World!!!”

打印你好世界。在屏幕上

如果您不想向控制台添加新行,请使用 print。

 print “Hello World!!!” 

打印了 Hello World!!!,但没有在控制台中添加新行。

什么是动态取景器?

动态查找器允许开发人员在数据库中搜索记录,而无需使用原始 SQL 查询。它们使用find_by_关键字,后跟要搜索的属性。

解释 Rail 如何实现 Ajax

  • 启动表单提交和按钮单击等触发器。
  • JavaScript 方法将触发数据发送到服务器的处理程序。
  • 服务器端处理程序处理数据并将 HTML 发送到 Web 客户端。
  • 客户端 JavaScript 处理程序接收 HTML 内容并更新当前页面。

解释 Dig、Float 和 Max

  • Dig方法允许您从嵌套哈希或数组中提取值。
  • Float是一种 Ruby 数据类型,表示具有浮点精度的实数。
  • Max是一种可与数组和哈希一起使用的方法。返回项目/值集合的最大值。
 array = [2, 9, 4, 7, 3]

maximum = array.max

控制台打印 9,即最大数字。

结论

以上是您在下一次 Ruby on Rails 会议上可能会遇到的一些问题。如果您是一般软件工程师,请查看这些 Node.js 面试问题。在参加下一次面试之前,请务必了解 Rails 工程师的工作内容。

Ruby on Rails 可能是最著名的 Ruby 框架。它的流行得益于其易用性、MVC 架构、社区和可扩展性。

使用 Ruby on Rails 的主要公司包括 GitHub、Dribble、Shopify、Airbnb、Etsy、Kickstarter、Twitch 和 Zendesk 等。

如果您是一名中级或经验丰富的 Ruby on Rails 工程师,那么明智的做法是了解您在下次面试中可能会遇到的问题的性质。

如果你没有做好准备,面试可能会很可怕。然而,如果你做好了充分的准备,你的信心就会飙升,你可能会很幸运地在你梦想的公司找到一个新的职位。

这些是常见的 Ruby on Rails 面试问题和答案。

Ruby-on-Rails 面试问题和解答
Ruby-on-Rails 面试问题和解答
40 多个 Ruby on Rails 面试常见问题及解答 [2023]
40 多个 Ruby on Rails 面试常见问题及解答 [2023]

什么是 Ruby on Rails?

Ruby 是一种语法简单的面向对象的编程语言。

Ruby on Rails是开发人员用来创建 Web 应用程序的 Ruby 框架。

40 多个 Ruby on Rails 面试常见问题及解答 [2023]
40 多个 Ruby on Rails 面试常见问题及解答 [2023]

讨论 Ruby on Rails 的好处

  • 比其他语言更少的代码:使用 Rails,您只需几行代码即可完成很多工作。
  • 广泛的库和 gem :有大量库和 gem 可用于改进 Ruby on Rails 应用程序的功能。
  • 易于学习: Ruby on Rails 代码看起来像简单的英语。
  • 这是一个大社区。
40 多个 Ruby on Rails 面试常见问题及解答 [2023]
40 多个 Ruby on Rails 面试常见问题及解答 [2023]

讨论 Ruby on Rails 的局限性

  • 与Django和Node.js相比,Rails的执行速度和性能较低。
  • 有关某些宝石的文献有限。
  • Ruby on Rails 是任意的,这限制了开发人员的灵活性。
40 多个 Ruby on Rails 面试常见问题及解答 [2023]
40 多个 Ruby on Rails 面试常见问题及解答 [2023]

什么是 Rails 控制器?

这是 Ruby on Rails 应用程序的逻辑核心。 Rails 控制器管理、编排和监控用户、模型和视图之间的所有交互。

Rails 中的活动记录是什么?

Active Record 是一种对象关系映射 (ORM) 技术。这一层 Ruby 代码在代码逻辑和数据库之间运行。编写 Ruby 代码后,运行“迁移”以对数据库进行更改。

什么是 MVC?它是如何工作的?

模型视图控制器 (MVC) 架构模式将业务逻辑与输入和表示逻辑分开。

  • 模型:处理 Rails 应用程序中的所有数据逻辑。
  • 视图:这是用户看到的应用程序部分。
  • 控制器:它就像一个桥梁或代理,允许模型和视图进行通信。

Ruby on Rails 中的动作控制器是什么?

动作控制器是MVC模式中的C。动作控制器接收传入的请求,理解它们并产生适当的输出。

Rails 中的 rake 是什么?

Rake 是 Ruby on Rails 和 Ruby 应用程序的任务运行程序。 Rails 预定义了 Rake 任务,用于运行测试、运行迁移和创建数据库。

Ruby on Rails 中的产量是什么?

Yield 是调用该块的方法中使用的关键字。 Yield 可以传递给块的参数数量没有限制。在这种情况下,块是一个未命名的方法,可以作为附加参数传递给其他方法。

什么是垃圾收集 Ruby on Rails?

垃圾收集是控制计算机程序使用的内存的过程。 Ruby on Rails 跟踪程序使用的对象,而不是程序员使用的对象。因此,开发人员可以专注于逻辑和规则,而不用担心内存分配。

垃圾收集在 Rails 应用程序中的作用是什么?

这会释放计算机上的内存以供其他进程运行。垃圾收集通过删除程序执行后留下的不可访问的对象来实现此目的。

什么是资产管道?

Ruby on Rails 资产管道提供了一个用于缩小和连接 CSS 和 JavaScript 资产的框架。该框架允许您自动将 Rails 应用程序中的所有资产与其他 gem 的资产组合起来。

动态脚手架和静态脚手架的区别

脚手架是生成 Rails 应用程序主要部分的过程。

静态脚手架涉及显式输入命令来生成每个字段所需的数据。要完成静态脚手架,必须执行迁移。

动态脚手架在运行时生成内容和用户界面。此过程可用于在 Rails 应用程序中创建、修改和删除操作。

什么是类库?

类库由 Ruby on Rails 中的域组成,线程编程和数据类型就是此类域的示例。类库允许开发人员创建代码抽象,以便他们可以在应用程序的不同元素中使用相同的逻辑。

解释 Rails 中的多态关联

多态关联是一种活动记录关联。多态性意味着一个对象可以有多种形式。在 Rails 的上下文中,多态关联允许您定义一个可以与其他模型相关并属于其他模型的模型,而无需编写重复的代码。

Ruby 中的字符串插值是什么?

字符串插值添加引用字符串对象内其他值的占位符。使用加法运算符是插值的最简单方法。

考虑以下示例。

 name = "Titus"

puts "Hello " + name

输出应如下所示:

你好,提图斯

什么是对象关系模型 (ORM)?

ORM 是数据库和面向对象程序之间的桥梁。 Rails 中的对象关系指示类何时映射到数据库中的表。

解释 Rails 迁移

迁移允许开发人员轻松更改数据库模式。因此,开发人员可以在受控环境中管理数据库架构的推出和回滚。此方法消除了管理单个 SQL 脚本来定义更改的能力。

解释 Rails 命名约定

  • 类和模块:使用混合大小写,但没有下划线。类和模块名称以大写字母开头。
  • 数据库表:数据库表名称必须是复数且蛇形。
  • 变量:声明变量的字母必须是小写、蛇形,并用下划线分隔。
  • 模型:使用混合大小写指定模型并确保名称是单数。
  • 控制器:控制器名称是复数。

Rails 中的字符串和文本有什么区别?

:string适合存储最多255个字符的短文本。可与姓名、用户名、电子邮件、密码和职位一起使用。

:text适合长描述。对博客文章或商店描述进行评论的完美示例。

 class CreatePosts < ActiveRecord::Migration

   def self.up

      create_table:posts do |t|

         t.string:description

         t.text :content 

      end

   end

描述跨站请求伪造 (CSRF)

跨站点请求伪造 (CSRF) 是一种在线攻击,攻击者会诱骗经过身份验证的用户代表该用户执行特定操作。

Rails 要求开发人员在 ApplicationController 中添加“protect_from_forgery”以避免 CSRF 攻击。应用程序始终需要 CSRF 令牌来对用户进行身份验证。

解释什么是 Rails mixin

Mixin 提供了一种向类添加功能的受控方式。各种 mixin 组成一个类。 Mixins 消除了多重继承的需要。

如何在 Ruby 中使用 load 和 require?

require()用于导入库/gems

load()用于执行一段代码

Ruby on Rails 中的回调和观察者有什么区别

当方法与对象的生命周期不直接相关时,将使用Rails 观察器。它的生命周期很大,可以随时安装或拆卸。

回调只能在对象生命周期内的特定实例上调用。此类实例的示例包括更新、创建和验证。回调仅在短时间内有效。

Ruby的装备和装备是什么?

夹具是指组织正在测试的数据的方式。这些可以在以 .yml 扩展名结尾的文件中创建。

线束是用于运行 Rails 测试的环境或测试运行器。将设备放在安全带上。

Extend 和 include 和有什么不一样?

包含”将实例方法添加到类中。因此,可以通过类方法访问代码。

扩展”将模块中定义的实例方法添加到扩展类中。

Ruby 中的 gem 和插件相同吗?

Gems是您需要安装的打包 Ruby 应用程序。它们是通用的并且在功能上独立于 Rails。

Ruby on Rails插件与 Rails 应用程序一起部署。这些修改或添加到 Rails 的核心功能。

什么是铁路观察员?

Rails 观察者提供了一种机制,让一个对象在其状态发生变化时通知其他对象。这可以应用于一对多关系,例如当一个对象发生更改时,所有依赖对象都会收到通知并自动更改。

使用哪些命令来创建迁移?

 bin/rails db:migrate 

展示如何在 Ruby 中定义类、实例和全局变量。

  • 类变量:可以在类中的任何位置使用。该阶层的后代也可以访问它们。以@@开头。
  • 实例变量:在特定于所创建对象的实例的局部范围内使用。它们可能因对象而异。以@开头。
  • 全局变量:可以从程序中的任何位置访问。以 $ 开头。

Ruby demo目录下的rakefile起什么作用?

Rakefile 对于测试和打包 Rails 代码非常有用。该文件定义运行测试或演示应用程序功能的任务。

Rails 中的扫地机是什么?

清理器充当缓存的终结者。它们充当一半过滤器和一半观察者并实现双重角色回调。 ‘expire_cache’查找并清除所有需要过期的缓存片段。

什么是过滤器?

这些是执行控制器操作的“之前”或“之后”方法。只要在 ApplicationController 中配置了这些方法,这些方法就会被继承并在您的应用收到的每个请求上运行。

Rails 中重定向和渲染的区别

渲染:用于渲染模板并根据请求将其发送给客户端。该模板生成一个在浏览器中显示的页面。

重定向:将新的 HTTP 请求发送到不同的 URL。此操作将客户端重定向到另一个控制器或操作。如果您想要更改客户端在其浏览器中显示的 URL,此方法非常有用。

区分 super() 调用和 super 调用

  • Super :向当前对象的父对象发送消息并调用被调用方法的所有参数。
  • super():不向父级发送任何参数。

过程和块有什么区别?

  • 区块: A do/end 语句或用花括号括起来的一段代码。每次调用该方法时都会创建并执行它们。
  • Procs:绑定到一组局部变量的代码块。该代码可以在不同的上下文中调用,并且仍然可以访问变量。

put 和 print 语句有什么区别?

如果您想在屏幕上打印一些内容,请使用put 。例如,

 puts “Hello World!!!”

打印你好世界。在屏幕上

如果您不想向控制台添加新行,请使用 print。

 print “Hello World!!!” 

打印了 Hello World!!!,但没有在控制台中添加新行。

什么是动态取景器?

动态查找器允许开发人员在数据库中搜索记录,而无需使用原始 SQL 查询。它们使用find_by_关键字,后跟要搜索的属性。

解释 Rail 如何实现 Ajax

  • 启动表单提交和按钮单击等触发器。
  • JavaScript 方法将触发数据发送到服务器的处理程序。
  • 服务器端处理程序处理数据并将 HTML 发送到 Web 客户端。
  • 客户端 JavaScript 处理程序接收 HTML 内容并更新当前页面。

解释 Dig、Float 和 Max

  • Dig方法允许您从嵌套哈希或数组中提取值。
  • Float是一种 Ruby 数据类型,表示具有浮点精度的实数。
  • Max是一种可与数组和哈希一起使用的方法。返回项目/值集合的最大值。
 array = [2, 9, 4, 7, 3]

maximum = array.max

控制台打印 9,即最大数字。

结论

以上是您在下一次 Ruby on Rails 会议上可能会遇到的一些问题。如果您是一般软件工程师,请查看这些 Node.js 面试问题。在参加下一次面试之前,请务必了解 Rails 工程师的工作内容。