ruby面试_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > ruby面试

ruby面试

 2020/5/10 10:29:29  zhangcaiyanbeyond  程序员俱乐部  我要评论(0)
  • 摘要:Block、Proc与Lambda的区别:https://www.jianshu.com/p/8a3b3e22e013alias与alias_method的区别:http://lazybios.com/2015/11/alias-vs-aliasmethod/yieldself的用法,写个例子:https://www.jianshu.com/p/d13b2b26b4d7Scope实现原理:https://narutohinata.github
  • 标签:面试 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:  引用文件,但是只能引用一次
load: 和require类似,但是支持多次引用,如果引用文件的内容变动频繁就用load
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可以调用私有方法
发表评论
用户名: 匿名