iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python工程师面试题 与Python Web相关
  • 357
分享到

Python工程师面试题 与Python Web相关

面试题工程师Python 2022-06-04 19:06:28 357人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本文为大家分享的python工程师面试题主要与Python WEB相关,供大家参考,具体内容如下 1、解释一下 WSGI 和 FastCGI 的关系? CGI全称是“公共网关接口”(CommonGatewa

本文为大家分享的python工程师面试题主要与Python WEB相关,供大家参考,具体内容如下

1、解释一下 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进程,并管理它们。
2、解释一下 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 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题。
3、解释下django-debug-toolbar的使用
使用django开发站点时,可以使用django-debug-toolbar来进行调试。在settings.py中添加'debug_toolbar.middleware.DebugToolbarMiddleware'到项目的MIDDLEWARE_CLASSES 内。
4、解释下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) 

5、如何进行Django单元测试
Django的单元测试使用python的unittest模块,这个模块使用基于类的方法来定义测试。类名为django.test.TestCase,继承于python的unittest.TestCase。


from django.test import TestCase 
from myapp.models import Animal 
  
class AnimalTestCase(TestCase): 
  def setUp(self): 
    Animal.objects.create(name="lion", sound="roar") 
    Animal.objects.create(name="cat", sound="meow") 
  
  def test_animals_can_speak(self): 
    """Animals that can speak are correctly identified""" 
    lion = Animal.objects.get(name="lion") 
    cat = Animal.objects.get(name="cat") 
    self.assertEqual(lion.speak(), 'The lion says "roar"') 
    self.assertEqual(cat.speak(), 'The cat says "meow"') 

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

6、解释下Http协议
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
HTTP协议的主要特点可概括如下:

1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

7、解释下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面试

--结束END--

本文标题: Python工程师面试题 与Python Web相关

本文链接: https://www.lsjlt.com/news/15519.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python工程师有哪些面试真题
    这篇文章主要讲解了“Python工程师有哪些面试真题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python工程师有哪些面试真题”吧!1、请尽可能列举python列表的成员方法,并给出一下...
    99+
    2023-06-17
  • Python工程师常见面试题有哪些
    本篇内容介绍了“Python工程师常见面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1.Tcp 协议和 udp 协议有什么区...
    99+
    2023-06-02
  • web前端工程师面试题10条必会笔试题
    布局 左边20% 中间自适应 右边200px 不能用定位答案:圣杯布局/双飞翼布局或者flex什么叫优雅降级和渐进增强?渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的...
    99+
    2023-06-05
  • Python有哪些相关面试题
    本篇内容介绍了“Python有哪些相关面试题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!“Python有哪些相关面试题”的内容就介绍到这里...
    99+
    2023-06-17
  • Python相关面试题有哪些
    这篇文章主要介绍“Python相关面试题有哪些”,在日常操作中,相信很多人在Python相关面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python相关面试题有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-02
  • 刚毕业去面试Python工程师,这几道题
    写在前面 本想停一段时间这个系列,但是好多朋友给我发信息说让我继续整理下去,so,继续吧~ 第1题: docstring是什么? docstring是一种文档字符串,用于解释构造的作用。我们在函数、类或方法中将它放在首位来描述其作用。我们...
    99+
    2023-01-31
    几道 刚毕业 工程师
  • Python工程师面试必备25条Pyth
    1.到底什么是Python?你可以在回答中与其他技术进行对比 下面是一些关键点: Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还包括PHP和Ruby。 Pyth...
    99+
    2023-01-31
    工程师 Python Pyth
  • 华为Java工程师面试题
    常见问题: 什么是Java虚拟机(JVM)?它与现实中的计算机有什么不同?Java中的基本数据类型有哪些?它们的范围是什么?什么是引用类型?Java中的引用类型有哪些?什么是对象?什么是类?它们之间的...
    99+
    2023-09-24
    华为 java 开发语言
  • Python工程师需要掌握的面试题有哪些
    这篇文章主要讲解了“Python工程师需要掌握的面试题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python工程师需要掌握的面试题有哪些”吧! 1、Python有哪些特点...
    99+
    2023-06-16
  • 安全服务工程师面试题
    文章目录 你如何保护系统和网络免受恶意攻击?你会使用哪些工具和技术?你对密码安全有什么了解?你如何确保用户密码的安全?你如何保护敏感数据和机密信息的安全性?你会使用哪些技术?你如何识别和应对网...
    99+
    2023-09-06
    安全 网络 服务器
  • 初级运维工程师面试题
    1、apache有几种工作模式,分别简述两种工作模式及其优缺点? apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候添加–with-mpm=worker选项) prefork的特点是...
    99+
    2023-09-21
    运维 linux 服务器
  • Linux运维工程师面试题总结
    本篇内容介绍了“Linux运维工程师面试题总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Linux操作系统知识常见的Linux发行版...
    99+
    2023-06-13
  • python面试题之python多线程与
    多线程可以共享全局变量,多进程不能 多线程中,所有子线程的进程号相同,多进程中,不同的子进程进程号不同   线程共享内存空间;进程的内存是独立的 同一个进程的线程之间可以直接交流;两个进程想通信,必须通过一个中间代理来实现 创建新线程...
    99+
    2023-01-31
    多线程 面试题 python
  • 又面试了Python爬虫工程师,碰到这么
    第1题:动态加载又对及时性要求很高怎么处理? 如何知道一个网站是动态加载的数据? 用火狐或者谷歌浏览器 打开你网页,右键查看页面源代码,ctrl +F 查询输入内容,源代码里面并没有这个值,说明是动态加载数据。 Selenium+P...
    99+
    2023-01-31
    爬虫 试了 工程师
  • 朋友去面试Python工程师,又带回来几
    第1题: print 调用 Python 中底层的什么方法 print print() 用 sys.stdout.write() 实现 import sys print('hello') sys.std...
    99+
    2023-01-31
    工程师 朋友 Python
  • 网络安全工程师面试题整理
    “1.拿到一个待检测的站,你觉得应该先做什么?”, 通过站长之家收集域名whois 通过nmap 御剑查找服务器系统版本 通过google hack 进一步探测网站的信息通过google hack 和...
    99+
    2023-09-17
    android 前端 后端
  • c++工程师面试常见问题有哪些
    小编给大家分享一下c++工程师面试常见问题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  1、 c++是面向对象的编程语言吗C++中虚函数(virtual...
    99+
    2023-06-03
  • PHP开发工程师面试问题有哪些
    这篇文章主要讲解了“PHP开发工程师面试问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP开发工程师面试问题有哪些”吧!  1. 下列哪一句不能将'john'添加...
    99+
    2023-06-04
  • python 知识点/面试题目总结(八股文)算法工程师必备
    python 知识点/面试题目总结(八股文)算法工程师必备 1. python的内存管理以及垃圾回收机制2. python中的pass有什么作用3. python的strip4. python...
    99+
    2023-09-09
    面试 python 算法
  • 2020面试必知:中高级工程师面试题集整理(题目+答案)
    这些面试题是我准备换工作的时候整理,没有重点。包括java基础,数据结构,网络,Android相关等等。...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作