Python面试题
以下是python的常见面试题希望对你们有所帮助,
在面试的前提下你必须要有真实力哦!
第一部分 Python基础(67题)
1 Python和Java、PHP、C、C#、C++等其他语言的对比?
优点:
规范的代码,简单,易学,高层语言,跨平台(可移植性强),支持面向对象编程,丰富的库等优点。
提高开发效率:(假设开发某一功能模块)
C – 1000行代码
java – 100行代码
python – 20行代码
缺点:
Python语言非常完善,没有明显的短板和缺点,唯一的缺点就是执行效率慢,这个是解释型语言所通有的,同时这个缺点也将被计算机越来越强大的性能所弥补。
2 简述解释型和编译型编程语言?
3 Python解释器种类以及特点?
4 位和字节的关系?
5 b、B、KB、MB、GB 的关系?
6 请至少列举5个 PEP8 规范(越多越好)
7 求结果:
v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1
v4 = 0 and 2 or 1
v5 = 0 and 2 or 1 or 4
v6 = 0 or Flase and 1
8 ascii、unicode、utf-8、gbk 区别?
9 字节码和机器码的区别?
10 三元运算规则以及应用场景?
11 列举 Python2和Python3的区别?
12 用一行代码实现数值交换:
a = 1
b = 2
13 Python3和Python2中 int 和 long的区别?
14 文件操作时:readline和readlines的区别?
15 列举布尔值为False的常见值?如数字0的布尔值为fasle
16 字符串、列表、字典每个常用的5个方法?
17 lambda表达式格式以及应用场景?
18 pass的作用?
19 *arg和**kwarg作用
20 is和==的区别
21 简述Python的深浅拷贝以及应用场景?
22 Python垃圾回收机制?
23 Python的可变类型和不可变类型?
24 求结果:并说明原因
v = dict.fromkeys([‘k1’,‘k2’],[])
v[‘k1’].append(666)
print(v)
v[‘k1’] = 777
print(v)
25 求结果:
26列举常见的内置函数?
27 filter、map、reduce的作用?
28 写个装饰器测试代码运行的时间?
29 至少列举8个常用模块都有那些?
30 re的match和search区别?
31 什么是正则的贪婪匹配?
32 求结果:
a. [ i % 2 for i in range(10) ]
b. ( i % 2 for i in range(10) )
33求结果:
a. 1 or 2
b. 1 and 2
c. 1 < (2==2)
d. 1 < 2 == 2
34 def func(a,b=[]) 这种写法有什么坑?
35 如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?
36 如何实现[‘1’,’2’,’3’]变成[1,2,3] ?
比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?
37 如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?
38 一行代码实现删除列表中重复的值 ?
39 如何在函数中设置一个全局变量 ?
40 简述global, nonlocal?
41请用代码简答实现stack 。
42 常用字符串格式化哪几种?
43简述 生成器、迭代器、可迭代对象 以及应用场景?
44用Python实现一个二分查找的函数。
45谈谈你对闭包的理解?
46 os和sys模块的作用?
47 如何生成一个随机数?
48如何使用python删除一个文件?
49谈谈你对面向对象的理解?
50 Python面向对象中的继承有什么特点?
51面向对象深度优先和广度优先是什么?
52面向对象中super的作用?
53 经典类和新式类区别?
54列举面向对象中带双下划线的特殊方法,如:new、init
55如何判断是函数还是方法?
56静态方法和类方法区别?
57列举面向对象中的特殊成员以及应用场景
58 代码表示1、2、3、4、5 能组成多少个互不相同且无重复的三位数?
59 什么是反射?以及应用场景?
60 metaclass作用?以及应用场景?
61用尽量多的方法实现单例模式。
62 装饰器的写法以及应用场景。
63 异常处理写法以及如何主动跑出异常(应用场景)
64什么是面向对象的mro?
65 isinstance作用以及应用场景?
66 简述 yield和yield from关键字
67 列出Linux常用命令 不低于10个
第二部分 网络编程和并发(17题)
1简述 OSI 七层协议。
2什么是C/S和B/S架构?
3简述 三次握手、四次挥手的流程。
4什么是arp协议?
5 TCP和UDP的区别?
6 什么是局域网和广域网?
7 为何基于tcp协议的通信比基于udp协议的通信更可靠?
8 什么是socket?简述基于tcp协议的套接字通信流程。
9 什么是粘包?socket中造成粘包的原因是什么? 哪些情况会发生粘包现象?
10 select、poll、epoll 模型的区别?
11 简述 进程、线程、协程的区别 以及应用场景?
12 Python中如何使用线程池和进程池?
13进程之间如何进行通信?
14 什么是并发和并行?
15 进程锁和线程锁的作用?
16解释什么是异步非阻塞?
17 生产者消费者模型应用场景及优势?
第三部分 数据库(16题)
1 列举常见的关系型数据库和非关系型都有那些?
2 MySQL常见数据库引擎及区别?
3 列举mysql有常见的数据类型?
4 什么是事务?MySQL如何支持事务?
5 主键和外键的区别?
6 说明什么是SQL注入?
如何进行mysql优化查询?
如何应对数据的高并发,大量的数据计算?
char和vachar区别?
mysql数据库都有哪些索引? 简单介绍
数据库事务有哪几种特性?
drop、delete与truncate的区别?
13 . 简单介绍MySQL锁类型?
14 . 什么是行锁什么是表锁?
16 . 索引的数据结构?
第四部分 前端(16题)
1谈谈你对http协议的认识。
2谈谈你对websocket协议的认识。
3什么是响应式布局?
4 你曾经使用过哪些前端框架?
5 什么是ajax请求?
6如何在前端实现轮训?
7 如何在前端实现长轮训?
8 Vue.js的优点以及你对于这个框架的简单认识?
9 vue中的路由的拦截器的作用?
10 axios的作用?
11 列举vue的常见指令。
12 简述jsonp及实现原理?
13是什么跨域以及跨域的解决办法 ?
14 列举Http请求中常见的请求方式?
15 列举Http请求中的状态码?
16 列举Http请求中常见的请求头?
第五部分 爬虫(16题)
1 简述 requests模块的作用及基本使用?
2 简述 beautifulsoup模块的作用及基本使用?
3 简述 seleninu模块的作用及基本使用?
简述什么是爬虫以及爬虫基本流程?
4 scrapy框架中各组件的工作流程?
5 在scrapy框架中如何设置代理(两种方法)?
6 scrapy框架中如何实现大文件的下载?
7 scrapy中如何实现限速?
8 scrapy中如何实现暂定爬虫?
9 scrapy中如何进行自定制命令?
10 scrapy中如何实现的记录爬虫的深度?
11 scrapy中的pipelines工作原理?
12 scrapy的pipelines如何丢弃一个item对象?
13 简述scrapy中爬虫中间件和下载中间件的作用?
14 scrapy-redis组件的作用?
15 scrapy-redis组件中如何实现的任务的去重?
16 scrapy-redis的调度器如何实现任务的深度优先和广度优先?
第六部分 flask框架(19题)
1 Flask框架的优势?
2 Flask框架依赖组件?
3 Flask蓝图的作用?
4 列举使用过的Flask第三方组件?
5 简述Flask上下文管理流程?
6 Flask中的闪现的作用?
7 Flask中上下文管理主要涉及到了那些相关的类?并描述类主要作用?
8 为什么要Flask把Local对象中的的值stack 维护成一个列表?
9 Flask中多app应用是怎么完成?
10 在Flask中实现WebSocket需要什么组件?
11 wtforms组件的作用?
12 Flask框架默认session处理机制?
13 解释Flask框架中的Local对象和threading.local对象的区别?
14 Flask中 blinker 是什么?
15 SQLAlchemy中的 session和scoped_session 的区别?
16 SQLAlchemy如何执行原生SQL?
17 flask蓝图是什么?
18 DBUtils模块的作用?
19 以下SQLAlchemy的字段是否正确?如果不正确请更正:
from datetime import datetime
from sqlalchemy.ext.declarative
import declarative_base
from sqlalchemy import Column, Integer, String, DateTime
Base = declarative_base()
class UserInfo(Base):
__tablename__ = 'userinfo'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(64), unique=True)
ctime = Column(DateTime, default=datetime.now())