Python面试题面向对象

第四章 面向对象

  1. 简述面向对象的三大特性。

答:面向对象的三大特性,封装/继承/多态

  1. 什么是鸭子模型?

答:有多个类,它们没有继承关联关系,但是定义的方法和调用方式相同,这就是鸭子类型.遵守了同样的方式

  1. super的作用?

答:能够自动找到要继承的类,使用super就可以省去自己定义要继承那个类

  1. mro是什么?

答:MRO是一种算法 也是(方法解析顺序)

  1. 什么是c3算法?

答:c3算法是多重继承的一种算法,使用了c3就是生成一个线性序列

  1. 列举面向对象中带双下划线的特殊方法。

答:

  1. 双下划线和单下划线的区别?
答:双下划线是程序中规定的私有的
单下划线是程序员们约定这是一种私有的

 

  1. 实例变量和类变量的区别?
答:实例变量就是将我们设定的变量存储在实例开辟的一块空间中
类变量是将我们设定的变量存储在类开辟的一块空间中,他们的区别就是不是同一块空间

 

  1. 静态方法和类方法区别?

答:

  1. isinstance和type的作用?
答:isinstance是判断某个对象是什么类型
type是查看某个对象是什么类型

 

  1. 有用过with statement(语句)吗?它的好处是什么?
答:用过 with open 它的好处就是操作文件的时候不需要自己手动关闭文件
它使用了python面向对象中上下问管理系统

 

  1. 下列数据结构中,哪一种是不可迭代的
  2.                A.  dict
    B.  object
    C.  set
    D.  str

答:B

  1. 实现一个Singleton单例类, 要求遵循基本语言编程规范(用尽量多的方式)。

 

  1. 请描述with的用法, 如果自己的类需要支持with语句, 应该如何书写?

答:with的用法就是 with一个关键字 后边跟上自己定义的函数,然后as去赋值一个句柄

  1. python中如何判断一个对象是否可调用? 那些对象可以是可调用对象?如何定义一个类, 使其对象本身就是可调用对象?

答:

  1. 请实现一个栈。

答:

  1. 关于Python类的继承不正确的说法是?(多选)
  2.                A.  Python类无法继承
    B.  可以继承, 无法执行父类的构造函数
    C.  可以有多个父类
    D.  只能有一个父类

答:ABD

  1. 实现一个hashtable类, 对外暴露的有add和get方法, 满足以下测试代码

 

答:

  1. 请用两个队列来实现一个栈(给出伪代码即可)

答:

  1. 已知如下链表类, 请实现单链表逆置

 

答:

  1. 类的加载顺序(类中有继承有构造有静态)?
  2. 参考下面代码片段

      请在Context类下添加代码完成该类的实现

  1. 以下代码输出是什么? 请给出答案并解释。

    

 

答:1,1,1
1,2,1
3,1,3

 

  1. 函数del_node(self,data)的功能: 在根节点指针为root的二叉树(又称二叉排序树)上排除数值为K的节点,若删除成功,返回0,否则返回-1, 概述节点的定义类型为

     

  1. 请给出下面代码片段的输出,请简述上面代码需要改进的地方?

 

  1. 请简单解释Python中的static method(静态方法)和class method(类方法),并将以下代码填写完整。

 

  1. 已知一个订单对象(tradeOrder)有如下字段:

               字段英文名

               中文名

               字段类型

               取值

               Id

               主键

               Long

               123456789

               Name

               姓名

               String

               张三

               Items

               商品列表集合

               List<商品>(关联商品)

               查找商品对象,一个订单有两个商品。商品字段任意取值。

               IsMember

               是否是会员

               Boolean

               True

               CouponAmount

               优惠券金额

               Bigdecimal

               Null

               商品对象

               字段英文名称

               中文名

               字段类型

               取值

               Id

               主键

               Long

               987654321

               Name

               商品名称

               String

               手机

               问题:若将订单对象转成JSON格式,请书写出转换后的JSON字符串。

  1. 写代码(栈与队列)

               编程实现一个先进先出的队列类, 能指定初始化时的队列大小, 以及enqueue,dequeue,isempty, isfull四种方法

               使用方法如下

posted @ 2019-11-20 20:09  june_ruby  阅读(44)  评论(0编辑  收藏  举报