一个超级NB的面试问答

A:请写一个文件拷贝函数。

Q:你说的"拷贝"是什么意思?

A:嗯。。。。就是把一个文件的内容拷贝到新的文件

Q:考不考虑日期/时间?

A:不用,那些不用被拷贝。

Q:目标文件可以和源文件同名么?

A:嗯。。。不行

Q:那我不用担心假名攻击(name spoofing)?比如说土耳其语的I。(注意哈,土耳其语的I有四种写法,和英语的I相似而不同)。

A:不用担心。

Q:文件属性呢?

A:新文件和老文件的属性一样

Q:那我应该修改老文件的属性么?如果这个拷贝操作时备份或者存档操作的一部分,那可能不应该保留'Archive'这个属性。

A:不用,保持原样就行了。

Q:那万一源文件的'Archive'属性被关掉了呢?如果新文件的这个属性也被我关掉,可能会搞坏用户的备份软件。

A:就让它们一样。我不在乎用户的备份软件。

Q:这样为用户设计软件好像不好吧?

A:。。。

Q:文件压缩怎么办?这是个文件属性,但拷贝目的地不一定支持压缩。

A:不用管文件压缩。

Q:哪怕源文件被压缩了,而拷贝目的地不支持压缩?

A:对头!

Q:那加密呢?如果源文件被加了密,而拷贝目的地不支持加密?

A:如果目的地不支持加密就不要加密。

Q:哎呀不好意思,我不是想岔开话题。不过。。。这样不是很大的安全隐患么?特别当这个文件拷贝函数支持任意多个参数的时候(直接或者间接)。

A:靠!他妈的把文件拷贝过去就行了!

Q:创建文件的用户呢?

A:不用管。

Q:那文件的所有人呢?

A:不用管。

Q:那文件权限呢?有没有啥么方法来处理继承的权限和赋予的权限?

A:不要管权限了。

Q:那这个函数会在什么系统上运行?

A:Windows XP

Q:Home, Pro, Media Center,或者多于一个版本?

A:Pro

Q:哪一个Service Pack?

A:SP2

Q:也就是说我们不用支持其它的Service Pack?

A:对阿

Q:咋个提供源文件名?

A:用参数传进去。

Q:那则个参数十一个以null结尾的字符串,一个计数的字符串(学Pascal的都知道哈),还是一个对象?

A:以Null计数的字符串。

Q:Null指针可能被传进去么?

A:不可能。

Q:那文件名的编码呢?

A:Unicode。

Q:不好意思,这个这个。。。Unicode不能算编码。如果我们用Unicode数据,我们必须知道具体的编码,比如UTF-8, UCS-2, UTF-16,等等。

A:你够狠!UTF-8。

Q:好嘛。我只是想说把UTF-8转换成UTF-16,好让Windows API调用工作,还是有点痛苦的。

A:射!UTF-8!

Q:Big-endian还是small-endian?

A:啊―――随便你丫的!

Q:那我们接受相对路径还是绝对路径?

A:就绝对路径。

Q:那些路径有没有什么需要过滤的特征?

A:没有。用户自己搞定。

Q:怎么生成目标文件名?或者用户提供?

A:。。。

Q:要不要(或者允不允许)我提供异步拷贝操作?

A:不。

Q:我该怎么报错?Exception?Error code?

A:随便。

Q:我是该在被调用的函数内部处理错误呢,还是把错误传给调用者?

A:嗯。。。传出去。

Q:如果目标文件已经存在怎么办?

A:不会的。

Q:也就是调用人确保这点?

A:对。

Q:也就是说如果目标文件的确存在,我可以立刻终结程序运行?但这个明显违背了前置条件,而且鬼才知道会出什么问题。

A:射。随你丫的。

Q:那轮换数据流呢?

A:随便你!!

Q:老大,我真地不好意思,如果你觉得被我挑衅了。不要生气哈。我只是想在动手前得到一个清晰完整的规格。很明显如果我要写一个文件拷贝函数,而不是用各种库里现成的文件函数,这个新的函数需要满足某套特殊需求,所以我需要知道那些问题的确切答案。如果你无所谓,我可以在一分钟内整出一个函数来,但肯定有很多问题都没有解决。

A:啊!!!!!!!!!!!!!!!!!!!!!!!!

你可能感兴趣的:(面试)