Re: [心得] 學界轉業界...google面試洗臉心得

看板Soft_Job (軟體人)作者時間9年前 (2017/04/18 12:53), 編輯推噓21(21026)
留言47則, 24人參與, 最新討論串2/8 (看更多)
原文恕刪, 推文我整理了一下, 大概就是這三個版本, 我個人比較偏愛版本三, 原因是因為一個月後我比較看得懂這段程式碼的目的是啥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://www.ptt.cc/bbs/Soft_Job/M.1492491228.A.BF2.html

04/18 13:02, , 1F
沒發現版本三不一樣嗎
04/18 13:02, 1F

04/18 13:13, , 2F
有時候面試官心裡會有些偏好 不一定正確 這很正常
04/18 13:13, 2F

04/18 13:13, , 3F
照題目: i=45 時, Buzz Fizz FizzBuzz 都要印
04/18 13:13, 3F

04/18 13:16, , 4F
抱歉,是我沒翻譯好...45時,印FizzBuzz就好
04/18 13:16, 4F

04/18 13:17, , 5F
剛查到Python 霸氣一行解:
04/18 13:17, 5F

04/18 13:17, , 6F
return[i%3/2*'Fizz'+i%5/4*'Buzz'or`i+1`for i in ra
04/18 13:17, 6F

04/18 13:17, , 7F
nge(n)]
04/18 13:17, 7F

04/18 13:18, , 8F
但int 乘 String 這招在Java就無法用了
04/18 13:18, 8F

04/18 13:33, , 9F
呃,那種程式寫出來玩可以,但半年後你還記得這東西在幹嘛
04/18 13:33, 9F

04/18 13:53, , 10F
leetcode裡的fizzbuzz並沒有15的倍數這一項要求
04/18 13:53, 10F

04/18 13:53, , 11F
單純的問3的倍數 5的倍數 兩者的公倍數而已喔
04/18 13:53, 11F

04/18 13:53, , 12F
還是google問的題目有確實要求15這點?
04/18 13:53, 12F

04/18 14:38, , 13F
這題就 leetcode的
04/18 14:38, 13F

04/18 15:50, , 14F
今天這問題的核心不就是全條件完才知道結果是啥?
04/18 15:50, 14F

04/18 15:51, , 15F
3的倍數印Fizz、5的倍數印Buzz,這兩個條件是獨立的
04/18 15:51, 15F

04/18 15:51, , 16F
如果同時滿足兩個條件,自然兩個都做,只有版本二滿足這原
04/18 15:51, 16F

04/18 15:52, , 17F
則,版本一三都是hardcode 15的倍數這個沒必要的條件
04/18 15:52, 17F

04/18 15:55, , 18F
如果條件多7倍數印Woof,不就要再i%105、i%21、i%35、i%7?
04/18 15:55, 18F

04/18 15:56, , 19F
但是版本二就是加一行而已
04/18 15:56, 19F

04/18 16:51, , 20F
04/18 16:51, 20F

04/18 19:09, , 21F
推 樓樓上
04/18 19:09, 21F

04/18 19:17, , 22F
ssccg 大解說得好詳細@@
04/18 19:17, 22F

04/18 19:49, , 23F
推下ssccg 誰說的對啊
04/18 19:49, 23F

04/18 21:04, , 24F
推ssccg 懂了!原來這題的point在這...leetcode 討論
04/18 21:04, 24F

04/18 21:04, , 25F
區很多都是if else的解,重點沒被突顯出來
04/18 21:04, 25F

04/19 02:25, , 26F
有一種是效率問題 有一種是維護問題 都沒人用物件導向解
04/19 02:25, 26F

04/19 13:04, , 27F
修一下我的推文..多打個 "誰",現在才看到
04/19 13:04, 27F

04/19 16:20, , 28F
要看要做的事情邏輯本身, 若是15倍數印FizzBuzz真的是
04/19 16:20, 28F

04/19 16:21, , 29F
因同時是三和五倍數, 則做法二, 若非則做法三
04/19 16:21, 29F

04/19 16:24, , 30F
自作解釋的話很容易會犯下智障測驗的錯誤, 到時打掉重
04/19 16:24, 30F

04/19 16:24, , 31F
04/19 16:24, 31F

04/19 16:32, , 32F
2?2=4 中間究竟是不是加號呢
04/19 16:32, 32F

04/19 19:35, , 33F
其實原題目應該就沒有提到15的倍數,這題最先是要考知不知
04/19 19:35, 33F

04/19 19:38, , 34F
道用ifelse寫法要把需要&&的條件放在前面的基本邏輯
04/19 19:38, 34F

04/19 19:38, , 35F
版本二是延伸問題了
04/19 19:38, 35F

04/19 23:07, , 36F
推居然能用ptt熱烈討論code真是厲害
04/19 23:07, 36F

04/19 23:42, , 37F
開心
04/19 23:42, 37F

04/20 00:13, , 38F
推ssccg大
04/20 00:13, 38F

04/20 00:31, , 39F
推ssccg,除了版本二,其它的 switch case 都是 2^N
04/20 00:31, 39F

04/20 07:16, , 40F
之前有看過這題的心得: https://goo.gl/WyVN7f
04/20 07:16, 40F

04/20 08:52, , 41F
我以為鄉民通常會嗆這題有什麼好問的XD
04/20 08:52, 41F

04/20 09:37, , 42F
這板是一堆非資工本科系的嗎...
04/20 09:37, 42F

04/20 20:39, , 43F
學習了...
04/20 20:39, 43F

04/21 08:51, , 44F
正想回文,推文有人說完惹
04/21 08:51, 44F

04/22 17:09, , 45F
寫這題用神經網路也太靠杯了
04/22 17:09, 45F

05/01 00:35, , 46F
String s = i % 15 == 0 ? "fizzbuzz" : (i % 3 == 0
05/01 00:35, 46F

05/01 00:36, , 47F
? "fizz" : (i % 5 == 0 ? "buzz" : "" + i));
05/01 00:36, 47F
文章代碼(AID): #1OzPlSlo (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1OzPlSlo (Soft_Job)