我正在尝试提出一个很好的编码问题,要求面试候选人用Python解决.
他们将有一个小时来处理这个问题,使用IDE和访问文档(我们不关心人们记忆的内容).
我不是在寻找一个严格的算法问题 - 在采访的其他部分我们做了那样的事情.本节的重点是坐下来观看它们实际编写的代码.所以应该让它们只使用数据结构,这些数据结构是应用程序开发人员的日常工具 - 列表,哈希表(Python中的字典)等,以解决准现实的任务.如果他们想不出真正聪明的东西,就不应该完全阻止它们.
我们有一个问题,我们用于Java编码测试,包括读取文件和对内容进行一些处理.它适用于熟悉Java(甚至C++)的候选人.但是我们遇到了许多不熟悉Java或C++或C#或类似东西的候选人,但他们知道Python或Ruby.这不应该排除它们,但让我们陷入两难境地:一方面,我们从观察某人与一种完全陌生的语言的基础知识斗争中学到的东西并不多.另一方面,我们在Java中使用的问题在Python(或Ruby等)中变得非常微不足道 - 任何一半有能力的人都可以在15分钟内完成.所以,我正试图想出更好的东西.
令人惊讶的是,谷歌没有告诉我任何人做这样的事情,除非我太愚蠢无法进入明显的搜索词.我提出的最好的想法是将工作人员安排到时间段,但它可能有点过于开放.你有一个很好的例子吗?还是坏的?或者你只是有个主意吗?
我有一个函数来清理看起来像这样的字符串:
fn clean(s: &str) -> &str { // but not sure about return type
if /* needs cleaning */ {
let cleaned: String = s.chars().filter( /* etc */ ).collect();
cleaned
} else {
s
}
}
Run Code Online (Sandbox Code Playgroud)
除了这不起作用,因为清理是String
,而不是&str
.
这里的目标是仅在必要时执行分配 - 如果需要修改字符串,我想用新的替换它,如果没有,我不想调用to_string()
它.理想情况下,我希望它对调用者是透明的,但它不一定是 - 我也控制了调用代码.即便如此,我还没有找到一种解决方法,因为如果新创建的String
,甚至是借用它,最终会出现在调用者的某种if或else块中,那么它的生命周期就不足以在否则使用原始字符串的上下文.例如,这也不起作用:
fn caller(s: &str) {
if needs_cleaning(s) {
let cleaned = clean(s); // where clean always returns a new String
s = &cleaned;
}
/ * do stuff with the clean …
Run Code Online (Sandbox Code Playgroud)