Ruby面试题

Python06

Ruby面试题,第1张

下面是对 Rails Interview Questions 中的

Ruby 部分的解答:

从上面可以看出,其实Proc和lambda都是 Proc 对象。

首先我们来回答第一问:怎么通过某个字段来对对象数组排序?

假设我们有一个对象数组 @users ,我们需要让他对字段 name 排序,则我们可以:

如果是在 ActiveRecord 中,则我们只需:

下面列举我喜欢的几个常用的gems及它的可替代备选方案

首先我们说明一下递归(recursive)和迭代(iterative):

递归 :一个树结构,每个分支都探究到最远,发现无法继续走的时候往回走,每个节点只会访问一次。

迭代 :一个环结构,每次迭代都是一个圈,不会落掉其中的每一步,然后不断循环每个节点都会被循环访问。

由此我们可以看出 ruby 中更加常用的选择是 迭代 ,就像 .each , .times , .map 等都是迭代循环的形式。

ruby之父,松本行弘,日本人

于 2015-03-20

#对于题目的该类具有方法部分,感觉有些歧义,看下如下代码是否合题目要求

class Switch

#可读写属性

attr_accessor :type #交换机类型

attr_accessor :ipAddress #IP地址

attr_accessor :portld #端口号

attr_accessor :boardld #单板

attr_accessor :port #接口

attr_accessor :softwareVersion #软件版本

#初始化属性

def initialize(type="TestSwitch",ipAddress="127.0.0.1",portld=80,boardld="TestBoard",port=1,softwareVersion="V 1.0")

@type=type

@ipAddress=ipAddress

@portld=portld

@boardld=boardld

@port =port 

@softwareVersion=softwareVersion

end

#方法:连接设备

def login(ip)

  @ipAddress=ip

if @ipAddress == "192.168.1.1"

  return true

else

  return false

end

end

#方法:断开连接设备

def unlink(ip)

  if ip == @ipAddress

   puts "断开连接成功"

  else

    return false

  end

end

#方法:下发命令

def send(order)

  raise "Something Wrong" if order == "vlan 55555"  

  rescue => err

  print "指令错误,出错指令为:"

  ensure

  puts order

end

end

#创建交换机类型为S9300的交换机,IP地址为192.168.1.1,端口号为23

mySwitch = Switch.new("S9300","192.168.1.1",23)

#使用“连接设备”方法连接设备

mySwitch.login("192.168.1.2")

#下发指令

mySwitch.send("display device")

mySwitch.send("vlan 55555")

#使用“断开设备连接”方法断开设备连接 

mySwitch.unlink("192.168.1.2")

public static void main(String[] args)

{

int [] num =new int[]{1,2,3,4,5,6,7,8,9,10}

Scanner input = new Scanner(System.in)

int temp=0

System.out.println("请输入你要删除的元素:")

int de=input.nextInt()

for(int i =0i<num.lengthi++)

{

if(num[i]==de)

{

for(int j = ij<num.length-1j++)

{

num[j]=num[j+1]

}

temp=1

break

}

}

if(temp==1)

{

System.out.println("删除此对象后数组值为:")

for(int i = 0i<num.length-1i++)

{

System.out.print(num[i]+"\t")

}

}

else

{

System.out.println("未找到你要删除的对象")

}

}