📜  65个Ruby面试题

📅  最后修改于: 2021-01-08 13:26:23             🧑  作者: Mango

Ruby面试问题

下面列出了一些常见的Ruby或Ruby On Rails面试问题和答案。

1)什么是Ruby编程语言?

Ruby是一种动态,反思,通用的开源编程语言,专注于简单性和生产力。 Ruby具有Perl,闲聊,Eiffel,Ada和Lisp的混合功能。 Ruby旨在创建一种新语言,该语言与命令式语言的功能保持平衡。

有关更多信息:单击此处

2)谁是Ruby的开发人员?

Ruby是由1990年中期在日本的Yukihiro“ martz” Matsumoto设计和开发的。

有关更多信息:单击此处

3)为什么Ruby被称为灵活性语言?

Ruby被称为灵活的语言,因为它有助于其作者更改编程元素。可以删除或重新定义语言的某些特定部分。 Ruby不限制用户。例如,要添加两个数字,Ruby允许使用+号或单词“ plus”。可以使用Ruby的内置类Numeric完成此更改。

4)列出Ruby的一些功能?

Ruby具有许多功能。下面列出了其中一些。

  • 面向对象
  • 灵活
  • 动态打字和鸭子打字
  • 垃圾收集器
  • 关键字参数

有关更多信息:单击此处

5)解释Ruby和Python之间的一些区别。

相似之处:

  • 高级语言
  • 支持多种平台
  • 使用名为irb的交互式提示
  • 服务器端脚本语言

差异:

  • Ruby是完全面向对象的,而Python不是。
  • Ruby支持EclipseIDE,而Python支持多个IDE。
  • Ruby使用Mixins,而Python不使用。
  • Ruby支持块,proc和lambda,而Python不支持。

有关更多信息:单击此处

6)编写命令以在系统中安装Ruby版本。

红宝石-v

有关更多信息:单击此处

7)Ruby中的类库是什么?

Ruby类库包含各种领域,例如线程编程,数据类型和各种领域。以下是具有相关类库的域的列表:

  • 文字处理
  • CGI程式设计
  • 网络编程
  • GUI编程
  • XML编程

8)命名Ruby中使用的一些运算符。

运算符是用于执行不同操作的符号。

  • 一元运算符
  • 空中运算符
  • 按位运算符
  • 逻辑运算符
  • 三元运算符

有关更多信息:单击此处

9)Ruby编程语言中的RubyGems是什么?

RubyGems提供了用于分发红宝石程序和库的标准格式。它充当Ruby编程语言的程序包管理器。

RubyGems现在是Ruby 1.9版标准库的一部分。

10)什么是Ruby变量。

Ruby变量保存可在程序以后使用的数据。每个变量都充当内存并使用不同的名称。

Ruby中有四种类型的变量:

  • 局部变量
  • 类变量
  • 实例变量
  • 全局变量

有关更多信息:单击此处

11)Ruby中的nil和false有什么区别?

nil false
nil cannot be a value. false can be a value.
nil is returned where there is no predicate. in case of a predicate, true or false is returned by a method.
nil is not a boolean data type. false is a boolean data type.
nil is an object of nilclass. false is an object of falseclass.

12)解释Ruby数据类型。

Ruby数据类型表示数据类型,例如文本,字符串,数字等。

Ruby中有不同的数据类型:

  • 号码
  • 弦乐
  • 符号
  • 散列
  • 数组
  • 布尔值

有关更多信息:单击此处

13)Ruby中load和require的用途是什么?

在Ruby中,将load和require都用于将可用代码加载到当前代码中。如果每次更改时或每次有人访问URL时都需要加载代码,则建议使用“加载”。

如果是自动加载,建议使用“ require”。

14)解释Ruby if-else语句。

Ruby if-else语句用于测试条件。 Ruby中有多种类型的语句。

  • 如果声明
  • if-else语句
  • if-else-if(elsif)语句
  • 三元陈述

有关更多信息:单击此处

15)解释Ruby中的case语句。

在Ruby中,我们使用“ case”代替“ switch”,并使用“ when”代替“ case”。 case语句将一个条件与多个条件匹配,就像其他语言中的switch语句一样。

有关更多信息:单击此处

16)解释Ruby中的循环。

Ruby for循环迭代特定范围的数字。因此,如果程序具有固定的迭代次数,则使用for循环。

Ruby for循环将对表达式中的每个元素执行一次。

有关更多信息:单击此处

17)在Ruby中解释while循环。

Ruby while循环用于多次迭代程序。如果迭代次数不固定

对于程序,使用while循环。

有关更多信息:单击此处

18)解释Ruby中的while循环。

Ruby的while循环会多次迭代程序的一部分。在这种情况下,循环将至少执行一次,因为在最后写入条件时执行do。

有关更多信息:单击此处

19)解释直到在Ruby中循环。

Ruby直到循环运行,直到给定条件的值为真。当条件为真时,它将退出循环。它与while循环相反。

有关更多信息:单击此处

20)在Ruby中解释break语句。

Ruby break语句用于终止循环。它主要用于在while循环中打印值直到条件为真的while循环。

有关更多信息:单击此处

21)在Ruby中解释下一条语句。

Ruby next语句用于跳过循环的下一个迭代。一旦执行下一条语句,将不再执行任何迭代。

有关更多信息:单击此处

22)在Ruby中解释重做语句。

Ruby重做语句用于重复循环的当前迭代。在不评估循环条件的情况下执行重做语句。

有关更多信息:单击此处

23)在Ruby中解释重试语句。

Ruby retry语句用于从头开始重复整个循环迭代。

有关更多信息:单击此处

24)您将如何在Ruby中发表评论。

Ruby注释是程序中的不可执行行。他们不参与程序的执行。

单行注释语法:

#This is single line comment.

多行注释语法:

=begin
This
is
multi line
comment
=end

有关更多信息:单击此处

25)解释Ruby对象。

对象是所有Ruby对象的默认根。 Ruby对象继承自BasicObject,该对象允许创建备用对象层次结构。

有关更多信息:单击此处

26)如何创建Ruby对象?

Ruby中的对象是通过调用类的新方法创建的。这是一种独特的方法,并且在Ruby库中预定义。

句法:

objectName=className.new

有关更多信息:单击此处

27)解释Ruby类。

每个Ruby类都是Ruby类的实例。 Ruby中的类是一流的对象。它始终以关键字类开头,后跟类名。

句法:

class ClassName
codes...
end

有关更多信息:单击此处

28)定义Ruby方法。

Ruby方法阻止我们一次又一次地在程序中编写相同的代码。 Ruby方法类似于其他语言中的函数。

有关更多信息:单击此处

29)如何使用Ruby方法。

要使用Ruby方法,我们需要先定义它。它用defend关键字定义。

方法名称应始终以小写字母开头。

句法:

def methodName
code...
end

有关更多信息:单击此处

30)什么是Ruby块。

Ruby代码块在其他编程语言中称为闭包。它由一组代码组成,这些代码始终用大括号括起来或写在do … end之间。

有关更多信息:单击此处

31)用Ruby编写块的方式有几种。

块以两种方式写入:

  • do和end之间的多行
  • 括号之间的内联{}

两者相同并且具有相同的功能。

有关更多信息:单击此处

句法:

block_name{
statement1
statement2
..........
}

有关更多信息:单击此处

32)什么是Ruby中的yield语句。

yield语句用于调用具有值的方法中的块。

有关更多信息:单击此处

33)在Ruby中解释“&”参数(&block)。

&block是一种将对块的引用(而不是局部变量)传递给方法的方法。

在这里,&后面的正楷词只是参考的名称,可以使用任何其他名称代替。

有关更多信息:单击此处

34)解释Ruby模块。

Ruby模块是方法和常量的集合。模块方法可以是实例方法或模块方法。它们与类相似,因为它们包含方法,类定义,常量和其他模块的集合。它们的定义类似于类。无法使用模块创建对象或子类。没有继承的模块层次结构。

模块基本上有两个作用:

  • 它们充当命名空间。它们可以防止名称冲突。
  • 它们允许mixin工具在类之间共享功能。

句法:

module ModuleName
statement1
statement2
...........
end

模块名称应以大写字母开头。

有关更多信息:单击此处

35)在Ruby中解释模块mixins。

Ruby不支持多重继承。模块消除了在Ruby中使用mixin进行多重继承的需要。

一个模块没有实例,因为它不是一个类。但是,模块可以包含在类中。

当您在类中包含模块时,该类将有权访问该模块的方法。

有关更多信息:单击此处

36)解释Ruby字符串。

Ruby字符串对象保存并操纵一个字节的任意序列,通常表示字符。它们是使用String :: new或字面量的。

有关更多信息:单击此处

37)如何在应用程序中访问Ruby字符串元素。

您可以使用方括号[]来访问Ruby字符串元素的不同部分。在方括号内写下索引或字符串。

有关更多信息:单击此处

38)如何在Ruby中编写多行字符串。

用Ruby语言编写多行字符串非常简单。我们将展示三种print多行字符串。

  • 字符串可以用双引号引起来。
  • 使用%字符,字符串包含在/ 字符。
  • 在Heredoc语法中,我们使用<<,而字符串包含在单词STRING中。

有关更多信息:单击此处

39)Ruby中全局变量$的用途是什么?

全局变量在Ruby中声明,您可以在应用程序中的任何位置访问它,因为它在应用程序中具有完整的作用域。全局变量在带$前缀的Ruby中使用。

40)在Ruby中串联字符串是什么。您可以通过多种方式创建串联字符串。

Ruby串联字符串意味着从多个字符串创建一个字符串。你可以加入多个字符串通过连接他们形成一个字符串。

有四种方法可以将Ruby字符串连接为单个字符串:

  • 在字符串之间使用加号。
  • 在字符串之间使用单个空格。
  • 在字符串之间使用<<登录。
  • 在字符串之间使用concat方法。

有关更多信息:单击此处

41)在Ruby中什么是冻结字符串。

在大多数编程语言中,字符串是不可变的。这意味着无法修改现有字符串,只能从中创建新字符串。

在Ruby中,默认情况下字符串不是不可变的。为了使它们不可变,可以使用冻结方法。

有关更多信息:单击此处

42)您可以用几种方式比较Ruby字符串?

Ruby字符串可以与三个运算符进行比较:

  • 使用==运算符:返回true或false
  • 用eql?运算子:传回true或false
  • 使用casecmp方法:如果匹配则返回0,如果不匹配则返回1

有关更多信息:单击此处

43)Ruby中的类库是什么?

Ruby类库包含各种领域,例如线程编程,数据类型和各种领域。以下是具有相关类库的域的列表:

  • 文字处理
  • CGI程式设计
  • 网络编程
  • GUI编程
  • XML编程

44)什么是Ruby数组以及如何创建它们?

Ruby数组是对象的有序集合。它们可以容纳整数,数字,哈希,字符串,符号或任何其他数组之类的对象。

它的索引从0开始。负索引从数组的结尾开始从-1开始。例如,-1表示数组的最后一个元素,0表示数组的第一个元素。

Ruby数组可以通过多种方式创建。

  • 使用字面量构造函数[]
  • 使用新的类方法

有关更多信息:单击此处

45)如何访问Ruby数组元素?有多少种方法用于访问Ruby元素。

可以使用#[]方法访问Ruby数组元素。您可以传递一个或多个参数,甚至可以传递一系列参数。

句法:

#[] method

用于访问Ruby元素的方法:

  • 在方法
  • 切片法
  • 提取方法
  • 第一种和最后一种方法
  • 采取方法
  • 下降法

有关更多信息:单击此处

46)在Ruby中可以以几种方式在数组中添加项目?

Ruby数组元素可以以不同的方式添加。

  • 推或<<
  • 不变
  • 插入

有关更多信息:单击此处

47)在Ruby中可以从数组中删除项目的方式有几种?

Ruby数组元素可以通过不同的方式删除。

  • 流行音乐
  • 转移
  • 删除
  • 优衣库

有关更多信息:单击此处

48)解释Ruby哈希值。

Ruby哈希是唯一键及其值的集合。它们类似于数组,但是数组使用整数作为索引,而哈希使用任何对象类型。它们也称为关联数组,字典或地图。

如果使用不存在的键访问哈希,则该方法将返回nil。

有关更多信息:单击此处

49)如何在Ruby中创建新的时间实例?

可以使用:: new创建新的Time实例。这将使用您当前系统的时间。还可以传递部分时间,例如年,月,日,小时,分钟等。

创建新的时间实例时,您至少需要经过一年。如果仅经过了一年,则时间将默认为该年的1月1日,当前系统时区为00:00:00。

有关更多信息:单击此处

50)解释Ruby范围。定义范围的方法是什么?

Ruby范围代表一组带有开头和结尾的值。可以使用s..es … e字面量或:: new构造它们。

其中包含..的范围从头到尾都包括在内。其中包含…的范围专门运行最终值。

Ruby有多种定义范围的方法。

  • 范围作为序列
  • 条件范围
  • 间隔范围

有关更多信息:单击此处

51)什么是Ruby迭代器?

迭代器是面向对象语言中使用的概念。迭代意味着像循环一样多次执行一件事。

循环方法是最简单的迭代器。它们一个接一个地返回集合中的所有元素。数组和哈希值属于集合类别。

有关更多信息:单击此处

52)Ruby中有多少个迭代器?

Ruby中有以下迭代器:

  • 每个迭代器
  • 时间迭代器
  • 上下迭代器
  • 分步迭代器
  • each_line迭代器

有关更多信息:单击此处

53)在Ruby中为IO控制台命名不同的方法?

IO控制台提供了与控制台进行交互的不同方法。 IO类提供以下基本方法:

  • IO :: console
  • IO#raw#raw!
  • IO#煮熟
  • IO#熟!
  • IO#提取

有关更多信息:单击此处

54)如何在Ruby中打开文件?

可以使用不同的方法来读取,写入或同时使用两种方法来创建Ruby文件。

有两种方法可以在Ruby中打开文件。

  • File.new方法:使用此方法可以创建一个新文件,以进行读取,写入或两者同时进行。
  • File.open方法:使用此方法可以创建一个新的文件对象。该文件对象已分配给文件。

两种方法之间的区别是File.open方法可以与块关联,而File.new方法不能。

句法:

f = File.new("fileName.rb")

要么,

File.open("fileName.rb", "mode") do |f|

有关更多信息:单击此处

55)如何在Ruby中读取文件?

有三种不同的读取文件的方法。

要返回单行,请使用以下语法。

句法:

f.gets
code...

要在当前位置之后返回整个文件,请使用以下语法。

句法:

f.rea
code...

要将文件作为行数组返回,请使用以下语法。

句法:

f.readlines
[code...]

56)解释Ruby中的类库。

Ruby类库包含各种领域,例如线程编程,数据类型和各种领域。它具有不断发展的其他库。以下是具有相关类库的域。

  • 文本处理: File,String,Regexp,用于快速,干净的文本处理。
  • CGI编程:有用于CGI编程支持的支持类库,例如数据库接口,eRuby,Apache的mod_ruby,文本处理类。
  • 网络编程:红宝石提供了各种设计良好的套接字,用于网络编程。
  • GUI编程: Ruby / Tk和Ruby / Gtk是GUI编程的类
  • XML编程: UTF-8文本处理正则表达式引擎使XML编程在ruby中非常方便。

57)Ruby中的sysread方法是什么?

sysread方法还用于读取文件的内容。借助这种方法,您可以以任何方式打开文件。

有关更多信息:单击此处

58)您将如何在Ruby中重命名和删除文件?

Ruby文件使用重命名方法重命名,并使用删除方法删除。

重命名文件,请使用以下语法。

句法:

File.rename("olderName.txt", "newName.txt")

删除文件,请使用以下语法。

句法:

File.delete("filename.txt")

有关更多信息:单击此处

59)如何检查Ruby中是否存在目录?

要检查目录是否存在?使用方法。

句法:

puts Dir.exists? "dirName"

有关更多信息:单击此处

60)解释Ruby异常。

Ruby异常是一个对象,Exception类的实例或该类的后代。当出现问题时,Ruby程序会抛出异常行为。默认情况下,Ruby程序在引发异常时终止。

有关更多信息:单击此处

61)什么是内置的Ruby类异常。

内置的异常子类如下:

  • NoMemoryError
  • ScriptError
  • 安全错误
  • SignalException

有关更多信息:单击此处

62)在Ruby中如何处理异常?

为了处理异常,引发异常的代码包含在begin-end块内。使用救援子句,我们可以声明我们要处理的异常类型。

有关更多信息:单击此处

63)解释在Ruby中使用retry语句?

通常,在救援子句中,捕获异常,并在begin块之后恢复代码。使用retry语句,可以在捕获异常后从头开始恢复救援块代码。

句法:

begin
code....
rescue
# capture exceptions
retry # program will run from the begin block
end

有关更多信息:单击此处

64)用Ruby解释凸起语句?

引发语句用于引发异常。

句法:

raise

要么,

raise "Error Message"

要么,

raise ExceptionType, "Error Message"

要么,

raise ExceptionType, "Error Message" condition

有关更多信息:单击此处

65)解释在Ruby中使用sure语句?

有一个保证子句,保证在代码末尾进行某些处理。无论是否引发异常,sure块始终运行。它被放置在最后一个救援子句之后,并且将在块终止时始终执行。

在任何情况下,无论发生异常,抢救异常还是未捕获的异常终止代码,sure块都将运行。

句法:

begin
code..
#..raise exception
rescue
#.. exception is rescued
ensure
#.. This code will always execute.
end

有关更多信息:单击此处