作者mecumi ()
看板Soft_Job
標題Re: [心得] 學界轉業界...google面試洗臉心得
時間Tue Apr 18 12:53:46 2017
原文恕刪,
推文我整理了一下, 大概就是這三個版本,
我個人比較偏愛版本三,
原因是因為一個月後我比較看得懂這段程式碼的目的是啥XD
較不愛版本二的原因是result用字串串接的話, 會相依於上一個判斷的結果,
要把全部程式碼看完才能知道result是啥,
萬一條件一多, 程式碼只有難讀而已,
所以當我知道google面試官偏愛版本二時,
有點不太理解XD
# 版本一
for(int i = 1; i<= n; i++){
if(i%15 == 0){
System.out.println("FizzBuzz");
continue;
}
if(i%3 == 0){
System.out.println("Fizz");
continue;
}
if(i%5 == 0){
System.out.println("Buzz");
continue;
}
System.out.println(i);
}
# 版本二
for(int i = 1; i <= n; i++){
String result = "";
if(i%3 == 0) result += "Fizz";
if(i%5 == 0) result += "Buzz";
if(result.length() > 0) System.out.println(result);
else System.out.println(i);
}
# 版本三
for(int i = 1; i<= n; i++){
if(i%15 == 0){
System.out.println("FizzBuzz");
} else if(i%3 == 0){
System.out.println("Fizz");
} else if(i%5 == 0){
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.240.88.156
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1492491228.A.BF2.html
1F:→ pttworld: 沒發現版本三不一樣嗎 04/18 13:02
2F:→ javatea: 有時候面試官心裡會有些偏好 不一定正確 這很正常 04/18 13:13
3F:→ Lordaeron: 照題目: i=45 時, Buzz Fizz FizzBuzz 都要印 04/18 13:13
4F:推 Cauchy2008: 抱歉,是我沒翻譯好...45時,印FizzBuzz就好 04/18 13:16
5F:→ Cauchy2008: 剛查到Python 霸氣一行解: 04/18 13:17
6F:→ Cauchy2008: return[i%3/2*'Fizz'+i%5/4*'Buzz'or`i+1`for i in ra 04/18 13:17
7F:→ Cauchy2008: nge(n)] 04/18 13:17
8F:→ Cauchy2008: 但int 乘 String 這招在Java就無法用了 04/18 13:18
9F:推 vfgce: 呃,那種程式寫出來玩可以,但半年後你還記得這東西在幹嘛 04/18 13:33
10F:推 bben900911: leetcode裡的fizzbuzz並沒有15的倍數這一項要求 04/18 13:53
11F:→ bben900911: 單純的問3的倍數 5的倍數 兩者的公倍數而已喔 04/18 13:53
12F:→ bben900911: 還是google問的題目有確實要求15這點? 04/18 13:53
13F:→ magic704226: 這題就 leetcode的 04/18 14:38
14F:→ ssccg: 今天這問題的核心不就是全條件完才知道結果是啥? 04/18 15:50
15F:→ ssccg: 3的倍數印Fizz、5的倍數印Buzz,這兩個條件是獨立的 04/18 15:51
16F:→ ssccg: 如果同時滿足兩個條件,自然兩個都做,只有版本二滿足這原 04/18 15:51
17F:→ ssccg: 則,版本一三都是hardcode 15的倍數這個沒必要的條件 04/18 15:52
18F:→ ssccg: 如果條件多7倍數印Woof,不就要再i%105、i%21、i%35、i%7? 04/18 15:55
19F:→ ssccg: 但是版本二就是加一行而已 04/18 15:56
20F:推 loxyz: 推 04/18 16:51
21F:→ ACMANIAC: 推 樓樓上 04/18 19:09
22F:推 Hevak: ssccg 大解說得好詳細@@ 04/18 19:17
23F:推 lgates: 推下ssccg 誰說的對啊 04/18 19:49
24F:推 Cauchy2008: 推ssccg 懂了!原來這題的point在這...leetcode 討論 04/18 21:04
25F:→ Cauchy2008: 區很多都是if else的解,重點沒被突顯出來 04/18 21:04
26F:推 stosto: 有一種是效率問題 有一種是維護問題 都沒人用物件導向解 04/19 02:25
27F:推 lgates: 修一下我的推文..多打個 "誰",現在才看到 04/19 13:04
28F:推 meteor260: 要看要做的事情邏輯本身, 若是15倍數印FizzBuzz真的是 04/19 16:20
29F:→ meteor260: 因同時是三和五倍數, 則做法二, 若非則做法三 04/19 16:21
30F:推 meteor260: 自作解釋的話很容易會犯下智障測驗的錯誤, 到時打掉重 04/19 16:24
31F:→ meteor260: 練 04/19 16:24
32F:推 meteor260: 2?2=4 中間究竟是不是加號呢 04/19 16:32
33F:→ ssccg: 其實原題目應該就沒有提到15的倍數,這題最先是要考知不知 04/19 19:35
34F:→ ssccg: 道用ifelse寫法要把需要&&的條件放在前面的基本邏輯 04/19 19:38
35F:→ ssccg: 版本二是延伸問題了 04/19 19:38
36F:推 ntddt: 推居然能用ptt熱烈討論code真是厲害 04/19 23:07
37F:推 vn509942: 開心 04/19 23:42
38F:推 janbarry168: 推ssccg大 04/20 00:13
39F:推 cutekid: 推ssccg,除了版本二,其它的 switch case 都是 2^N 04/20 00:31
41F:→ cha122977: 我以為鄉民通常會嗆這題有什麼好問的XD 04/20 08:52
42F:→ bemyself: 這板是一堆非資工本科系的嗎... 04/20 09:37
43F:推 QQaRed: 學習了... 04/20 20:39
44F:推 Csongs: 正想回文,推文有人說完惹 04/21 08:51
45F:推 stosto: 寫這題用神經網路也太靠杯了 04/22 17:09
46F:推 truthmanman: String s = i % 15 == 0 ? "fizzbuzz" : (i % 3 == 0 05/01 00:35
47F:→ truthmanman: ? "fizz" : (i % 5 == 0 ? "buzz" : "" + i)); 05/01 00:36