ruby 面试题目


ruby 面试题目

找了几个简单的面试题目

题目1. What’s the difference between equal?, eql?, ===, and ==?

http://stackoverflow.com/questions/7156955/whats-the-difference-between-equal-eql-and

题目2. 数组 arr = [22,2,66,-2,55,0] , 请实现快速排序 .

[22,2,66,-2,55,0].sort
 def quicksort(list)
  return [] if list.size == 0
  x, *xs = *list
  less, more = xs.partition{|y| y < x}
  quicksort(less) + [x] + quicksort(more)
 end
 def quicksort(l)
  return [] if (x,*xs=l).empty?
  less, more = xs.partition{|y| y < x}
  quicksort(less) + [x] + quicksort(more)
 end
 def quicksort a
  (pivot = a.pop) ? quicksort(a.select{|i| i <= pivot}) + [pivot] + quicksort(a.select{|i| i > pivot}) : []
 end

题目3. 文件在 /home/root/demo.txt 下, 请写方法读取 demo.txt 内容 . (加分项: 写方法读取指定路径下文件内容)

File.read("/home/root/demo.txt")
def read name
  File.read("#{name}")
end

题目4. 字符串: str = “hello word ruby” , 写出两种方式 截取出 “word” 字符串.

str[6..9]
str[-9..-6]

题目5. names = %w(hello good res start end string me submit), 写找出 names 中以”s”开头的单词, 并把该单词转换成大写的方法.

names.select { |name| name.start_with?('S') }.map(&:upcase)

题目6. 求20以内的平方可被五整除的自然数的和 的方法?

n, num_elements, sum = 1, 0, 0
while num_elements < 100
  if n**2 % 5 == 0
    sum += n
    num_elements += 1
  end
  n += 1
end
sum #=> 25250

题目7.

写出Animal.new.speak , Animal.speak, Dog.speak 和 Dog.new.speak 分别输出什么结果 ? 并说明原因 .

#animal.rb
class Animal
  def speak
    puts "Ou! Ou ....."
  end

  def self.speak
    puts "Quack! Quack... "
  end
end

#dog.rb
class Dog < Animal
  def speak
    puts 'Wang! Wang... '
  end
end