搜档网
当前位置:搜档网 › 2020年python的面试题整理Web篇

2020年python的面试题整理Web篇

2020年python的面试题整理Web篇
2020年python的面试题整理Web篇

2020年python的面试题整理Web篇Flask

140.对Flask蓝图(Blueprint)的理解?

蓝图的定义

蓝图/Blueprint 是Flask应用程序组件化的方法,可以在一个应用内或跨越多个项目共用蓝图。使用蓝图可以极大简化大型应用的开发难度,也为Flask扩展提供了一种在应用中注册服务的集中式机制。

蓝图的应用场景:

把一个应用分解为一个蓝图的集合。这对大型应用是理想的。一个项目可以实例化一个应用对象,初始化几个扩展,并注册一集合的蓝图。

以URL前缀和/或子域名,在应用上注册一个蓝图。URL前缀/子域名中的参数即成为这个蓝图下的所有视图函数的共同的视图参数(默认情况下)在一个应用中用不同的URL规则多次注册一个蓝图。

通过蓝图提供模板过滤器、静态文件、模板和其他功能。一个蓝图不一定要实现应用或视图函数。

初始化一个Flask扩展时,在这些情况中注册一个蓝图。

蓝图的缺点:

不能在应用创建后撤销注册一个蓝图而不销毁整个应用对象。

使用蓝图的三个步骤

1.创建一个蓝图对象

2.在这个蓝图对象上进行操作,例如注册路由、指定静态文件夹、注册模板过滤器...

3.在应用对象上注册这个蓝图对象

141.Flask 和Django 路由映射的区别?

在django中,路由是浏览器访问服务器时,先访问的项目中的url,再由项目中的url找到应用中url,这些url是放在一个列表里,遵从从前往后匹配的规则。在flask中,路由是通过装饰器给每个视图函数提供的,而且根据请求方式的不同可以一个url用于不同的作用。

Django

142.什么是wsgi,uwsgi,uWSGI?

WSGI:

web服务器网关接口,是一套协议。用于接收用户请求并将请求进行初次封装,然后将请求交给web框架。

实现wsgi协议的模块:wsgiref,本质上就是编写一socket服务端,用于接收用户请求(django)

werkzeug,本质上就是编写一个socket服务端,用于接收用户请求(flask) uwsgi:

与WSGI一样是一种通信协议,它是uWSGI服务器的独占协议,用于定义传输信息的类型。uWSGI:

是一个web服务器,实现了WSGI的协议,uWSGI协议,http协议143.Django、Flask、Tornado的对比?

1、Django走的大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器,给开发者提高了超高的开发效率。重量级web框架,功能齐全,提供一站式解决的思路,能让开发者不用在选择上花费大量时间。

自带ORM和模板引擎,支持jinja等非官方模板引擎。

自带ORM使Django和关系型数据库耦合度高,如果要使用非关系型数据库,需要使用第三方库

自带数据库管理app

成熟,稳定,开发效率高,相对于Flask,Django的整体封闭性比较好,适合做企业级网站的开发。python web框架的先驱,第三方库丰富

2、Flask 是轻量级的框架,自由,灵活,可扩展性强,核心基于Werkzeug WSGI工具和jinja2 模板引擎

适用于做小网站以及web服务的API,开发大型网站无压力,但架构需要自己设计

与关系型数据库的结合不弱于Django,而与非关系型数据库的结合远远优于Django

3、Tornado走的是少而精的方向,性能优越,它最出名的异步非阻塞的设计方式

Tornado的两大核心模块:

iostraem:对非阻塞的socket进行简单的封装

ioloop: 对I/O 多路复用的封装,它实现一个单例

144.CORS 和CSRF的区别?

什么是CORS?

CORS是一个W3C标准,全称是“跨域资源共享"(Cross-origin resoure sharing). 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而客服了AJAX 只能同源使用的限制。

什么是CSRF?

CSRF主流防御方式是在后端生成表单的时候生成一串随机token,内置到表单里成为一个字段,同时,将此串token置入session中。每次表单提交到后端时都会检查这两个值是否一致,以此来判断此次表单提交是否是可信的,提交过一次之后,如果这个页面没有生成CSRF token,那么token将会被清空,如果有新的需求,那么token会被更新。攻击者可以伪造POST表单提交,但是他没有后端生成的内置于表单的token,session中没有token都无济于事。

145.Session,Cookie,JWT的理解

为什么要使用会话管理

众所周知,HTTP协议是一个无状态的协议,也就是说每个请求都是一个独立的请求,请求与请求之间并无关系。但在实际的应用场景,这种方式并不能满足我们的需求。举个大家都喜欢用的例子,把商品加入购物车,单独考虑这个请求,服务端并不知道这个商品是谁的,应该加入谁的购物车?因此这个请求的上下文环境实际上应该包含用户的相关信息,在每次用户发出请求时把这一

小部分额外信息,也做为请求的一部分,这样服务端就可以根据上下文中的信息,针对具体的用户进行操作。所以这几种技术的出现都是对HTTP协议的一个补充,使得我们可以用HTTP协议+状态管理构建一个的面向用户的WEB应用。

Session 和Cookie的区别

这里我想先谈谈session与cookies,因为这两个技术是做为开发最为常见的。那么session与cookies的区别是什么?个人认为session与cookies最核心区别在于额外信息由谁来维护。利用cookies来实现会话管理时,用户的相关信息或者其他我们想要保持在每个请求中的信息,都是放在cookies中,而cookies是由客户端来保存,每当客户端发出新请求时,就会稍带上cookies,服务端会根据其中的信息进行操作。当利用session来进行会话管理时,客户端实际上只存了一个由服务端发送的session_id,而由这个session_id,可以在服务端还原出所需要的所有状态信息,从这里可以看出这部分信息是由服务端来维护的。

除此以外,session与cookies都有一些自己的缺点:cookies的安全性不好,攻击者可以通过获取本地cookies进行欺骗或者利用cookies进行CSRF 攻击。使用cookies时,在多个域名下,会存在跨域问题。session 在一定的时间里,需要存放在服务端,因此当拥有大量用户时,也会大幅度降低服务端的性能,当有多台机器时,如何共享session也会是一个问题.(redis集群)也就是说,用户第一个访问的时候是服务器A,而第二个请求被转发给了服务器B,那服务器B如何得知其状态。实际上,session与cookies是有联系的,比如我们可以把session_id存放在cookies中的。

JWT是如何工作的

首先用户发出登录请求,服务端根据用户的登录请求进行匹配,如果匹配成功,将相关的信息放入payload中,利用算法,加上服务端的密钥生成token,这里需要注意的是secret_key很重要,如果这个泄露的话,客户端就可以随机篡改发送的额外信息,它是信息完整性的保证。生成token后服务端将其返回给客户端,客户端可以在下次请求时,将token一起交给服务端,一般是说我们可以将其放在Authorization首部中,这样也就可以避免跨域问题。

146.简述Django请求生命周期

一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数,如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户)视图函数调用模型毛模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

1.wsgi ,请求封装后交给web框架(Flask,Django)

2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:

csrf,request.session

3.路由匹配根据浏览器发送的不同url去匹配不同的视图函数

4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm,templates

5.中间件,对响应的数据进行处理

6.wsgi,将响应的内容发送给浏览器

147.用的restframework完成api发送时间时区

当前的问题是用django的rest framework模块做一个get请求的发送时间以及时区信息的api

148.nginx,tomcat,apach到都是什么?

Nginx(engine x)是一个高性能的HTTP和反向代理服务器,也是一个

IMAP/POP3/SMTP服务器,工作在OSI七层,负载的实现方式:轮询,

IP_HASH,fair,session_sticky. Apache HTTP Server是一个模块化的服务器,源于NCSAhttpd服务器Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选。

149.请给出你熟悉关系数据库范式有哪些,有什么作用?

在进行数据库的设计时,所遵循的一些规范,只要按照设计规范进行设计,就能设计出没有数据冗余和数据维护异常的数据库结构。

数据库的设计的规范有很多,通常来说我们在设是数据库时只要达到其中一些规范就可以了,这些规范又称之为数据库的三范式,一共有三条,也存在着其他范式,我们只要做到满足前三个范式的要求,就能设陈出符合我们的数据库了,我们也不能全部来按照范式的要求来做,还要考虑实际的业务使用情况,所以有时候也需要做一些违反范式的要求。 1.数据库设计的第一范式(最基本),基本上所有数据库的范式都是符合第一范式的,符合第一范式的表具有以下几个特点:

数据库表中的所有字段都只具有单一属性,单一属性的列是由基本的数据类型(整型,浮点型,字符型等)所构成的设计出来的表都是简单的二比表

2.数据库设计的第二范式(是在第一范式的基础上设计的),要求一个表中只具有一个业务主键,也就是说符合第二范式的表中不能存在非主键列对只对部分主键的依赖关系

3.数据库设计的第三范式,指每一个非主属性既不部分依赖与也不传递依赖于业务主键,也就是第二范式的基础上消除了非主属性对主键的传递依赖150.简述QQ登陆过程

qq登录,在我们的项目中分为了三个接口,

第一个接口是请求qq服务器返回一个qq登录的界面;

第二个接口是通过扫码或账号登陆进行验证,qq服务器返回给浏览器一个code和state,利用这个code通过本地服务器去向qq服务器获取

access_token覆返回给本地服务器,凭借access_token再向qq服务器获取用户的openid(openid用户的唯一标识)

第三个接口是判断用户是否是第一次qq登录,如果不是的话直接登录返回的jwt-token给用户,对没有绑定过本网站的用户,对openid进行加密生成token 进行绑定

151.post 和get的区别?

1.GET是从服务器上获取数据,POST是向服务器传送数据

2.在客户端,GET方式在通过URL提交数据,数据在URL中可以看到,POST方式,数据放置在HTML——HEADER内提交

3.对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据

152.项目中日志的作用

一、日志相关概念

1.日志是一种可以追踪某些软件运行时所发生事件的方法

2.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情

3.一个事件可以用一个包含可选变量数据的消息来描述

4.此外,事件也有重要性的概念,这个重要性也可以被成为严重性级别(level)

二、日志的作用

1.通过log的分析,可以方便用户了解系统或软件、应用的运行情况;

2.如果你的应用log足够丰富,可以分析以往用户的操作行为、类型喜好,地域分布或其他更多信息;

3.如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。

4.简单来讲就是我们通过记录和分析日志可以了解一个系统或软件程序运行情况是否正常,也可以在应用程序出现故障时快速定位问题。不仅在开发中,在运维中日志也很重要,日志的作用也可以简单。总结为以下几点:

1.程序调试

2.了解软件程序运行情况,是否正常

3,软件程序运行故障分析与问题定位

4,如果应用的日志信息足够详细和丰富,还可以用来做用户行为分析153.django中间件的使用?

Django在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预,方法如下:

1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件

2.处理请求前:在每个请求上调用,返回None或HttpResponse对象。

3.处理视图前:在每个请求上调用,返回None或HttpResponse对象。

4.处理模板响应前:在每个请求上调用,返回实现了render方法的响应对象。

5.处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象。

6.异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象。

154.谈一下你对uWSGI和nginx的理解?

1.uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。

要注意WSGI/uwsgi/uWSGI这三个概念的区分。

WSGI是一种通信协议。

uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。

uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

nginx 是一个开源的高性能的HTTP服务器和反向代理:

1.作为web服务器,它处理静态文件和索引文件效果非常高

2.它的设计非常注重效率,最大支持5万个并发连接,但只占用很少的内存空间

3.稳定性高,配置简洁。

4.强大的反向代理和负载均衡功能,平衡集群中各个服务器的负载压力应用

155.Python中三大框架各自的应用场景?

django:主要是用来搞快速开发的,他的亮点就是快速开发,节约成本,,如果要实现高并发的话,就要对django进行二次开发,比如把整个笨重的框架给拆掉自己写socket实现http的通信,底层用纯c,c++写提升效率,ORM框架给干掉,自己编写封装与数据库交互的框架,ORM虽然面向对象来操作数据库,但是它的效率很低,使用外键来联系表与表之间的查询; flask: 轻量级,主要是用来写接口的一个框架,实现前后端分离,提考开发效率,Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、文件上传、身份验证等。Flask没有默认使用的数据库,你可以选择MySQL,也可以用NoSQL。

其WSGI工具箱用Werkzeug(路由模块),模板引擎则使用Jinja2,这两个也是Flask框架的核心。

Tornado:Tornado是一种Web服务器软件的开源版本。Tornado和现在的主流Web服务器框架(包括大多数Python的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado每秒可以处理数以千计的连接因此Tornado是实时Web服务的一个理想框架

156.Django中哪里用到了线程?哪里用到了协程?哪里用到了进程?

1.Django中耗时的任务用一个进程或者线程来执行,比如发邮件,使用celery.

2.部署django项目是时候,配置文件中设置了进程和协程的相关配置。

157.有用过Django REST framework吗?

Django REST framework是一个强大而灵活的Web API工具。使用RESTframework的理由有:

Web browsable API对开发者有极大的好处

包括OAuth1a和OAuth2的认证策略

支持ORM和非ORM数据资源的序列化

全程自定义开发--如果不想使用更加强大的功能,可仅仅使用常规的function-based views额外的文档和强大的社区支持

158.对cookies与session的了解?他们能单独用吗?

Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保

持状态的方案。但是禁用Cookie就不能得到Session。因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于SessionID,也就得不到Session。

爬虫

159.试列出至少三种目前流行的大型数据库

160.列举您使用过的Python网络爬虫所用到的网络数据包?

requests, urllib,urllib2, httplib2

161.爬取数据后使用哪个数据库存储数据的,为什么?162.你用过的爬虫框架或者模块有哪些?优缺点?Python自带:urllib,urllib2

第三方:requests

框架:Scrapy

urllib 和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。

urllib2: urllib2.urlopen可以接受一个Request对象或者url,(在接受Request对

象时,并以此可以来设置一个URL的headers),urllib.urlopen只接收一个url。urllib 有urlencode,urllib2没有,因此总是urllib, urllib2常会一起使用的原因scrapy是封装起来的框架,他包含了下载器,解析器,日志及异常处理,基于

多线程,twisted的方式处理,对于固定单个网站的爬取开发,有优势,但是对

于多网站爬取100个网站,并发及分布式处理不够灵活,不便调整与扩展requests是一个HTTP库,它只是用来请求,它是一个强大的库,下载,解析

全部自己处理,灵活性高

Scrapy优点:异步,xpath,强大的统计和log系统,支持不同url。shell方便独立调试。写middleware方便过滤。通过管道存入数据库

163.写爬虫是用多进程好?还是多线程好?

164.常见的反爬虫和应对方法?

165.解析网页的解析器使用最多的是哪几个?

166.需要登录的网页,如何解决同时限制ip,cookie,session

167.验证码的解决?

168.使用最多的数据库,对他们的理解?

169.编写过哪些爬虫中间件?

170.“极验”滑动验证码如何破解?

171.爬虫多久爬一次,爬下来的数据是怎么存储?

172.cookie过期的处理问题?

173.动态加载又对及时性要求很高怎么处理?

174.HTTPS有什么优点和缺点?

175.HTTPS是如何实现安全传输数据的?

176.TTL,MSL,RTT各是什么?

177.谈一谈你对Selenium和PhantomJS了解

178.平常怎么使用代理的?

179.存放在数据库(redis、mysql等)。

180.怎么监控爬虫的状态?

181.描述下scrapy框架运行的机制?

182.谈谈你对Scrapy的理解?

183.怎么样让scrapy 框架发送一个post 请求(具体写出来)

184.怎么监控爬虫的状态?

185.怎么判断网站是否更新?

186.图片、视频爬取怎么绕过防盗连接

187.你爬出来的数据量大概有多大?大概多长时间爬一次?

188.用什么数据库存爬下来的数据?部署是你做的吗?怎么部署?

189.增量爬取

190.爬取下来的数据如何去重,说一下scrapy的具体的算法依据。

191.Scrapy的优缺点?

192.怎么设置爬取深度?

193.scrapy和scrapy-redis有什么区别?为什么选择redis数据库?

194.分布式爬虫主要解决什么问题?

195.什么是分布式存储?

196.你所知道的分布式爬虫方案有哪些?

197.scrapy-redis,有做过其他的分布式爬虫吗?

Python经典面试题

1:Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式: 1. class Singleton(type): def __init__(cls, name, bases, dict): super(Singleton, cls).__init__(name, bases, dict) cls.instance = None def __call__(cls, *args, **kw): if cls.instance is None: cls.instance = super(Singleton, cls).__call__(*args, **kw) return cls.instance class MyClass(object): __metaclass__ = Singleton print MyClass() print MyClass() 2. 使用decorator来实现单例模式 def singleton(cls): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls() return instances[cls] return getinstance @singleton class MyClass: … 2:什么是lambda函数? Python允许你定义一种单行的小函数。定义lambda函数的形式如下:labmda 参数:表达式lambda函数默认返回表达式的值。你也可以将其赋值给一个变量。lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一个:>>> g = lambda x, y: x*y >>> g(3,4) 12 >>> g = lambda x, y=0, z=0: x+y+z >>> g(1) 1

Python面试题及答案

P y t h o n面试题及答案 TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】

2018年最新P y t h o n面试题及答案找工作是每个学习Python人员的目标,为了更好的找到工作,刷面试题是必不可少的,了解最新企业招聘试题,可以让你面试更加的顺利。小编整理了一些20XX年最新的Python面试题,来测测你技术的掌握度吧。 1、Python里面如何拷贝一个对象( 赋值,浅拷贝,深拷贝的区别) 答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。 浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3,copy模块的copy()函数} 深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的()函数} 2、Python里面match()和search()的区别? 答:re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。 re模块中research(pattern,string[,flags]),在string搜索pattern的第一个匹配值。 >>>print(‘super’, ‘superstition’).span())

(0, 5) >>>print(‘super’, ‘insuperable’)) None >>>print(‘super’, ‘superstition’).span()) (0, 5) >>>print(‘super’, ‘insuperable’).span()) (2, 7) 3、有没有一个工具可以帮助查找python的bug和进行静态的代码分析? 答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告 Pylint是另外一个工具可以进行codingstandard检查 4、简要描述Python的垃圾回收机制(garbage collection)。 答案 这里能说的很多。你应该提到下面几个主要的点: Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。 偶尔也会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环,并将其回收。举个例子,假设有两个对象o1和o2,而且符合 == o2和 == o1这两个条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。

python面试题整理(20170131092705)

1 请教一下列表与元组的区别是什么.分别在什么情况下使用 列表中的项目应该包括在方括号中,你可以添加、删除或是搜索列表中的项目。由于你可以增加或 删除项目,所以列表是可变的数据类型,即这种类型是可以被改变的。 元组和列表十分类似,但是元组是不可变的.也就是说你不能修改元组。元组通过圆括号中用逗号分 割的项目定义。元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候, 即被使用的元组的值不会改变。 2 字典 键值对的集合(map)字典是以大括号“{}”包围的数据集合。 与列表区别:字典是无序的,在字典中通过键来访问成员。字典是可变的,可以包含任何其他类型。 3 Python是如何进行内存管理的? Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。 Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。另外Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。 也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。 在Python中,许多时候申请的内存都是小块的内存,这些小块内存在申请后,很快又会被释放,由 于这些内存的申请并不是为了创建对象,所以并没有对象一级的内存池机制。这就意味着Python在运 行期间会大量地执行malloc和free的操作,频繁地在用户态和核心态之间进行切换,这将严重影响 Python的执行效率。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内 存的申请和释放。这也就是之前提到的Pymalloc机制。 4 如何在一个function里面设置一个全局的变量? 解决方法是在function的开始插入一个global声明 5 Python中pass语句的作用是什么? pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作,比如: while False: pass pass通常用来创建一个最简单的类: class MyEmptyClass: pass pass在软件设计阶段也经常用来作为TODO,提醒实现相应的实现,比如: def initlog(*args): pass #please implement this 6 Python里面如何拷贝一个对象?

最新python 笔试题

Python基础知识笔试 1 2 3 一、单选题(2.5分*20题) 4 1. 下列哪个表达式在Python中是非法的? B 5 A. x = y = z = 1 6 B. x = (y = z + 1) 7 C. x, y = y, x 8 D. x += y 9 2. python my.py v1 v2 命令运行脚本,通过 from sys impor t argv如何获得v2的参数值? C 10 11 A. argv[0] 12 B. argv[1] 13 C. argv[2] 14 D. argv[3] 15 3. 如何解释下面的执行结果? B 16 print 1.2 - 1.0 == 0.2 17 False 18 A. Python的实现有错误 19 B. 浮点数无法精确表示 20 C. 布尔运算不能用于浮点数比较 D. Python将非0数视为False 21 22 4. 下列代码执行结果是什么? D

23 x = 1 24 def change(a): 25 x+= 1 26 print x 27 change(x) 28 A. 1 29 B. 2 30 C. 3 D. 报错 31 32 5. 下列哪种类型是Python的映射类型? D 33 A. str 34 B. list 35 C. tuple 36 D. dict 6. 下述字符串格式化语法正确的是? D 37 38 A. 'GNU's Not %d %%' % 'UNIX' 39 B. 'GNU\'s Not %d %%' % 'UNIX' C. 'GNU's Not %s %%' % 'UNIX' 40 41 D. 'GNU\'s Not %s %%' % 'UNIX' 42 7. 在Python 2.7中,下列哪种是Unicode编码的书写方式?C A. a = ‘中文’ 43 44 B. a = r‘中文’

Python面试题及答案

2018年最新Python面试题及答案 找工作是每个学习Python人员的目标,为了更好的找到工作,刷面试题是必不可少的,了解最新企业招聘试题,可以让你面试更加的顺利。小编整理了一些2017年最新的Python面试题,来测测你技术的掌握度吧。 1、Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别) 答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。 浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3,copy模块的copy()函数} 深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的()函数} 2、Python里面match()和search()的区别? 答:re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。 re模块中research(pattern,string[,flags]),在string搜索pattern的第一个匹配值。 >>>print(‘super’, ‘superstition’).span()) (0, 5) >>>print(‘super’, ‘insuperable’)) None

>>>print(‘super’, ‘superstition’).span()) (0, 5) >>>print(‘super’, ‘insuperable’).span()) (2, 7) 3、有没有一个工具可以帮助查找python的bug和进行静态的代码分析? 答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python 代码的bug, 会对代码的复杂度和格式提出警告 Pylint是另外一个工具可以进行codingstandard检查 4、简要描述Python的垃圾回收机制(garbage collection)。 答案 这里能说的很多。你应该提到下面几个主要的点: Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。 偶尔也会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环,并将其回收。举个例子,假设有两个对象o1和o2,而且符合 == o2和 == o1这两个条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。 Python中使用了某些启发式算法(heuristics)来加速垃圾回收。例如,越晚创建的对象更有可能被回收。对象被创建之后,垃圾回收器会分配它们所属的代(generation)。每个对象都会被分配一个代,而被分配更年轻代的对象是优先被处理的。

20道python面试题

对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔。那么你了解过Python编程面试题吗?今天我们就来了解一下! 1、python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。 多进程间共享数据,可以使用 multiprocessing.Value和multiprocessing.Array。 2、什么是lambda函数?它有什么好处? lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。lambda 函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。 3、Python是如何进行类型转换的? ①函数描述 ② int(x [,base ]) 将x转换为一个整数 ③long(x [,base ]) 将x转换为一个长整数 ④float(x ) 将x转换到一个浮点数 ⑤complex(real [,imag ]) 创建一个复数 ⑥str(x ) 将对象 x 转换为字符串 ⑦repr(x ) 将对象 x 转换为表达式字符串 ⑧eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象 ⑨tuple(s ) 将序列 s 转换为一个元组 ⑩list(s ) 将序列 s 转换为一个列表 ?chr(x ) 将一个整数转换为一个字符 ?unichr(x ) 将一个整数转换为Unicode字符 ?ord(x ) 将一个字符转换为它的整数值 ?hex(x ) 将一个整数转换为一个十六进制字符串 ?oct(x ) 将一个整数转换为一个八进制字符串 4、python多线程与多进程的区别

最常见的-35-个-Python-面试题及答案

最常见的35 个Python 面试题及答案(2018 版) 1. Python 面试问题及答案 作为一个Python 新手,你必须熟悉基础知识。在本文中我们将讨论一些Python 面试的基础问题和高级问题以及答案,以帮助你完成面试。包括 Python 开发问题、编程问题、数据结构问题、和 Python 脚本问题。让我们来深入研究这些问题 Python 面试问题 . Python 的特点和优点是什么 Python 可以作为编程的入门语言,因为他具备以下特质: 1. 解释性 2. 动态特性 3. 面向对象 4. 语法简洁 5. 开源 6. 丰富的社区资源 实际上Python 的优点远不止这些,更详细的介绍可以阅读Introduction to Python ( blogs/python-tutorial/) . 深拷贝和浅拷贝的区别是什么 深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中,我们使用 deepcopy()函数进行深拷贝,使用方法如下: 深拷贝-Python 面试问题及答案 浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象。使用 copy()函数进行浅拷贝,使用方法如下: 浅拷贝—Python 面试问题及答案 . 列表和元祖有什么不同 主要区别在于列表是可变的,元祖是不可变的。看下面的例子: 会出现以下错误提示: TypeError: ‘tuple’ object does not support item assignment 关于列表和元祖的更多内容参考 Tuples vs Lists( blogs/python-tuples-vs-lists/)2. Python 面试基础题 到是新手经常会被问到的一些 Python 基础题,有经验的人也可以参考这些问题来复习这些概念。 . 解释 Python 中的三元表达式 与 C++不同, 在 Python 中我们不需要使用符号,而是使用如下语法: [on true] if [expression]else [on false] 如果 [expression] 为真, 则 [on true] 部分被执行。如果表示为假则 [on false] 部分被执行 下面是例子:

python面试题100

Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def fun(a): a = 2 fun(a) print(a) # 1 代码二: a = [] def fun(a): a.append(1) fun(a) print(a) # [1] 所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。 这里记住的是类型是属于对象的,而不是变量。而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples,

和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点) 当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了.所以第一个例子里函数把引用指向了一个不可变对象,当函数返回的时候,外面的引用没半毛感觉.而第二个例子就不一样了,函数内的引用指向的是可变对象,对它的操作就和定位了指针地址一样,在内存里进行修改. 2 Python中的元类(metaclass) 元类就是用来创建类的“东西”。你创建类就是为了创建类的实例对象,但是我们已经学习到了Python中的类也是对象。好吧,元类就是用来创建这些类(对象)的,元类就是类的类 这个非常的不常用,详情请看:《深刻理解Python中的元类(metaclass)》 3 @staticmethod和@classmethod Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: class A(object): def foo(self,x): print "executing foo(%s,%s)"%(self,x) @classmethod def class_foo(cls,x): print( "executing class_foo(%s,%s)"%(cls,x)) @staticmethod def static_foo(x):

Python培训面试题目有哪些

Python培训面试题目有哪些 面试是公司挑选职工的一种重要方法。它给公司和应招者提供了进行双向交流的机会,能使公司和应招者之间相互了解,从而双方都可更准确做出聘用与否、受聘与否的决定。Python后端工程师面试题目有哪些? 一、语言 1.推荐一本看过最好的python书籍? 2.python适合的场景有哪些?当遇到计算密集型任务怎么办? 二、操作系统 可以直接认为是linux,毕竟搞后端的多数是和linux打交道。 1.tcp/udp的区别?tcp粘包是怎么回事,如何处理?udp有粘包吗? 2.time_wait是什么情况?出现过多的close_wait可能是什么原因? 3.epoll,select的区别?边缘触发,水平触发区别? 千锋Python课程历时一年精心策划,十大阶段共23周超长课时,以实战项目做指导,手把手纯面授,面对面现场教学。同时论坛辅导,上课资料录制,方便学生课后复习,严格保障教学质量。

三、存储 存储可能包含rdbms,nosql以及缓存等,我以mysql,redis举例mysql 相关 1.谈谈mysql字符集和排序规则? 2.varchar与char的区别是什么?大小限制? 3.primary key和unique的区别? 4.外键有什么用,是否该用外键?外键一定需要索引吗? 四、安全 1.sql注入是怎么产生的,如何防止? 2.xss如何预防?htmlescape后能否避免xss? 3.csrf是什么?django是如何防范的? 五、综合问题 是否关注新技术啊?golang,rust是否了解?numpy,pandas是什么? 是否紧跟时代潮流?逛不逛微博,刷不刷知乎? 这是有些公司面试Python后端工程师可能会抛给求职者的一些题目,这些

Python面试题总结

1.Python 线程池原理? 我理解为线程池是一个存放很多线程的单位,同时还有一个对应的任务队列。整个执行过程其实就是使用线程池中已有有限的线程把任务队列中的任务做完。这样做的好处就是你不需要为每个任务都创建一个线程,因为当你创建第100 个线程来执行第100个任务的时候,可能前面已经有50个线程结束工作了。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。因此重复利用线程来执行任务,减少系统资源的开销。 2.Python合并字典,相同key的value如何相加? 利用collections.Counter可轻松办到 >>> x = { 'apple':1, 'banana':2 } >>> y = { 'banana':10, 'pear':11 } >>> from collections import Counter >>> X,Y = Counter(x), Counter(y) >>> z = dict(X+Y) >>> z {'apple': 1, 'banana': 12, 'pear': 11} 另一种写法 >>>from collections import Counter >>>dict(Counter(x)+Counter(y)) ( 合并两个字典的方法 方法1: dictMerged1=dict(dict1.items()+dict2.items()) 方法2: dictMerged2=dict(dict1, **dict2) 方法2等同于: dictMerged=dict1.copy() dictMerged.update(dict2) 或者 dictMerged=dict(dict1) dictMerged.update(dict2) 3.解释GUI和GPL? GUI图形用户(Graphical User Interface,简称GUI,又称图形)是指采用图形方式显示的计算机操作用户。 GPL() GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。 4.简述爬虫的基本步骤和流程?

python笔试题

Python基础知识笔试 一、单选题(分*20题) 1. 下列哪个表达式在Python中是非法的 B A. x = y = z = 1 B. x = (y = z + 1) C. x, y = y, x D. x += y 2. python v1 v2 命令运行脚本,通过 from sys imp ort argv如何获得v2的参数值 C A. argv[0] B. argv[1] C. argv[2] D. argv[3] 3. 如何解释下面的执行结果B print - == False A. Python的实现有错误 B. 浮点数无法精确表示 C. 布尔运算不能用于浮点数比较 D. Python将非0数视为False

4. 下列代码执行结果是什么 D x = 1 def change(a): x+= 1 print x change(x) A. 1 B. 2 C. 3 D. 报错 5. 下列哪种类型是Python的映射类型 D A. str B. list C. tuple D. dict 6. 下述字符串格式化语法正确的是 D A. 'GNU's Not %d %%' % 'UNIX' B. 'GNU\'s Not %d %%' % 'UNIX' C. 'GNU's Not %s %%' % 'UNIX' D. 'GNU\'s Not %s %%' % 'UNIX'

7. 在Python 中,下列哪种是Unicode编码的书写方式C A. a = ‘中文’ B. a = r‘中文’ C. a = u’中文’ D. a = b’中文’ 8. 下列代码的运行结果是 D print 'a' < 'b' < 'c' A. a B. b C. c D. True E. False 9. 下列代码运行结果是 C a = 'a' print a > 'b' or 'c' A. a B. b C. c D. True E. False

Python面试考题

一,中文单项选择题(30分,每个3分)?1.下列哪个语句在Python中是非法的 A、x=y=z=1 B、x=(y=z+1) C、x,y=y,x D、x+=y ?2.关于Python内存管理,下列说法错误的是 A、变量不必事先声明 B、变量无须先创建和赋值而直接使用 C、变量无须指定类型 D、可以使用del释放资源 ?3、下面哪个不是Python合法的标识符 A、int32 B、40XL C、self D、name ?4、下列哪种说法是错误的 A、除字典类型外,所有标准对象均可以用于布尔测试 B、空字符串的布尔值是False C、空列表对象的布尔值是False D、值为0的任何数字对象的布尔值是False ?5、下列表达式的值为True的是 A、5+4j>2-3j B、3>2>2 C、(3,2)<('a','b') D、’abc’>‘xyz’ ?6、Python不支持的数据类型有 A、char B、int C、float D、list ?7、关于Python中的复数,下列说法错误的是 A、表示复数的语法是real+imagej B、实部和虚部都是浮点数 C、虚部必须后缀j,且必须是小写 D、方法conjugate返回复数的共轭复数 ?8、关于字符串下列说法错误的是

A、字符应该视为长度为1的字符串 B、字符串以\0标志字符串的结束 C、既可以用单引号,也可以用双引号创建字符串 D、在三引号字符串中可以包含换行回车等特殊字符 ?9、以下不能创建一个字典的语句是 A、dict1={} B、dict2={3:5} C、dict3={[1,2,3]:“uestc”} D、 dict4={(1,2,3):“uestc”} ?10、下列Python语句正确的是 A、min=xifxyx:y C、if(x>y)printx D、whileTrue:pass 二,英文单项选择题(30分) ?() printtype(1/2) A. B. C. D. E. ?() nums=set([1,1,2,3,3,3,4]) printlen(nums) "\nwoow" :woow :r"\nwoow" :\nwoow :woow :nwoow ?() foriinrange(2): printi foriinrange(4,6): printi ,4,,1,2,4,5,,1,4,,1,4,5,6,7,8,,2,4,5,6 ?() importmath ?'Amir','Barry','Chales','Dao'] ? ?if'amir'innames1: ?print1 ?else:

ython面试题及答案

2018 年最新Python 面试题及答案 找工作是每个学习Python 人员的目标,为了更好的找到工作,刷面试题是必不可 少的,了解最新企业招聘试题,可以让你面试更加的顺利。小编整理了一些20XX年最新的Python 面试题,来测测你技术的掌握度吧。 1、Python 里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别) 答:赋值( =),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。 浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变) {1, 完全切片方法;2,工厂函数,如list() ;3,copy 模块的copy() 函数} 深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变) {copy 模块的() 函数} 2、Python 里面match() 和search() 的区别? 答:re 模块中match(pattern,string[,flags]), 检查string 的开头是否与 pattern 匹配。 re 模块中research(pattern,string[,flags]), 在string 搜索pattern 的第一个 匹配值。 >>>print( ‘super', ‘superstition ').span()) (0, 5) >>>print( ‘super', ‘insuperable '))

None >>>print( ‘super', ‘superstition ').span()) (0, 5) >>>print( ‘super ', ‘insuperable ').span()) (2, 7) 3、有没有一个工具可以帮助查找python 的bug 和进行静态的代码分析? 答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码 的bug, 会对代码的复杂度和格式提出警告 Pylint 是另外一个工具可以进行codingstandard 检查 4、简要描述Python 的垃圾回收机制( garbage collection )。 答案 这里能说的很多。你应该提到下面几个主要的点: Python在内存中存储了每个对象的引用计数(referenee count )。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。 偶尔也会出现引用循环( reference cycle )。垃圾回收器会定时寻找这个循环, 并将其回收。举个例子,假设有两个对象o1和02,而且符合==02和==o1这两个 条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。 Python 中使用了某些启发式算法( heuristics )来加速垃圾回收。例如,越晚创建的对象更有可能被回收。对象被创建之后,垃圾回收器会分配它们所属的代 (generation )。每个对象都会被分配一个代,而被分配更年轻代的对象是优先被处理的。

经典Python面试题之数据库和缓存

经典Python面试题之数据库和缓存 1. 列举常见的关系型数据库和非关系型都有那些? 2. MySQL常见数据库引擎及比较? 3. 简述数据三大范式? 4. 什么是事务?MySQL如何支持事务? 5. 简述数据库设计中一对多和多对多的应用场景? 6. 如何基于数据库实现商城商品计数器? 7. 常见SQL(必备) 8. 简述触发器、函数、视图、存储过程? 9. MySQL索引种类 10. 索引在什么情况下遵循最左前缀的规则? 11. 主键和外键的区别? 12. MySQL常见的函数? 13. 列举创建索引但是无法命中索引的8种情况。 14. 如何开启慢日志查询? 15. 数据库导入导出命令(结构+数据)? 16. 数据库优化方案? 17. char和varchar的区别? 18. 简述MySQL的执行计划? 19. 在对name做了唯一索引前提下,简述以下区别: select * from tb where name = ‘Oldboy-Wup eiqi’

select * from tb where name = ‘Oldboy-Wupeiqi’ limit 1 20. 1000w条数据,使用limit offset 分页时,为什么越往后翻越慢?如何解决? 21. 什么是索引合并? 22. 什么是覆盖索引? 23. 简述数据库读写分离? 24. 简述数据库分库分表?(水平、垂直) 25. redis和memcached比较? 26. redis中数据库默认是多少个db 及作用? 27. python操作redis的模块? 28. 如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值? 29. redis如何实现主从复制?以及数据同步机制? 30. redis中的sentinel的作用? 31. 如何实现redis集群? 32. redis中默认有多少个哈希槽? 33. 简述redis的有哪几种持久化策略及比较? 34. 列举redis支持的过期策略。 35. MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据? 36. 写代码,基于redis的列表实现先进先出、后进先出队列、优先级队列。

Python测试开发面试笔试题

Python测试开发面试笔试题 一,中文单项选择题(30分,每个3分) 1.下列哪个语句在Python中是非法的? A、x=y=z=1 B、x=(y=z+1) C、x,y=y,x D、x+=y 2.关于Python内存管理,下列说法错误的是 A、变量不必事先声明 B、变量无须先创建和赋值而直接使用 C、变量无须指定类型 D、可以使用del释放资源 3、下面哪个不是Python合法的标识符 A、int32 B、40XL C、self D、name 4、下列哪种说法是错误的 A、除字典类型外,所有标准对象均可以用于布尔测试 B、空字符串的布尔值是False C、空列表对象的布尔值是False D、值为0的任何数字对象的布尔值是False 5、下列表达式的值为True的是 A、5+4j>2-3j B、3>2>2 C、(3,2)<('a','b') D、’abc’>‘xyz’ 6、Python不支持的数据类型有 A、char B、int C、float D、list 7、关于Python中的复数,下列说法错误的是 A、表示复数的语法是real+image j B、实部和虚部都是浮点数 C、虚部必须后缀j,且必须是小写 D、方法conjugate返回复数的共轭复数 8、关于字符串下列说法错误的是 A、字符应该视为长度为1的字符串 B、字符串以标志字符串的结束 C、既可以用单引号,也可以用双引号创建字符串 D、在三引号字符串中可以包含换行回车等特殊字符

9、以下不能创建一个字典的语句是 A、dict1={} B、dict2={3:5} C、dict3={[1,2,3]:“uestc”} D、dict4={(1,2,3):“uestc”} 10、下列Python语句正确的是 A、min=x if xy?x:y C、if(x>y)print x D、while True:pass 二,英文单项选择题(30分) 1.what gets printed?Assuming python version 2.x() print type(1/2) A. B. C. D. E. 2.What gets printed?() nums=set([1,1,2,3,3,3,4]) print len(nums) A.1 B.2 C.4 D.5 E.7 3.What gets printed?() counter=1 def doLotsOfStuff(): global counter for i in(1,2,3): counter+=1 doLotsOfStuff() print counter A.1 B.3 C.4 D.7 E.none of the above 4.What gets printed?() print r"woow" A.new line then the string:woow B.the text exactly like this:r"woow" C.the text like exactly like this:woow D.the letter r and then newline then the text:woow E.the letter r then the text like this:nwoow 5.Which numbers are printed?()

python常见面试题集

1、MySQL 数据库总结 MySQL 可以建多少个数据库,理论上是没有限制的,每一个数据库可以有上亿的对象,但是一般基于硬件要求、效率问题一般不超过64个, 超过64个会对数据处理速度造成影响,每一张表建议不超过过1亿条数据。 2、Python 话题 1.最受欢迎的Python开源框架1:Django2:Twisted 3:Tornado除了以上三种常用的开源框架外还有: Diesel、Flask、Cubes、Kartograph、Pulsar、Web2py、Falcon、DPark、Buildbot、Zerorpc、Bottle、webpy、Scrapy 3、python常用的web框架1:Django2:Tornado3:Bottle4:web.py 5:web2py 6:Quixote(豆瓣网就是基于该框架开发的) 4、python几种流行框架的比较 https://https://www.sodocs.net/doc/bd8209121.html,/question/1047367767941211939.html 国内著名网基于Python开发的豆瓣、知乎、美团、咕咚网、快玩游戏。 5、Python常用的内置模块 multiprocessing (多进程模块) Queue(多线程编程)os (用于获取环境变量、路径,判断文件等)functools(包含一些常用的函数) collection(集合、常用数据结构算法)re(正则匹配,字符的查询替换等操作) 6、python中re模块的match()和search()函数的区别 re模块中match(pattern,string,[flags]),检查string的开头是否与patter匹配 re模块中search(pattern,string,[flags]),在string搜索pattern的第一个配置值 7、python2和python3的区别 Python2中使用ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3只支持unicode的string Python2中采用相对路径的import Python3采用的是绝对路径的方式进行import python3的缩进更加的严格python3采用的是print函数exec函数python2采用的是print 语句和exec语句

Python面试笔试题

第一题 以下两段代码,运行结束后的结果是什么?是否相同?原因是什么? 代码一 代码二 第二题 4G内存怎么读取一个5G的数据? 第三题 浅述深浅拷贝 答案 第一题 结果不相同 第一段结果为: [{'num':0},{'num':1},{'num':2},{'num':3},{'num':4},{'num':5},{'num':6},{'num':7},{'n um':8},{'num':9}] 第二段结果为: [{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'n um':9},{'num':9}]

字典是可变类型,这里l.append(a)相当于执行了浅拷贝,每改变一次a中num的值,所有a的值都将改变 第二题 实现方法有两种。 实现方法一: 方法一的实现思路是通过生成器,一次读取少量数据,标准答案是根据文件实现,这里给出的例子是咸鱼学习bobby老师的课程时记录的例子,不知道如何使用生成器完成这个需求的朋友可以参考: 实现方法二: 在linux系统下使用split可以分割文件,对于多行文件可以使用按行分割的方式,对于单行的大文件可以采用按文件大小分割。 按文件行数分割:split -l 300 large_file.log smallfile_prefix 按文件大小分割:split -b 10m large_file.log smallfile_prefix 之后再按文件读取即可。 第一题 下图中的打印结果分别是什么?

第二题 Python中静态方法、类方法、成员函数作用是什么? 第三题 说说对缺省参数的理解?* args是什么?** kwargs是什么? 答案 第一题 前三个是True,最后一个会报错。 具前三个为什么输出True,不了解的可以参考下图: 图来源于bobby老师的异步IO编程课件 最后一个为什么报错,我们可以先看下issubclass的用法: issubclass方法用于判断参数 class 是否是类型参数 classinfo 的子类 issubclass(class, classinfo) 参数

python面试题及答案

1. Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。 引用计数增加的情况: 1,一个对象分配一个新名称 2,将其放入一个容器中(如列表、元组或字典) 引用计数减少的情况: 1,使用del语句对对象别名显示的销毁 2,引用超出作用域或被重新赋值 sys.getrefcount( )函数可以获得对象的当前引用计数 多数情况下,引用计数比你猜测得要大得多。对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。 二、垃圾回收 1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。 2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。 三、内存池机制 Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。 1,Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。 2,Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。

3,对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。 2. 什么是lambda函数?它有什么好处? 答:lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 lambda函数:首要用途是指点短小的回调函数 lambda [arguments]:expression >>> a=lambdax,y:x+y >>> a(3,11) 3. Python里面如何实现tuple和list的转换? 答:直接使用tuple和list函数就行了,type()可以判断对象的类型 4. 请写出一段Python代码实现删除一个list里面的重复元素 答: 1,使用set函数,set(list) 2,使用字典函数, >>>a=[1,2,4,2,4,5,6,5,7,8,9,0] >>> b={} >>>b=b.fromkeys(a) >>>c=list(b.keys()) >>> c 5. 编程用sort进行排序,然后从最后一个元素开始判断 a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]

相关主题