BB onsite 两轮游面经

第一輪ABC小姊姊跟華人小姊姊
一上來輪流問了簡歷還有 why bb

第一題就是簡單的DFS
就是給你兩個機場 要從機場A飛到機場B 還有一堆不同機場間的班機 要print出機場A飛到機場B的所有路徑
題目不難 但花了巨多的間在跑test case LZ用電腦打扣 但他們不要電腦run用手動run code 導致第一題寫完根本沒剩多少時間

第二題是裡扣妻散舅
LZ一開始忘了怎麼寫 只給出個O(n^2)暴力解 小姊姊叫我打暴力解的扣後突然想了起來 就用白板解釋一下算法就草草結束了

第二輪一個美國大叔跟歐洲小哥
也是輪流問了簡歷還有why bb 美國大叔還說我認識有人在你實習工作的公司 你這產品我沒聽過 是新的嗎?

第一題是shuffle linked list
給你一個linkedlist 先把他切成兩半 然後再把兩個merge成一個linkedlist merge時要random從第一個拿或從第二個拿 但merge後在原本在同個linkedlist的元素順序不變
寫扣期間大叔不斷的打斷我 光一開始把linkedlist切一半這段就問了五六個問題 具體忘了 一直說這段扣需要嗎我們是不是可以優化
或是表達對shuffle的定義的質疑 隨機從兩個linkedlist拿是對的嗎 是不是要按照剩餘多少元素的比例去求機率 不否認大叔提出的點都很精確 只是體驗不是很好
最後問了我一個致命的問題 說要shuffle幾次我們才可以保證所有元素是隨機的 LZ就隨口答了log n次 說我也不知道為什麼 有沒有人可以跟我說答案是什麼?
test case:
1 -> 2-> 3 -> 4 -> 5 -> 6
可以變成 1 -> 2 -> 3 -> 4 -> 5 -> 6 或 1 -> 2 -> 4 -> 3 -> 5 -> 6 或 4 -> 5 -> 6 -> 1 -> 2 -> 3 但就是不能變成 1 -> 3 -> 2 -> 4 -> 5 -> 6

第二題是bank hours and transaction hours
給定一堆銀行開門的interval 數字都在0-24之間代表hour 問給定的trasaction interval可不可以被執行 可以被執行的定義就是在這transacion裡面任意時間都要有銀行開門
解法就是先sort and merge bank hours interval 然後在這interval binary search到小於等於transaction開始時間 然後確定interval結束時間是否cover transaction結束時間
最後小哥問了兩個follow up
第一個是如果interval開始時間大於結束時間怎麼處理 也就是說這間銀行開門時間或是transaction時間跨過了半夜
第二個是怎麼設計class 假設bank hours變動很少但query次數很多要怎麼讓這個query更快 也就是這個查詢不用每次都merge bank hours interval
test case:
bank hours: [4, 7] [21, 3] [8, 11] [10, 15] transaction: [6, 9] return false, [9, 13] return true, [22, 1] return true, [20, 1] return false

最後等了十幾分鐘被hr送下樓 下樓前還帶我去拿了零食水果
隔天中午在機場收了拒信
因為學校地點關係要當天要回到學校最晚的飛機是五點 我就稍微提一下說是不是太趕 後來BB就提供LZ兩晚飯店
不過五點對於兩輪遊倒是綽綽有餘了呢hhhhhh
anyway move on

query 很多的话,还是用二分查找吗?shuffle 那个,如果根据剩下的node 个数来决定插入哪个的话,不就是概率平均了吗?概率均等的意思是选择1 还是2 的概率均等,楼主说的意思是要保证每个元素在当前位置的概率相等吗?这个肯定是不可能的呀,很多元素在一些位置都不会存在的。

第二轮第一题所有元素是随机的标准是什么呀

query很多的話 小哥想要的感覺是用一個class 有addBank removeBank 然後存著merge過以及沒有merge過的bank intervals 然後query就是對merge過的二分查找沒錯

最後大叔想要問的是要這樣merge shuffle幾次我們才能真的稱得上random shuffle 你仔細想想每個元素是可以在任意位子的 你merge會照順序沒錯但下一次shuffle會再切一半 所以有些在後面的元素第二次shuffle就能跑到前面了

應該想問的是做完X次這種shuffle後 所有permutation出現的機率要相同

楼主你好,问一下第二题,题目的原话是什么?“所有permutation出現的機率要相同”这个是他说的还是你推测的?
如果题目是“所有permutation出現的機率要相同”,那这道题的重点是不是在于计算决定“merge時要random從第一個拿或從第二個拿”的那个概率?

楼主都做出来了吗?为什么被拒啊?

我感觉第二题因为是只有24小时,所以是不是用bucket sort更快?O(n)

很有道理

啊挺有道理的 說不定因為這樣我就掛了哈哈