BB 两轮盎塞特

上禮拜四去BB兩輪遊

大約二十個人面試 一半華人一半印度人 加上一個白人一個黑人

第一輪歐洲小哥跟印度小哥
歐洲小哥態度不太好 反而印度小哥比較友善
一上來先問why BB 還有叫我自己挑一個簡歷上的project講

  1. Three largest product in an array
    一個int array裡面 找出三個數相乘最大的數是多少 有正有負但沒有零
    一開始這題就掛了 只想得出N^3 後來歐洲小哥提示說可以先sort array 再從array最前面跟最後面撈數字 depends on 有多少負數存在array裡面

  2. 2 sum
    印度小哥先問說對哪些data structure瞭解 瞭解hash map嗎? 問了一些hash map的基本觀念 然後問了2 sum

中間休息二十分鐘 BB提供的飯店BB有提供早餐券 早餐吃得蠻飽的於是只吃了沙拉

第二輪 華人小哥
一上來先問why BB 還有叫我自己挑一個簡歷上的project講 問了你覺得最challenge的地方是哪裡

  1. best time to buy and sell stock

  2. implement pow

  3. unreliable jump vs reliable jump
    這題蠻有趣的
    unreliable jump就是call這function可能會往上跳一個或往下跳一個 要你用unreliable jump implement reliable jump, reliable jump保證要往上跳一格
    要求用了三種寫法 用loop, 用recursive傳parameter, 用recursive但不能傳parameter

小哥讓我問完問題之後 直接送我到一樓… 可見第一輪掛蠻慘的 今天剛收到拒信
第一次onsite 還得再多加努力才行

第一题感觉不用sort array。。
扫一遍只需要记录最大的3个数和最小的2个数就行了,O(n)

楼主, else中为什么要调用两次reliableJump() ?谢谢

楼主能够讲一下 unreliable jump vs reliable jump 怎么做吗? 我没有特别弄清楚题意。
递归代码是要写成下面这个样子吗? 求详细解答下,谢谢
bool reliable() {
if(unreliable()) return true;
else return reliable();
}

抱歉沒說清楚

int unreliableJump() 會回傳+1(往上跳) or -1(往下跳)

void reliableJump() 基本上就是要保證往上跳 1

最後小哥要的是這樣:
void reliableJump() {
if (unreliableJump() == 1) return;
else {
reliableJump();
reliableJump();
}
}

因為unreliableJump() != 1
就代表你往下跳了一格
所以要往上跳兩次 才能達到往上跳一格
這也是小哥提醒我的…

原来如此。真的容易忽略这点。谢谢楼主:)

想问一下楼主,reliable jump传parameter的方法,需要传什么参数?没太懂

我是傳了現在在哪一層的index

當index == 1的時候就return