前天,接到了该公司的电话。昨天就匆匆赶到了该公司参的面试。面试完之后,觉得自己在机器学习领域以及知识面和眼界方面还有很多需要提升的部分。

主要面试的过程中问到了一部分问题:

1.python中的字典的使用(两个dict如何相加)

dictionary: 字典(即C++标准库的map)  dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'} ,每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。 键是唯一的,字典只认最后一个赋的键值。

2.网络的七层结构是什么?

3.python中面向对象的三大特征:

抽象是隐藏多余细节的艺术。在面向对象的概念中,抽象的直接表现形式通常为类。Python基本上提供了面向对象编程语言的所有元素,如果你已经至少掌握了一门面向对象语言,那么利用Python进行面向对象程序设计将会相当容易。

(1)封装

面向对象程序设计中的术语对象(Object)基本上可以看做数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。传统意义上的“程序=数据结构+算法”被封装”掩盖“并简化为“程序=对象+消息”。对象是类的实例,类的抽象则需要经过封装。封装可以让调用者不用关心对象是如何构建的而直接进行使用。

一个简单的Python类封装如下:

_metaclass_=type # 确定使用新式类
class Animal:def __init__(self): #构造方法 一个对象创建后会立即调用此方法self.Name="Doraemon"print self.Namedef accessibleMethod(self): #绑定方法 对外公开print "I have a self! current name is:"print self.Nameprint "the secret message is:"self.__inaccessible()def __inaccessible(self): #私有方法 对外不公开 以双下划线开头print "U cannot see me..."@staticmethoddef staticMethod():#self.accessibleMethod() #在静态方法中无法直接调用实例方法 直接抛出异常print "this is a static method"def setName(self,name): #访问器函数self.Name=namedef getName(self): #访问器函数return self.Namename=property(getName,setName) #属性 可读可写
上面简单的示例代码可以看出,Python中的类包含了一般面向对象编程语言的主要元素,比如构造方法、绑定方法、静态方法、属性等,如果深入下去,还可以发现Python中内置了很多面向对象的“高级”主题,比如迭代器、反射、特性等等,提供了封装的直接构造要素。

(2)继承

2.1类继承

继承给人的直接感觉是这是一种复用代码的行为。继承可以理解为它是以普通的类为基础建立专门的类对象,子类和它继承的父类是IS-A的关系。一个简单而不失经典的示例如下:

_metaclass_=type # 确定使用新式类
class Animal:def __init__(self): self.Name="Animal"def move(self,meters):print "%s moved %sm." %(self.Name,meters) class Cat(Animal): #Cat是Animal的子类def __init__(self):  #重写超类的构造方法self.Name="Garfield"##     def move(self,meters): #重写超类的绑定方法
##        print "Garfield never moves more than 1m."class RobotCat(Animal):def __init__(self):  #重写超类的构造方法self.Name="Doraemon"##     def move(self,meters): #重写超类的绑定方法
##        print "Doraemon is flying."obj=Animal()
obj.move(10) #输出:Animal moved 10m.cat=Cat()
cat.move(1) #输出:Garfield moved 1m.robot=RobotCat()
robot.move(1000) #输出:Doraemon moved 1000m.

一个显而易见的特点是,Python的面向对象的继承特征是基于类(class)的,比javascript基于原型(prototype)的继承更容易组织和编写代码,也更容易让人接受和理解。

ps:最近几天Anders大神搞出来的TypeScript横空出世,看它的语言规范里继承也是基于类的:

class Animal {constructor(public name) { }move(meters) {alert(this.name + " moved " + meters + "m.");}
}class Snake extends Animal {constructor(name) { super(name); }move() {alert("Slithering...");super.move(5);}
}class Horse extends Animal {constructor(name) { super(name); }move() {alert("Galloping...");super.move(45);}
}var sam = new Snake("Sammy the Python")
var tom: Animal = new Horse("Tommy the Palomino")sam.move()
tom.move(34)

感觉基于类的继承的语言好像在实现OO的可读性和编程体验上都不太差,据传说javascript是码农最想喷也是喷过最多f**k的语言。

2.2多重继承

不同于C#,Python是支持多重类继承的(C#可继承自多个Interface,但最多继承自一个类)。多重继承机制有时很好用,但是它容易让事情变得复杂。一个多重继承的示例如下:

_metaclass_=type # 确定使用新式类
class Animal:def eat(self,food):print "eat %s" %food class Robot:def fly(self,kilometers):print "flyed %skm." %kilometers class RobotCat(Animal,Robot): #继承自多个超类def __init__(self):  self.Name="Doraemon"robot=RobotCat() # 一只可以吃东西的会飞行的叫哆啦A梦的机器猫
print robot.Namerobot.eat("cookies") #从动物继承而来的eatrobot.fly(10000000) #从机器继承而来的fly

如你所看到的那样,多重继承的好处显而易见,我们可以轻而易举地通过类似“组合”的方式复用代码构造一个类型。

有个需要注意的地方,即如果一个方法从多个超类继承,那么务必要小心继承的超类(或者基类)的顺序:

_metaclass_=type # 确定使用新式类
class Animal:def eat(self,food):print "eat %s" %fooddef move(self,kilometers): #动物的move方法passclass Robot:def move(self,kilometers): #机器的move方法print "flyed %skm." %kilometers class RobotCat(Animal,Robot): #继承自多个超类 如方法名称相同,注意继承的顺序
#class RobotCat(Robot,Animal): def __init__(self):  self.Name="Doraemon"robot=RobotCat() # 一只可以吃东西的会飞行的叫哆啦A梦的机器猫
print robot.Namerobot.eat("cookies") #从动物继承而来的eatrobot.move(10000000) #本来是要从机器继承move方法,但是因为继承的顺序,这个方法直接继承自动物而pass掉

我们为动物和机器各实现一个相同名称的move方法,但是输出因为继承的顺序而有所不同,Python在查找给定方法或者特性时访问超类的顺序被称为MRO(Method Resolution Order,方法判定顺序)。

(3)多态

多态意味着可以对不同的对象使用同样的操作,但它们可能会以多种形态呈现出结果。在Python中,任何不知道对象到底是什么类型,但又需要对象做点什么的时候,都会用到多态。

3.1方法多态

_metaclass_=type # 确定使用新式类
class calculator:def count(self,args):return 1calc=calculator() #自定义类型from random import choice
obj=choice(['hello,world',[1,2,3],calc]) #obj是随机返回的 类型不确定
#print type(obj)
print obj.count('a') #方法多态

对于一个临时对象obj,它通过Python的随机函数取出来,不知道具体类型(是字符串、元组还是自定义类型),都可以调用count方法进行计算,至于count由谁(哪种类型)去做怎么去实现我们并不关心。

有一种称为”鸭子类型(duck typing)“的东西,讲的也是多态:

_metaclass_=type # 确定使用新式类
class Duck:def quack(self): print "Quaaaaaack!"def feathers(self): print "The duck has white and gray feathers."class Person:def quack(self):print "The person imitates a duck."def feathers(self): print "The person takes a feather from the ground and shows it."def in_the_forest(duck):duck.quack()duck.feathers()def game():donald = Duck()john = Person()in_the_forest(donald)in_the_forest(john)game()

就in_the_forest函数而言,参数对象是一个鸭子类型,它实现了方法多态。但是实际上我们知道,从严格的抽象来讲,Person类型和Duck完全风马牛不相及。

3.2运算符的多态

def add(x,y):return x+yprint add(1,2) #输出3print add("hello,","world") #输出hello,worldprint add(1,"abc") #抛出异常 TypeError: unsupported operand type(s) for +: 'int' and 'str'

上例中,显而易见,Python的加法运算符是”多态“的,理论上,我们实现的add方法支持任意支持加法的对象,但是我们不用关心两个参数x和y具体是什么类型。

一两个示例代码当然不能从根本上说明多态。普遍认为面向对象最有价值最被低估的特征其实是多态。我们所理解的多态的实现和子类的虚函数地址绑定有关系,多态的效果其实和函数地址运行时动态绑定有关。在C#中实现多态的方式通常有重写和重载两种,从上面两段代码,我们其实可以分析得出Python中实现多态也可以变相理解为重写和重载。在Python中很多内置函数和运算符都是多态的。

4.电脑上虚拟机的上网如何进行配置

http://jingyan.baidu.com/article/17bd8e52107efe85ab2bb8f7.html

安装好虚拟机后,选择要设置的虚拟机,然后点击“编辑虚拟机设置”,打开虚拟机设置对话框;在打开的编辑窗口中,选择硬件选项中的“网络适配器”,选择网络设备中的“桥接”,点击确定完成设置;登录虚拟机后,点击“本地连接”中的“属性”按钮,在打开的属性对话框中找到“TCP/IP”协议,双击后,设置固定的IP。确定后即可上网。

5.简单解释下SDN

软件定义网络能够从路由器和交换机中的控制平面分离出数据平面,这个控制平面原本是专有的,只有开发它们的供应商知道,而在SDN中,控制平面将是开放的,并且受到集中控制,同时将命令和逻辑发送回硬件(路由器或交换机)的数据平面。这提供了整个网络的视图,并且提供了集中更改的能力,而不需要在每个路由器或交换机上分别进行以设备为中心的配置更改。通过开放协议(例如OpenFlow标准)管理控制平面的能力,允许对网络或设备做出精确的更改,这将帮助增加网络的速度和安全性。

http://network.51cto.com/art/201210/361352.htm

6.代码的管理git or SVN

7.Mysql的分表技术

http://blog.csdn.net/jim_cainiaoxiaolang/article/details/51803927

某openstack公司面试经历相关推荐

  1. 分享我的33家公司面试经历(杭州华数/杭州网通/ 瞬联科技 )转贴

    很久没有写自己原创的个人日记了(之前的大部分都是转载的,呵呵).今天把自己的面试经历写下来,或许对刚毕业的应届生有些帮助.  下面就按公司来说吧:  1. 阿里巴巴  首先来谈谈阿里巴巴,阿里巴巴是我 ...

  2. 【北京】十余家公司面试经历和感受

    1:北京联易互动网络科技有限公司 地点:北京市朝阳区东三环北路丙2号天元港中心A909-911,电话:84417991-656,联系人:姚小姐 ============================ ...

  3. 2019-06-26 某小型支付公司面试经历

    今天去面试一家小型支付公司. 很悲剧,直接被总监pass了. 第一面就是总监面. 他们总监问我对他们公司了解的怎么样. 我说简单看了一下官网,做支付相关的业务. 然后他说我准备不充分.就不想跟我面试了 ...

  4. 某人力资源Saas软件公司面试经历

    一面 自我介绍 主要是写代码,能接受吗? 代码设计,比如类似算法,有遇到过吗? java内存划分 String a= "123"和new String("123" ...

  5. 我经历的IT公司面试及离职感受(转)

    毕业后几年一直待在广州,觉得这是一个比较生活化及务实的城市,其互联网公司和相应的投融资环境都不如北深上活跃,大大小小的面试也有几十个,有点规模的公司应该都面试过了,面试一般会见到主力技术人员,技术主管 ...

  6. 我经历的IT公司面试及离职感受

    毕业后几年一直待在广州,觉得这是一个比较生活化及务实的城市,其互联网公司和相应的投融资环境都不如北深上活跃,大大小小的面试也有几十个,有点 规模的公司应该都面试过了,面试一般会见到主力技术人员,技术主 ...

  7. 工作6年,我经历的BAT等IT公司面试及离职感受

    毕业后几年一直待在广州,觉得这是一个比较生活化及务实的城市,其互联网公司和相应的投融资环境都不如北深上活跃,大大小小的面试也有几十个,有点规模的公司应该都面试过了,面试一般会见到主力技术人员,技术主管 ...

  8. 简单记录下几家公司的面试经历(Java一年经验)

    一年经验,记录下最近几家公司的面试经历. 1.深圳缇铭科技有限公司 1)先让自我介绍,讲一下最近的项目 根据项目提问,比如: redis你是如何部署的?你的code是直接套用他们的模板去编写,还是自己 ...

  9. 8家公司笔面试经历-百度-联发科-瑞晟

    8家公司笔面试经历-百度-联发科-瑞晟-- 发布时间:2013-10-14 10:03:42 技术类别:资源共享     个人分类:面试   需要确认注册邮箱后才能下载,立即确认我的邮箱 吐槽在前: ...

最新文章

  1. 五种常见的 PHP 设计模式
  2. leetcode_median of two sorted arrays
  3. #!/usr/bin/env python与#!/usr/bin/python
  4. 使用Libxml2解析xml[转]
  5. 连接Linux服务器操作Oracle数据库
  6. Android性能提升之强引用、软引用、弱引用、虚引用使用
  7. android动画素材下载,Android Lottie动画使用
  8. WPF参考书籍及资料推荐(转)
  9. 美军军事通信系统简史
  10. vue项目打包部署到测试服务器(转载)
  11. 由浅入深学习Flash制作高射炮游戏(2)
  12. 网页禁止粘贴的解决方法(以学习通网页为例)
  13. 解决ImportError: /home/douxiao/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
  14. 联想小新310电脑Fn功能键切换
  15. 2d游戏碰撞检测C语言,2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascrip版)...
  16. java wate_Java Items.water_bucket方法代码示例
  17. 面对流氓软件,是逃避还是反击?(连载三、未来的流氓软件)
  18. 三角形边长求高的c语言函数公式,c 求,已知三角形三边边长为abc,利用公式求面积...
  19. 几种常见的编码格式 码表
  20. MATLAB | 如何使用MATLAB绘制雷达图(蜘蛛图)

热门文章

  1. 普罗米修斯 软件_Prometheus普罗米修斯
  2. 关于oracle 安装闪退的一个解决办法
  3. 一台兼容计算机配置价格,完成一台计算机的配置。要求:1、写出配置单,包含品牌、型号和报价 2、写出配置...
  4. android app防被杀策略
  5. U盘 损坏 无法挂载
  6. html5如何制作边框,html5 边框怎么设置
  7. 编译OpenBLAS
  8. FreeModbus从站源码解析(portserial.c)
  9. 技嘉GA-B85-HD3(2.0)加装NVME固态硬盘
  10. 多路选择器,加法器原理及verilog实现