测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)

简介: 测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)

本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的、网络搜集(完善)、工作日常讨论等,分为以下十个部分,供大家参考。如有错误的地方,欢迎指正。有更多的面试题或面试中遇到的坑,也欢迎补充分享。希望大家都能找到满意的工作,共勉之!~

软件测试工程师面试题

  1. 测试常见问题与流程篇11
  2. 测试工具篇8
  3. 计算机网络知识与数据库篇8
  4. Linux 与 Python 编程技能篇
  5. 自动化测试(Selenium、Appium 和接口测试)与性能测试篇
  6. 软素质篇(10 大灵魂拷问)与反问面试官篇

Linux 技能篇

  1. 工作中常用的 Linux 命令有哪些?
awk、sed、vim、iotop、dstat、cp、top、ifconfig、pwd、cd、ll、ls、cat、tail、grep、mv、rm、mkdir、df、du
  1. 什么命令可以帮助 Linux 执行 Windows 上传的脚本?
  • 改变编码格式
  • vim test.sh
  • :set ff?// 显示dos的话
  • :set ff=unix:wq
  1. 简述 Linux 三剑客
  • grep 命令
  • 根据用户指定的模式 pattern 对目标文本进行过滤,显示被模式匹配到的行;
  • grep [options] pattern [file]
  • 常用参数:
  • -v 显示不被pattern匹配到的行
  • -i 忽略字符的大小写
  • -n 显示匹配的行号
  • -c 统计匹配的行数
  • -o 仅显示匹配到的字符串
  • -E 使用ERE,相当于egrep(可以识别更多的正则表达式规则)
  • sed 命令
  • 流编辑器,用来处理一行数据。将一行数据存储在模式空间中->用sed命令处理->送入屏幕->清空空间。
  • 常用参数:
  • -h 显示帮助
  • -n 仅显示script处理后的结果
  • -e 指定的脚本来处理输入的文本文件
  • -f 以指定的脚本文件来处理
  • 常用动作:
  • a: 新增 sed -e ‘4 a newline’
  • c: 取代 sed -e ‘2,5c No 2-5 number’
  • d: 删除 sed -e ‘2,5d’
  • i: 插入 sed -ed ‘2i newline’
  • p: 打印 sed -n ‘/root/p’
  • s: 取代 sed -e ‘s/old/new/g’
  • g: 代表全局
  • awk 命令
  • 把文件逐行的读入,以空格为默认分隔符将每行切片。把行作为输入,并赋值给$0->将行切段,从$1开始->对行匹配正则/执行动作->打印内容;
  • awk 'pattern + action' [filenames]
  • 常用语法:
  • filename awk 浏览的文件名
  • begin 处理文本前要执行的操作
  • end 处理文本之后要执行的操作
  • fs 设置输入域分隔符,等价于命令行-F选项
  • nf 浏览记录的域的个数(列数)
  • nr 已读的记录数(行数)
  • 常用参数:
  • ofs 输出域分隔符
  • ors 输出记录分隔符
  • rs 控制记录分隔符,换行标志
  • $0 整条记录
  • $1 第一条分隔后的记录
  1. 如何通命令定位 Linux 服务器下的日志?
  • 如果要监控日志,那么使用 tail -f | grep xxx 命令,过滤需要的字段;
  • 如果在完整日志中查看内容,使用 cat xxx.log | grep xxxx | awk '{print $1}' 等命令过滤自己需要的内容;
  1. 简述项目中的环境搭建和维护
  • 结合自身经验先从系统安装开始,如常用的 CentOS 和 Ubuntu 说起,系统安装主要是磁盘分区和磁盘阵列问题;
  • 基础环境依赖,如 MySQL、Redis、Jenkins、Docker、项目中用到的其他依赖环境等;
  • 维护方便主要从遇到的错误说起,如无法远程连接、服务器加固等;

Python 编程篇

  1. Python 中类方法,类实例方法,静态方法的区别
  • 实例方法:由对象调用;至少一个 self 参数;执行普通方法时,自动将调用该方法的对象赋值给 self;
  • 类方法:由类调用;至少一个 cls 参数;执行类方法时,自动将调用该方法的类复制给 cls;
  • 静态方法:由类调用;无默认参数;
  1. dict 和 tuple 及 list 的区别(这里列的是主要区别,面试足够)
  • tuple 是不可变对象,list 和 dict 都是可变对象,这里的不可变指的是指向地址不可变;
  • list 是有序的,dict 是无序的,不可存放有序集合;
  • dict 查找速度快,不管有多少个元素时间都一样,list 查找速度慢,需要有序查找;
  • dict 的 key 为不可变对象,且不可重复,list 则可以重复,存放任意对象;
  1. JSON 和 dict 的区别
  • JSON 是一种数据格式,纯字符串。dict 是一种完整的数据结构;
  • dict 是一个完整的数据结构,是对 Hash Table 这一数据结构的一种实现,是一套从存储到提取都封装好了的方案。它使用内置的哈希函数来规划 key 对应 value 的存储位置,从而获得O(1)的数据读取速度;
  • JSON 的 key 只能是字符串,Python 的 dict 可以是任何可 hash 对象(不可变对象);
  • JSON 的 key 可以是有序、可重复的;dict 的 key 不可重复,且无序;
  • JSON 任意 key 存在默认值 undefined,dict 默认没有默认值;
  • JSON 访问方式可以是,也可以是.,遍历方式分 in、of;dict 的 value 仅可以下标访问;
  • dict 可以嵌套 tuple,JSON 里只有数组;
  1. Python 会不会出现内存泄漏,为什么?
  • 当对象之间互相引用的时候再删除的时候,可能会造成无法释放对象的情况,出现泄漏;
  • 上面为个人了解,如有其它请补充;
  1. Python 的同步和异步
  • 直接得到最终结果的结果,就是同步调用。
  • 不直接得到的最终的结果,就是异步调用。
  • 同步与异步区别在于:调用者是否得到了想要的最终结果。
  1. 常见手撕代码题
  • 两个列表提取作为字典
dict(zip(list1, list2))
  • 字符串反转输出
str = '1234567890'print(str[::-1])l = list(str)l.reverse()print(''.join(l))
  • 实现斐波那契数列
def Fibonacci(loop):    if loop == 0:        return '无效参数'    elif loop == 1:        return 0    l = [0, 1]    for i in range(2, loop):        l.append(l[i - 1] + l[i - 2])    return l
  • 找出驼峰数组的最大值
li = [1, 2, 10, 10, 2, 1]print([v for v in li if v == max(li)])
  • 水仙花数
sxh = []for i in range(100, 1000):    s = 0    for j in str(i):        s += int(j)**3    if i == int(j)**3:        sxh.append(i)print(sxh)
  • 完全数
a = []for i in range(1, 1000):    s = 0    for j in range(1, i):        if i % j == 0 and j < i:            s += j    if s == i:        a.append(i)
  • 幂的递归
def mi(a, n):    if n == 0:        return 1    else:        return a * mi(a, n - 1)
目录
打赏
0
0
0
0
38
分享
相关文章
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
72 28
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
1月前
|
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
36 4
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
189 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等