应届毕业生python面试题每日一练

一、简答题(20题)
1.列出5个常用Python标准库?

2.Python 面向对象中的继承有什么特点

3.什么是pickling和unpickling?

4.解释Python的内置数据结构?

5.什么是异步非阻塞

6.为什么Python执行速度慢,我们如何改进它?

7.with 方法打开文件的作用

8.可变类型与不可变类型

9.请说下Python有哪些特点

10.简述继承

11.Python中的列表和元组有什么区别?

12.什么是可变数据类型和不可变数据类型

13.python新式类和经典类的区别

14.python中range&xrange有什么区别?

15.对设计模式的理解,简述你了解的设计模式?

16.生成器和迭代器的区别?

17.Python中append和extend的区别?

18.Python支持多重继承吗?

19.Python有哪些应用?

20._init_在Python中有什么用?

参考答案

1.import os import sys import re import math import time import datetime import random import threading import multiprocessing
2.a. 同时支持单继承与多继承,当只有一个父类时为单继承,当存在多个父类时为多继承 b. 子类会继承父类所有的属性和方法,子类也可以覆盖父类同名的变量和方法 c. 在继承中基类的构造(init())方法不会被自动调用,它需要在其派生类的构造中专门调用 d. 在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量。区别于在类中调用普通函数时并不需要带上 self 参数
3.pickling是将Python对象(甚至是Python代码),转换为字符串的过程。 unpickling是将字符串,转换为原来对象的逆过程。
4.Python中主要有四种类型的数据结构。 列表:列表是从整数到字符串甚至另一个列表的异构数据项的集合。列表是可变的。列表完成了其他语言中大多数集合数据结构的工作。列表在[ ]方括号中定义。 例如:a = [1,2,3,4] 集合:集合是唯一元素的无序集合。集合运算如联合|,交集&和差异,可以应用于集合。{}用于表示一个集合。 例如:a = {1,2,3,4} 元组:Python元组的工作方式与Python列表完全相同,只是它们是不可变的。()用于定义元组。 例如:a =(1,2,3,4) 字典:字典是键值对的集合。它类似于其他语言中的hash map。在字典里,键是唯一且不可变的对象。 例如:a = {‘number’:[1,2,3,4]} 
5.同步异步指的是调用者与被调用者之间的关系 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回,一旦调用返回,就得到了返回值 异步的概念和同步相对,调用在发出之后,这个调用就直接返回了,所以没有返回结果。当该异步功能完成后,被调用者可以通过状态、通知或回调来通知调用者 阻塞非阻塞是线程或进程之间的关系 阻塞调用是指调用结果返回之前,当前线程会被挂起(如遇到io操作)。调用线程只有在得到结果之后才会返回。函数只有在得到结果之后才会将阻塞的线程激活 非阻塞和阻塞的概念相对应,非阻塞调用指在不能立刻得到结果之前也会立刻返回,同时该函数不会阻塞当前线程
6.Python代码执行缓慢的原因,是因为它是一种解释型语言。它的代码在运行时进行解释,而不是编译为本地语言。 为了提高Python代码的速度,我们可以使用CPython、Numba,或者我们也可以对代码进行一些修改。 1. 减少内存占用。 2. 使用内置函数和库。 3. 将计算移到循环外。 4. 保持小的代码库。 5. 避免不必要的循环
7.开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的 f.open 写法,我们需要 try,except,finally,做异常判断,并且文件最终不管遇到什么情况,都要执行 finally f.close() 关闭文件,with 方法帮我们实现了 finally 中 f.close
8.可变数据类型:list、dict、set 不可变数据类型:int/float、str、tuple
9.Python是一种解释型语言,这意味着开发过程中没有了编译这个环节。 面向对象:Python支持面向对象的风格或代码封装在对象的编程技术。 动态类型语言:在Python中,你不需要预先声明变量的类型,当你赋值给变量时,解释器会自动知道其类型。 跨平台语言:Python可以在大多数的操作系统上运行,包括但不限于Windows、Linux、Unix等。
10.一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,同时获取所有的类成员(属性和方法) 继承使我们可以重用代码,并且还可以更方便地创建和维护代码 Python 支持以下类型的继承: 单继承- 一个子类类继承自单个基类 多重继承- 一个子类继承自多个基类 多级继承- 一个子类继承自一个基类,而基类继承自另一个基类 分层继承- 多个子类继承自同一个基类 混合继承- 两种或两种以上继承类型的组合
11.list 是可变的对象,元组 tuple 是不可变的对象。也就是说列表中的元素可以进行任意修改,而元组中的元素无法修改。
12.在Python中,数据类型可以分为两种:可变数据类型和不可变数据类型。不可变数据类型:这种数据类型的值一旦定义,就不能更改。如果尝试更改其值,实际上会创建一个新的对象。不可变数据类型的例子包括整数、浮点数、字符串、元组。例如,如果你有一个字符串变量,你不能更改这个字符串中的某个字符。试图这样做的话,Python会创建一个新的字符串。可变数据类型:与不可变数据类型相反,可变数据类型的值是可以更改的。也就是说,你可以在不创建新对象的情况下更改对象的值。可变数据类型的例子包括列表、字典以及集合。例如,如果你有一个列表,你可以更改列表中的元素,增加元素,或者删除元素,而不需要创建一个新的列表
13.在python里凡是继承了object的类,都是新式类 Python3里只有新式类 Python2里面继承object的是新式类,没有写父类的是经典类 经典类目前在Python里基本没有应用 保持class与type的统一对新式类的实例执行a.class与type(a)的结果是一致的,对于旧式类来说就不一样了。 对于多重继承的属性搜索顺序不一样新式类是采用广度优先搜索,旧式类采用深度优先搜索。
14.在大多数情况下,xrange和range在功能方面完全相同。 它们都提供了一种生成整数列表的方法,唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。这就表示xrange实际上在运行时并不是生成静态列表。 它使用称为yielding的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。因此如果你有一个非常巨大的列表,那么就要考虑xrange。
15.设计模式是为我们经常会碰到的一些编程问题构建的可重用解决方案,它是总结性和经优化的。一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码,反之,设计模式更为高级,它是一种在特定情形下实现的方法模板。常见的是工厂模式和单例模式。 单例模式应用的场景一般发现在以下条件下: 资源共享的情况下,避免由于资源操作时导致的性能或损耗等,如日志文件,应用配置。控制资源的情况下,方便资源之间的互相通信。
16. 迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,它就是可迭代的。对于 string、list、dict、tuple 等这类容器对象,使用for循环遍历是很方便的,for 语句实际上会对容器对象调用 iter() 函数。iter() 会返回一个定义了 next() 方法的迭代器对象,它在容器中逐个访问容器内元素,在没有后续元素时,next()会抛出一个StopIteration异常。 生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数据的时候使用yield语句。生成器能做到迭代器能做的所有事,而且因为自动创建iter()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出StopIteration异常。 
17.append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加 extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加 
18.Python可以支持多重继承。多重继承意味着,一个类可以从多个父类派生。
19.1. Web开发 2. 桌面GUI开发 3. 人工智能和机器学习 4. 软件开发 5. 业务应用程序开发 6. 基于控制台的应用程序 7. 软件测试 8. Web自动化 9. 基于音频或视频的应用程序 10. 图像处理应用程序 
20.“init”是Python类中的保留方法。 它被称为构造函数,每当执行代码时都会自动调用它,它主要用于初始化类的所有变量。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值