中关村村草 发表于 2011-04-20 18:15

磕磕碰碰,勉强过关

转:dtzq01

磕磕碰碰,勉强过关



今天客户过来,面试了一下,技术上的问题居然基本都没有答上,自己很不满意啊。

下面是提的一些问题:
TCP/IP的七层网络模型是什么?
由于我之前提到了我看过TCP/IP协议,他于是问了下,哪知道我居然忘了,我说:“从下往上说,有物理层,链路层,网络层,传输层,会话层,应用层。少了一层……其实我比较熟悉的是五层模型,哎,失误啊!

正确的七层模型是:
物理层,链路层,网络层,传输层,会话层,表示层,应用层。

Module你知道吧,应该怎么使用它呢?
有两种使用方法,一是定义在类内部的,二是通过外部引用使用(extend)。我忘记内部的类怎么使用它……
参考:
1. ruby只是简单的产生一个指向模块的引用,用include可以使用,但是如果模块如果在另外的文件,需要先使用require将文件加载进来。
2. extend的使用方法也和include类似,不过一个是内部,一个是外部。具体的见例子:

Ruby代码module A
def test
    puts 1
end
end
class B
#在定义类的使用mixin模块
include A
end
b = B.new
b.test

c = String.new
c.extend(A)
#把模块当中的实例方法添加到c当中
c.test
Duck Typing能解释下么?
这个我在programming ruby里面看到过,记得不太清楚了。就是如果它像鸭子一样呱呱的叫,我们就把它当鸭子一样的处理。然后让我举个例子,后面我就尴尬了
参考:
Duck Typing只需要记住一件事,对象的类型只根据它能做什么而不是它的类来确定的。
举个例子,如果要把歌曲信息添加到一个字符串里面去,通常会这样写:

Ruby代码def append_song(result, song)
    if !result.kind_of?(String)
      fail TypeError.new("String expected")
    end
    if !song.king_of?(Song)
      fial TypeError.new("Song expected")
    end
   
    result << song.title << "-" << song.artist
end如果使用Duck Typing来编写的话:

Ruby代码def append_song(result, song)
result << song.title << "-" << song.artist
end
我们忽略对象的类,以对象的能力(是否支持<<)来判断是不是duck,如果是,一切都可以正常运行,否则的话,也会抛出异常。省略检查类型会让代码变得非常灵活。

2gua 发表于 2011-04-20 20:30

村艹的这些个内容,都在哪找的?自己翻译的吗?

2gua 发表于 2011-04-20 20:30

哦,看到转载字样了。

bugbugbug3 发表于 2011-04-21 11:09

基本上都是从javaeye上转来的。

中关村村草 发表于 2011-04-21 15:32

基本上都是从javaeye上转来的。
bugbugbug3 发表于 2011-04-21 11:09 http://bbs.chinaunix.net/images/common/back.gif


    各个网站都有,其实找的很辛苦,虽然不是原创,但还是希望能给支持!
页: [1]
查看完整版本: 磕磕碰碰,勉强过关