关闭

一道面试题:文件拷贝

2243人阅读 评论(1) 收藏 举报
情景:
在面试过程中,求职者被要求写一个文件拷贝函数。

问:你是怎样理解“拷贝”的?
答:嗯... 就是把文件的内容复制到新文件。
问:那么时间戳呢?
答:不拷贝。
问:目标文件名是否必须相同?
答:不必。
问:那它的名字能否一样?
答:这个...不能。
问:要不要担心名字欺骗?比如土耳其 I (注1)?
答:不要担心。
问:文件位置是否必须相同?请注意如果位置相同的话,则名称不能一样,除非拷贝到自身(接下来的问题是...)
答:当然。
问:怎么处理文件属性?
答:文件属性相同。
问:要不要修改原文件的属性?如果该文件是备份或存档的一部分,仍然保留其“存档”属性可能会出错。
答:不管它,保持原样。
问:如果原文件没有“存档”属性呢?假如新文件的“存档”属性为空,可能会造成用户的备份程序出错。
答:保持原样,不用理会用户的备份软件。
问:这个嘛,软件设计要为用户着想,我不认为这是最好的方案,但你是这样回答的。
答:...
问:那么压缩问题?这是文件的属性之一,但目标位置可能不支持压缩。
答:复制的文档不用压缩。
问:即使原文件是压缩的,而且目标位置也支持压缩?
答:是的。
问:关于加密文件,假如原文件是加密的,但目标位置不支持加密怎么办?
答:如果目标位置不支持加密,就不对复制文件加密。
问:嗯...,对不起,不是我节外生枝,但是这可能会引起严重的安全漏洞。尤其是这个文件复制函数最后可能要支持任意个参数(直接或间接)。
答:听着,我只管拷贝那个该死的文件。
问:那么文件的创建者呢?
答:不管他。
问:文件的所有者?
答:我不管。
问:文件的权限?要不要分别处理继承的权限和指定的权限?
答:不考虑权限。
问:该文件复制函数运行时所需的操作系统?
答:Windows XP。
问:家庭版、专业版、媒体中心版,其中之一还是多种?
答:专业版。
问:补丁包呢?
答:Service Pack 2。
问:这就意味着我们不支持其它的补丁包?
答:正是。
问:如何提供原文件名?
答:通过一个参数。
问:使用空字符结束的字符串、计算字符个数的字符串还是对象?
答:空字符结束的字符串。
问:是否可能传入空指针?
答:不。
问:是否可能传入空字符串?
答:不会。
问:是否可能传入恶意的字符串(例如,没有以 NULL 结束)?
答:不。
问:文件名用那种编码?
答:Unicode。
问:对不起,Unicode 不是编码格式,实际上在使用Unicode时要指定编码的名称,例如 UTF-8, UCS-2, UTF-16,等等。
答:很对,就用 UTF-16。
问:Big-endian 还是 little-endian (注2)?
答:随便!
问:接受相对路径,还是只接受完整路径?
答:只接受完整路径。
问:是否只支持特定的字符以便能对传入的参数进行过滤?
答:没有,调用者将负责过滤所有的路径和文件名。
问:目标文件的文件名是如何生成或提供的?
答:...
问:是否支持(或允许)异步文件拷贝操作?
答:不。
问:怎样报告错误?异常?错误代码?
答:随便。
问:应当在函数内部捕获异常,还是传递给调用者?
答:这个...传递出。
问:假如目标文件已经存在怎么办?
答:不会。
问:由调用者保证?
答:毫无疑问。
问:假如它真的存在,那就终止程序?显然违背了约定的条件,但谁知道发生了什么事情。
答:当然,随便您。
问:怎么处理其他数据流?
答:悉听尊便!
问:看来您觉得我有些过分,不过请别生气。我只不过是想要澄清我们的要求而已。显然如果我要写一个文件拷贝方法的话,不会使用许多现有的库和框架中的例程,而是要满足许多特殊的要求。我想要的是这些问题的正确答案。如果您愿意,我可以花一分钟时间讲解。要指出的是,在需求和目的方面,仍然有相当多的问题没有解决。
答:啊..........................

任务完成。
===========================
原文出自:(Ooze)
注:注释为译者所加。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:98858次
    • 积分:1252
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:4篇
    • 译文:2篇
    • 评论:125条
    QR码
    文章分类
    最新评论