FizzBuzz到底是什么?
大家好!
今天想和大家聊聊“FizzBuzz”。
无论是“啊,那个我知道!”的人,还是“好像听说过,但不太了解”的人,都请稍微陪我一下。几分钟就能读完,也许会让你觉得“原来如此”。
“写不出FizzBuzz就不配当程序员”是真的吗?
简单来说,FizzBuzz大概是这样的。
| |
对,这就是著名的“FizzBuzz问题”。
按顺序查看1到100的数字,
如果是3的倍数就显示“Fizz”,如果是5的倍数就显示“Buzz”,
如果是两者的倍数就显示“FizzBuzz”,非常简单。
然而,不知为何,它经常被当作“程序员最低限度的测试”。面试时也会出,社交网络上也时不时能看到“连FizzBuzz都写不出来的人……”这样高高在上的言论。
但是,请等一下。
真的能断言“写不出FizzBuzz=不会编程”吗?
重要的不是会不会,而是有没有处于能做到的“状态”
确实,FizzBuzz要求对语法的理解和基本的逻辑思维。所以被用来做“基础确认”也是可以理解的。
但是,听我说。
环境不同,结果也会不同。
比如,
- 在初次见面的面试官面前紧张的时候
- 突然被递给一块白板,手边没有编辑器的时候
- 突然想不起“那个,modulo是什么来着?”的时候
……这种经历,大家都有过吧?毕竟都是人类。我觉得肯定有。
所以,比起“能不能写出FizzBuzz”,“能不能让自己处于能写出FizzBuzz的状态”,其实更重要。
常见的“只要训练就行”这种建议的陷阱
一说到这个话题,很容易就会出现“所以要每天练习!”这种建议。
确实,通过反复练习能写得很流畅是事实,这本身也是件好事。但是,如果站在“写不出FizzBuzz就不合格”这个前提下,它可能就会变成纯粹的恐惧。
也就是说,很容易变成“犯错了=自己不行”这种思维结构。
比如,早上睡懒觉的那天,是不是很容易觉得“我真是个懒虫……”?但那也许只是刚好身体累了而已。
FizzBuzz也是一样的。
话虽如此,FizzBuzz确实是个好问题
话虽如此,并不是说FizzBuzz不好。
倒不如说,我觉得这是一个非常棒的问题。规则简单,扩展也容易。比如像下面这样改变一下,思考就会变得更深入。
| |
这是一个“不用if-elif-else也能写哦”的例子。稍微有些巧妙吧。
也就是说,FizzBuzz不仅仅是看你“做没做出来”,也是看你“怎么写”以及“理解到了什么程度”的入口。
所以说
对于能不能写出FizzBuzz,我觉得没必要赋予太多过度的意义。
即使没写出来,那也可能只是“现在状态不太好”而已,之后仔细想想往往就能做出来。
不要着急,慢慢来吧。
代码是人类写的。正因为是人类,所以会有忘记的时候,也会有紧张的时候。只要能接受这一点,一点点前进就足够了。
那么,今天也轻松地写代码吧。
