澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:pyntho经典面试题,精选前

2019-06-29 作者:www.8455.com   |   浏览(70)

1、Python是什么?使用Python有什么好处?

 澳门新萄京官方网站 1

Python基础面试题库

 

Python是一门学习曲线较为容易的编程语言,随着人工智能时代的到来,Python迎来了新一轮的高潮。目前,国内知乎、网易(游戏)、腾讯(某些网站)、搜狐(邮箱)、金山、豆瓣属于使用Python较为知名的企业。国外YouTube、谷歌、Yelp、Slide等也或多或少在使用Python。如果你想应聘Python相关职位,不妨面试前自测一下自己对基础知识掌握程度如何?下面是一张一百分的试卷,看看你自己能得几分?

 

1、什么是pickling和unpickling?(1分)

Pickle模块接受任何Python对象,并将其转换为字符串,使用dump函数将其转储到文件中,这个过程称为pickling。从存储的字符串表示中检索原始Python对象的过程称为unpickling。

2、作为解释型语言,Python如何运行?(1分)

Python是一种解释型语言。Python程序直接从源代码运行,将程序员编写的源代码转换成中间语言,再将中间语言翻译成必须执行的机器语言。

3、有哪些工具可以帮助查找错误或执行静态分析?(2分)

PyChecker是一个静态分析工具,用于检测Python源代码中的错误,并给出错误的类型和复杂性。Pylint是验证模块是否符合编码标准的另一种工具。

4、按下述要求编写代码,实现以下功能:(5分)

(1)编写代码下载 页面的内容并保存为mt.html

(2)统计mt.html中<p>标签下所有单词并存储到mt_word.txt中,要求:

a) 每个单词一行。单词在前,单词出现的次数在后,中间用Tab( )分隔。

b) 单词按照数目从多到少排列。比如说单词a出现了100次,单词b出现了10次,则单词a要在单词b前面。

澳门新萄京官方网站 2

5、下面的代码会输出什么:(2分)

def f(x,l=[]):

for i in range(x):

l.append(i*i)

print l

f(2)f(3,[3,2,1])f(3)

答案:

[0, 1][3, 2, 1, 0, 1, 4][0, 1, 0, 1, 4]

6、阅读下面的代码,它的输出结果是什么?(6分)

class Node(object):

def __init__(self,sName):

self._lChildren = []

self.sName = sName

def __repr__(self):

return "<Node '{}'>".format(self.sName)

def append(self,*args,**kwargs):

self._lChildren.append(*args,**kwargs)

def print_all_1(self):

print self

for oChild in self._lChildren:

oChild.print_all_1()

def print_all_2(self):

def gen(o):

lAll = [o,]

while lAll:

oNext = lAll.pop(0)

lAll.extend(oNext._lChildren)

yield oNext

for oNode in gen(self):

print oNode

oRoot = Node("root")oChild1 = Node("child1")oChild2 = Node("child2")oChild3 = Node("child3")oChild4 = Node("child4")oChild5 = Node("child5")oChild6 = Node("child6")oChild7 = Node("child7")oChild8 = Node("child8")oChild9 = Node("child9")oChild10 = Node("child10")

oRoot.append(oChild1)oRoot.append(oChild2)oRoot.append(oChild3)oChild1.append(oChild4)oChild1.append(oChild5)oChild2.append(oChild6)oChild4.append(oChild7)oChild3.append(oChild8)oChild3.append(oChild9)oChild6.append(oChild10)

# 说明下面代码的输出结果

oRoot.print_all_1()oRoot.print_all_2()

答案

澳门新萄京官方网站 3

7、Python中lambda是什么意思?(1分)

它是一个经常用作内联函数的单个表达式匿名函数。

8、为什么python中的lambda表单没有语句?(1分)

python中的lambda表单没有语句,因为它用于创建新的函数对象,然后在运行时返回它们。

9、Python中的pass是什么意思?(1分)

pass意味着没有任何操作的Python语句,换句话说,它是复合语句中的一个占位符,如果一个地方没有什么必须写在那里,就需要用上pass了。

10、阅读下面的代码,写出A0,A1至An的最终值。(5分)

A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))

A1 = range(10)

A2 = [i for i in A1 if i in A0]

A3 = [A0[s] for s in A0]

A4 = [i for i in A1 if i in A3]

A5 = {i:i*i for i in A1}

A6 = [[i,i*i] for i in A1]

澳门新萄京官方网站 4

11、什么是Python的单元测试?(1分)

Python中的单元测试框架被称为unittest。它支持共享设置,自动化测试,测试关机代码,测试集合等。

12、在Python中unittest是什么?(1分)

从列表,元组,字符串等序列类型中选择一系列项目的机制被称为unittest。

13、什么是Python中的生成器?(1分)

实现迭代器的方式被称为生成器。除了在函数中产生表达式之外,它是一个正常的函数。

14、__new__和__init__的区别(4分)

澳门新萄京官方网站 5

15、如何复制Python中的对象?(2分)

要在Python中复制对象,一般情况下可以尝试copy.copy()或copy.deepcopy()。不能复制所有的对象,但大多数还是可以的。

16、如何将数字转换为字符串?(2分)

为了将数字转换为字符串,使用内置函数str()。如果想要一个八进制或十六进制表示,使用内置函数oct()或 hex()。

17、Xrange和range有什么区别?(2分)

Xrange返回一个xrange对象,而range返回一个数组。不管范围多大,使用同样的内存。

18、什么是Python中的模块和包?(3分)

在Python中,模块是构造程序的方式。每个Python程序文件都是一个模块,它导入其他模块,如对象和属性。

Python程序的文件夹是一个模块包,包可以有模块或子文件夹。

19、提到Python中的局部和全局变量的规则是什么?(3分)

局部变量:如果一个变量在函数体内的任何地方被分配了一个新的值,它被认为是本地的。

全局变量:使用global定义的变量就是全局变量

当局部变量名字和全局变量名字重复时,局部变量会覆盖掉全局变量。

20、怎样才能跨模块共享全局变量?(3分)

要在单个程序的模块之间共享全局变量,请创建一个配置模块。在应用程序的所有模块中导入配置模块,该模块将作为跨模块的全局变量提供。

21、解释如何在Unix上创建一个Python脚本可执行文件?(4分)

要在Unix上创建Python脚本可执行文件需要做两件事情:

  • Script文件的模式必须是可执行的

  • 第一行必须以#(#!/ usr / local / bin / python)开头

22、Python垃圾回收机制(3分)

Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。

23、解释如何在Python中生成随机数字?(3分)

要在Python中生成随机数需要将命令导入

随机导入:random.random()

这将返回范围[0,1)中的随机浮点数

24、解释如何访问用C语言编写的Python模块?(3分)

你可以通过下面的方法访问一个用C写成的模块,

Module = = PyImport_ImportModule(“<modulename>”);

25、在Python中如何使用//运算符?(1分)

它是一个Floor Division Operator,用于将两个操作数相除,结果为小数点前面的数字。例如,10 // 5 = 2和10.0 // 5.0 = 2.0。

26、提到使用Python的五个好处?(2分)

  • Python包含了大多数互联网平台(如电子邮件,HTML等)的巨大标准库。

  • Python不需要显式的内存管理,因为解释器本身将内存分配给新变量并自动释放它们

  • 由于使用方括号而提供易读性

  • 易于初学者学习

  • 具有内置的数据类型,可以节省编程时间和工作量,从而声明变量。

27、简单说明在Python中如何使用split函数?(1分)

在Python中使用split函数是使用定义的分隔符将字符串分解成更短的字符串。它给出了字符串中所有单词的列表。

28、解释什么是Flask及其好处?(2分)

Flask是一个基于“Werkzeug,Jinja 2和良好意图”BSD许可的web微型框架,Werkzeug和jingja是它的两个依赖项。

Flask是微观框架的一部分。这意味着它将很少或不依赖于外部库,它使框架轻而易举,更新和安全漏洞更少。

29、Django,Pyramid和Flask有什么区别?(3分)

Flask是一个“微框架”,主要用于需求更简单的小型应用程序。在Flask中,你必须使用外部库。

Pyramid是为更大的应用程序建立的。它提供了灵活性,并让开发人员为他们的项目使用正确的工具。开发人员可以选择数据库,URL结构,模板样式等等。Pyramid可重新配置。

像Pyramid一样,Django也可以用于更大的应用程序。 它包括一个ORM。

30、Flask-WTF是什么,有什么特点?(3分)

Flask-WTF提供了与WTForms的简单集成,功能包括

  • 与wtforms集成

  • 使用csrf令牌安全形式

  • 全球csrf保护

  • Reptcha支持

  • 与Flask Uploads一起使用的文件上传

31、Flask脚本的常用方式是什么?(1分)

应该是应用程序的导入路径或Python文件的路径

32、如何在Flask中访问会话?(2分)

一个会话基本上允许记住从一个请求到另一个请求的信息。在Flask中,它使用签名的cookie,以便用户可以查看会话内容并进行修改。用户可以修改会话,只要它有密钥Flask.secret_key。

33、Flask是一个MVC模型吗?如果是,可以示例一下吗?(5分)

基本上,Flask是一个简单的框架,其行为与MVC框架相同。所以MVC是Flask的完美选择,示例参考如下:

澳门新萄京官方网站 6

34、解释Python Flask中的数据库连接?(5分)

Flask支持数据库驱动的应用程序(RDBS)。这样的系统需要创建一个模式,将shema.sql文件传送到sqlite3命令。所以需要sqlite3命令才能在Flask中创建或启动数据库。

Flask允许以三种方式请求数据库

  • before_request():它们在请求前被调用并且不传递任何参数

  • after_request():它们在请求之后被调用并且传递将被发送到客户端响应

  • teardown_request():在引发异常的情况下调用,并且不保证响应。他们在响应结束后被调用。他们不允许修改请求,他们的值被忽略。

35、你有多个运行Python的Memcache服务器,其中一个memcacher服务器失败,它有你的数据,它会试图从那个失败的服务器获取关键数据吗?(5分)

发生故障的服务器中的数据不会被删除,但是可以为多个节点配置自动故障规定。可以在任何类型的套接字或Memcached服务器级错误期间触发故障切换,而不会在正常的客户端错误(如添加现有密钥等)期间触发。

36、解释如何最大限度地减少Python开发中的Memcached服务器中断?(5分)

  • 当一个实例失败,这将在客户端发出请求时重新加载丢失的数据,在数据库服务器上承受更大的负载。为了避免这种情况,如果代码已经写入,尽量减少缓存的冲击,那么它将产生最小的影响

  • 另一种方法是使用丢失的机器IP地址在新机器上启动Memcached实例

  • 代码是最大限度减少服务器停机的另一种方法,因为它可以自由地以最少的工作更改Memcached服务器列表

  • 设置超时值是一些Memcached客户端为Memcached服务器中断实现的另一个选项。当Memcached服务器关闭时,客户端将不断尝试发送请求,直到达到超时限制

37、解释Python项目中应不应该使用Memcached?(5分)

Memcached常见的误用是将其用作数据存储,而不是用作缓存

  • 切勿使用Memcached作为运行应用程序所需信息的唯一来源,数据应该始终可以通过其他来源获得

  • Memcached只是一个键或值存储,不能对数据执行查询或遍历内容以提取信息

  • Memcached在加密或认证时不提供任何形式的安全性

Web开发主要经历了下面几个阶段:

  • Python基础篇
    • 1:为什么学习Python
    • 2:通过什么途径学习Python
    • 3:谈谈对Python和其他语言的区别
    • Python的优势:
    • 4:简述解释型和编译型编程语言
    • 5:Python的解释器种类以及相关特点?
    • 6:位和字节的关系
    • 7:b、B、KB、MB、GB的关系
    • 8:PE8规范
    • 9:通过代码实现如下转换
    • 10:请编写一个函数实现将IP地址转换成一个整数
    • 11、python递归的最大层数?998
    • 12:求结果(and or or)
    • 运算符
    • 13 :ascii、unicode、utf-8、gbk 区别
    • 14:字节码和机器码的区别
    • 15:三元运算写法和应用场景?
    • 16:Python3和Python2的区别?
    • 17:用一行代码实现数值交换
    • 18:Python3和Python2中int和long区别
    • 19:xrange和range的区别
    • 20:文件操作时:xreadlines和readlines的区别?
    • 21:列列举布尔值为False的常见值?
      1. 字符串、列表、元组、字典每个常用的5个方法?
    • 23、lambda表达式格式以及应用场景?
      1. pass的作用
      1. *arg和**kwarg作用
      1. is和==的区别
    • 27:谈谈Python的深浅拷贝?以及实现方法和应用场景。
      1. Python垃圾回收机制?
      1. Python的可变类型和不可变类型?
    • 30、求结果
    • 31、求结果
    • 32、列举常见的内置函数
    • abs()
    • map
    • filter
    • map与filter总结
    • isinstancetype
    • zip 拉链函数
      1. filter、map、reduce的作用?
    • 内置函数:map、reduce、filter的用法和区别
    • 34、一行代码实现9*9乘法表
      1. 如何安装第三方模块?以及用过哪些第三方模块?
    • 36、常用模块都有那些?
      1. re的match和search区别?
      1. 什么是正则的贪婪匹配?
      1. 求结果:
      1. 求结果:
    • 41、def func 这种写法有什什么坑?
    • 42、如何实现 “1,2,3” 变成 [‘1’,’2’,’3’]
      1. 如何实现[‘1’,’2’,’3’]变成[1,2,3]
    • 44.a = [1,2,3] 和 b = [, ] 以及 b = [, ] 的区别?
      1. 如何用一行代码生成[1,4,9,16,25,36,49,64,81,100]
      1. 一行代码实现删除列表中重复的值
    • 47.如何在函数中设置一个全局变量
      1. logging模块的作用?以及应用场景?
      1. 请用代码简答实现stack
      1. 常用字符串格式化哪几种?
      1. 简述 生成器、迭代器、可迭代对象 以及应用场景?
    • 迭代器
    • 生成器
    • 可迭代对象
    • 装饰器
      1. 用Python实现一个二分查找的函数。
      1. 谈谈你对闭包的理解?
      1. os和sys模块的作用?
      1. 如何生成一个随机数?
      1. 如何使用python删除一个文件?
      1. 谈谈你对面向对象的理解
      1. Python面向对象中的继承有什么特点
      1. 面向对象深度优先和广度优先是什么?
      1. 面向对象中super的作用?
      1. 是否使用过functools中的函数?其作用是什么?
    • 62. 列举面向对象中带双下划线的特殊方法,如:__new__、__init__
      1. 如何判断是函数还是方法?
      1. 静态方法和类方法区别?
      1. 列举面向对象中的特殊成员以及应用场景
      1. 1、2、3、4、5 能组成多少个互不相同且无重复的三位数
      1. 什么是反射?以及应⽤用场景?
      1. metaclass作用?以及应用场景?
      1. 用尽量多的方法实现单例模式。
      1. 装饰器器的写法以及应用场景。
      1. 异常处理写法以及如何主动跑出异常
    • 72、什么是面向对象的mro
      1. isinstance作用以及应用场景?
      1. 写代码并实现
    • 75. json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?
    • 76. json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?
      1. 什么是断言?应用场景?
      1. 有用过with statement吗?它的好处是什么?
      1. 使用代码实现查看列举目录下的所有文件。
      1. 简述 yield和yield from关键字
  • 第二部分 网络编程和并发
      1. 简述 OSI 七层协议。
      1. 什么是C/S和B/S架构?
      1. 简述 三次握手、四次挥手的流程。
      1. TCP和UDP的区别?
      1. 为何基于tcp协议的通信比基于udp协议的通信更可靠?
      1. 什么是socket?简述基于tcp协议的套接字通信流程。
      1. 什么是粘包? socket 中造成粘包的原因是什什么? 哪些情况会发生粘包现象?
      1. IO多路复的作用?
    • 89.select、poll、epoll 模型的区别?(属于多路复用IO的模型)
      1. 什么是防火墙以及作用?
      1. 简述 进程、线程、协程的区别 以及应用场景?
      1. GIL锁是什么?
      1. Python中如何使用线程池和进程池?
      1. threading.local的作用?
      1. 进程之间如何进行通信?
      1. 什么是并发和并行?
      1. 进程锁和线程锁的作用?
      1. 解释什么是异步非阻塞?
      1. 路由器和交换机的区别
    • 100.什么是域名解析?
    • 101.如何修改本地hosts件?
    • 102.生产者消费者模型应用场景及优势?
    • 103.什么是cdn?
    • 104.LVS是什么及作用?
    • 105.Nginx是什么及作用?
    • 106.keepalived是什么及作用?
    • 107.haproxy是什么以及作用?
  • 数据库和缓存
    • 113.列举常见的关系型数据库和非关系型都有那些?
    • 114.MySQL常见数据库引擎及比较?
    • 115.简述数据库三大范式?
    • 116、什么是事务?MySQL如何支持事务?
    • 117.简述数据库设计中一对多和多对多的应用场景?
    • 118.如何基于数据库实现商城商品计数器?
    • 119.常见SQL
    • 120.简述触发器、函数、视图、存储过程?
    • 121.MySQL索引种类
    • 122.索引在什么情况下遵循最左前缀的规则?
    • 123.主键和外键的区别?
    • 124.MySQL常见的函数?
    • 125.列举 创建索引但是无法命中索引的8种情况。
    • 126.如何开启慢日志查询?
    • 127.数据库导入导出命令?
    • 128.数据库优化方案?
    • 129.char和varchar的区别?
    • 130.简述MySQL的执行计划?
    • 131.在对name做了唯一索引前提下,简述以下区别:

    • 132.1000w条数据,使用limit offset 分页时,为什么越往后翻越慢?如何解决?
    • 133.什么是索引合并?
    • 134.什么是覆盖索引?
    • 135.简述数据库读写分离?
    • 136.简述数据库分库分表?
    • 137.redis和memcached比较?
    • 138.redis中数据库默认是多少个db 及作用?
    • 139.python操作redis的模块?
    • 140.如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值?
    • 141.redis如何实现主从复制?以及数据同步机制?
    • 142.redis中的sentinel的作用?
    • 143.如何实现redis集群?
    • 144.redis中默认有多少个哈希槽?
    • 145.简述redis的有哪几种持久化策略及比较?
    • 146.列举redis支持的过期策略。
    • 147.MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据?
    • 148.写代码,基于redis的列表实现 先进先出、后进先出队列、优先级队列。
    • 149.如何基于redis实现消息队列?
    • 150.如何基于redis实现发布和订阅?以及发布订阅和消息队列的区别?
    • 151.什么是codis及作用?
    • 152.什么是twemproxy及作用?
    • 153.写代码实现redis事务操作。
    • 154.redis中的watch的命令的作用?
    • 155.基于redis如何实现商城商品数量计数器?
    • 156.简述redis分布式锁和redlock的实现机制。
    • 157.什么是一致性哈希?Python中是否有相应模块?
    • 158.如何高效的找到redis中所有以aaa开头的key?
  • 第四部分 前端、框架和其他
    • 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.看图写结果:
    • 看图写结果:
    • 看图写结果:
    • 看图写结果:
    • 看图写结果:
    • 看图写结果:
    • 19.django、flask、tornado框架的比较?
    • 20.什么是wsgi?
    • 21.django请求的生命周期?
    • 22.列举django的内置组件?
    • 23.列举django中间件的5个方法?以及django中间件的应用场景?
    • 24.简述什么是FBV和CBV?
    • 25.FBV与CBV的区别
    • 26.django的request对象是在什么时候创建的?
    • 27.如何给CBV的程序添加装饰器?
    • 28.列举django orm 中所有的方法(QuerySet对象的所有方法)
    • 29.only和defer的区别?
    • 30.select_related和prefetch_related的区别?
    • 31.filter和exclude的区别?
    • 32.列举django orm中三种能写sql语句的方法。
    • 33.django orm 中如何设置读写分离?
    • 34.F和Q的作用?
    • 35.values和values_list的区别?
    • 36.如何使用django orm批量创建数据?
    • 37.django的Form和ModeForm的作用?
    • 38.django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。
    • 39.django的Model中的ForeignKey字段中的on_delete参数有什么作用?
    • 40.django中csrf的实现机制?
    • 41.django如何实现websocket?
    • 42.基于django使用ajax发送post请求时,都可以使用哪种方法携带csrf token?
    • 43.django中如何实现orm表中添加数据时创建一条日志记录。
    • 44.django缓存如何设置?
    • 45.django的缓存能使用redis吗?如果可以的话,如何配置?
    • 46.django路由系统中name的作用?
    • 47.django的模板中filter和simple_tag的区别?
    • 48.django-debug-toolbar的作用?
    • 49.django中如何实现单元测试?
    • 50.解释orm中 db first 和 code first的含义?
    • 51.django中如何根据数据库表生成model中的类?
    • 52.使用orm和原生sql的优缺点?
    • 53.简述MVC和MTV
    • 54.django的contenttype组件的作用?
    • 55.谈谈你对restfull 规范的认识?
    • 56.接口的幂等性是什么意思?
    • 57.什么是RPC?
    • 58.Http和Https的区别?
    • 59.为什么要使用django rest framework框架?
    • 60.django rest framework框架中都有那些组件?
    • 61.django rest framework框架中的视图都可以继承哪些类
    • 62.简述 django rest framework框架的认证流程。
    • 63.django rest framework如何实现的用户访问频率控制?
    • 64.Flask框架的优势?
    • 65.Flask框架依赖组件
    • 66.Flask蓝图的作用
    • 67.列举使用的Flask第三方组件?
    • 68.简述Flask上下文管理流程?
    • 69.Flask中的g的作用?
    • Flask中上下文管理主要涉及到了那些相关的类?并描述类主要作用?
    • 为什么要Flask把Local对象中的的值stack 维护成一个列表?
    • Flask中多app应用是怎么完成?
    • 在Flask中实现WebSocket需要什么组件?
    • wtforms组件的作用?
    • Flask框架默认session处理机制?
    • 解释Flask框架中的Local对象和threading.local对象的区别?
    • Flask中 blinker 是什么?
    • SQLAlchemy中的 session和scoped_session 的区别?
    • SQLAlchemy如何执行原生SQL?
    • ORM的实现原理?
    • DBUtils模块的作用?
    • SQLAchemy中如何为表设置引擎和字符编码?
    • SQLAchemy中如何设置联合唯一索引?
    • 简述Tornado框架的特点。
    • 简述Tornado框架中Future对象的作用?
    • Tornado框架中如何编写WebSocket程序?
    • Tornado中静态文件是如何处理的?
如:
    • Tornado操作MySQL使用的模块?
    • Tornado操作redis使用的模块?
    • 简述Tornado框架的适用场景?
    • git常见命令作用:
    • 简述以下git中stash命令作用以及相关其他命令。
    • git 中 merge 和 rebase命令 的区别。
    • 公司如何基于git做的协同开发?
    • 如何基于git实现代码review?
    • git如何实现v1.0 、v2.0 等版本的管理?
    • 什么是gitlab
    • github和gitlab的区别?
    • 如何为github上牛逼的开源项目贡献代码?
    • git中 .gitignore文件的作用
    • 什么是敏捷开发?
    • 简述 jenkins 工具的作用?
    • 公司如何实现代码发布?
    • 简述 RabbitMQ、Kafka、ZeroMQ的区别?
    • RabbitMQ如何在消费者获取任务后未处理完前就挂掉时,保证数据不丢失?
    • RabbitMQ如何对消息做持久化?
    • RabbitMQ如何控制消息被消费的顺序?
    • 以下RabbitMQ的exchange type分别代表什么意思?如:fanout、direct、topic。
    • 简述 celery 是什么以及应用场景?
    • 简述celery运行机制。
    • celery如何实现定时任务?
    • 简述 celery多任务结构目录
    • celery中装饰器 @app.task 和 @shared_task的区别?
    • 简述 requests模块的作用及基本使用?
    • 简述 beautifulsoup模块的作用及基本使用?
    • 简述 seleninu模块的作用及基本使用?
    • scrapy框架中各组件的工作流程?
    • 在scrapy框架中如何设置代理?
    • scrapy框架中如何实现大文件的下载?
    • scrapy中如何实现限速?
    • scrapy中如何实现暂停爬虫?
    • scrapy中如何进行自定制命令?
    • scrapy中如何实现的记录爬虫的深度?
    • scrapy中的pipelines工作原理?
    • scrapy的pipelines如何丢弃一个item对象?
    • 简述scrapy中爬虫中间件和下载中间件的作用?1
    • scrapy-redis组件的作用?
    • scrapy-redis组件中如何实现的任务的去重?
    • scrapy-redis的调度器如何实现任务的深度优先和广度优先?....
    • 简述 vitualenv 及应用场景?
    • 简述 pipreqs 及应用场景?
    • 在Python中使用过什么代码检查工具?
    • 简述 saltstack、ansible、fabric、puppet工具的作用?
    • B Tree和B Tree的区别?
    • 请列举常见排序并通过代码实现任意三种。
    • 请列举常见查找并通过代码实现任意三种。
    • 请列举你熟悉的设计模式?
    • 有没有刷过leetcode?
    • 列举熟悉的的Linux命令。
    • 公司线上服务器是什么系统?
    • 解释 PV、UV 的含义?
    • 解释 QPS的含义?
    • uwsgi和wsgi的区别?
    • supervisor的作用?
    • 什么是反向代理?
    • 简述SSH的整个过程。
    • 有问题都去那些找解决方案?
    • 是否有关注什么技术类的公众号?
    • 最近在研究什么新技术?
    • 是否了解过领域驱动模型?
    • 二进制与十进制之间的转换
    • 整数部分

Python是一种具有对象、模块、线程、异常和自动内存管理的编程语言。pythons的优点在于它简单、可移植、可扩展、内置数据结构,而且它是一个开放源码。

不论你是初入江湖,还是江湖老手,只要你想给自己一个定位那就少不了面试!面试的重要性相信大家都知道把,这就是我们常说的“第一印象”,给大家说一下我的面试心得把,面试前的紧张是要的,因为这能让你充分准备。面试时的紧张是绝对要避开的,因为这可能导致你不能充分展现自己,说不定塑普都出来了。

  • 静态Web页面:由文本编辑器直接编辑并生成静态的HTML页面,如果要修改Web页面的内容,就需要再次编辑HTML源文件,早期的互联网Web页面就是静态的。

  • CGI:由于静态Web页面无法与用户交互,比如用户填写了一个注册表单,静态Web页面就无法处理。要处理用户发送的动态数据,出现了CGI(Common Gateway Interface,通用网关接口),CGI是使用多进程来服务URL请求,资源占用很严重,主要使用C/C 编写?。

  • ASP/JSP/PHP:由于Web应用特点是修改频繁,用C/C 这样的低级语言非常不适合Web开发,而脚本语言由于开发效率高,与HTML结合紧密,因此,迅速取代了CGI模式。ASP是微软推出的用VBScript脚本编程的Web开发技术,而JSP用Java来编写脚本,PHP本身则是开源的脚本语言。

  • MVC:为了解决直接用脚本语言嵌入HTML导致的可维护性差的问题,Web应用也引入了MVC(Model–View–Controller)模式,来简化Web开发。ASP发展为ASP.NET,JSP和PHP也有一大堆MVC框架。

正文

2、PEP 8是什么?

  分享个笑话舒缓一下:公司程序员要跳槽,老板不答应,后来,他拔了服务器的硬盘后跑了;公司保安要跳槽,老板不答应,后来,他带着公司的大门钥匙跑了;公司保洁阿姨要跳槽,老板不答应,后来,她在老板抽屉里放一只大蟑螂跑了;公司人事要跳槽,老板不答应,后来,她给自己办了离职手续跑了。不扯了,如果你正准备面试就看下面把。

新的Web开发技术不断发展出来,例如MMVM(Model–View–ViewModel)、异步编程等。

回到顶部

Pep 8是一种编码约定,是一组关于如何编写更易读的Python代码的建议。

1)什么是Python?使用Python有什么好处?

Python比Web早诞生,作为一种解释型的脚本语言,开发效率高,非常适合用来做Web开发。Python已经有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快。

Python基础篇

3、什么是腌制和不腌制?

Python是一种编程语言,包含对象,模块,线程,异常和自动内存管理。蟒蛇的好处在于它简单易用,可移植,可扩展,内置数据结构,并且它是一个开源的。

HTTP协议

参考:

  • 超文本传输协议
  • Hypertext Transfer Protocol
  • HTTP 协议入门
  • HTTP | MDN
  • Web 技术文档 | MDN

在前面的网络编程一节中,我们其实已经知道了HTTP请求和响应的格式和数据。只不过当时是使用socket这一底层网络接口实现向新浪服务器发送和接收请求。现在我们只不过是通过浏览器(客户端)访问http://www.sina.com.cn/来看看期间发生的网络请求。打开Chrome,按F12监听网络请求。

一次HTTP请求只请求一个资源,如果请求的资源中有URL(超链接),浏览器会自动地发起请求该URL的资源,即又构造一次HTTP请求,复杂的网页往往需要包含很多次HTTP请求,这些请求并不一定是请求同一服务器,往往可能是多个服务器和服务商,比如CDN。从而达到分流、减轻服务器压力的效果。

我们看看第一个HTTP请求,即访问http://www.sina.com.cn/时发生的HTTP请求和响应。网络数据是字节流bytes(在网络编程一节可以知道)。下面的数据是bytes解码后的字符串。

请求:

GET / HTTP/1.1
Host: www.sina.com.cn
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: 【敏感内容】

响应:

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 11 Mar 2018 07:18:39 GMT
Content-Type: text/html
Content-Length: 133943
Connection: keep-alive
Last-Modified: Sun, 11 Mar 2018 07:14:59 GMT
Vary: Accept-Encoding
X-Powered-By: shci_v1.03
Expires: Sun, 11 Mar 2018 07:18:56 GMT
Cache-Control: max-age=60
Content-Encoding: gzip
Age: 43
Via: http/1.1 ctc.ningbo.ha2ts4.97 (ApacheTrafficServer/6.2.1 [cMsSfW]), http/1.1 ctc.ningbo.ha2ts4.106 (ApacheTrafficServer/6.2.1 [cHs f ])
X-Via-Edge: 152075271975197eeea7aeebeee734371299a
X-Cache: HIT.106
X-Via-CDN: f=edge,s=ctc.ningbo.ha2ts4.103.nb.sinaedge.com,c=【敏感内容】;f=Edge,s=ctc.ningbo.ha2ts4.106,c=【敏感内容】

<!DOCTYPE html>
<!-- [ published at 2018-03-11 15:15:14 ] -->
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>新浪首页</title>
    <meta name="keywords" content="新浪,新浪网,SINA,sina,sina.com.cn,新浪首页,门户,资讯" />
【省略余下的网页源码内容(HTML网页)】

请求由如下部分组成:

  • 请求行:<方法> <资源路径> <协议版本>rn
    方法有8种:GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT,区分大小写。
    资源路径必须以/开头,注意,如果是GET请求,Query string是放在这里:/path/to/resource/?key1=value1&key2=value2
    协议版本有目前有:HTTP/0.9、HTTP/1.0、HTTP/1.1(广泛使用)和HTTP/2(2015年5月正式发布标准)。

  • 请求头:<key>: <value>rn,往往包含多个。在HTTP/1.1中,只有Host: <host-name>rn是必需,其他均可选。

  • 空行:rnrn

  • 请求体:如果是GET请求,请求体通常是空的。如果是POST请求,Query string是放在这里:key1=value1&key2=value2

响应由如下部分组成:

  • 状态行:<协议版本> <HTTP状态码> <HTTP状态码描述>rn
    协议版本同上。
    HTTP状态码参见HTTP状态码,三位数,有3大类:1xx消息、2xx成功、3xx重定向、4xx客户端错误和5xx服务器错误。
    HTTP状态码描述参见HTTP状态码。

  • 响应头:<key>: <value>rn,往往包含多个。

  • 空行:rnrn

  • 响应体,通常是HTML网页源码、JS/CSS等资源原文。

注意,字节流传输过程中,请求和响应的一行必须以rn结尾!

To be continued.

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站:pyntho经典面试题,精选前

关键词: