很多人学完python在问面试笔试该怎么准备,因此小编总结并精选了近200年的python面试和笔试题,总共分为十个门类100多道python面试题,愿各位小伙伴在寻找工作的同时更加顺利
**
关注公众号【一行数据】回复【面试】可以收到所有题目的答案哦
**
一、python基础知识
1.1 列出5个python标准库
os:提供了不少与操作系统相关联的函数
sys: 通常用于命令行参数
re: 正则匹配
math: 数学运算
datetime:处理日期时间
1.2 python2和python3的range(100)的区别
python2返回列表,python3返回迭代器,节约内存
1.3python2和python3区别?列举5个
1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print(‘hi’)
Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print ‘hi’
2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存
3、python2中使用ascii编码,python3中使用utf-8编码
4、python2中unicode表示字符串序列,str表示字节序列python3中str表示字符串序列,byte表示字节序列
5、python2中为正常显示中文,引入coding声明,python3中不需要
6、python2中是raw_input()函数,python3中是input()函数
1.4 请列出你会的任意一种统计图(条形图、折线图等)绘制的开源库,第三方也行
pychart、matplotlib
1.5 提高python运行效率的方法
1、使用生成器,因为可以节约大量内存
2、循环代码优化,避免过多重复代码的执行
3、核心模块用Cython PyPy等,提高效率
4、多进程、多线程、协程
5、多个if elif条件判断,可以把最有可能先发生的条件放到前面写,这样可以减少程序判断的次数,提高效率
1.6 遇到bug如何处理
1、细节上的错误,通过print()打印,能执行到print()说明一般上面的代码没有问题,分段检测程序是否有问题,如果是js的话可以alert或console.log
2、如果涉及一些第三方框架,会去查官方文档或者一些技术博客。
3、对于bug的管理与归类总结,一般测试将测试出的bug用teambin等bug管理工具进行记录,然后我们会一条一条进行修改,修改的过程也是理解业务逻辑和提高自己编程逻辑缜密性的方法,我也都会收藏做一些笔记记录。
4、导包问题、城市定位多音字造成的显示错误问题
1.7 简述python引用计数机制
python垃圾回收主要以引用计数为主,标记-清除和分代清除为辅的机制,其中标记-清除和分代回收主要是为了处理循环引用的难题。
引用计数算法
当有1个变量保存了对象的引用时,此对象的引用计数就会加1
当使用del删除变量指向的对象时,如果对象的引用计数不为1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除
1.8 列举3条以上PEP8编码规范
1、顶级定义之间空两行,比如函数或者类定义。
2、方法定义、类定义与第一个方法之间,都应该空一行
3、三引号进行注释
4、使用Pycharm、Eclipse一般使用4个空格来缩进代码
二、python数据类型
2.1 python内建数据类型有哪些
2.2 a=(1,)b=(1),c=(“1”) 分别是什么类型的数据?
2.3 python传参数是传值还是传址?
2.4 列出python中可变数据类型和不可变数据类型,并简述原理
2.5 python中交换两个数值
2.6 生成0-100的随机数
2.7 一行代码实现1–100之和
2.8 保留两位小数
2.9 a=“张明 98分”,用re.sub,将98替换为100
2.10 单引号、双引号、三引号用法
2.11 字符串转化大小写
2.12 用两种方法去空格 str = " what the problem"
2.13 避免转义给字符串加哪个字母表示原始字符串?
a="hello"和b="你好"编码成bytes类型
2.14 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]
2.15 [1,2,3]+[4,5,6]的结果是多少?
2.16 list=[2,3,5,4,9,6],从小到大排序,不许用sort,输出[2,3,4,5,6,9]
2.17 python中生成随机整数、随机小数、0–1之间小数方法
2.18 s = “ajldjlajfdljfddd”,去重并从小到大排序输出"adfjl"
2.19 x=“abc”,y=“def”,z=[“d”,“e”,“f”],分别求出x.join(y)和x.join(z)返回的结果
2.20 a = " hehheh ",去除收尾空格
2.21 1. python实现列表去重的方法(多种方法)
2.22 举例sort和sorted对列表排序,list=[0,-1,3,-10,5,9]
2.23 对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函数从小到大排序
2.24 使用lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为[0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小
2.25 列表推导式求列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2.26 两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]
2.27 [[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]
2.28 请将[i for i in range(3)]改成生成器
2.29 列表嵌套元组,分别按字母和数字排序foo = [(“zs”,19),(“ll”,54),(“wa”,17),(“df”,23)]
2.30 列表嵌套列表排序,年龄数字相同怎么办?foo = [(“zs”,19),(“ll”,54),(“wa”,17),(“df”,23),(“xf”,23)]
2.31根据字符串长度排序
2.32 字典如何删除键和合并两个字典
2.33 字典根据键从小到大排序
2.34列表嵌套字典的排序,分别根据年龄和姓名排序foo = [{“name”:“zs”,“age”:19},{“name”:“ll”,“age”:54},{“name”:“wa”,“age”:17},{“name”:“df”,“age”:23}]
2.35 使用pop和del删除字典中的"name"字段,dic={“name”:“zs”,“age”:18}
2.36 python字典和json字符串相互转化方法
2.37 求三个方法打印结果
2.38 python中什么元素为假?
2.39 is和==有什么区别?
三、python函数和方法
3.1 如何在一个函数内部修改全局变量
3.2 递归求和
3.3 举例说明zip()函数用法
3.4 利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
3.6 filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3.7 fun(*args,kwargs)中的 * args, kwargs什么意思?
3.8 用lambda函数实现两个数相乘
3.9 python中断言方法举例
3.10 写一段自定义异常代码
3.11 举例说明异常模块中try except else finally的相关意义
3.12 IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什么异常
3.13 python中copy和deepcopy区别
3.14 简述any()和all()方法
四、python面向对象
4.1 一句话解释什么样的语言能够用装饰器?
4.2 简述面向对象中__new__和__init__区别
4.3 列出几种魔法方法并简要介绍用途
4.4 写一个单例模式
五、python文件操作
5.1 简述with方法打开处理文件帮我我们做了什么?
5.2 用python删除文件和用linux命令删除文件方法
5.3 log日志中,我们需要用时间戳记录error,warning等的发生时间,请用datetime模块打印当前时间戳 “2018-04-01 11:38:54”
5.4 r、r+、rb、rb+文件打开模式区别
六、python多任务
6.1 谈下python的GIL
6.2 简述多线程、多进程
6.3 简述乐观锁和悲观锁
七、python网络
7.1 列出常见的状态码和意义
7.2 分别从前端、后端、数据库阐述web项目的性能优化
7.3 简述同源策略
7.4 简述cookie和session的区别
7.5 常见的网络传输协议
7.6 HTTP请求中get和post区别
八、正则表达式
8.1
我要吃鸡
,用正则匹配出标签里面的内容(“我要吃鸡”),其中class的类名是不确定的
8.2 正则表达式匹配中,(.)和(.?)匹配区别?
8.3 字符串a = “not 404 found 张三 99 深圳”,每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"
8.4 正则re.complie作用
8.5 正则匹配,匹配日期2018-03-20
8.6 s=“info:xiaoZhang 33 shandong”,用正则切分字符串输出[‘info’, ‘xiaoZhang’, ‘33’, ‘shandong’]
8.7 正则匹配以163.com结尾的邮箱
8.8 正则匹配不是以4和7结尾的手机号
8.9 正则表达式匹配第一个URL
8.10 正则匹配中文
九、数据库
9.1 数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复行,请写sql语句
9.2 数据库优化查询方法
9.3 简述Django的orm
9.4 列出常见MYSQL数据存储引擎
9.5 MyISAM 与 InnoDB 区别:
9.6 写5条常用sql语句
9.7 简述mysql和redis区别
9.8 举例说明SQL注入和解决办法
9.9 正则表达式匹配出网址
十、Linux知识
10.1 10个Linux常用命令
10.2 Linux命令重定向 > 和 >>
参考:
https://mp.weixin.qq.com/s/SyC_LLQL8AU3i6wYNlOdNQ
https://github.com/kenwoodjw/python_interview_question