在涉及编码问题的技术访谈期间,人们使用什么标准来评估代码。假设有多种方法可以对同一个问题进行编码,那么可以使用哪些指标来客观地评估和比较答案。 面试通常是1小时
我使用的一些东西是
其他人使用什么。我在这个列表中遗漏了什么?
答案 0 :(得分:3)
由于大多数程序员通常使用一个IDE还API文档来完成任务,我不喜欢,专注于语法或实际的方法名(除非它的东西是常识)的采访。
重点应放在了解受访者如何接近并解决问题。理想情况下,他们应该这样做,以证明他们了解您正在测试它们的原则。
所以我会更专注于他们正在写,而不是字母:)代码(只是我的意见 - 我愿意听取抗辩和反意见)的精神
。修改强>
要回答您的问题,这实际上取决于您的标准是什么意思:
正确性 - 这是什么意思?句法?我不认为语法应该是一个太大的问题(除非它看起来很糟糕)。也许你可以限制方法正确性的正确性。例如,如果他们使用明显错误的算法或方法。
简洁和简洁 - 在什么情况下?一般的方法?当然,您可以检查它们是否过于冗长(即解决方案的优雅程度)。
清洁设计/ API - 我不知道你能测试得多好。仅需1小时即可完成非常简洁的设计和API。您可以寻找的是他们是否有正确的想法或是朝着正确的方向前进。
可测试性 - 这太宽泛了,你不应该过于严格。您可以做的是询问他们在设计解决方案后如何测试他们的解决方案。允许他们进行更改,不要将其保留在他们的设计中。看看他们如何处理测试或为其设计测试的任务。当你编写代码并设计一些东西时,这不是一次性的交易。你在不断完善它。
可伸缩性,性能和并发性 - 当你谈论设计时不要指定这个,就像我上面所说的那样,如果他们没有做出解决方案,就不要惩罚他们乍看之下表现良好或规模良好。相反,如果您发现它不可扩展或不能很好地支持并发(或者即使它确实如此),请询问他们的解决方案将如何执行,可扩展性和并发性是一个问题。
您的目标是了解他们的想法以及他们如何接近解决方案。这并不是他们记住API或记忆定义的好坏。而且,如果你仅仅依靠自己的标准,就很难找到候选人。就像我最初提到的那样,程序员不会孤立地使用他们头脑中的东西。他们依靠多种来源来完成他们想要做的事情。
答案 1 :(得分:0)
抱歉粗暴,但你的标准太肛门了。你正在和人类打交道,这些人(希望)会在一个团队中工作;没有优化编译器。所以Joe编写了正确的代码,简洁,干净,可测试,可以很好地扩展等等。但是乔是一个迂腐,永恒的唠叨者,他们花了3个月的时间,并且通过对衍生方法的不断咆哮来摧毁你组织的团队晚餐。
明白我的意思?