`

ruby面试

阅读更多
Block、Proc 与 Lambda的区别:  https://www.jianshu.com/p/8a3b3e22e013

alias 与 alias_method 的区别:   http://lazybios.com/2015/11/alias-vs-aliasmethod/

yield self 的用法, 写个例子:  https://www.jianshu.com/p/d13b2b26b4d7

Scope实现原理:  https://narutohinata.github.io/2017/03/05/ActiveRecord%E9%87%8C%E7%9A%84Scope%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/

require、load、autoload、require_dependency的区别及其使用场景:
require: 引用文件,但是只能引用一次。举个例子,irb中引用b文件,b文件常量Age为35,第一次执行Age为35,然后我们修改b文件常量Age为36,再次引用执行还是35,而load就会是36。
load: 和require类似,但是支持多次引用,如果引用文件的内容变动频繁就用load,这里举个例子,有两个文件,分别是a和b,a引用b,b引用a,如果是使用require执行的时候就不会报错,如果是load执行的时候就会报错。此外a文件有常量Age,引用的b文件也有的话,会报警告信息,这个时候load(b.rb, true)就可以避免常量被污染。
autoload: 只有引用文件的类或者module被使用时才会加载这个文件
require_dependency: 开发环境下如果文件有改动,会自动加载该文件

Object、 Module、 Class、Kernel  解释及其关系:
object是所有类的基类,module是模块除了不能new一个实例外基本上和class一样,他们的关系是 class > module > object
Kernel 是一个module,里面包含了很多方法,而Object包含了这个模块,所以所有的Object的子类都可以使用Kernel的方法,例如nil?  puts等。

ruby单例模式如何实现:

require "singleton"
class User
  include Singleton
end
User.instance


singleton method(单件方法)、singleton class(单件类) 解释一下:
1) singleton method是指只属于某个对象的方法,其他对象不可以使用,例如先创建一个对象,然后为该对象追加一个方法。
class User
 
end
user = User.new

class << user
  def username
    "zhangsan"
  end
end
或者
def user.username
  def username
     "zhangsan"
  end
end
puts user.singleton_methods
这里的username方法就是只属于user这个实例的方法

注意: 类方法定义方式如下两种,看起来是不是和singleton method一样,其实类方法的本质就是类的singleton method

class << self
   def username
   end
end

def User.username
end

2)singleton class(单件类): singleton method不属于class,而是属于singleton class中也就是 如下:

class << obj
  def ..
  end
end

块解释以及和函数的区别:
块是闭包,通过大括号或者do..end实现,本身也起到类似函数的作用,相对于函数有如下优势:
1)容错设计,如hash={}; hash.fetch('name'){"wo"}
2) DSL语言设计

如何调用私有方法:
send可以调用私有方法
分享到:
评论

相关推荐

    ruby 面试题

    比较齐全的面试的ruby面试题,经过本人精心收集,此类题可以帮助你快速找到好的工作。

    Ruby面试题和答案(2024年收集更新)

    ### Ruby编程语言简介 #### 1. Ruby编程语言概述 Ruby是一种动态的、反射性的、通用的、开源的编程语言,其设计初衷在于提供一种既简单又高效的编程体验。Ruby结合了Perl、Smalltalk、Eiffel、Ada以及Lisp等语言的...

    Ruby-流利说面试题使用任意ruby框架实现一个p2p交易系统

    在Ruby编程语言中,设计和实现一个P2P(peer-to-peer)交易系统是一项具有挑战性的任务,尤其在面试环境中。P2P交易系统的核心在于它允许用户直接互相交易,无需中间人的介入,如银行或其他金融机构。下面我们将深入...

    java初级开发面试笔试题-ruby_interview:ruby面试的一些问题

    java初级开发者面试笔试题ruby_interview 最初发表于 2008 年 6 月 在招聘 Ruby on Rails 程序员时,一开始要知道面试中要问的正确问题对我来说是一个真正的挑战。 在 30 分钟或更短的时间内,如果不查看候选人之前...

    Ruby专业面试试题Ruby专业面试试题Ruby专业面试试题

    Ruby专业面试试题Ruby专业面试试题Ruby专业面试试题

    Ruby常见面试题.pdf

    ### Ruby常见面试题详解 #### 1. 什么是Ruby?简要介绍Ruby的特点和主要用途。 **Ruby**是一种面向对象的、动态类型的解释性脚本语言。它由日本程序员松本行弘(Matz)于1995年设计并发布。Ruby的设计理念在于简洁...

    Ruby On Rails 面试系列七,一个面试练习题

    在Ruby on Rails的世界里,面试通常会涉及到对框架核心概念的理解、实践经验以及代码能力的考察。这个面试练习题可能是为了测试应聘者对于Rails应用的构建、自动化任务管理、测试驱动开发(TDD)以及文件组织结构的...

    Ruby 笔试题目文档 学习 面试使用

    Ruby 笔试题目文档 学习 面试使用

    Ruby编程语言面试题库和答案(含语法代码)

    Ruby编程语言面试题库和答案(含语法代码)

    java初级开发面试笔试题-ruby-job:Ruby工作

    java初级开发者面试笔试题Ruby工作 在招聘 Ruby on Rails 程序员时,一开始要知道面试中要问的正确问题对我来说是一个真正的挑战。 在 30 分钟或更短的时间内,如果不查看候选人之前编写的代码,很难全面了解候选人...

    程序员面试刷题的书哪个好-Ruby-Fundamentals:用Ruby编写的计算机科学基础

    程序员面试刷题的书哪个好Ruby的基础知识 这个存储库是我在 Ruby 中遇到并适应使用的计算机科学中所有累积学术主题的集合。 在弄清楚如何写出你的第一个“Fizzbuzz”之后,你最终走了多远,这很有趣。 面试挑战 破解...

    Interview-Garden:Ruby on Rails 技术面试社交平台

    概括 面试花园是一个准备IT技术面试的社交...后端:Ruby on Rails 前端:JavaScript、jQuery/AJAX、HTML5 和 CSS3 特征 创建了一个列出所有问题的问题索引页面。 创建了一个问题显示页面,其中列出了问题和所有相关的

    MySQL面试题(含答案).pdf

    - 提供多种语言的驱动,如PHP、JDBC、ODBC、Python、Perl、Ruby等。 16. TIMESTAMP的UPDATE CURRENT_TIMESTAMP: - 当表中的其他字段更改时,TIMESTAMP列自动更新为当前时间。 17. 主键与候选键的区别: - 主键...

    selenium面试笔试题

    Selenium支持多种编程语言,包括Python、Java、Ruby、C#等,这一点在描述中得到了体现。 描述中提到的从网络整理的资料,显示了Selenium的实践者和面试者需要准备的一些常见问题和概念。Selenium的WebDriver是面试...

    百度质量部测试开发工程师面试题整理

    2. Ruby-Watir:另一个基于Ruby的自动化测试工具,用于测试Web应用。 3. QTP:一种自动化测试工具,支持功能测试和回归测试。 4. LoadRunner:性能测试工具,用于测试软件在高负载下的性能。 以上知识点梳理涵盖了...

    面试专题-面试人员必看-MySQL专题.pdf

    MySQL提供多种驱动程序,例如PHP驱动程序、JDBC驱动程序、ODBC驱动程序、C语言封装器、Python驱动程序、Perl驱动程序、Ruby驱动程序、.NET连接器等。 16. TIMESTAMP使用: TIMESTAMP列可以在创建表时设置为CURRENT_...

    2024年java面试题-数据库MySQL面试题第一部分

    - MySQL 支持多种驱动程序,包括 PHP、JDBC、ODBC、Python、Perl、Ruby 等。 ### 16. TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上的作用 - TIMESTAMP 列最初被初始化为零。 - 每次表中的其他字段发生更改时...

    Leetcode Top100题目和答案(C#完整版 面试必备).pdf

    **各大知名公司面试真题:**对于求职者在这上面训练更具有针对性,目前国内一些公司面试时直接从在这上面出题。 **大中小企业都在使用:**常常会直接或者间接使用力扣(LeetCode) 的题目资源,依然慢慢成为考核...

    精选常见mysql五十五道面试题目

    15. MySQL驱动程序允许不同编程语言与MySQL交互,如PHP、JDBC、ODBC、Python、Perl、Ruby等。 16. TIMESTAMP在UPDATE CURRENT_TIMESTAMP上下文中会在表中其他字段改变时自动更新为当前时间。 17. 主键是唯一标识表...

    ctci_ruby:破解 Ruby 中的代码面试解决方案

    ###Introduction Ruby 对书中问题的解决方案。 包括源代码和 RSpec 测试 ###如何运行测试您可以通过在源代码的根目录中简单地键入rake来运行测试,在此之前,您应该运行bundle install来安装所需的 gem,有关详细...

Global site tag (gtag.js) - Google Analytics