python模块化 面向对象_python 面试题汇总---模块&面向对象

模块

2019/8/11-每日10道题!

列举常用的模块。

time json pickle,os sys,random,datetime,pymysql,re ,lxml gevent,threading,urlib,loggin,functools

标准:

如何安装第三方模块?

pip3 install

pycharm 中安装

源码安装

re 的 match 和 search 区别?

match 只匹配字符串开头第一个

search 是全局匹配

什么是正则的贪婪匹配?或 正则匹配中的贪婪模式与非贪婪模式的区别?

以问号结尾就是非贪婪匹配

以星号结尾就是贪婪匹配 ---星号表示 1个或多个 他要结尾 会按多个去匹配--反之问号 0个最多1个 所以他是非贪婪匹配

如何生成一个随机数?

random.randint()

如何使用 python 删除一个文件?

os.remove()

logging 模块的作用?以及应用场景?

日志模块---记录程序报错,和异常及其他信息

json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类 型?

1. 可以处理的数据类型是 string、int、list、tuple、dict、bool、null2. 通过自定义时间序列化转换器3.4. importjson5. from json importJSONEncoder6. from datetime importdatetime7. classComplexEncoder(JSONEncoder):8. defdefault(self, obj):9. ifisinstance(obj, datetime):10. return obj.strftime(‘%Y-%m-%d %H:%M:%S‘)11. else:12. returnsuper(ComplexEncoder,self).default(obj)13. d ={ ‘name‘:‘alex‘,‘data‘:datetime.now()}14. print(json.dumps(d,cls=ComplexEncoder))15. #{"name": "alex", "data": "2018-05-18 19:52:05"}

json 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么 办?

1. print(json.dumps('你好啊',ensure_ascii=False))

写代码实现查看一个目录下的所有文件。

1. importos2. print(os.listdir(r'D:\Python_project\untitled2'))

2019/8/12-每日10道题!

用Python匹配HTMLtag的时候,<.>和<.>有什么区别?

匹配一个或者多个内容---贪婪匹配

匹配0个或者最多一个内容0----非贪婪匹配

如何判断一个邮箱合法

1. \w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}

请写出以字母或下划线开始,以数字结束的正则表达式

^[_a-zA-Z]*\d$

下面那些是Python开发网络应用的框架1 , 8 9 11

1. Django

2. Yii

3. Struts

4. Rails

5. Uliweb

6. CodeIgniter

7. gevent

8. Flask

9. web2py

10. Pylons

11. Tornado

12. Twisted

13. TurboGears

写Python爬虫都用到了那些模块,分别是做什么用的?

bs4 进行页面解析,将str 当成html来操作

re 匹配一个标签和关键字

request 像服务器发送请求

sys.path.append("/root/mods")的作用?

作用是将root/moods/目录添加到自定义模块加载的路径中

列举出Python中比较熟知的爬虫框架

scrapy、selenium

Scrapy

selenium

Crawley

Portia

newpaper

18. 输入某年某日,判断这是这一年的第几天?(可以用Python的内置模块)

1. importdatetime2. d = datetime.datetime(2019,2,1)3. print(d.strftime("%j"))

我的写法 很牛逼------------嘿嘿借鉴博客

import re

import time

n=input('请输入你要查询年月日格式:2018,09,25:')

mat = re.search(r"(\d{4},\d{1,2},\d{1,2})",n)

if mat:

n=mat.group(0)

s=time.strptime(n,"%Y,%m,%d")

nday=time.struct_time(s)

print(nday.tm_yday)

else:

print('格式有误 请重新输入')

1.

19. 使用过Python那些第三方组件?

Django

pymysql

SQLalchemy

bs4

pyecharts

PIL

gevent

jieba

selenium

面向对象

2019/8/13-每日10道题!

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

封装 继承 多态,

什么是鸭子模型?

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

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

super 的作用?

能够自动找到要继承的类,

super() 就是找爹

super().__init__(...) 就是说:"爹,先执行一下你的__init__方法,等你干完了我再来做我的事。"用途就是,你继承一个父类了,原先父类的初始化方法里有很多东西,你又不打算自己重新写一遍,那就叫父类先执行原来的逻辑,再执行后边的。

mro 是什么?

是一种算法,也是方法解析顺序--查看他继承顺序方法

print(f.mro())///f.__mro__(, , , , , , )

什么是 c3 算法?

多重继承的一种算法,使用了c3就是生成一个线性序列继续拿上面说话

当要生成 F 的继承顺序时,C3 算法过程如下--首先将入度为零的节点放入列表中--并将F节点及与F节点有关箭头删除 ,发现有两个 D和E 这时根据左侧原来选择D ,这时又出现两个 零度节点 A 和E 左侧原则,深度原则 选A--然后E 再B 再C

当出现两个入度为零节点===左侧优先

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

内置属性:__dict__类的属性(包含一个字典,由数据类的属性组成)__doc__:类的文档字符串__name__:类名__module__: 类定义所在的模块__bases__:类的所有父类构成元素(包含一个,由所有父类组成一个元祖)-------------------->

__new__ 可以调用其它类的构造方法或者直接返回别的对象

__str__ & __repr__--返回字符串格式

改变对象字符串显示 __str__ ,__repr__-返回字符串样式--在没有str 会使用repr

自定制格式化字符串 __format__

-------------------------

__del__--释放内存

析构方法,当对象在内存中被释放时,自动触发执行

__new__ 单列模式--

new&与init ===本质都是'自动执行'--但区别在于 new 是负责创建对象

而init 是负责对象的初始化

--分析

new 方法只接受cls 作为它第一个参数,而init 第一个参数是self

(NEW 是一个类的方法,init 是对象方法)

因为我们调用new 之前连实例都还没有,因此那时根本没有self 存在

--init 在使用new 创建并返回一个实例之后调用,因此可将返回的实例通过self

传递给它

意图:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)

。 2、避免对资源的多重占用(比如写文件操作)。

缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

使用场景: 1、要求生产唯一序列号。

2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。

3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。

__call__

对象后面加括号,触发执行

注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;

而对于 __call__ 方法的执行是由对象后加括号触发的

,即:对象() 或者 类()()

双下划线和单下划线的区别?

双下划线是程序中规定的私有的

单下划线是程序员们约定这是私有的

实例变量和类变量的区别?

实例变量就是将我们设定的变量储存在实例开辟的一块空间中

类变量是将我们设定的变量储存在类开辟的一快空间中 本质区别不在同一个空间

静态方法和类方法区别?

类方法:

原则是将类本身作为对象进行操作的方法,第一个参数必须cls

静态方法:使用装饰器@staticmethod。

静态方法是个独立的、单纯的函数,在类中是独立存在 第一个参数 可有可无

isinstance 和 type 的作用?

isinstance 是判断对象是什么类型

type 是查看对象是什么类型

2019/8/14-每日10道题!

有用过withstatement(语句)吗?它的好处是什么?

用过with open 他在Python 做的妙用就是文件操作完不用手动关闭,---面向对象中上下文管理

下列数据结构中,哪一种是不可迭代的 B

A. dict

B. object

C. set

D. str

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

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

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

python 中如何判断一个对象是否可调用? 那些对象可以是可调用对象?如何 __calll__

定义一个类, 使其对象本身就是可调用对象?

请实现一个栈。

关于Python类的继承不正确的说法是?(多选)A BD

A. Python类无法继承

B. 可以继承, 无法执行父类的构造函数

C. 可以有多个父类

D. 只能有一个父类

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

def test():

import uuid

name= {"name", "web", "python"}

ht=HashTable()5. for 6.7.8.9.10. for 11.12.

keyinnames:

value= uuid.uuid4() ht.add(key,value) print("add 元素",key,value)

keyinnames:

v= ht.get(key) print("get 元素",key, v)

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

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

classNode:2. 3. 4.

def __init__(self, value, next):

self.value= value self.next = next

2019/8/15-每日10道题!

类的加载顺序(类中有继承有构造有静态)?

参考下面代码片段

class Context: pass

with Content() as ctx:

ctx.do_something()

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

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

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

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

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

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

28. 写代码(栈与队列)

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

使用方法如下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值