在为公司采访时,我被要求提交几个代码示例,以突出我的“最佳”工作。我被问了几个关于特定代码示例的问题,其中一个提到了一个错误。
代码示例是一个WCF Web服务,它使用AES加密不透明的blob。服务使用blob来标识特定服务请求的所有资源。错误是.NET RijndaelManaged类与CBC模式一起使用,没有正确设置IV。 RijndaelManaged类将在类实例化期间自动生成适当的IV,在代码示例中,它在第一次使用加密期间发生,并在ASP .NET应用程序的生命周期中保持不变。由于ASP.NET应用程序可以出于各种原因重新启动,因此在App启动期间生成的新IV值(错误),这些不透明的blob可能会从一次服务调用“无效”到下一次。 p>
问题本身就是“IV在哪里设置解密?”
我的回答已经承认这是一个错误;但是既然他们要求我做“最好的”工作,那么我是SOL在这个位置提交了一个带有错误的样本吗?还有更多我可以说的吗?
我对于概述这种情况犹豫不决,因为我不想看起来像是在借口,但加密代码在我们的服务处于pre-alpha状态时被关闭了,项目在我们之前被杀死了曾经投入生产。
答案 0 :(得分:7)
每个人都写错误。作为程序员,您的部分工作就是如何处理这些错误。我会尝试概述情况,修复错误,然后重新提交代码,就像你在工作中一样。在那之后,这取决于公司以及他们如何做出招聘决定。然而,如果是我,并且你表现出主动权并通过跟进和修复错误来承担责任,我不知道它是否会成为交易破坏者。事实上,它可以将消极变成积极的。
答案 1 :(得分:3)
我基本上只是陈述你在这里说的话。陈述你对bug的理解,为什么它是一个bug,它的影响是什么,它的解决方案是重申你作为程序员的能力的最佳方式。