面向对象考试

全栈15期考试题

考试须知:

  • 分值:100分
  • 考试时间:3小时
  • 考试类型:闭卷考试
  • 考试纪律:
    • 教室断网
    • 禁止翻阅笔记
    • 禁止使用Pycharm
    • 禁止互相讨论
    • 禁止拷贝
    • 以上情况,一经发现取消考试成绩并处以留级处理。

考试范围

  • python基础
  • 函数
  • 模块
  • 面向对象

考试题目

  1. 简述解释型和编译型编程语言?(1分)
    解释型:程序执行时代码从上到下边解释边执行,类似于同步翻译。
    编译型:程序先经过编译完成后,生成了相应的字节码或机器码,然后再执行。
  2. 位和字节的关系?(1分)
    1字节=8位
  3. b、B、KB、MB、GB 的关系?(1分)
    8bit = 1bytes
    1024byte =1KB
    1024KB=1MB
    1024MB=1GB
    1024GB= 1TB
  4. 字符串和列表如何相互转换?(2分)
    字符串转列表: list('fku3ksjf')
    列表转字符串: "".join(['xx','x1','x2'])   # 内部需要是字符串
  5. 写代码实现字符串反转,如:v = ‘oldboy’ (2分)
    v[::-1]
    注:其他方式也可以
  6. python递归的最大层数?(1分)
    998 或 1000
  7. 列举 Python2和Python3的区别?(2分)
    py2:unicode、bytes(str)
    py3:  str         、bytes
    等…
  8. 用一行代码实现数值交换: (1分)
           a = 1    
           b = 2
    a,b = b,a
  9. 比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 c = [(1,),(2,),(3,) ] 的区别?(2分)
    a=[1,2,3]
    b=[1,2,3]
    c = [(1,),(2,),(3,)]
  10. 求结果:(3分)
    v = [lambda:x for x in range(10)]
    print( v )            # 一个列表,列表中有10个匿名函数
    print( v[0] )        # 列表中的第一个函数
    print( v[0]() )     # 执行函数,打印:9
  11. re的match和search区别?(1分)
    match()函数只检测RE是不是在string的开始位置匹配,在0位置匹配成功的话才有返回不是的话返回NONE
    search()会扫描整个string查找匹配
  12. 如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ? (1分)
    v = "1,2,3"
    v.split(",")
  13. 13.  msg = '123.33sdhf3424.34fdg323.324',计算字符串中所有数字的和(2分)
    本题结果应为:123.33+3424.34+323.32
    通过正则获取到所有数字,然后数字相加。
  14. 有如下代码,写出调 的顺序以及结果(2分)
    出题有问题,无图,可以直接给分。
  15.  创建一个闭包函数需要满足哪几点?(2分)
    a. 两层函数
    b. 第一层函数返回内层函数的名称
  16. 简述面向对象的三大特性并用代码说明?(3分)
    封装:数据封装到对象;方法封装到类
    继承:多个类中都有的方法提取到父类中
    多态:函数的参数可以是多重形态,如:def func(arg):arg.send()   
  17. 列举面向对象所有成员并用代码表示。(6分)
    变量:实例变量、类变量(字段:字段、静态字段也可以)
    方法:实例方法、静态方法、类方法
    属性:属性
  18. 看代码写结果:【禁止运行,如果报错可认为程序会继续向后执行】(4分)

      打印:
              l  ,即:alex中的l
              报错

  1. 看代码写结果:【禁止运行,如果报错可认为程序会继续向后执行】(4分)
    打印:
             UserInfo,999
             666,Department
  2. 看代码写结果:【禁止运行,如果报错可认为程序会继续向后执行】(3分)
    打印:
             123
             None
  3. 背写你了解的10个特殊方法以及调用方法【附示例】(10分)
    __init__/__call__/__dict__/__enter__/__exit__/
    __getitem__/__setitem__/__delitem__/__add__/__new__ …
    不限以上方法,其他也可以
  4. 列举你了解的5个模块并简述其作用。(5分)
    logging,日志
    hashlib,加密
    re, 正则
    time,时间处理
    json,序列化
  5. 简述:isinstance、issubclass、callable、type 的作用(4分)
    isinstance, 判断对象是否是某个类以及其派生类的对象
    issubclass,判断某各类是否是指定类的派生类。
    callable,判断某个对象是否可以被执行,即:加括号。
    type, 获取对象所属于的类。
  6. 函数和方法如何通过代码区分?(2分)
    MethodType,isinstance(值,MethodType)
    FunctionType,isinstance(值,FunctionType)
  7. 看代码写结果:(3分)
    [33,]
    [33,11,22]
  8. 如何将一个对象变成一个可迭代对象?(2分)
    在类中编写 __iter__ 方法,且该方法要返回迭代器或生成器(生成器是迭代的一种)
  9. 简述反射的作用并列举反射相关的所有方法。(4分)
    反射,用于根据字符串的形式去指定对象中获取其成员。
    getattr/setattr/delattr/hasattr
  10. 看代码写结果:(2)
    wupeqii@xx.com
    wupeiqi@xx.com
  11. 写代码实现一个md5加密的函数。(3分)
    m = hashlib.md5(b’xxxdff’)
    m.update(b’fadfsdf’)
    m.hexdigest()
  12. 接口的作用?(1分)
    约束实现接口的类中必须编写指定方法。
  13. 抽象类加抽象方法 和 接口的区别?(2分)
    抽象类加抽象方法的功能和接口一样,都是约束继承了他的类中必须有指定的方法。
    接口中不能写具体实现,抽象类中可以写公共的方法(提供继承的功能)。
  14. python中应该如何约束派生类中指定的方法并编写示例代码?(3分)
    用异常,如:
    class Base:
            def send(self):
                 raise NotImplementedError()
    class Message(Base):
           def send(self):
                 pass
  15. 如何自定义异常,都需要做哪些?(3分)
    写一个类且需要继承Exception
    主动触发异常使用 raise XXException()
    捕捉异常使用: try … except XXException as e: …
  16. 如何获取异常的堆栈信息?(2分)
    import trance
    try:
           …
    except Exception as e:
             trance.format_exc()
    注意:单独写   trance.format_exc() 也可以。
  17. 模拟cs游戏(10分)
    1. 人物角色分为警察和匪徒两种,定义成两个类
  • 所有的警察的角色都是police
  • 每个警察都有自己独有名字,生命值,武器,性别
  • 每个都可以开枪攻击敌人,切攻击目标不能是police
  • 所有的匪徒的角色都是terrorist
  • 每个匪徒都有自己独有名字,生命值,武器,性别
  • 每个都可以开枪攻击敌人,切攻击目标不能是terrorist
  1. 实例化一个警察,一个匪徒,警察攻击匪徒,匪徒掉血
  2. 提取警察类和匪徒类相似之处定义成一个父类,使用继承的方式减少代码重复

 



posted @ 2018-09-20 18:02  RootEvils  阅读(197)  评论(0)    收藏  举报