python面试大家联系起来

一、简答题(25题)
1.python中range&xrange有什么区别?

2.简述继承

3.什么是python中的装饰器?

4.Python 如何收集垃圾(无用的对象)?

5.Python中的Map Function是什么?

6.单例模式与工厂模式

7.Python中的单引号和双引号有什么区别?

8.try except else finally 的意义

9.Python中append,insert和extend的区别?

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

11.什么是异步非阻塞

12.char 和 varchar 的区别

13.什么是pickling和unpickling?

14.什么是Django中间件

15.re 的 match 和 search 区别

16.Python的可变和不可变数据类型?

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

18.Python 中有几个名字空间,分别是什么

19._init_在Python中有什么用?

  1. Flask 和 Django 的异同

21.可变类型与不可变类型

22.Python 函数中的参数类型

23.Python数组和列表有什么区别?

24.如何使用索引来反转Python中的字符串?

25.面向对象中new__ 和__init 区别

参考答案

1.在大多数情况下,xrange和range在功能方面完全相同。 它们都提供了一种生成整数列表的方法,唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。这就表示xrange实际上在运行时并不是生成静态列表。 它使用称为yielding的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。因此如果你有一个非常巨大的列表,那么就要考虑xrange。
2.一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,同时获取所有的类成员(属性和方法) 继承使我们可以重用代码,并且还可以更方便地创建和维护代码 Python 支持以下类型的继承: 单继承- 一个子类类继承自单个基类 多重继承- 一个子类继承自多个基类 多级继承- 一个子类继承自一个基类,而基类继承自另一个基类 分层继承- 多个子类继承自同一个基类 混合继承- 两种或两种以上继承类型的组合
3.装饰器是为已经存在的函数或者对象添加额外的功能。本质上是一个闭包函数(闭包函数:本质是个嵌套函数,内层函数引用外层函数的变量并且返回外层函,外层函数返回内层函数) 
4.Python 使用一种称为引用计数的方法来决定何时需要在内存中收集对象。 简单来说,Python 会计算每个对象的引用计数,当一个对象没有引用时,会自动收集。
5.map函数在对可迭代对象的每一项应用特定函数后,会返回map对象。
6.单例模式:主要目的是确保某一个类只有一个实例存在 工厂模式:包涵一个超类,这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建
7.在Python中使用单引号(’ ')或双引号(" ")是没有区别的,都可以用来表示一个字符串。 这两种通用的表达方式,除了可以简化程序员的开发,避免出错之外,还有一种好处,就是可以减少转义字符的使用,使程序看起来更简洁,更清晰。
8.try…except…else 没有捕获到异常,执行 else 语句 try…except…finally 不管是否捕获到异常,都执行 finally 语句
9.append:在列表末尾添加新元素。 insert:在列表的特定位置添加元素。 extend:合并两个列表。
10.开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的 f.open 写法,我们需要 try,except,finally,做异常判断,并且文件最终不管遇到什么情况,都要执行 finally f.close() 关闭文件,with 方法帮我们实现了 finally 中 f.close
11.同步异步指的是调用者与被调用者之间的关系 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回,一旦调用返回,就得到了返回值 异步的概念和同步相对,调用在发出之后,这个调用就直接返回了,所以没有返回结果。当该异步功能完成后,被调用者可以通过状态、通知或回调来通知调用者 阻塞非阻塞是线程或进程之间的关系 阻塞调用是指调用结果返回之前,当前线程会被挂起(如遇到io操作)。调用线程只有在得到结果之后才会返回。函数只有在得到结果之后才会将阻塞的线程激活 非阻塞和阻塞的概念相对应,非阻塞调用指在不能立刻得到结果之前也会立刻返回,同时该函数不会阻塞当前线程
12.char:存储定长数据很方便,CHAR 字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义 char(10) varchar:存储变长数据,但存储效率没有 CHAR 高,必须在括号里定义长度,可以有默认值
13.pickling是将Python对象(甚至是Python代码),转换为字符串的过程。 unpickling是将字符串,转换为原来对象的逆过程。
14.Django中间件是一个轻量级、底层的“插件”系统,用来全局改变Django的输入或输出。在请求被处理的过程中,中间件是第一个处理HTTP请求或视图返回的HTTP响应的组件。它可以看作是处理请求和响应的钩子。中间件的主要功能包括: 处理全局请求:例如,可以在一个中间件中检查是否有session的存在,如果没有就创建一个。 处理全局响应:例如,可以在一个中间件中统一添加某个HTTP头部。 在视图处理之前或之后改变请求或响应。 将某些任务钩子到请求/响应的处理过程中,例如数据缓存、数据压缩等。 一个中间件基本上就是一个Python类,它定义了以下一个或多个方法: init(self, get_response):在中间件实例化时调用一次,其中get_response是一个用于获取视图响应的回调函数。 call(self, request):处理每个请求时都会调用,你可以在这里改变请求或响应。 中间件的执行顺序在Django设置中的MIDDLEWARE列表中定义,这个列表的顺序非常重要。在处理请求时,Django会按照MIDDLEWARE列表从上到下的顺序应用每个中间件,然后在处理响应时,Django会按照从下到上的顺序应用每个中间件。
15.match()函数只检测要匹配的字符是不是在 string 的开始位置匹配,search()会扫描整个 string 查找匹配
16.不可变数据类型:即数据被创建之后,数据的值将不再发生改变,有数值、字符、元祖类型; 可变数据类型:数据别创建之后,数据的值可以发生变化,有列表、字典、集合类型。 
17.Python代码执行缓慢的原因,是因为它是一种解释型语言。它的代码在运行时进行解释,而不是编译为本地语言。 为了提高Python代码的速度,我们可以使用CPython、Numba,或者我们也可以对代码进行一些修改。 1. 减少内存占用。 2. 使用内置函数和库。 3. 将计算移到循环外。 4. 保持小的代码库。 5. 避免不必要的循环
18.Python 总共有 4 个名字空间: • 局部名字空间 ( locals ) • 闭包名字空间 ( closures ) • 全局名字空间 ( globals ) • 内建名字空间 ( builtin )
19.“init”是Python类中的保留方法。 它被称为构造函数,每当执行代码时都会自动调用它,它主要用于初始化类的所有变量。
20.Flask 是 “microframework”,主要用来编写小型应用程序,不过随着 Python 的普及,很多大型程序也在使用 Flask。同时,在 Flask 中,我们必须使用外部库 Django 适用于大型应用程序。它提供了灵活性,以及完整的程序框架和快速的项目生成方法。可以选择不同的数据库,URL结构,模板样式等
21.可变数据类型:list、dict、set 不可变数据类型:int/float、str、tuple
22.位置参数,默认参数,可变参数,关键字参数
23.Python中的数组和列表具有相同的存储数据方式。但是,数组只能包含单个数据类型元素,而列表可以包含任何数据类型元素。 
24.实战面试题,每天看一看,巩固自己的python知识,面试前能做到有备无患,轻松拿下offer s = ‘hello’ s[::-1] >‘olleh’
25.new是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象,是个静态方法。 init是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候。是一个实例方法。 1、new至少要有一个参数 cls,代表当前类,此参数在实例化时由 Python 解释器自动识别。 2、new__必须要有返回值,返回实例化出来的实例,这点在自己实现_new_时要特别注意,可以 return 父类(通过 super(当前类名, cls))_new_出来的实例,或者直接是 object 的__new出来的实例。 3、init__有一个参数 self,就是这个_new_返回的实例,_init_在_new_的基础上可以完成一些其它初始化的动作,__init不需要返回值。 4、如果new__创建的是当前类的实例,会自动调用_init_函数,通过 return 语句里面调用的_new_函数的第一个参数是 cls 来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的_init_函数,也不会调用其他类的__init函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值