上海python14期第二次阶段性考试

上海python14期第二次阶段考

1 介绍

满分80分

 

考试范围:

  1. 基础题
  2. 机试题

考试时间:

    周日:

上午8:30点-12:00点

下午2:00点-6:00点

 

2 基础题(60分)

1.写代码是要避免循环导入,什么是循环导入?

答:a导入了b模块,b又导入了a模块

用的时候可以在局部导入,不在全局中使用,避免循环导入

 

2.模块的搜索顺序

答:   1、使用纯python代码编写的Py文件

2、包含一系列模块的名

3、使用C编写并链接到python解释器中的内置模块

4、使用C或C++编译的扩展模块

 

3.以下代码什么时候使用

 

```python

if __name__ ==  "__main__":

       print("test")

```

答:运行文件时用

 

 

 

4.什么是面向过程编程思想?

       答:解决问题的步骤,即先干什么再干什么,基于面向过程开发程序就好比在设计一条流水线,是一种机械式的思维方式。

 

 

      

5.有如下变量 请使用hashlib 为其加密 并 加盐

答:import hashlib

       Str = ‘hello word’

       Md5 = hashlib.md5()

       Md5.update(password.encode(‘utf-8’))

       Salt = ‘一二三四五‘

       Md5.update(salt.encode(‘utf-8))

 

      

 

6.判断一个对象是否属于str类型,判断一个类是否是另外一个类的子类?

答:用__dict__

 

7.定义一个老师类,定制打印对象的格式为‘<name:C_DSB age:18 sex:male>’

class Teacher:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
    def __call__(self, *args, **kwargs):
        print('<name:%s,age:%s,sex:%s>'%(self.name,self.age,self.sex))

teacher = Teacher('egon',18,'mela')
teacher()

 

8.定义一个自己的open类,控制文件的读或写,在对象被删除时自动回收系统资源

答:

 

9.什么是反射?反射的4个方法分别是什么?分别的作用是什么?

答:在程序运行过程中可以’动态‘获取对象信息

              四种方法:hasatter 判断有无属性

                                    getattr   得到获取属性

                                     setattr    修改

                                      delattr  删除

                           

                           

 

10.property的作用是什么,简述内部实现原理

答:伪装成对象的数据属性,对象在访问该属性时会触发功能执行,保证了属性访问的一致性。

 

11.__str__的作用是什么?

答:在打印对象时会自动触发,然后将返回值(必须是字符串类型)当做本次打印的结果。

 

 

12.学生类与,教师类同时拥有,姓名,性别,年龄三个属性,老师类比学生类多一个工资属性,请编写代码以减少重复代码!

答:class Base:    #定义一个父类,下面继承父类

             def __init__(self,name,age,sex):

                     self.name = name

                     self.age = age

                     self.sex = sex

       class Student(Base):

              pass

       class Teacher(Base):

              def __init__(self,salary):

                     self.salary = salary

 

 

13.封装就等于隐藏这种说法是否正确,为什么?

答:仅仅只是一种变形操作,在类外部无法直接访问,但知道了类名和属性就可以拼出名字访问了!

 

14.类中的 __getattr__ 方法什么时候被执行?

答:获取属性时运行

 

15.什么是抽象类?

答:不能正常实例化

 

16.OSI七层网路协议分别是哪些 ?

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

 

17.以太协议,IP协议,TCP/UDP协议,分别工作在哪些层

答:IP工作在网络层,TCP/UDP工作在传输层

 

18.端口号用于标识什么?

答:标识全世界范围内独一无二的一个基于肉络通信的应用程序

 

 

19.简述三次握手与四次挥手的经历

答:三次握手:第一次:客户端发请求给服务端,第二次:服务端听到请求,然后发个确认给客户端,第三次,客户端确认传输。

四次挥手:第一次:客户端请求断开连接,第二次:服务端确认请求并准备断开连接,第三次:服务端关闭连接并通知客户端,第四次,客户端确认关闭。

20.什么是面向对象编程思想?

答:核心是‘整合‘二字,就是把数据与功能整合到一起的产物。

21.什么是面向对象三大特性?分别的作用是什么?
答:封装:把数据与功能都整合到一起

       继承:是一种创建新类的方式,新建的类可以继承一个或多个父类

       多态:指的是一类事物有多种形态


22.__getattr__在什么时候触发?

答:调用时触发

23.__getattrubite__在什么时候触发?
答:
24.__call__在什么时候触发?

答:如果想让一个对象可以加括号调用,需要在该对象类中添加__call__方法!

25.什么是元类?

答:就是用来实例化产生类的类

26.如何用元类控制类的创建,请写代码?

答:class People;

def __init__(self,name,age):

self.name = name

self.age = age

def say(self):

print(‘%s;%s’%(self.name,self.name))

print(People.__dict__)

obj=调用类()

obj=People(‘egon’,18)

print(type(obj))


 

27.对象的绑定方法、类的绑定方法与静态方法的区别是什么?

答:@classmethod后该函数就绑定到了类,绑定到类的方法就是专门给类用的,对象也可以调用,只不过自动传入的第一个参数仍然是类

@staticmdthod 为非绑定方法,也称为静态方法,是一个普通函数,因而没有自己传值那么一说

28.对象的属性查找顺序是什么?

       答:对象-à类—>父类

 

29.什么是新式类?什么是经典类?

答:经典类是:深度优先

新式类是:广度优先

       30.Python面向对象中的多继承的继承关系如何查找?

答:1、子类会先于父类被栓查

2、多个父类会根据它们在列表中的顺序被检查

3、如果对下一个类存在两个合法的选择,选择第一个父类

3机试题(60分)

- 选课系统
        1、管理员功能

-  登录(2分)

-  注册(2分)

- 创建学校(5分)

- 创建课程(5分)

- 创建老师(5分)

 

2、学生功能
        -  登录(2分)

-  注册(2分)

- 选择学校(5分)

- 选择课程(5分)

- 查看分数(5分)

 

3、老师功能

-  登录(2分)

-  查看教授课程(5分)

-  选择教授课程(5分)

- 查看课程下学生(5分)

- 修改分数(5分)

 

 

 

 

原文地址:https://www.cnblogs.com/acnjanna2019/p/12732107.html