一道面试题:文件拷贝

翻译 2006年05月21日 04:38:00
情景:
在面试过程中,求职者被要求写一个文件拷贝函数。

问:你是怎样理解“拷贝”的?
答:嗯... 就是把文件的内容复制到新文件。
问:那么时间戳呢?
答:不拷贝。
问:目标文件名是否必须相同?
答:不必。
问:那它的名字能否一样?
答:这个...不能。
问:要不要担心名字欺骗?比如土耳其 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)
注:注释为译者所加。

从一道面试题看深拷贝浅拷贝问题

Trend科技的一道面试题: 请看下面的程序,说说会出现什么问题? #include  #include  #include   using   namespace   std;  ...

一道面试题引发的对android中context的研究(一)-SharedPreference是否可以将文件保存在SD卡上

今天突然间看到一个公司的面试题。SharedPreference是否可以将文件保存在SD卡上? 书中不仅给出了答案,也给出了详细的解答过程。在这里将答案和解答思路列出来。...

一道Java面试题之实现复制、删除、剪切文件(文件夹的实现)的snippet

因为前几天看到一道Java面试题是叫写出文件复制、删除和剪切的,所以昨天晚上就花了大概一个小时写出这个完整的snippet(当然如果只要思路的话就好办了)。 这个snippet中的删除文件(文件夹)部...

基于visual Studio2013解决面试题之0902内存拷贝

题目解决代码及点评/* 用 C 语言实现函数 void * memmove(void *dest,const void *src,size_t n) memmove 函数的功能是...

程序员面试题精选100题(15)-含有指针成员的类的拷贝[C/C++/C#]

题目:下面是一个数组类的声明与实现。请分析这个类有什么问题,并针对存在的问题提出几种解决方案。 template class Array { public: Array(unsig...

程序员面试题精选100题(15)-含有指针成员的类的拷贝[C/C++/C#]

题目:下面是一个数组类的声明与实现。请分析这个类有什么问题,并针对存在的问题提出几种解决方案。 template class Array { public: Array(unsigned...

【面试题一】:string类的深浅拷贝

#pragma once #include using namespace std; //浅拷贝(析构对象时会出错) class CMyString { public: //构造函数 CMyS...

调用拷贝构造函数的几种情况(附面试题)

1. 深拷贝和浅拷贝(拷贝构造函数的使用)   有时候需要自己定义拷贝构造函数,以避免浅拷贝问题。 在什么情况下需要用户自己定义拷贝构造函数: 一般情况下,当类中成员有指针变量、类中有动态内...
  • zzwdkxx
  • zzwdkxx
  • 2016年11月30日 16:24
  • 1899

面试题-基础-字符串转整数&字符串拷贝函数

/* ---------字符串转换为整数(类似与atoi函数)------------ 描述:程序本没有那么复杂,如果只是简单的其实不到10行就可以搞定,但是要考虑不同的情况的话,就稍微复杂点。 下...

(2012年百度面试题)复杂链表(双指针)的拷贝

题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外, 还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下: struct Compl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一道面试题:文件拷贝
举报原因:
原因补充:

(最多只允许输入30个字)