python基础面试题整理

Python基础语法相关

一、Python中的pass语句的作用是什么?

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

二、Python是如何进行类型转换的?

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

三、Python是如何进行内存管理的?

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

四、dict的items()方法与iteritems()方法的不同

 items方法将所有的字典以列表方式放回,其中项在放回时没有特殊的顺序;
 iteritems方法有相似的作用,但是反回一个迭代器对象。

五、什么是lambda函数?它有什么好处?

 编程中提到的lambda表达式,通常是在需要一个函数,但是又想费神去命名一个函数的场合下使用,也就是指匿名函数。
 Python允许你定义一种单行的小函数。定义lambda函数的形式:lambda 参数:表达式lambda函数默认返回表达式的值。你也可以将其赋值给一个变量。lambd函数可以接受任意参数,包括可选参数,但是表达式只有一个。

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

os:提供一种方便的使用操作系统函数的方法。
sys:提供访问由解释器使用或维护的变量和在与解释器交互使用到的函数。

os常用的方法

顺序 方法
1 os.remove()删除文件
2 os.rename()重命名文件
3 os.walk()生成目录树下的所有文件名
4 os.chdir()改变目录
5 os.mkdir/makedirs创建目录/多层目录
6 os.redir/removedirs删除目录/多层目录
7 os.listdir()列出指定目录的文件
8 os.getcwd()取得当前工作目录
9 os.chmod()改变目录权限
10 os.path.basename()去掉目录路径,返回文件名
11 os.path.join()将分离的各部分组合成一个路径名
12 os.path.split()返回(dirname(),basename())元组
13 os.path.splitext()(放回filename,extension)元组
14 os.path.splitext()(放回filename,extension)元组
15 os.path.getatime\ctime\mtime分别放回最近访问,创建,修改时间
16 os.path.getsize()返回文件大小
17 os.path.exists()是否存在
18 os.path.isabs()是否为绝对路径
19 os.path.isdir()是否为目录
20 os.path.isfile()是否为目录
30 os.path.isfile()是否为文件

sys常用的方法

顺序 方法
1 sys.argv()命令行参数List,第一个元素是程序本身路径
2 sys.modules.keys()返回所有已经导入的模块列表
3 sys.exc_info()获取当前正在处理的异常类,exc_type,exc_value,exc_traceback当前处理的异常详细信息
4 sys.exit()退出程序,正常退出时exit(0)
5 sys.hexversion获取Python解释程序的版本值,16进制格式如下:0x020403F0
6 sys.version获取Python解释程序的版本信息
7 sys.maxint 最大值
8 sys.maxunicode最大Unicode值
9 sys.modules返回系统导入的模块字段,key是模块名,value是模块
10 sys.path返回模块的搜索路径,初始化时使用PythonPATH环境变量的值
11 sys.platform返回操作系统平台名称
12 sys.stdout标准输出
13 sys.stdin标准输入
14 sys.stderr错误输出
15 sys.exc_clear()用来清除当前线程所出现的当前的或最近的错误信息
16 sys.exec_prefix反回平台独立的python文件安装的位置
17 sys.byteorder本地字节规则的指示器,big-endian平台的值是big,little-endian平台的值是little
18 sys.copyright记录Python版权相关的东西
19 sys.api_version解释器的C的API版本
20 sys.version_info

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

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

八、os.path和sys.path的区别?

os.path是module,包含了各种处理长文件名(路径名)的函数。
sys.path是由目录名构成的列表,Python从中查找扩展模块(Python源模块,编译模块,或者二进制扩展).启动Python时,这个列表从根据内建规则,PYTHONPATH环境变量的内容,,以及注册表(windows系统)等进行初始化。

九、re模块中match和search方法的不同?

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

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

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

十一、Python Web相关

解释一下 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进程,并管理它们。

十二、解释一下 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 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题。

十三、解释下django-debug-toolbar的使用

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

十四、解释下Django使用redis缓存服务器

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

from django.conf import settings
from django.core.cache import cache
#read cache user id
def read_from_cache(self, user_name):
    key = 'user_id_of_'+user_name
    value = cache.get(key)
    if value == None:
        data = None
    else:
        data = json.loads(value)
    return data
#write cache user id
def write_to_cache(self, user_name):
    key = 'user_id_of_'+user_name
    cache.set(key, json.dumps(user_name), settings.NEVER_REDIS_TIMEOUT)

十五、执行目录下所有的测试(所有的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

十六、解释下Http协议

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

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

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

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

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

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

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

十八、解释下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)

到此这篇关于python基础面试题整理的文章就介绍到这了,更多相关python基础面试题内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 值得收藏的10道python 面试题

    Q1:PEP8是什么?Python之禅(import this)是什么? 这题是考察你对编码规范的认识,无论是自己写代码还是在团队中写代码,了解并遵循代码规范是很基础的要求.企业中在提交代码后都会有对应的工具来对代码进行检查,比如 pep8.flake8.pylint 等,但是 PEP 8 是什么一定要了解. 即 Style Guide for Python Code(Python编码风格指南).如果面试时不知道什么是 PEP 8 ,那聊起来想必不会很愉快.速战速决的面试,如果不是你把面试官"秒

  • python面试题之列表声明实例分析

    本文实例讲述了python面试题之列表声明.分享给大家供大家参考,具体如下: 下面程序输出的结果为? val = [['a']*2]*2 print val val[0][1]='b' print val 答案为: [['a', 'a'], ['a', 'a']] [['a', 'b'], ['a', 'b']] 而不是 [['a', 'a'], ['a', 'a']] [['a', 'b'], ['a', 'a']] 请看下面的例子: val = ['a']*2 #或者直接声明val = ['

  • python面试题Python2.x和Python3.x的区别

    下面看下python2.x和python3.x的区别 1.大环境不同 python2.x:源码重复,不规范 python3.x:整合源码,更清晰优美简单 2.默认编码不同 python2.x:默认编码ASCII编码 python3.x:默认编码UTF-8 3.python3.x没有长整型 python2.x:有长整型long python3.x:long整数类型被废弃,统一为int 4.打印方式不同 python2.x:print语句,print空格+打印内容 python3.x:print()

  • Python自动化测试笔试面试题精选

    前言 随着行业的发展,编程能力逐渐成为软件测试从业人员的一项基本能力.因此在笔试和面试中常常会有一定量的编码题,主要考察以下几点. 基本编码能力及思维逻辑 基本数据结构(顺序表.链表.队列.栈.二叉树) 基本算法(排序.查找.递归)及时间复杂度 除基本算法之外,笔试面试中经常会考察以下三种思想: 哈希 递归 分治 哈希 哈希即Python中的映射类型,字典和集合,键值唯一,查找效率高,序列(列表.元祖.字符串)的元素查找时间复杂度是O(n),而字典和集合的查找只需要O(1). 因此哈希在列表问题

  • python3字符串输出常见面试题总结

    考察对于知识的理解,除了实际的代码运用,还有一种方法就是问答类的题型.不同于普通的概念叙述,小编认为即使是面试题也会带有一些数学题目的影响,不知道大家有没有想过,如果面试题是字符串方面的我们该如何作答呢?一些小伙伴也要迎来寒假的实习,小编整理了这方面的题目,我们来看看有哪些面试题. 1.将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. x=input("") x=x[::-1] #列表切片,逆序输出 print(x) 2.字符串的输入输出处理. n=int(i

  • Python工程师必考的6个经典面试题

    第1题:Python里面如何实现tuple和list的转换? 函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变,排序也不变 list转为tuple: temp_list = [1,2,3,4,5] 将temp_list进行强制转换:tuple(temp_list) 确定是否转换成功:print(type(temp_list)) 函数list(seq)可以把所有的序列和可迭代的对象转换成一个list,元素不变,排序也不变 tuple转为list:

  • Python笔试面试题小结

    1.字符串处理 将字符串中的数字替换成其两倍的值,例如: 修改前:"AS7G123m (d)F77k" 修改后:"AS14G246m (d)F154k" 个人思路:先用正则表达式将其中的数字匹配出来进行乘2操作,然后将字符串根据其中的数字进行切割,得到一个字符列表,最终将乘以2后的数字和原有的字符进行拼接得到最后的结果.(我脑子比较笨,想不到别的,如果您有更好更简便的方法,希望可以分享一下!) import re text = "AS7G123m (d)F

  • 基于Python实现扑克牌面试题

    这篇文章主要介绍了基于Python实现扑克牌面试题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 据说是腾讯的面试题,以下是要求: 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌.根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组. 实现思路: 1.首先定义一个2维数组,代表最后桌上的牌堆排列情况.内部数组flist[i][0], flist[i][1]分别表示牌堆的排序和牌面的序号. 2.分n为奇数或偶数2种情况,用

  • python基础面试题整理

    Python基础语法相关 一.Python中的pass语句的作用是什么? pass语句什么也不做,一般作为占位符 或者创建站位程序,pass语句不会不执行任何操作. 二.Python是如何进行类型转换的? python提供了将变量或值从一种类型转换为另一种类型的内置函数.比如int函数能将符合数学格式数字型字符串转换为整型.否则,返回错误信息. 三.Python是如何进行内存管理的? Python引用了一个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存)

  • Python基础-特殊方法整理详解

    目录 1.概述 2.常用特殊方法及实现 2.1 _len__() 2.2 __str__() 2.3 __iter__() 2.4 __getitem__() 2.5 __new__() 2.6 使用__new__()实现单例模式 2.7 __call__() 2.8__enter__() 2.9 __add__() 2.10 __del__() 1.概述 python中特殊方法(魔术方法)是被python解释器调用的,我们自己不需要调用它们,我们统一使用内置函数来使用.例如:特殊方法__len

  • JAVA基础面试题整理

    1.Java中final.finally.finalize的区别 简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等. 2.error和exception有什么区别? Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件

  • 非常全面的Python常见基础面试题及答案

    目录 Python 1 Python垃圾回收机制是什么 2 元组和列表的区别 3 元组可以作为字典的key? 4 进程 线程 协程 4.1 进程 4.2 线程 4.3 协程 5 赋值.浅拷贝和深拷贝 6 GIL 7 列表去重 8 最常用的排序算法及其复杂度 8.1 冒泡排序 9 闭包 10 with 11 实例方法 静态方法 12 迭代器和生成器 12.1 迭代器 12.2 生成器 13 匿名函数 14 map reduce filter 14.1 map 14.2 reduce 14.3 fi

  • python中pyplot基础图标函数整理

    python中画图的库有很多,Matplotlib画2D图像是个不错的选择.Matplotlib.pyplot中有很多种函数,今天就为大家简单介绍. 绘制坐标图:plt.plot(x,y,fmt,-) 箱形图:plt.boxplot(data,notch,position) 条形图:plt.bar(left,height,width,bottom) 极坐标图:plt.polar(theta,r) 饼图:plt.pie(data,explode) 功率谱密度图:plt.psd(x,NFFT=256

  • Python基础之常用库常用方法整理

    一.os __file__ 获取当前运行的.py文件所在的路径(D:\PycharmProjects\My_WEB_UI\ConfigFiles\ConfigPath.py) os.path.dirname(__file__) 上面正在运行的.py文件的上一级(D:\PycharmProjects\My_WEB_UI\ConfigFiles) os.path.join(xxx,u'ConfigFiles\elementLocation.ini') 在已获得的路径xxx上加上\ConfigFile

  • Java多线程和并发基础面试题(问答形式)

    本文帮助大家掌握Java多线程基础知识来对应日后碰到的问题,具体内容如下 一.Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进程.线程可以被称为轻量级进程.线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源. 2. 多线程编程的好处是什么? 在多线程程序中,多个线程被并发的执行以提高程序的效率,C

  • Python基础语言学习笔记总结(精华)

    以下是Python基础学习内容的学习笔记的全部内容,非常的详细,如果你对Python语言感兴趣,并且针对性的系统学习一下基础语言知识,下面的内容能够很好的满足你的需求,如果感觉不错,就收藏以后慢慢跟着学习吧. 一.变量赋值及命名规则 ① 声明一个变量及赋值 #!/usr/bin/env python # -*- coding:utf-8 -*- # _author_soloLi name1="solo" name2=name1 print(name1,name2) name1 = &q

  • python正则表达式面试题解答

    三道python正则表达式面试题,具体如下 1.去除以下html文件中的标签,只显示文本信息. <div> <p>岗位职责:</p> <p>完成推荐算法.数据统计.接口.后台等服务器端相关工作</p> <p><br></p> <p>必备要求:</p> <p>良好的自我驱动力和职业素养,工作积极主动.结果导向</p> <p> <br><

  • Vue常见面试题整理【值得收藏】

    看看面试题,只是为了查漏补缺,看看自己那些方面还不懂.切记不要以为背了面试题,就万事大吉了,最好是理解背后的原理,这样面试的时候才能侃侃而谈.不然,稍微有水平的面试官一看就能看出,是否有真才实学还是刚好背中了这道面试题.(都是一些基础的vue面试题,大神不用浪费时间往下看) 一.对于MVVM的理解? MVVM是Model-View-ViewModel的缩写. Model :代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑. View :代表UI组件,它负责将数据模型转化成UI展现出

随机推荐