今天给大家分享的是Python面试题系列的第一篇文章,后续我也会陆续整理Python相关的问题给大家,无论是求职者还是新人都可以通过面试题来考察自己的能力缺陷。

1.Python中pass语句的作用是什么?

pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作。

2.Python是如何进行类型转换的?

Python提供了将变量或值从一种类型转换成另一种类型的内置函数。比如int函数能够将符合数学格式数字型字符串转换成整数。否则,返回错误信息。

3.Python是如何进行内存管理的?

Python引用了一个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存),用于管理对小块内存的申请和释放。

4.dict 的 items() 方法与 iteritems() 方法的不同?

items方法将所有的字典以列表方式返回,其中项在返回时没有特殊的顺序;

iteritems方法有相似的作用,但是返回一个迭代器对象

5.什么是lambda函数?它有什么好处?

编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

Python允许你定义一种单行的小函数。定义lambda函数的形式如下:labmda 参数:表达式lambda函数默认返回表达式的值。你也可以将其赋值给一个变量。lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一个。

6.说明os,sys模块不同,并列举常用的模块方法?

官方解释:

os: This module provides a portable way of usingoperating system dependent functionality.

翻译:提供一种方便的使用操作系统函数的方法。

sys:This module provides access to some variablesused or maintained by the interpreter and to functions that interact stronglywith the interpreter.

翻译:提供访问由解释器使用或维护的变量和在与解释器交互使用到的函数。

os 常用方法

sys 常用方法

7.Python里面如何拷贝一个对象?deepcopy 和 copy的区别?

copy 仅拷贝对象本身,而不拷贝对象中引用的其它对象。

deepcopy 除拷贝对象本身,而且拷贝对象中引用的其它对象。

8.os.path和sys.path的区别?

os.path是module,包含了各种处理长文件名(路径名)的函数。

sys.path是由目录名构成的列表,Python 从中查找扩展模块( Python 源模块, 编译模块,或者二进制扩展). 启动 Python 时,这个列表从根据内建规则,PYTHONPATH 环境变量的内容, 以及注册表( Windows 系统)等进行初始化.

9.re模块中match和search方法的不同?

match() 函数只检查 RE 是否在字符串开始处匹配,而search() 则是扫描整个字符串。

10.解释生成器(generator)与函数的不同,并实现和使用简单generator?

生成器和函数的主要区别在于函数 return avalue,生成器 yield a value同时标记或记忆point of the yield 以便于在下次调用时从标记点恢复执行。 yield 使函数转换成生成器,而生成器反过来又返回迭代器。

11.解释一下 WSGI 和 FastCGI 的关系?

CGI全称是“公共网关接口”(CommonGateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

WSGI的全称为: PythonWeb Server Gateway Interface v1.0 (Python Web 服务器网关接口),

它是 Python 应用程序和 WEB 服务器之间的一种接口。

它的作用,类似于FCGI 或 FASTCGI 之类的协议的作用。

WSGI 的目标,是要建立一个简单的普遍适用的服务器与 WEB 框架之间的接口。

Flup就是使用 Python 语言对 WSGI 的一种实现,是可以用于 Python 的应用开发中的一种工具或者说是一种库。

Spawn-fcgi是一个小程序,这个程序的作用是管理fast-cgi进程,那么管理wsgi进程也是没有问题的,功能和php-fpm类似。

故,简单地说,WSGI和FastCGI都是一种CGI,用于连接WEB服务器与应用程序,而WSGI专指Python应用程序。而flup是WSGI的一种实现,Spawn-fcgi是用于管理flup进程的一个工具,可以启动多个wsgi进程,并管理它们。

12.解释一下 Django 和 Tornado 的关系、差别

Django源自一个在线新闻 Web站点,于 2005 年以开源的形式被释放出来。

Django 框架的核心组件有:

用于创建模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统等等

它鼓励快速开发,并遵循MVC设计。Django遵守 BSD版权,最新发行版本是Django

1.4,于2012年03月23日发布.Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not RepeatYourself)原则。

Tornado是 FriendFeed使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像 web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具和优化。

Tornado 和现在的主流 Web 服务器框架(包括大多数Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题。

13.解释下django-debug-toolbar的使用

使用django开发站点时,可以使用django-debug-toolbar来进行调试。在settings.py中添加’debug_toolbar.middleware.DebugToolbarMiddleware’到项目的MIDDLEWARE_CLASSES 内。

14.解释下Django使用redis缓存服务器

为了能在Django中使用redis,还需要安装redis for Django的插件。然后在Django的settings中配置了。现在连接和配置都已经完成了,接下来是一个简单的例子:

15.如何进行Django单元测试

Django的单元测试使用Python的unittest模块,这个模块使用基于类的方法来定义测试。类名为django.test.TestCase,继承于Python的unittest.TestCase。

执行目录下所有的测试(所有的test*.py文件):运行测试的时候,测试程序会在所有以test开头的文件中查找所有的test cases(inittest.TestCase的子类),自动建立测试集然后运行测试。

$ Python manage.py test

执行animals项目下tests包里的测试:

$ Python manage.py testanimals.tests

执行animals项目里的test测试:

$ Python manage.py testanimals

单独执行某个test case:

$ Python manage.py testanimals.tests.AnimalTestCase

单独执行某个测试方法:

$ Python manage.py testanimals.tests.AnimalTestCase.test_animals_can_speak

为测试文件提供路径:

$ Python manage.py testanimals/

通配测试文件名:

$ Python manage.py test--pattern="tests_*.py"

启用warnings提醒:

$ Python -Wall manage.py test

16.解释下Http协议

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

HTTP协议的主要特点可概括如下:

1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

17.解释下Http请求头和常见响应状态码

Accept:指浏览器或其他客户可以接爱的MIME文件格式。可以根据它判断并返回适当的文件格式。

Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8859-1.

Accept-Language:指出浏览器可以接受的语言种类,如en或en-us,指英语。

Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。

Cache-Control:设置关于请求被代理服务器存储的相关选项。一般用不到。

Connection:用来告诉服务器是否可以维持固定的HTTP连接。HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接。

Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType()方法取得。

Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

1xx:指示信息–表示请求已接收,继续处理

2xx:成功–表示请求已被成功接收、理解、接受

3xx:重定向–要完成请求必须进行更进一步的操作

4xx:客户端错误–请求有语法错误或请求无法实现

5xx:服务器端错误–服务器未能实现合法的请求

常见状态代码、状态描述、说明:

200 OK //客户端请求成功

400 Bad Request //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden //服务器收到请求,但是拒绝提供服务

404 Not Found //请求资源不存在,eg:输入了错误的URL

500 Internal Server Error //服务器发生不可预期的错误

503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

eg:HTTP/1.1 200 OK (CRLF)

作者:地球的外星人君

来源:https://zhuanlan.zhihu.com/p/28122476

python面试-马哥教育官网-专业Linux培训班,Python培训机构相关推荐

  1. python类型转换-马哥教育官网-专业Linux培训班,Python培训机构

    今天马哥教育要跟大家分享的文章是类型转换是什么?我们要跟大家探讨的是Python课程中类型转换的相关内容,比如将小数转化为小数如何表达?整数转化为字符如何表达? Python的几种最基本的数据类型,我 ...

  2. 英语专业有必要学python吗-马哥教育官网-专业Linux培训班,Python培训机构

    今天给大家分享一篇 0x00 前言 你想知道背单词软件有大概多少人注册第一天都没有背完嘛? 你想知道背单词软件这么火,这么多人在使用,真的有多少人真的在背诵嘛? 别急,Python程序员用数据给你说话 ...

  3. python人工智能-马哥教育官网-专业Linux培训班,Python培训机构

    未来的社会将是人工智能的天下,现在互联网巨头公司在人工智能领域的投入明显增大,都力争做人工智能时代的"带头大哥".Python作为一门编程语言,其魅力远超c#,jave,c,c++ ...

  4. python项目-马哥教育官网-专业Linux培训班,Python培训机构

    文是 Mybridge 挑选的 10 个 Python 开源项目,Github 平均star 2135,希望你能够喜欢~~ ▌Rank 1:Requests-HTML v0.9(7385 stars ...

  5. python训练营免费领取-马哥教育官网-专业Linux培训班,Python培训机构

    [课程第一天] [课程第二天] [课程第三天] [课程第四天] [课程第五天] [课程第六天] [课程第七天] 三.学习的具体平台和方式 1.学习的平台 以录播视频和文字版本为主,QQ社群资深工程师答 ...

  6. 自动化专业学python有用吗-马哥教育官网-专业Linux培训班,Python培训机构

    今天小编要来说一下Python自动化的学习思路, 对于刚刚进入的测试行业的人来说,未来该怎么样朝着自动化方向发展,即使接触到了自动化测试,又该从何下手去学呢? 简单的说, 做测试做的好,会了接口,会了 ...

  7. python是什么-马哥教育官网-专业Linux培训班,Python培训机构

    今天小编要跟大家分享的文章是Python中的列表是什么?熟悉Python的小伙伴们都知道列表的定义比较简单,它由一系列按特定顺序排列的元素组成. 你可以创建包含字母表中所有字母.数字0~9或所有家庭成 ...

  8. python培训班骗局-马哥教育官网-专业Linux培训班,Python培训机构

    问题的起源 早些时候使用with实现了一版全局进程锁,希望实现以下效果: 全局进程锁本身不用多说,大部分都依靠外部的缓存来实现的,redis上用的是setnx,有时候根据需要加上缓存击穿问题.随机延后 ...

  9. 济南python工资一般多少钱-马哥教育官网-专业Linux培训班,Python培训机构

    主角:李学员岗位:K1实施工程师地区:济南 薪资:8.5K [注:马哥教育学员喜讯旨在通过一小部分学员自主的.真实的分享,将学习方法,学习经验,学习成果分享给正在或即将进入马哥教育学习课程的小伙伴们! ...

最新文章

  1. Linux Shell脚本攻略学习总结:二
  2. Python NumPy-快速处理数据
  3. MacOS Big Sur软件打开“您没有权限打开应用程序”解决办法
  4. mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法
  5. CAP 2.6 版本发布通告
  6. mysql导入的excel更新_excel导入数据库,存在则更新不存在添加
  7. LeetCode 278. First Bad Version
  8. unity怎么bake地形上的植被_“烧烤”是quot;barbecuequot;,那“烤串”的英语怎么说?一定要看看!...
  9. java一周实训的心得体会_java实习心得体会
  10. Web前端基础学习——HTML5基础
  11. 吉林大学操作系统上机(实验二:处理机调度——实时调度算法EDF和RMS)
  12. 金蝶登录服务器不显示名称,金蝶云服务器如何登陆不了
  13. docker如何使用阿里加速器的方法
  14. 稳压二极管和TVS二极管的区别
  15. Python黑白转换程序
  16. 【数据库】聚簇索引与非聚簇索引
  17. PHP与MySQL外文文献译文和原文_计算机外文翻译---基于PHP和MYSQL的网站设计和实现...
  18. GSMArena魅族mx四核评测全文|去除英文|
  19. ABAQUS学习之路
  20. Foobar 是什么意思?

热门文章

  1. 倒排列表压缩算法汇总——分区Elias-Fano编码貌似是最牛叉的啊!
  2. 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据...
  3. Spark任务提交底层原理
  4. Java——线程安全的集合
  5. Mysql8.0.16 only_full_group_by
  6. 【Clique Problem】
  7. 《PRML_Translation》pdf
  8. 解决git无法clone地址为https的库
  9. 【Raspberry Pi】定时运行python程序读温湿度传感器数据发邮件
  10. 数据特殊显示``````