1、面向对象的概念?

  • 面向对象编程,简称OOP,是一种程序设计思想
  • 主要包括:类、继承、多态(子类方法覆盖父类方法)、实例、属性、方法

2、什么是进程、线程、协程?

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语言常见问题的更多相关文章

  1. 测开面试 | Python常问算法

    1.排序 从小到大排序:sorted(list) 从大到小排序:sorted(list, reverse=True) sort() 方法,改变原有数组的顺序 sort(reverse=True) #! ...

  2. 测开之Python自动化全栈工程师+性能专项(送思维导图)

    测开之Python自动化全栈工程师+性能专项 功能测试基础 接口测试基础接口的通信原理与本质cookie.session.token详解接口测试的意义与测试方法接口测试用例的设计 app测试 app流 ...

  3. Python测开面试题之装饰器

    Python的装饰器是面试常被问到的问题之一,在面试Python测试开发时被问到的概率不低于70%,那么装饰器的原理是什么,怎么快速写出一个装饰器呢,接下来我们详细讲解装饰器的实现方法. Python ...

  4. 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取

    本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...

  5. Python语言在企业级应用上的十大谬误

    英文原文:https://www.paypal-engineering.com/2014/12/10/10-myths-of-enterprise-python/ 翻译原文:http://www.os ...

  6. 【转】布同:如何循序渐进学习Python语言

    大家都知道Python语言是一种新兴的编程语言.1989年,Python就由Guido van Rossum发明.Python一直发展态势很好. 原因有几点:1.跨平台性好.Linux.Windows ...

  7. Python语言说明

    第一章:Python入门一.语言什么是语言:人与人之间的沟通计算机语言:计算机语言,即人和计算机之间的沟通语言. 按照级别分类:机器语言:最底层,最低级的语言,只能识别0/1,电平信号汇编语言:计算机 ...

  8. 基于python语言的经典排序法(冒泡法和选择排序法)

    前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...

  9. python学习: 如何循序渐进学习Python语言

    大家都知道Python语言是一种新兴的编程语言.1989年,Python就由Guido van Rossum发明.Python一直发展态势很好. 原因有几点:1.跨平台性好.Linux.Windows ...

随机推荐

  1. 项目倒入maven 遇到的问题只有 main 了

    归根结底是倒入错了: (1)首先  view->Toolbar; (2) 点击 File==>project structure 然后:在 project settings中点击 modu ...

  2. AOP软件设计

    什么是面向方面的编程? 为什么面向方面的软件设计? 术语 关注 视口 关注点分离 人工制品 横切 方面 编织 零件 形式主义 第二节 案例研究 关注 人工制品 横切 方面 AspectJ 加入点 切入 ...

  3. Oracle中如何创建数据库

    Oracle数据库的物理结构与MySQL以及SQLServer有着很大的不同.在使用MySQL或SQLServer时,我们不需要去关心它们的逻辑结构和物理结构. 但是在使用Oracle的时候,我们必须 ...

  4. 海边拾贝-B-优秀博客/网站

    记下若干优秀博客,方便后期检索.会不定期更新: 优秀的程序员,从使用Github开始:https://help.github.com/en/github/managing-your-work-on-g ...

  5. flink 注册函数示例

    需求 (filter): 现在有这么一个需求,统计出现在纽约的行车记录.这里我们需要进行一个过滤的操作,我们需要有个自定义的 UDF ,具体思路是,表里面有经度和维度这两个字段,通过这个可以来开发一个 ...

  6. 【Linux命令】ulimit设置最大文件打开数

    一.简介 在Linux下有时会遇到Socket/File : Can't open so many files的问题.其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默 ...

  7. HDU-1760 A New Tetris Game DFS

    曾经,Lele和他姐姐最喜欢,玩得最久的游戏就是俄罗斯方块(Tetris)了. 渐渐得,Lele发觉,玩这个游戏只需要手快而已,几乎不用经过大脑思考. 所以,Lele想出一个新的玩法. Lele和姐姐 ...

  8. 关于 ReadOnlySpan<T>

    using System; using System.Linq; namespace BenchmarkAndSpanExample { public class NameParser { publi ...

  9. ELK学习笔记之Elasticsearch和Kibana数据导出实战

    0x00 问题引出 以下两个导出问题来自Elastic中文社区. 问题1.kibana怎么导出查询数据?问题2:elasticsearch数据导出就像数据库数据导出一样,elasticsearch可以 ...

  10. 三维网格精简算法(Quadric Error Metrics)附源码(转载)

    转载:  https://www.cnblogs.com/shushen/p/5311828.html 在计算机图形应用中,为了尽可能真实呈现虚拟物体,往往需要高精度的三维模型.然而,模型的复杂性直接 ...