一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?
本文是测试开发工程师 Venn 同学面试某互联网名企遇到的一道面试题目,首发于 Testerhome
社区,引发了有趣的讨论和解答,供各位测试同学参考。链接:https://testerhome.com/topics/18337
一道有趣的测试面试题目
题目:
在 A 文件夹下有多个子文件夹(a1、b1、c1),每个子文件夹下有好几张 jpg 图片,要求写一段代码(用 Python or
Shell),把这些图片全部拷贝并存在 B 文件夹下。
一小撮测试工程师的讨论
聪明的 Cookie 同学:考点就是如何遍历一个文件夹下的文件,需要考虑的是文件路径深度,需要用到递归。
** **诚实的 黑山老妖同学:我觉得对我来说,难点是操作文件的方法,之前没怎么用过,递归遍历啥的倒是小问题。
经验老道的 剪烛
同学:如果拿这个题目面试测试工程师,这个肯定还需要你提问的(考你需求分析),不仅仅是说写个脚本,等你写完了(考你编程熟悉),还会让你针对你写的代码进行测试(考你用例设计),都是套路。
爆炸的 hellohell 同学:我再想,如果我碰到这个问题,是否能当场给出正确答案?估计不成,因为 API
全忘掉了。确实记性不好。如果给我个本儿,给上网机会,多费点时间,能搞出来;甚至用了递归,生成器,精简了代码(篡成一行),做了判断。
- jpg 是个目录咋办?
- 不同目录下文件同名咋办?
- 以及其他
但前提是你不参考任何东西就写代码。但实际工作中好像这种人不多;so, 我只能原地爆炸了。 不过打心里还是觉得用 Shell 解决这个问题比较好些。
参考答案
Python 解答一(by 煎饼果子)
1. # -*- coding: utf-8 -*-2. 3. 2. import os,shutil4. 5. 3. 6. 7. 8. 4. def movefile(srcfile,dstfile):9. 10. 5. fpath,fname=os.path.split(srcfile)11. 12. 6. if os.path.isfile(os.path.join(dstfile,fname)):13. 14. 7. print("%s exist!"%str(os.path.join(dstfile,fname)))15. 16. 8. elif not os.path.isfile(srcfile):17. 18. 9. print("%s not exist!")%(srcfile)19. 20. 10. else:21. 22. 11. fpath,fname=os.path.split(dstfile)23. 24. 12. if not os.path.exists(fpath):25. 26. 13. os.makedirs(fpath)27. 28. 14. shutil.move(srcfile,dstfile)29. 30. 15. 31. 32. 33. 16. def getfile(path):34. 35. 17. paths = []36. 37. 18. for root, dirs, files in os.walk(path):38. 39. 19. for file in files:40. 41. 20. paths.append(os.path.join(root,file))42. 43. 21. return paths44. 45. 22. 46. 47. 48. 23. def main():49. 50. 24. path = "/path/A"51. 52. 25. pathto = "/path/B"53. 54. 26. paths = getfile(path)55. 56. 27. for pathfrom in paths:57. 58. 28. print(pathfrom)59. 60. 29. movefile(pathfrom,pathto)61. 62. 30. 63. 64. 65. 31. if __name__ == '__main__':66. 67. 32. main()68. 69. 70.
Python 解答一(by Lucas)
1. public void copyImages(File from, File to) throws IOException {2. 3. 2. if(from == null || to == null) {4. 5. 3. throw new RuntimeException("From or To is empty.");6. 7. 4. }8. 9. 5. 10. 11. 12. 6. if(from.isFile()) {13. 14. 7. throw new RuntimeException("From is not directory.");15. 16. 8. }17. 18. 9. 19. 20. 21. 10. if(to.isFile()) {22. 23. 11. throw new RuntimeException("To is not directory.");24. 25. 12. }26. 27. 13. 28. 29. 30. 14. File[] images = from.listFiles(new FileFilter() {31. 32. 15. @Override33. 34. 16. public boolean accept(File pathname) {35. 36. 17. boolean result = false;37. 38. 18. if(pathname.isFile()) {39. 40. 19. String path = pathname.getAbsolutePath().toLowerCase();41. 42. 20. if(path.lastIndexOf(".jpg") > -143. 44. 21. || path.lastIndexOf(".png") > -145. 46. 22. || path.lastIndexOf(".jpeg") > -147. 48. 23. || path.lastIndexOf(".bmp") > -1) {49. 50. 24. 51. 52. 53. 25. result = true;54. 55. 26. }56. 57. 27. } else {58. 59. 28. result = false;60. 61. 29. }62. 63. 30. return result;64. 65. 31. }66. 67. 32. });68. 69. 33. 70. 71. 72. 34. for(File image : images) {73. 74. 35. copyImagesHelper(image, to);75. 76. 36. }77. 78. 37. 79. 80. 81. 38. File[] dirs = from.listFiles(new FileFilter() {82. 83. 39. @Override84. 85. 40. public boolean accept(File pathname) {86. 87. 41. return pathname.isDirectory();88. 89. 42. }90. 91. 43. });92. 93. 44. 94. 95. 96. 45. for(File dir : dirs) {97. 98. 46. copyImages(from, to);99. 100. 47. }101. 102. 48. }103. 104. 49. 105. 106. 107. 50. private void copyImagesHelper(File image, File dir) throws IOException {108. 109. 51. String cmd =110. 111. 52. String.format("cp %s %s", image.getAbsolutePath(), dir.getAbsolutePath());112. 113. 53. Runtime runtime = Runtime.getRuntime();114. 115. 54. runtime.exec(cmd);116. 117. 55. }118. 119. 120.
Shell 解答(by 杰)
1. find ./A/ -maxdepth 2 -name '*.jpg' -exec cp {} ./B \;2. 3. 4.
P.S. 以上答案仅供参考,欢迎大家在留言区,回复你的精彩解答,也许有惊喜哦 。(end)
-
来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
QQ交流群:484590337
公众号 TestingStudio
视频资料领取:https://qrcode.testing-studio.com/f?from=CSDN&url=https://ceshiren.com/t/topic/15844
点击查看更多信息
一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?相关推荐
- 一道有趣的啤酒趣味题
一道有趣的啤酒趣味题 试题 10元钱 2元钱,买1瓶啤酒 2个空瓶,换1瓶啤酒 4个瓶盖,换1瓶啤酒 第一步: 10元,先买了5瓶 第二步: 得到 5个空瓶: 5个瓶盖: 4个空瓶,可以换2瓶: 剩下 ...
- java 有意思面试题_一道有趣的Java面试题
一个鸡蛋从第N层及以上的楼层落下来会摔破? 现在很多大型IT企业在面试时都喜欢问一些智力相关的题目,虽然智力面试题在面试笔试中占的比例不大,但很多时候,面试环节中智力题往往会成为我们拿offer的最大 ...
- 一道大厂测试开发面试真题,你需要几分钟解答?
又到一年年底!年底其实是跳槽换坑的绝佳时机,毕竟可以「年前面试,年后入职」,而且面试越早,好坑位较多,可选择的余地也较大.对于做好准备的测试同学来说,是绝对要鼓励多发简历,多找找面试机会的.哪怕为接下 ...
- 测试面试题集锦(六)| 软素质篇与反问面试官篇(附答案)
原文链接 本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. 本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的.网络搜集(完善).工作日常讨论等,分为以下几个部分,供大 ...
- 2023秋招大厂经典面试题及答案整理归纳(201-220)校招必看
目录 201.数组al[O,mid-l]和al[mid,num-l],都分别有序.将其 merge成有序数组al[O,num-1],要求空间复杂度0(1). 202. 一个url指向的页面里面有另一个 ...
- 2023秋招大厂经典面试题及答案整理归纳(141-160)校招必看
目录 141. 动态连接库的两种方式? 142. IP组播有那些好处? 143. 列举几种进程的同步机制及优缺点 144. 什么是预编译,何时需要预编译? 145. int(*s[10])(int)表 ...
- 【粉丝投稿】上海某大厂的面试题,岗位是测开(25K*16)
简单介绍一句,大专出身,三年经验.跳了四次槽,面试了无数次,现在把自己的面试经验整理出来分享给大家,堪称必杀技! 1,一切从实际出发,对实际工作进行适当修饰 2,不会的简历上不要体现,问到不会的不要瞎 ...
- 2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)
2023年最新大厂开发面试题!!! 滴滴篇 B+树.B-树的区别? 数据库隔离级别,幻读和不可重复读的区别? 有 hell, well, hello, world 等字符串组,现在问能否拼接成 hel ...
- 字节跳动抖音研发---测试开发三面---面经(附答案)【接口/自动化/web】测试面试题
目录 一:前言 [文章的末尾给大家留下了大量的福利哦.] 一.为什么连接的时候是三次握手,关闭的时候却是四次握手? 二.TCP 连接为 什么 C lient 会在发送出 ACK 之后进入到 TIME_ ...
最新文章
- php 安全基础 第一章简介 原则
- 003-代码补全,运行,调试
- 百万级数据库优化方案
- Photon多人游戏开发教程
- nginx+Tomcat实现动静分离架构
- 【IoT最佳实践】设备获取实时天气信息
- 微软云平台 Azure简介 (三)Windows Azure 存储概述
- Python资料收藏(杂乱版)
- Julia: Array的确很强大
- X264源码下载地址
- 天津科技大学计算机学院地址,天津科技大学有几个校区及校区地址
- python高斯滤波和降噪_高斯滤波详解 附python和matlab高斯滤波代码
- Ubuntu 更改系统语言
- Geos库学习之(四)——几何对象空间关系判断实例
- Python 面向对象 计算长方体、四棱锥的表面积和体积
- tp路由器虚拟服务器架设传奇,单机传奇架设教程2021年完整版
- 视频直播APP开发费用多少钱?
- Android之Keystore文件签名(获取查看apk签名)
- 曲速未来 发布:新基建下,区块链将急速发展
- (自学)sklearn决策树基础知识|解决centos7.8 graphviz报错不能画图的问题
热门文章
- htonl/htons以及ntohl/ntohs等函数使用说明
- 考取CISP-DSG证书的必要性!
- 时间序列 传感器_时间序列数据库如何帮助理解传感器
- 导入Excel数据过慢
- 【雕爷学编程】Arduino动手做(133)---LCD1602扩展板模块
- 超详细用Python进行信用评分卡建模【kaggle的give me some credit数据集】【风控建模】
- oracle 10046 看锁,Maclean教你读Oracle 10046 SQL TRACE
- 详解RPC框架核心原理
- dlp2000 DLP® LightCrafter Display 2000 评估模块
- 国鼎代理极海APM32F030x8系列MCU手持式激光测距仪应用方案