【摘要】 本故事纯属虚构,如有巧合,他们故事里的美女面试官也肯定没有我的美,请自行脑补...

小P像多数Python自学者一样,苦心钻研小半年,一朝出师投简历。

这不,一家招聘初级Python开发工程师的公司,发来的面试邀请,小P赶紧准备行头欣然赴约。

努力自学的小P

面试开场

接待他的是一位美女面试官,小P决定要好好表现下。经过一轮套路的自我介绍后,到了技术面试的环节。美女面试官问了这么一道题:

“假设你正在编写的方法,需要每次执行时,在服务器上创建一个临时文件同时支持书写部分内容,而后将该文件的位置传输给第三方的类。待第三方类获取到你文本内的数据时,最后执行对该临时文件的删除操作。请在纸上补充完善代码:”

小P作答

小P一想,这个美女还挺心机的,要求边读边写,但这可难不倒我,so easy!于是开始了他的“表演”:

写完后,小P自信的给了美女面试官一个微笑。通过小P的代码,可以看到他对文件的读写还是有一定了解的。知道w+的方式可以同时支持读写操作,并通过seek的指针偏移,来达到读取已写入内容的效果,大家觉得小P的答案能给多少分?

结局:黯然离场

美女面试官沉吟半天,说到:“虽然我们招聘的是初级Python开发,要求也不高,可你理解我说的临时文件吗?你以为定义一个带tmp的文件名就叫临时文件?而且,如果你的上游还存在服务去多次调用你,你定义的这个变量支持高可用吗?”

小P心一凉,这次面试只能以美女面试官的微微一笑而告终了…

更好的作答

那么,如果是我们该如何作答呢?既然是面试初级Python工程师,题目本身自然是不难的,只因为小P没有关注Python的基本模块:tempfile

其实这道题,如果使用Python的tempfile模块,很容易便实现了:

有时候知识面太窄,不仅容易重造轮子,还没人家原生的好用。简单解释下TemporaryFile。
TemporaryFile会针对系统动态的在临时路径下:

  1. windows:C:\Users\ADMINI~1\AppData\Local\Temp\
  2. linux: /tmp/

创建一个tmp开头+8位随机数的文件,文件在调用close方法时,释放文件内存并删除该临时文件。
使用tempfile.TemporaryFile,每次生成随机名称文件,不仅达到了美女面试官对于高可用的要求,也缩减了代码,完美!

当然我们也可以模拟该模块自己实现一个临时文件生成器,但前提是:

  1. 判断操作系统
  2. 调用random随机数
  3. 文件的自动清理等…

喜欢的朋友可以尝试自己来造一个轮子。

好了,今天的文章分享就到这里,不积跬步无以至千里,前晚不要忽略这些小细节。最近项目进度太忙,有阵子没写原创了,希望大家喜欢…

作者:华为云社区技术火炬手

点击关注,第一时间了解华为云新鲜技术~

美女面试官问我Python如何优雅的创建临时文件,我的回答....的更多相关文章

  1. 当面试官问你GET和POST区别的时候,请这么回答.......

    文章内容转载于微信公众号WebTechGarden 一.GET和POST的'普通'区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就 ...

  2. 面试官问我:谈谈对Java GC的了解?回答完让我回家等消息....

    JVM的运行数据区 首先我简单来画一张 JVM的结构原理图,如下. 我们重点关注 JVM在运行时的数据区,你可以看到在程序运行时,大致有5个部分. 1.方法区 不止是存“方法”,而是存储整个 clas ...

  3. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?

    写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...

  4. 「每日一题」有人上次在dy面试,面试官问我:vue数据绑定的实现原理。你说我该如何回答?

    关注「松宝写代码」,精选好文,每日一题 ​时间永远是自己的 每分每秒也都是为自己的将来铺垫和增值 作者:saucxs | songEagle 来源:原创 一.前言 文章首发在「松宝写代码」 2020. ...

  5. 每日一问:面试结束时面试官问"你有什么问题需要问我呢",该如何回答?

    面试结束时面试官问"你有什么问题需要问我呢",该如何回答?

  6. 面试官问我,Redis分布式锁如何续期?懵了。

    前言 上一篇[面试官问我,使用Dubbo有没有遇到一些坑?我笑了.]之后,又有一位粉丝和我说在面试过程中被虐了.鉴于这位粉丝是之前肥朝的粉丝,而且周一又要开启新一轮的面试,为了回馈他长期以来的支持,所 ...

  7. 面试官问,说一个你在工作非常有价值的bug

    如果你去参考面试,做足了准备,面对面试官员从容不迫,吐沫横飞的大谈自己的工作经历.突然,面试官横插一句:说一个你在工作非常有价值的bug.顿时,整个空气都仿佛都凝固了!“What?”... 我想没几个 ...

  8. 面试官问:JS的this指向

    前言 面试官出很多考题,基本都会变着方式来考察this指向,看候选人对JS基础知识是否扎实.读者可以先拉到底部看总结,再谷歌(或各技术平台)搜索几篇类似文章,看笔者写的文章和别人有什么不同(欢迎在评论 ...

  9. 当面试官问你sql优化的时候。。。

    当面试官问你有关sql优化的问题时,直接拿笔写给他: 8-select 9-distinct<column_list> 1-from left_table 3-<join_type& ...

随机推荐

  1. 数字化制造-基于Plant Simulation的冲压车间数字化仿真平台研究

    冲压车间是将板材冲压形成汽车车身.车厢.车底板等部件的过程,冲压是汽车生产四大加工工艺的首个工序,直接影响着汽车焊装.涂装.总装车间的生产.冲压车间生产具有以下特点: 换模时间长:每种冲压件均有一套专 ...

  2. 轻量级熔断降级框架 alibaba sentinel 应用

    一.简介: wiki:https://github.com/alibaba/Sentinel/wiki 选择: ♥ 开源,成熟(功能完备.实际应用),活跃(功能维护及拓展) ♥ 更轻量:依赖资源少:a ...

  3. Django之ORM对象关系模型

    MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需 ...

  4. chosen.jquery.js

    http://baifjece.blog.163.com/blog/static/33794654201286102519119/ ------------------首次加载设置默认选中项----- ...

  5. hdu6090 菊花图

    Rikka with Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  6. 换个角度学习ASP.NET Core中间件

    中间件真面目 关于ASP.NET Core中间件是啥,简单一句话描述就是:用来处理HTTP请求和响应的一段逻辑,并且可以决定是否把请求传递到管道中的下一个中间件! 上面只是概念上的一种文字描述,那问题 ...

  7. web项目——javax.servlet.ServletException: Circular view path [registerForm]

    报错: 控制台输出: 三月 21, 2019 10:12:32 上午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: N ...

  8. 一看就懂之吐血整理的 Docker 学习笔记

    前言 随着devops的兴起,Docker 近年来越来越火,容器化概念也越来越火.此篇将带你瞬间入门Docker. Docker 概述 Docker 出现的背景 在我们的开发过程中,通常是这样的一种流 ...

  9. ubuntu部署TimescaleDB

    系统环境: ubuntu16.04 PostgreSQL 版本: 12 注意:TimescaleDB 需要PostgreSQL 11.4+或12.0+.不再支持PostgreSQL 9.6.3+和10 ...

  10. Java——异常处理,数据库连接

    在学习数据库连接时看到try(){}结构,查了一下写在这里: import java.sql.Connection; import java.sql.DriverManager; import jav ...