测开面试 | Python语言常见问题
1、面向对象的概念?
- 面向对象编程,简称OOP,是一种程序设计思想
- 主要包括:类、继承、多态(子类方法覆盖父类方法)、实例、属性、方法
2、什么是进程、线程、协程?
- 进程:独立数据空间,进程间不共享数据,系统调度
- 线程:执行程序的最小单元,进程内线程间共享资源,系统调度
- 协程:程序员调度,分解一个线程成为多个“微线程”(https://www.liaoxuefeng.com/wiki/1016959663602400/1017968846697824)
3、如何使用python实现socket编程?
- Socket(套接字),应用程序通过套接字向网络发出请求和应答请求,使主机间或者一台计算机上的进程间可以通讯
#服务端
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:server.py
import socket # 导入 socket 模块
s = socket.socket() # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345 # 设置端口
s.bind((host, port)) # 绑定端口
s.listen(5) # 等待客户端连接
while True:
c.addr = s.accept() # 建立客户端连接
print '连接地址:', addr
c.send('欢迎访问菜鸟教程!')
c.close() # 关闭连接
#客户端
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:client.py
import socket # 导入 socket 模块
s = socket.socket() # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345 # 设置端口号
s.connect((host, port))
print s.recv(1024)
s.close()
4、什么是lambda函数?
- 匿名函数,即没有函数名的函数
- 减少单行函数或者很少使用的函数的定义
#普通函数
def g(x):
return x+1
#匿名函数
g = lambda x:x+1
5、tuple和list什么区别?
- tuple:元组,list:列表
- tuple的元素不可改(元组内的元素不可改,整个元组可修改)
- list的元素可修改
#元组
tuple_a = (1, 2, 3, 4, 5)
#列表
list_a = [1, 2, 3, 4, 5]
6、range函数的用法?
- 返回一系列连续增加的整数
- 工作方式类似于分片(提取部分数据str[start:stop])
- 可以生成一个列表对象
range(start, stop[, step])
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
7、字符串的拆分方法有哪些?
- string对象的split方法,不允许有多个分隔符
- 函数re.split(),允许为分隔符指定多个正则表达式
>>> import re
>>> line = "aaa bbb ccc;ddd eee,fff"
>>> line
'aaa bbb ccc;ddd eee,fff'
#冒号分割
>>> re.split(r';', line)
['aaa bbb ccc', 'ddd eee,fff']
#冒号、逗号分割
>>> re.split(r'[;,]', line)
['aaa bbb ccc', 'ddd eee', 'fff']
#冒号、逗号、空格分割
>>> re.split(r'[;,\s]', line)
['aaa', 'bbb', 'ccc', 'ddd', '', '', 'eee', 'fff']
#结果包含分隔符
>>> re.split(r'([;])', line)
['aaa bbb ccc', ';', 'ddd eee,fff']
#结果不含分隔符
>>> re.split(r'(?:[;])', line)
['aaa bbb ccc', 'ddd eee,fff']
8、单引号、双引号、三引号的区别是什么?
- 单引号和双引号没有区别,都可用来表示字符串(根据字符串是否包含单双引号选择使用)
- 三引号,字符串内可以直接换行
#单引号内使用单引号需要转义符号
str3 = 'I\'m a big fan of Python.’
str4 = 'We all know that \'A\' and \'B\' are two capital letters.’
#双引号内使用单引号不需要转义符号
str4_ = "We all know that 'A' and 'B' are two capital letters.”
#单引号内使用双引号不需要转义符号
str5 = 'The teacher said: "Practice makes perfect" is a very famous proverb.'
9、*args和**kwargs什么作用?
- *args,可变的参数列表
- **kwargs,键值对参数列表
- *args和**kwargs都可以用来传不定量参数
10、pass语句的作用?
- 占位符,实现一个空函数,用于保持程序结构的完整性
11、re模块中match和search方法的不同?
- match:在字符串的起始位置匹配,匹配失败,返回none
- search:扫描整个字符串并返回第一个成功的匹配
#函数语法
re.match(pattern, string, flags=0)
re.search(pattern, string, flags=0)
#实例
#!/usr/bin/python
import re
line = "Cats are smarter than dogs";
matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
print "match --> matchObj.group() : ", matchObj.group()
else:
print "No match!!"
matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
print "search --> matchObj.group() : ", matchObj.group()
else:
print "No match!!"
#实例的运行结果
No match!!
search --> matchObj.group() : dogs
12、解释一下WSGI和FastCGI的关系?
- CGI:通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上如:HTTP 服务器,提供同客户端 HTML 页面的接口
- HTTP服务器与机器上的程序进行交互的一种工具
- 程序须运行在网络服务器上,和语言无关
- WSGI: Web Server Gateway Interface,描述web server如何与web application通信的规范
服务器接受请求-》转给应用-》应用处理请求-》应用返回结果给服务器-》服务器返回结果给客户端
WSGI server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端;
WSGI application接收由server转发的request,处理请求,并将处理结果返回给server。application中可以包括多个栈式的中间件(middlewares),这些中间件需要同时实现server与application,因此可以在WSGI服务器与WSGI应用之间起调节作用:对服务器来说,中间件扮演应用程序,对应用程序来说,中间件扮演服务器。 - FastCGI像是一个常驻(long-live)型的CGI,可以一直执行着(https://www.zhihu.com/question/30672017)
13、python如何操作文件?
- 打开文件
- 写入/读取数据
- 关闭文件
14、python的内存管理机制?(https://testerhome.com/topics/16556)
- 引用计数:在python中,每个对象都有指向该对象的引用总数
- 分代回收:将内存分为3代,0代1代2代,数字越大存活时间越久
- 垃圾回收:当python中的对象越来越多,占据越来越大的内存,启动垃圾回收(Gabage Collection),将没用的对象删除
- 内存池机制:管理小块内存的申请和释放
15、dict的items和iteritems的区别?
- items,以列表方式返回,返回时没有特殊顺序
- iteritems,返回方式类似,返回的是一个迭代器对象
欢迎关注微信公众号"测试开发Stack"
测开面试 | Python语言常见问题的更多相关文章
- 测开面试 | Python常问算法
1.排序 从小到大排序:sorted(list) 从大到小排序:sorted(list, reverse=True) sort() 方法,改变原有数组的顺序 sort(reverse=True) #! ...
- 测开之Python自动化全栈工程师+性能专项(送思维导图)
测开之Python自动化全栈工程师+性能专项 功能测试基础 接口测试基础接口的通信原理与本质cookie.session.token详解接口测试的意义与测试方法接口测试用例的设计 app测试 app流 ...
- Python测开面试题之装饰器
Python的装饰器是面试常被问到的问题之一,在面试Python测试开发时被问到的概率不低于70%,那么装饰器的原理是什么,怎么快速写出一个装饰器呢,接下来我们详细讲解装饰器的实现方法. Python ...
- 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取
本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...
- Python语言在企业级应用上的十大谬误
英文原文:https://www.paypal-engineering.com/2014/12/10/10-myths-of-enterprise-python/ 翻译原文:http://www.os ...
- 【转】布同:如何循序渐进学习Python语言
大家都知道Python语言是一种新兴的编程语言.1989年,Python就由Guido van Rossum发明.Python一直发展态势很好. 原因有几点:1.跨平台性好.Linux.Windows ...
- Python语言说明
第一章:Python入门一.语言什么是语言:人与人之间的沟通计算机语言:计算机语言,即人和计算机之间的沟通语言. 按照级别分类:机器语言:最底层,最低级的语言,只能识别0/1,电平信号汇编语言:计算机 ...
- 基于python语言的经典排序法(冒泡法和选择排序法)
前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...
- python学习: 如何循序渐进学习Python语言
大家都知道Python语言是一种新兴的编程语言.1989年,Python就由Guido van Rossum发明.Python一直发展态势很好. 原因有几点:1.跨平台性好.Linux.Windows ...
随机推荐
- jdk自带监控程序jvisualvm的使用
监控小程序的配置 生产环境tomcat的配置 编辑应用所在的tomcat服务器下的bin目录下的catalina.sh文件,修改如下: 配置如下内容: export JAVA_OPTS="- ...
- windowsServer ------ 安装IIS
1.找到服务器管理器,点击添加角色,一步步执行 2.添加IIS 相关组件 勾选web服务器 下一步 将web服务iis 相关组件全部勾选,ftp 可不选 选择好后安装 等一会 关闭 可以查看到所安装角 ...
- 【Oracle】rman基于时间点恢复
rman基于时间点恢复 场景: 由于某研究的误操作,导致财务模块的数据丢失,如何使用rman基于时间点恢复数据. 思路 1.克隆数据库的虚拟机,直接对数据库的数据进行恢复 RMAN> shutd ...
- asp.net core系列 63 领域模型架构 eShopOnWeb项目分析 上
一.概述 本篇继续探讨web应用架构,讲基于DDD风格下最初的领域模型架构,不同于DDD风格下CQRS架构,二者架构主要区别是领域层的变化. 架构的演变是从领域模型到CQRS, 一开始DDD是用领域 ...
- Spring源码系列 — Bean生命周期
前言 上篇文章中介绍了Spring容器的扩展点,这个是在Bean的创建过程之前执行的逻辑.承接扩展点之后,就是Spring容器的另一个核心:Bean的生命周期过程.这个生命周期过程大致经历了一下的几个 ...
- Python-绘制3D柱形图
Python-绘制3D柱形图 本文主要讲解如何使用python绘制三维的柱形图,可以得到图1所示的效果. 图1 源代码如下: import numpy as np import matplotlib. ...
- 数据解析模块BeautifulSoup简单使用
一.准备环境: 1.准备测试页面test.html <html> <head> <title> The Dormouse's story </title> ...
- CSS3特效之转化(transform)和过渡(transition)
CSS3特效之转化(transform)和过渡(transition) 在对动画深入之前,我们需要先了解它的一些特性,CSS3的转化(transform)和过渡(transition).有人可能会有疑 ...
- Java学习——网络编程
Java学习——网络编程 摘要:本文主要介绍了什么是网络编程,以及如何使用Java语言进行网络编程. 部分内容来自以下博客: https://www.cnblogs.com/renyuan/p/269 ...
- 小鸟初学Shell编程(九)环境变量变量配置文件
介绍 在上一篇使用完了环境变量,并且知道PATH环境变量概念,那么我们对命令的执行就有了一定深入的理解.那么PATH环境变量或其他环境变量是保存在哪呢?那么这篇文章主要介绍环境变量配置文件. 配置文件 ...