美文网首页
python面试

python面试

作者: Eazow | 来源:发表于2018-07-19 11:24 被阅读5次

第一部分 Python基础篇(80题)


1. 为什么学习Python?

Life is short, i use python

2. 通过什么途径学习的Python?

因为项目的原因学习

3. Python和Java、PHP、C、C#、C++等其他语言的对比?

python易学易用

4. 简述解释型和编译型编程语言?
  • 编译型语言:
    编译性的语言指使用专门的编译器、针对特定平台(操作系统)将某种高级语言源代码一次性“翻译”成该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式,这个转换过程称为编译(Compile)。编译生成的可执行程序可以以脱离开发环境,在特定的平台上独立运行。
    有些程序在编译结束之后,还可能需要对其他编译好的目标代码进行链接,即组装两个以上的目标代码模块生成最终的可执行程序,通过这种方式实现低层次的代码复用。
    因为编译型语言是一次性的编译成机器码,所以可以脱离开发环境独立运行,而且通常运行效率较高;但因为编译性语言的程序被编译成特定平台上的机器码,因此编译生成的可执行程序通常无法移植到其他平台上运行;如果需要移植,则必须将源代码复制到特定的平台上,针对特定的平台进行修改,至少也需要采用特定平台上的编译器重新编译。
    比如C、C++等属于编译型语言。

  • 解释型语言:
    解释型语言是指使用专门的解释器对源程序进行逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进行整体的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合在一起同时完成。
    可以这样认为:每次执行解释型语言的程序都需要进行一次编译,因此解释型语言的程序运行效率通常较低,而且它不能脱离解释器独立运行。
    但解释性语言有一个优势:跨平台比较容易,只需提供特定平台的解释器即可,每个特定平台上的解释器负责将源程序解释成特定平台的机器指令即可。解释性语言可以方便的实现源程序的移植,但这是以牺牲程序执行效率为代价的。
    比如Java、Ruby、Python等属于解释型语言。

5. Python解释器种类以及特点?
  1. cpython
  2. pypy
  3. jython
6. 位和字节的关系?

1Byte = 8bit

7. b、B、KB、MB、GB 的关系?
1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
8. 请至少列举5个 PEP8 规范
# 与左括号对齐
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

# 空格是首选的缩进方式

# 所有行的最大字符数为79,通过反斜杠续行
with open('/path/to/some/file/you/want/to/read') as file_1, \
     open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read())

# 推荐
import os
import sys
# 不推荐
import os, sys

# 操作符间空格
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
9. 通过代码实现如下转换:

二进制转换成十进制:v = “0b1111011”
十进制转换成二进制:v = 18
八进制转换成十进制:v = “011”
十进制转换成八进制:v = 30
十六进制转换成十进制:v = “0x12”
十进制转换成十六进制:v = 87

10. 请编写一个函数实现将IP地址转换成一个整数。
如 10.3.9.12 转换规则为:
 10 00001010      3 00000011      9 00001001     12 00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
11. python递归的最大层数?

根据代码测试大概是998,但是次数可以设置

sys.setrecursionlimit(limit)

Set the maximum depth of the Python interpreter stack to limit. This limit prevents 
infinite recursion from causing an overflow of the C stack and crashing Python.

The highest possible limit is platform-dependent. A user may need to set the limit 
higher when she has a program that requires deep recursion and a platform that 
supports a higher limit. 
This should be done with care, because a too-high limit can lead to a crash.
12. 求结果:
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 False and 1

and和or为逻辑运算符

1
3
0
1
1
False
13. ascii、unicode、utf-8、gbk区别?

ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1byte代表一个字符

Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间

utf-8 为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来的

gbk是中文的字符编码,用2个字节代表一个字符

14. 字节码和机器码的区别?

字节码是一种中间状态(中间码)的二进制代码(文件),需要直译器转译后才能成为机器码。
机器码是电脑CPU直接读取运行的机器指令,运行速度最快。

15. 三元运算规则以及应用场景?
result = value1 if condition else value2
16. 列举 Python2和Python3的区别?

print

17. 用一行代码实现数值交换:
a = 1  
b = 2
a, b = b, a
18. Python3和Python2中 int 和 long的区别?
19. xrange和range的区别?

都在循环时使用,xrange内存性能更好。
for i in range(0, 20): for i in xrange(0, 20): What is the difference between range and xrange functions in Python 2.X? range creates a list, so if you do range(1, 10000000) it creates a list in memory with 9999999 elements. xrange is a sequence object that evaluates lazily.

http://stackoverflow.com/questions/94935/what-is-the-difference-between-range-and-xrange-functions-in-python-2-x

20. 文件操作时:xreadlines和readlines的区别?
  • readlines() >> returns a list containing all the lines in the file
  • xreadlines() >> Returns a generator to loop over every single line in the file
21. 列举布尔值为False的常见值?
22. 字符串、列表、元组、字典每个常用的5个方法?
23. lambda表达式格式以及应用场景?
24. pass的作用?

占位符,保证格式完整

25. *arg和**kwarg作用

可变参数

26. is和==的区别

is: 地址比较
==: 数值比较

27. 简述Python的深浅拷贝以及应用场景?
28. Python垃圾回收机制?

Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。
在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存。

29. Python的可变类型和不可变类型?
30. 求结果:
v = dict.fromkeys(['k1','k2'],[])
v[‘k1’].append(666)
print(v)
v[‘k1’] = 777
print(v)
31. 求结果:
def num():
    return [lambda x: i*x for i in range(4)]

print([m(2) for m in num()])
32. 列举常见的内置函数?
33. filter、map、reduce的作用?
34. 一行代码实现9*9乘法表
35. 如何安装第三方模块?以及用过哪些第三方模块?
36. 至少列举8个常用模块都有那些?

time, datetime, os, sys, math, json, re, random

37. re的match和search区别?
38. 什么是正则的贪婪匹配?
39. 求结果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )
40. 求结果: a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2
41. def func(a,b=[]) 这种写法有什么坑?
42. 如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?
43. 如何实现[‘1’,’2’,’3’]变成[1,2,3] ?
44. 比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?
45. 如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?
46. 一行代码实现删除列表中重复的值 ?
47. 如何在函数中设置一个全局变量 ?
48. logging模块的作用?以及应用场景?
49. 请用代码简答实现stack
50. 常用字符串格式化哪几种?
51. 简述 生成器、迭代器、可迭代对象 以及应用场景?
52. 用Python实现一个二分查找的函数。
53. 谈谈你对闭包的理解?

函数被返回,并带有外部变量

54. os和sys模块的作用?
55. 如何生成一个随机数?
56. 如何使用python删除一个文件?
57. 谈谈你对面向对象的理解?
58. Python面向对象中的继承有什么特点?
59. 面向对象深度优先和广度优先是什么?
60. 面向对象中super的作用?
61. 是否使用过functools中的函数?其作用是什么?
62. 列举面向对象中带爽下划线的特殊方法,如:newinit
63. 如何判断是函数还是方法?

函数封装了一些功能,能够直接调用
方法和函数类似,但是需要通过对象来调用

64. 静态方法和类方法区别?
  1. 静态方法不需要传入self,或cls参数,类方法需要传入代表本类的cls参数
  2. 静态方法无法访问类变量,类方法可以访问类变量
65. 列举面向对象中的特殊成员以及应用场景
66. 1、2、3、4、5 能组成多少个互不相同且无重复的三位数
67. 什么是反射?以及应用场景?

通过字符串来动态操作对象,基于字符串的事件驱动

  1. 动态导入模块
__import__(name)
  1. 判断对象是否有某个属性,给对象添加、删除、修改属性
68. metaclass作用?以及应用场景?
.__class__

everything is object
类也是某个类的对象,元类就是类的类

69. 用尽量多的方法实现单例模式。
class Singleton():
    self.singleton;
    def __init__(self):
        if self.singleton:
            return self.singleton
        self.singleton = Singleton()
        return self.singleton
70. 装饰器的写法以及应用场景。
71. 异常处理写法以及如何主动跑出异常(应用场景)
72. 什么是面向对象的mro
73. isinstance作用以及应用场景?
74. 写代码并实现:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:          
Given nums = [2, 7, 11, 15], 
target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,           
return [0, 1]
75. json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?
76. json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?
77. 什么是断言?应用场景?
78. 有用过with statement吗?它的好处是什么?

用法:

 with open('output.txt', 'w') as f:
        f.write('hello world')

with语句会在嵌套的代码执行之后,自动关闭文件,即使里面有return,continue, break等

79. 使用代码实现查看列举目录下的所有文件。
80. 简述 yield和yield from关键字
  1. 函数中使用yield,可以使函数变成生成器。一个函数如果是生成一个数组,就必须把数据存储在内存中,如果使用生成器,则在调用的时候才生成数据,可以节省内存
  2. 生成器方法调用时,不会立即执行,需要调用next()或者使用for循环来执行

第二部分 网络编程和并发

1. 简述 OSI 七层协议。

OSI七层:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层

TCP/IP四层/五层:
应用层 应用层 :软件 qq
传输层 传输层 :建立端口到端口的通信 0-65535 0-1023为系统占用端口 tcp ucp
网络层 网络层 :ip+mac 能找到全世界唯一的计算机 ip:找到哪一个局域网
数据链路层 接口层 :定义电信号的分组方式
物理层 : 发送01010101...电信号

2. 什么是C/S和B/S架构?
3. 三次握手、四次挥手的流程。

三次握手:

  1. 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数 A。
  2. 服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK 的确认码应为 A+1,SYN/ACK 包本身又有一个随机序号 B。
  3. 最后,客户端再发送一个ACK。当服务端受到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包序号被设定为收到的确认号 A+1,而响应则为 B+1。

四次挥手:
注意: 中断连接端可以是客户端,也可以是服务器端. 下面仅以客户端断开连接举例, 反之亦然.

  1. 客户端发送一个数据分段, 其中的 FIN 标记设置为1. 客户端进入 FIN-WAIT 状态. 该状态下客户端只接收数据, 不再发送数据.
  2. 服务器接收到带有 FIN = 1 的数据分段, 发送带有 ACK = 1 的剩余数据分段, 确认收到客户端发来的 FIN 信息.
  3. 服务器等到所有数据传输结束, 向客户端发送一个带有 FIN = 1 的数据分段, 并进入 CLOSE-WAIT 状态, 等待客户端发来带有 ACK = 1 的确认报文.
  4. 客户端收到服务器发来带有 FIN = 1 的报文, 返回 ACK = 1 的报文确认, 为了防止服务器端未收到需要重发, 进入 TIME-WAIT 状态. 服务器接收到报文后关闭连接. 客户端等待 2MSL 后未收到回复, 则认为服务器成功关闭, 客户端关闭连接.

图解: http://blog.csdn.net/whuslei/article/details/6667471

4. 什么是arp协议?

地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标的MAC地址,以保证通信的顺利进行。它是IPv4网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。

5. TCP和UDP的区别?

tcp面向连接
tcp流量控制,窗口

6. 什么是局域网和广域网?

局域网:小范围的网络
广域网:连接范围较广的网络

7. 为何基于tcp协议的通信比基于udp协议的通信更可靠?

tcp三次握手建立连接
tcp可靠 对方给了确认收到信息,才发下一个,如果没收到确认信息就重发
udp不可靠 一直发数据,不需要对方回应

8. 什么是socket?简述基于tcp协议的套接字通信流程

socket:套接字,用于描述ip和端口,是一个通信的句柄

流程:

  • 服务端创建一个ServerSocket对象,指定端口号,ServerSocket对象等待客户端的连接请求。
  • 客户端创建一个Socket对象,指定主机地址和端口号,向服务端发出连接请求。
  • 服务端接收到客户端的连接请求,建立一条TCP连接,再创建一个Socket对象与客户端的Socket对象进行通信。
  • 服务端和客户端分别创建字节输入流和字节输出流,通过字节输入流获得对方发来的数据,通过字节输出流向对方发送数据。
  • 当一方决定结束通信时,向对方发送结束信息;另一方接收到结束信息后,双方分别关闭各自的TCP连接。
  • ServerSocket对象停止等待客户端的连接请求。
9. 什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?

TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。

原因:
(1) 发送方原因
(2) 接收方原因

10. IO多路复用的作用?

增加网络吞吐量

11. 什么是防火墙以及作用?

依照特定的规则,允许或是限制传输的数据通过

12. select, poll, epoll 模型的区别?

select: 单个进程处理多个io读写,监听多个文件描述符,最大1024
poll: 采用链表,文件描述符个数理论上无限制,但多了性能较差
epoll: 类似于事件驱动,前2种需要遍历,epoll采用callback

13. 简述 进程、线程、协程的区别 以及应用场景?
14. GIL锁是什么?

Global Interpreter Lock

15. Python中如何使用线程池和进程池?

进程池、线程池能够对进程、线程数量加以控制

16. threading.local的作用?

定义线程内的变量,避免被其他线程影响

17. 进程之间如何进行通信?

管道,消息队列,信号

18. 什么是并发和并行?

并发:交替执行
并行:同时执行

19. 进程锁和线程锁的作用?
20. 解释什么是异步非阻塞?

非阻塞:IO轮训

21. 路由器和交换机的区别?

交换机工作在数据链路层,基于MAC
路由器工作在网络层,基于TCP/IP,能获得更多的协议信息

22. 什么是域名解析?
23. 如何修改本地hosts文件?
24. 生产者消费者模型应用场景及优势?
25. 什么是cdn?

Content Delivery Network,内容分发网络

CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

26. LVS是什么及作用?

Linux Virtual Server

27. Nginx是什么及作用?

web服务器
负载均衡

28. keepalived是什么及作用?
29. haproxy是什么以及作用?
30. 什么是负载均衡?
31. 什么是rpc及应用场景?
32. 简述 asynio模块的作用和应用场景

异步IO

33. 简述 gevent模块的作用和应用场景

python并发框架

34. twisted框架的使用和应用?
35. 什么是DNS?

Domain name system
域名系统

36. httpdns

使用http协议替换udp协议

37. 如何保持长连接

tcp的keepalive

第三部分 数据库和缓存(46题)

1. 列举常见的关系型数据库和非关系型都有那些?
2. MySQL常见数据库引擎及比较?
3. 简述数据三大范式?
4. 什么是事务?MySQL如何支持事务?
5. 简述数据库设计中一对多和多对多的应用场景?
6. 如何基于数据库实现商城商品计数器?
7. 常见SQL(必备)

详见武沛齐博客:https://www.cnblogs.com/wupeiqi/articles/5729934.html

8. 简述触发器、函数、视图、存储过程?
9. MySQL索引种类
10. 索引在什么情况下遵循最左前缀的规则?
  1. 主键和外键的区别?

  2. MySQL常见的函数?

  3. 列举 创建索引但是无法命中索引的8种情况。

  4. 如何开启慢日志查询?

  5. 数据库导入导出命令(结构+数据)?

  6. 数据库优化方案?

  7. char和varchar的区别?

  8. 简述MySQL的执行计划?

  9. 在对name做了唯一索引前提下,简述以下区别:

select * from tb where name = ‘Oldboy-Wupeiqi’ select * from tb where name = ‘Oldboy-Wupeiqi’ limit 1
  1. 1000w条数据,使用limit offset 分页时,为什么越往后翻越慢?如何解决?

  2. 什么是索引合并?

  3. 什么是覆盖索引?

  4. 简述数据库读写分离?

  5. 简述数据库分库分表?(水平. 垂直)

  6. redis和memcached比较?

  7. redis中数据库默认是多少个db 及作用?

  8. python操作redis的模块?

  9. 如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值?

  10. redis如何实现主从复制?以及数据同步机制?

  11. redis中的sentinel的作用?

  12. 如何实现redis集群?

  13. redis中默认有多少个哈希槽?

  14. 简述redis的有哪几种持久化策略及比较?

  15. 列举redis支持的过期策略。

  16. MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据?

  17. 写代码,基于redis的列表实现 先进先出、后进先出队列、优先级队列。

  18. 如何基于redis实现消息队列?

  19. 如何基于redis实现发布和订阅?以及发布订阅和消息队列的区别?

  20. 什么是codis及作用?

  21. 什么是twemproxy及作用?

  22. 写代码实现redis事务操作。

  23. redis中的watch的命令的作用?

  24. 基于redis如何实现商城商品数量计数器?

  25. 简述redis分布式锁和redlock的实现机制。

  26. 什么是一致性哈希?Python中是否有相应模块?

  27. 如何高效的找到redis中所有以oldboy开头的key?

47. B树、B+树

B树(B-Tree):


B+树


B+树

第四部分 前端、框架和其他(155题)

  1. 谈谈你对http协议的认识。

  2. 谈谈你对websocket协议的认识。

  3. 什么是magic string ?

  4. 如何创建响应式布局?

  5. 你曾经使用过哪些前端框架?

  6. 什么是ajax请求?并使用jQuery和XMLHttpRequest对象实现一个ajax请求。

  7. 如何在前端实现轮训?

  8. 如何在前端实现长轮训?

  9. vuex的作用?

  10. vue中的路由的拦截器的作用?

  11. axios的作用?

  12. 列举vue的常见指令。

  13. 简述jsonp及实现原理?

  14. 是什么cors ?

  15. 列举Http请求中常见的请求方式?

  16. 列举Http请求中的状态码?

  17. 列举Http请求中常见的请求头?

  18. 看图写结果:

image
  1. 看图写结果:
image
  1. 看图写结果:
image
  1. 看图写结果:
image
  1. 看图写结果:
image
  1. 看图写结果:
image
  1. django、flask、tornado框架的比较?

  2. 什么是wsgi?

  3. django请求的生命周期?

  4. 列举django的内置组件?

  5. 列举django中间件的5个方法?以及django中间件的应用场景?

  6. 简述什么是FBV和CBV?

  7. django的request对象是在什么时候创建的?

  8. 如何给CBV的程序添加装饰器?

  9. 列举django orm 中所有的方法(QuerySet对象的所有方法)

  10. only和defer的区别?

  11. select_related和prefetch_related的区别?

  12. filter和exclude的区别?

  13. 列举django orm中三种能写sql语句的方法。

  14. django orm 中如何设置读写分离?

  15. F和Q的作用?

  16. values和values_list的区别?

  17. 如何使用django orm批量创建数据?

  18. django的Form和ModeForm的作用?

  19. django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。

  20. django的Model中的ForeignKey字段中的on_delete参数有什么作用?

  21. django中csrf的实现机制?

  22. django如何实现websocket?

  23. 基于django使用ajax发送post请求时,都可以使用哪种方法携带csrf token?

  24. django中如何实现orm表中添加数据时创建一条日志记录。

  25. django缓存如何设置?

  26. django的缓存能使用redis吗?如果可以的话,如何配置?

  27. django路由系统中name的作用?

  28. django的模板中filter和simple_tag的区别?

  29. django-debug-toolbar的作用?

  30. django中如何实现单元测试?

  31. 解释orm中 db first 和 code first的含义?

  32. django中如何根据数据库表生成model中的类?

  33. 使用orm和原生sql的优缺点?

  34. 简述MVC和MTV

**58. **django的contenttype组件的作用?

  1. 谈谈你对restfull 规范的认识?

  2. 接口的幂等性是什么意思?

  3. 什么是RPC?

  4. Http和Https的区别?

  5. 为什么要使用django rest framework框架?

  6. django rest framework框架中都有那些组件?

  7. django rest framework框架中的视图都可以继承哪些类?

  8. 简述 django rest framework框架的认证流程。

  9. django rest framework如何实现的用户访问频率控制?

  10. Flask框架的优势?

  11. Flask框架依赖组件?

  12. Flask蓝图的作用?

  13. 列举使用过的Flask第三方组件?

  14. 简述Flask上下文管理流程?

  15. Flask中的g的作用?

  16. Flask中上下文管理主要涉及到了那些相关的类?并描述类主要作用?

  17. 为什么要Flask把Local对象中的的值stack 维护成一个列表?

  18. Flask中多app应用是怎么完成?

  19. 在Flask中实现WebSocket需要什么组件?

  20. wtforms组件的作用?

  21. Flask框架默认session处理机制?

  22. 解释Flask框架中的Local对象和threading.local对象的区别?

  23. Flask中 blinker 是什么?

  24. SQLAlchemy中的 session和scoped_session 的区别?

  25. SQLAlchemy如何执行原生SQL?

  26. ORM的实现原理?

  27. DBUtils模块的作用?

  28. 以下SQLAlchemy的字段是否正确?如果不正确请更正:

from datetime import datetimefrom sqlalchemy.ext.declarativeimport declarative_basefrom sqlalchemy import Column, Integer, String, DateTimeBase = 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())
  1. SQLAchemy中如何为表设置引擎和字符编码?

  2. SQLAchemy中如何设置联合唯一索引?

  3. 简述Tornado框架的特点。

  4. 简述Tornado框架中Future对象的作用?

  5. Tornado框架中如何编写WebSocket程序?

  6. Tornado中静态文件是如何处理的?如: <link href="{{static_url("commons.css")}}" rel="stylesheet" />

  7. Tornado操作MySQL使用的模块?

  8. Tornado操作redis使用的模块?

  9. 简述Tornado框架的适用场景?

  10. git常见命令作用:

  11. 简述以下git中stash命令作用以及相关其他命令。

  12. git 中 merge 和 rebase命令 的区别。

  13. 公司如何基于git做的协同开发?

  14. 如何基于git实现代码review?

  15. git如何实现v1.0 . v2.0 等版本的管理?

  16. 什么是gitlab?

  17. github和gitlab的区别?

  18. 如何为github上牛逼的开源项目贡献代码?

  19. git中 .gitignore文件的作用?

  20. 什么是敏捷开发?

  21. 简述 jenkins 工具的作用?

  22. 公司如何实现代码发布?

  23. 简述 RabbitMQ、Kafka、ZeroMQ的区别?

  24. RabbitMQ如何在消费者获取任务后未处理完前就挂掉时,保证数据不丢失?

  25. RabbitMQ如何对消息做持久化?

  26. RabbitMQ如何控制消息被消费的顺序?

  27. 以下RabbitMQ的exchange type分别代表什么意思?如:fanout. direct、topic。

  28. 简述 celery 是什么以及应用场景?

  29. 简述celery运行机制。

  30. celery如何实现定时任务?

  31. 简述 celery多任务结构目录?

  32. celery中装饰器 @app.task 和 @shared_task的区别?

  33. 简述 requests模块的作用及基本使用?

  34. 简述 beautifulsoup模块的作用及基本使用?

  35. 简述 seleninu模块的作用及基本使用?

  36. scrapy框架中各组件的工作流程?

  37. 在scrapy框架中如何设置代理(两种方法)?

  38. scrapy框架中如何实现大文件的下载?

  39. scrapy中如何实现限速?

  40. scrapy中如何实现暂定爬虫?

  41. scrapy中如何进行自定制命令?

  42. scrapy中如何实现的记录爬虫的深度?

  43. scrapy中的pipelines工作原理?

  44. scrapy的pipelines如何丢弃一个item对象?

  45. 简述scrapy中爬虫中间件和下载中间件的作用?

  46. scrapy-redis组件的作用?

  47. scrapy-redis组件中如何实现的任务的去重?

  48. scrapy-redis的调度器如何实现任务的深度优先和广度优先?

  49. 简述 vitualenv 及应用场景?

  50. 简述 pipreqs 及应用场景?

  51. 在Python中使用过什么代码检查工具?

  52. 简述 saltstack. ansible、fabric、puppet工具的作用?

  53. B Tree和B+ Tree的区别?

  54. 请列举常见排序并通过代码实现任意三种。

  55. 请列举常见查找并通过代码实现任意三种。

  56. 请列举你熟悉的设计模式?

143. 有没有刷过leetcode?

https://github.com/eazow/leetcode

  1. 列举熟悉的的Linux命令。

  2. 公司线上服务器是什么系统?

  3. 解释 PV、UV 的含义?

  4. 解释 QPS的含义?

  5. uwsgi和wsgi的区别?

  6. supervisor的作用?

  7. 什么是反向代理?

  8. 简述SSH的整个过程。

  9. 有问题都去那些找解决方案?

  10. 是否有关注什么技术类的公众号?

  11. 最近在研究什么新技术?

  12. 是否了解过领域驱动模型?

相关文章

网友评论

      本文标题:python面试

      本文链接:https://www.haomeiwen.com/subject/xlzfpftx.html