從事 Android 開發工做要滿 5 年了,雖然明白本身技術很通常,可是也老是指望可以有機會進入更好的平臺發展。
這不,由於機緣巧合有了一次 Booking 的面試邀請(是在 hackerrank
上),而後開始臨時抱佛腳 (leetcode
走起),最終選擇了一個週末去完成線上測試,結果我徹底沒預料到。本覺得會被某道題的邏輯繞昏,結果哪知道被標準輸入
這個東西卡得死死的,如今就記錄一下此次很是糟糕的體驗,給本身提個醒。面試
一共四道題,其中一道是 Android
相關的。我一看,嘿嘿,簡單得很,就是一個遞歸查找,10分鐘搞定。
而後其餘三道是 Java
題,我看了下一道題目(題目具體是什麼我就不能說了),略微思考後,有了思路,接着就開始在本地 IDE
裏寫實現,而後就是噩夢的開始了。。。函數
// 對的,簡單的一個 Main 函數 // 輸入相似格式以下 // 1 1 1 1 // 2 3 4 5 // 1 1 3 4 public class Booking { public static void main(String[] args) throws IOException { } }
輸入參數具體意義是題目給定的,你要作的就只是取到它們而後就能夠開始實現你本身的解題步驟了。由於通常在 leetcode
上作題,你要作的就只是實現函數邏輯,輸入已經給你處理好了,因此看到這個題一下就沒反應過來,「這不是 Java
的標準輸入嗎?我不知道怎麼處理啊。。。趕忙谷歌一下吧。我艹,仍是不對啊,我取不到輸入值啊,是要 do{}while()
來着吧?仍是不行啊,敲完回車後怎麼還在等待輸入啊。這個輸入是粘貼進去的仍是行輸入的啊。」。測試
過了十來分鐘,仍是沒有轉機,人一下就慌了。巨大的焦慮籠罩在頭頂,哪還有心思解題啊,我非得把這個搞出來,而後。。。就沒有而後了。code
結果今天早上收到郵件,唉,確定涼了唄。在今天上班寫了一早上的業務後,決定仍是要把這個問題有始有終掉,因而從新整理了思路,記錄一下正確的寫法。遞歸
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH"))); String[] aItems = bufferedReader.readLine().replaceAll("\\s+$", "").split(" "); List<Integer> a = new ArrayList<>(); for (int i = 0; i < 3; i++) { int aItem = Integer.parseInt(aItems[i]); a.add(aItem); } String[] bItems = bufferedReader.readLine().replaceAll("\\s+$", "").split(" "); List<Integer> b = new ArrayList<>(); for (int i = 0; i < bItems.length; i++) { int bItem = Integer.parseInt(bItems[i]); b.add(bItem); } List<Integer> result = doSomething(a, b); for (int i = 0; i < result.size(); i++) { bufferedWriter.write(String.valueOf(result.get(i))); if (i != result.size() - 1) { bufferedWriter.write(" "); } } bufferedWriter.newLine(); bufferedReader.close(); bufferedWriter.close();
函數doSomething
就是你須要完成的函數體了。leetcode
其實寫這篇筆記的時候我也才發現,或者說纔想起來,當時我若是去HackerRank
隨便找一道題,而後看看它的寫法不就輕易的跨過這個問題了嗎。
唉,當時真的就是太慌了,一下就什麼都忘記了!真是愚蠢的我啊!開發