写点什么

一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?

  • 2022 年 9 月 19 日
    北京
  • 本文字数:1651 字

    阅读完需:约 5 分钟

本文是测试开发工程师 Venn 同学面试某互联网名企遇到的一道面试题目,首发于 Testerhome 社区,引发了有趣的讨论和解答,供各位测试同学参考。链接:https://testerhome.com/topics/18337


一道有趣的测试面试题目题目:在 A 文件夹下有多个子文件夹(a1、b1、c1),每个子文件夹下有好几张 jpg 图片,要求写一段代码(用 PythonorShell),把这些图片全部拷贝并存在 B 文件夹下。


一小撮测试工程师的讨论聪明的 Cookie 同学:考点就是如何遍历一个文件夹下的文件,需要考虑的是文件路径深度,需要用到递归。诚实的黑山老妖同学:我觉得对我来说,难点是操作文件的方法,之前没怎么用过,递归遍历啥的倒是小问题。经验老道的剪烛同学:如果拿这个题目面试测试工程师,这个肯定还需要你提问的(考你需求分析),不仅仅是说写个脚本,等你写完了(考你编程熟悉),还会让你针对你写的代码进行测试(考你用例设计),都是套路。


爆炸的 hellohell 同学:我再想,如果我碰到这个问题,是否能当场给出正确答案?估计不成,因为 API 全忘掉了。确实记性不好。如果给我个本儿,给上网机会,多费点时间,能搞出来;甚至用了递归,生成器,精简了代码(篡成一行),做了判断。jpg 是个目录咋办?不同目录下文件同名咋办?以及其他但前提是你不参考任何东西就写代码。但实际工作中好像这种人不多;so,我只能原地爆炸了。不过打心里还是觉得用 Shell 解决这个问题比较好些。


参考答案 Python 解答(by 煎饼果子)

-- coding: utf-8 --

import os,shutildef movefile(srcfile,dstfile):fpath,fname=os.path.split(srcfile)if os.path.isfile(os.path.join(dstfile,fname)):print("%s exist!"%str(os.path.join(dstfile,fname)))elif not os.path.isfile(srcfile):print("%s not exist!")%(srcfile)else:fpath,fname=os.path.split(dstfile)if not os.path.exists(fpath):os.makedirs(fpath)shutil.move(srcfile,dstfile)def getfile(path):paths = []for root, dirs, files in os.walk(path):for file in files:paths.append(os.path.join(root,file))return pathsdef main():path = "/path/A"pathto = "/path/B"paths = getfile(path)for pathfrom in paths:print(pathfrom)movefile(pathfrom,pathto)if name == 'main':main()Java 解答(byLucas)


public void copyImages(File from, File to) throws IOException {if(from == null || to == null) {throw new RuntimeException("From or To is empty.");}if(from.isFile()) {throw new RuntimeException("From is not directory.");}if(to.isFile()) {throw new RuntimeException("To is not directory.");}File[] images = from.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {boolean result = false;if(pathname.isFile()) {String path = pathname.getAbsolutePath().toLowerCase();if(path.lastIndexOf(".jpg") > -1|| path.lastIndexOf(".png") > -1|| path.lastIndexOf(".jpeg") > -1|| path.lastIndexOf(".bmp") > -1) {result = true;}} else {result = false;}return result;}});for(File image : images) {copyImagesHelper(image, to);}File[] dirs = from.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.isDirectory();}});for(File dir : dirs) {copyImages(from, to);}}private void copyImagesHelper(File image, File dir) throws IOException {String cmd =String.format("cp %s %s", image.getAbsolutePath(), dir.getAbsolutePath());Runtime runtime = Runtime.getRuntime();runtime.exec(cmd);}Shell 解答(by 杰)


find ./A/ -maxdepth 2 -name '*.jpg' -exec cp {} ./B ;P.S.以上答案仅供参考,欢迎大家在留言区,回复你的精彩解答,也许有惊喜哦。(end)


点击下方链接免费领取:性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档

http://qrcode.testing-studio.com/f?from=infoQ&url=https://ceshiren.com/t/topic/22265

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019.10.23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?_霍格沃兹测试开发学社_InfoQ写作社区