FizzBuzz问题是一个非常经典的采访问题,在世界各地的多次采访中被问到。用不同的语言做这件事有很多种方法。但在大多数情况下,如果我们深入到Java8领域,如果loops.There是很好的方法,那么它肯定涉及使用3或4 if/else。但我的主要问题是:
下面是一个关于它的数学观点:
如果循环计数= 100
%15计算= 100
%3计算= 100 -6= 94
%5计算= 100 - 33 = 67
总模量计算= 261 (100 + 94 + 67)
发布于 2018-02-08 10:13:54
这个著名问题背后的逻辑是什么?
这是真正地清除那些不知道自己在做什么的人。
当面试官问这个问题时,他们会在面试者身上寻找什么?
最重要的是,对我来说,这是一个对话的开端。例如,您可以要求人们解释他们的代码为什么选择x % 15 == 0而不是x % 3 == 0 && x % 5 == 0。
我们知道如何编码基本的东西吗?
是,条件;循环;运算符
他们想看看我们的编码风格吗?
是的,这可能是关于优化或仅仅是对话。面试的过程是了解你面前的人。(这是双向的)。
他们在期待这个问题的优化吗?
这取决于,我认为if elseif和不同的循环方式是结合在一起的。一般来说,每个面试官都应该在这个问题上发表自己的观点。例如,在C#中,我会将我的测试设置为包含一个内存管理元素,并期望使用yield return。
你可能想读杰夫·阿特伍德的“发表关于这个主题的文章”。
发布于 2018-06-06 15:21:19
最近我在面试中被问到这个问题,我没有花太多时间思考,只是写了一个简单的java方法,取整数并返回适当的Fizz Buzz单词,我问面试官,程序的预期变化是什么,他说了另一个条件,如数字可以被7打印‘7’除以,所以我重构了一点,最后的答案如下
public static void main(String[] args) {
Function<Integer,String> fizz = e->e%3==0?"FIZZ":"";
Function<Integer,String> Buzz = e->e%5==0?"BUZZ":"";
Function<Integer,String> fizzBuzz = e->e%3==0 && e% 5==0?"FIZZBUZZ":"";
Function<Integer,String> seven = e->e%7==0?"SEVEN":"";
List<Function<Integer, String>> predicateList = List.of(fizz,Buzz,fizzBuzz,seven);
IntStream.range(0,100).boxed()
.map(e->applyFizzBuzzFunc(e,predicateList))
.forEach(System.out::println);
}
/**
* Executes the list in the given order
*/
private static String applyFizzBuzzFunc(Integer e, List<Function<Integer, String>> predicateList) {
return predicateList.stream()
.map(f -> f.apply(e))
.filter(s -> !"".equals(s))
.findFirst()
.orElse(String.valueOf(e));
}我可以看出,面试官对这个解决方案印象深刻。在我看来,要和面试官互动,试着理解他到底在检查什么。
https://stackoverflow.com/questions/48682502
复制相似问题