本文是测试开发工程师 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 解答吗?相关推荐

  1. 一道有趣的啤酒趣味题

    一道有趣的啤酒趣味题 试题 10元钱 2元钱,买1瓶啤酒 2个空瓶,换1瓶啤酒 4个瓶盖,换1瓶啤酒 第一步: 10元,先买了5瓶 第二步: 得到 5个空瓶: 5个瓶盖: 4个空瓶,可以换2瓶: 剩下 ...

  2. java 有意思面试题_一道有趣的Java面试题

    一个鸡蛋从第N层及以上的楼层落下来会摔破? 现在很多大型IT企业在面试时都喜欢问一些智力相关的题目,虽然智力面试题在面试笔试中占的比例不大,但很多时候,面试环节中智力题往往会成为我们拿offer的最大 ...

  3. 一道大厂测试开发面试真题,你需要几分钟解答?

    又到一年年底!年底其实是跳槽换坑的绝佳时机,毕竟可以「年前面试,年后入职」,而且面试越早,好坑位较多,可选择的余地也较大.对于做好准备的测试同学来说,是绝对要鼓励多发简历,多找找面试机会的.哪怕为接下 ...

  4. 测试面试题集锦(六)| 软素质篇与反问面试官篇(附答案)

    原文链接 本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. 本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的.网络搜集(完善).工作日常讨论等,分为以下几个部分,供大 ...

  5. 2023秋招大厂经典面试题及答案整理归纳(201-220)校招必看

    目录 201.数组al[O,mid-l]和al[mid,num-l],都分别有序.将其 merge成有序数组al[O,num-1],要求空间复杂度0(1). 202. 一个url指向的页面里面有另一个 ...

  6. 2023秋招大厂经典面试题及答案整理归纳(141-160)校招必看

    目录 141. 动态连接库的两种方式? 142. IP组播有那些好处? 143. 列举几种进程的同步机制及优缺点 144. 什么是预编译,何时需要预编译? 145. int(*s[10])(int)表 ...

  7. 【粉丝投稿】上海某大厂的面试题,岗位是测开(25K*16)

    简单介绍一句,大专出身,三年经验.跳了四次槽,面试了无数次,现在把自己的面试经验整理出来分享给大家,堪称必杀技! 1,一切从实际出发,对实际工作进行适当修饰 2,不会的简历上不要体现,问到不会的不要瞎 ...

  8. 2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)

    2023年最新大厂开发面试题!!! 滴滴篇 B+树.B-树的区别? 数据库隔离级别,幻读和不可重复读的区别? 有 hell, well, hello, world 等字符串组,现在问能否拼接成 hel ...

  9. 字节跳动抖音研发---测试开发三面---面经(附答案)【接口/自动化/web】测试面试题

    目录 一:前言 [文章的末尾给大家留下了大量的福利哦.] 一.为什么连接的时候是三次握手,关闭的时候却是四次握手? 二.TCP 连接为 什么 C lient 会在发送出 ACK 之后进入到 TIME_ ...

最新文章

  1. php 安全基础 第一章简介 原则
  2. 003-代码补全,运行,调试
  3. 百万级数据库优化方案
  4. Photon多人游戏开发教程
  5. nginx+Tomcat实现动静分离架构
  6. 【IoT最佳实践】设备获取实时天气信息
  7. 微软云平台 Azure简介 (三)Windows Azure 存储概述
  8. Python资料收藏(杂乱版)
  9. Julia: Array的确很强大
  10. X264源码下载地址
  11. 天津科技大学计算机学院地址,天津科技大学有几个校区及校区地址
  12. python高斯滤波和降噪_高斯滤波详解 附python和matlab高斯滤波代码
  13. Ubuntu 更改系统语言
  14. Geos库学习之(四)——几何对象空间关系判断实例
  15. Python 面向对象 计算长方体、四棱锥的表面积和体积
  16. tp路由器虚拟服务器架设传奇,单机传奇架设教程2021年完整版
  17. 视频直播APP开发费用多少钱?
  18. Android之Keystore文件签名(获取查看apk签名)
  19. 曲速未来 发布:新基建下,区块链将急速发展
  20. (自学)sklearn决策树基础知识|解决centos7.8 graphviz报错不能画图的问题

热门文章

  1. htonl/htons以及ntohl/ntohs等函数使用说明
  2. 考取CISP-DSG证书的必要性!
  3. 时间序列 传感器_时间序列数据库如何帮助理解传感器
  4. 导入Excel数据过慢
  5. 【雕爷学编程】Arduino动手做(133)---LCD1602扩展板模块
  6. 超详细用Python进行信用评分卡建模【kaggle的give me some credit数据集】【风控建模】
  7. oracle 10046 看锁,Maclean教你读Oracle 10046 SQL TRACE
  8. 详解RPC框架核心原理
  9. dlp2000 DLP® LightCrafter Display 2000 评估模块
  10. 国鼎代理极海APM32F030x8系列MCU手持式激光测距仪应用方案