上海python14期第二次阶段考
1 介绍
满分80分
考试范围:
- 基础题
- 机试题
考试时间:
周日:
上午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分)