Hulu面经
2013年5月17號參加hulu前端面試,面試時間為下午1點,走進hulu就能看見一個會議室的門上貼上了一個印有你名字的白紙,表示這間會議室是你面試的地點,很人性化,也標志hulu對任何一個面試者的重視。??
??
???? 一面:1點面試開始,首先是一個年輕的面試官。hulu面試早就聽說會是各種算法,果然如此,即使是前端面試。面試官gg首先是問了一下我做的項目,balala。然后就是算法面試。第一道題,給出一個整數(shù)序列,判斷他是否是二叉排序數(shù)的后續(xù)遍歷。首先我給的算法是,假設它是正確的后續(xù)遍歷,且知道二叉排序數(shù)的中序遍歷是該整數(shù)序列的遞增序列,所以解法是看能否找出矛盾,面試gg說他不太清楚我這種做法能不能求解,希望我能給出一個不要利用額外空間,在原有的整數(shù)序列上判斷是否正確,又是一段思考后,我又給了一個nlogn的解法,面試官gg表示很滿意,并讓我在紙上寫好代碼,代碼似乎也沒什么問題。然后問我如果給我o(n)的空間復雜度這道題能不能優(yōu)化,想了一會,面試官gg也給了一些提示,不過本人很笨,沒有想出解法。然后是第二題,題目是給出因子為3,5,7至少一個的第k大的數(shù),想了半天,面試官gg也給了提示,表示不會做,只好第三題,題面是給定一個n*n的二維數(shù)組,數(shù)組條件,二維數(shù)組的行是遞增的,列是遞增的,且整數(shù)都不重復,然后給一個數(shù)判斷這個數(shù)是不是在二維數(shù)組中,因為之前有看過這道題,便很快給除了解法。然后時間差不多了,面試官gg說在給你一道題,看看能不能5分鐘做出來,兩個人A,B仍硬幣,A扔n次,B扔n+1次,A x次正面朝上,B y次正面朝上,問x>y的概率是多少,想了大概5分鐘,沒有想法后,面試官gg表示,算了,這道題給的時間太短,怪我了。??
??
?????? 二面:然后就是二面了,二面也是一個面試官gg,看一面沒有邏輯推理題,就說那問我一道簡單的邏輯推理題吧,不過現(xiàn)在我也沒覺的那題簡單,題目是這樣的,給100個白球,100個黑球混在一起,每次取兩個,如果取出的顏色相同,就放回一個黑球,如果取出的顏色不同就放回一個白球,求最后剩黑球的概率。這題一出來我就沒感覺是個簡單題,想了有一會,面試官哥哥給了提示說可不可以把它變成一種模型,提示很有用,瞬間就有了想法,將黑球用0表示,白球用1表示,這樣抽象出的模型就是100個0和100個1,兩兩異或,最后結(jié)果是0,說明最后剩下黑球的概率是1,我說了我的解法,似乎與面試官gg的解法不太一樣,簡單給了我他的想法,不過最后說恩,還可以,然后這題就過了。下一道題仍是一道算法題,給一個整數(shù)數(shù)組,求出這個數(shù)組絕對值和最小的連續(xù)子序列,然后說這道題和網(wǎng)上常考的求子數(shù)組最大和的那道題很像。我想了一會,然后面試官gg問我有沒有思路,我說和求子數(shù)組最大和的思路差不多,每次遇到正的就舍棄,負的留下,面試官gg問我你覺的這個思路可行嗎,說完我就瞬間意識到不可行,我說最笨的就是n(n2)窮舉每個連續(xù)子數(shù)組,當然我知道這道題肯定是能優(yōu)化的,所以一直在想優(yōu)化的方法,面試官gg提示,因為題目要求是連續(xù)的,你看看能不能通過這個條件把原有問題轉(zhuǎn)化一下,想了想沒有思路,然后面試官gg接著提示,既然是連續(xù)就可以用一個大數(shù)組的和減去一個小數(shù)組的和就能得到剩下連續(xù)數(shù)組的和了,這個讓我突然想起算法導論DP那張求矩陣相成最少次數(shù)那道題,于是向面試官說了自己的想法,用DP解決,面試官想了想說那你這其實還是o(n2)的解法,我想了想也是,于是接著想,面試官gg很nice,接著提示我,你可以將這個連續(xù)數(shù)組用另外一個數(shù)組表示,一趟遍歷就能構(gòu)造這個數(shù)組,然后他又在紙上給我寫了公式,這樣這道題就轉(zhuǎn)化成了求一個數(shù)組任意兩個數(shù)之差的絕對值最小,然后我想了想只要nlogn的時間復雜度排序一下,然后用n遍歷,就能找出來,最后的時間復雜是n+nlogn,面試官很贊同,說讓我在紙上好好寫一下,這道題要拿出去,于是我先打草稿,然后非常整潔,小心翼翼的寫到了準備拿出去的白紙上,最好檢查了一下,確定沒有bug,就教給了面試官gg,然后面試gg說咱們休息一下,你要不要上洗手間,那個我說要,然后去了趟洗手間,回來就是三面了。??
??
?????? 三面:三面仍就是一個面試官gg,上來就問了下我簡歷上的實習,看我曾在BAT上都實習過的經(jīng)歷,似乎很感興趣,又簡單問了下項目,我給他講了一個從頭到尾差不多都是我一個人寫的項目,因為項目已經(jīng)上線,就用他的電腦展示給他看了看,給他講了講需求,他說這個挺好的,然后接著仍然是算法題,第一道題兩個有序的數(shù)組,如何找出兩個數(shù)組合并后的第K大的數(shù),很快我就給了一個o(k)的解法,似乎面試官gg也知道我能很快給出這個解法,并馬上問我能不能優(yōu)化,我說在優(yōu)化的話只能是o(logk)了,他說恩,于是我就朝著這個方向想,參考二分查找的思想,簡單給他講了講一個我不成熟的思路,似乎方向是對的,但是和他討論了一下,沒有什么太大的進展,他說那這道題就算了,我們換一道題,題目是一個人知道未來n天的每天股票的價格,請你給出一個算法,使得這個人從哪天買入,哪天賣出能獲得最大的收益。這道題轉(zhuǎn)化一下就是求數(shù)組后面的數(shù)減去前面的數(shù)的差最大,如何找到這個兩個數(shù),o(n2)的做法就不說了,想了一會我和他說可以把數(shù)組分成兩部分,每次取出前部分的最小值,是o(1)解法,后半部分取最大值,因為每次后半部分都要縮小,所以可能把最大值刪掉,可以將后半部分變成堆,這樣每次取最大值就變成o(1),但是每次要用一下維護堆的那個算法,時間復雜度為o(logn),所以總的時間負責度為o(nlogn),然后用一個max的變量表示每次獲得的最大值,面試官gg很滿意,說答案就是o(nlogn),剩下的時間就是問我如何評價BAT這三家公司,為什么要跳槽一下話題了,說了很多,然后就說你等一下,我問一下hr有沒有什么問題然后hrmm就進來了,問我有沒有什么問題,我就問了下hulu和美國那邊有沒有項目一起在做,有沒有可能去美國那邊交流學習,hrmm耐心的給我講了很多。然后我接著問hulu每次的技術(shù)交流都是在清華,北大,有沒有考慮去其它學校做技術(shù)交流講座,hrmm說今年hulu將陸續(xù)在北郵,北航等學校開展活動,我聽了還是很欣喜的,然后hrmm說我們會盡快出結(jié)果,然后在約manager面試。??
??
???? 總結(jié):就這樣hulu的第一次面試結(jié)束了,不管結(jié)果怎樣hulu的面試正如我想的那樣非常有難度,學到了很多東西,要知道我應聘的是前端工程師,但是沒有問我一點前端問題,希望有面試hulu的同學,看到我的面試經(jīng)歷會有幫助。
??????
??
???? 一面:1點面試開始,首先是一個年輕的面試官。hulu面試早就聽說會是各種算法,果然如此,即使是前端面試。面試官gg首先是問了一下我做的項目,balala。然后就是算法面試。第一道題,給出一個整數(shù)序列,判斷他是否是二叉排序數(shù)的后續(xù)遍歷。首先我給的算法是,假設它是正確的后續(xù)遍歷,且知道二叉排序數(shù)的中序遍歷是該整數(shù)序列的遞增序列,所以解法是看能否找出矛盾,面試gg說他不太清楚我這種做法能不能求解,希望我能給出一個不要利用額外空間,在原有的整數(shù)序列上判斷是否正確,又是一段思考后,我又給了一個nlogn的解法,面試官gg表示很滿意,并讓我在紙上寫好代碼,代碼似乎也沒什么問題。然后問我如果給我o(n)的空間復雜度這道題能不能優(yōu)化,想了一會,面試官gg也給了一些提示,不過本人很笨,沒有想出解法。然后是第二題,題目是給出因子為3,5,7至少一個的第k大的數(shù),想了半天,面試官gg也給了提示,表示不會做,只好第三題,題面是給定一個n*n的二維數(shù)組,數(shù)組條件,二維數(shù)組的行是遞增的,列是遞增的,且整數(shù)都不重復,然后給一個數(shù)判斷這個數(shù)是不是在二維數(shù)組中,因為之前有看過這道題,便很快給除了解法。然后時間差不多了,面試官gg說在給你一道題,看看能不能5分鐘做出來,兩個人A,B仍硬幣,A扔n次,B扔n+1次,A x次正面朝上,B y次正面朝上,問x>y的概率是多少,想了大概5分鐘,沒有想法后,面試官gg表示,算了,這道題給的時間太短,怪我了。??
??
?????? 二面:然后就是二面了,二面也是一個面試官gg,看一面沒有邏輯推理題,就說那問我一道簡單的邏輯推理題吧,不過現(xiàn)在我也沒覺的那題簡單,題目是這樣的,給100個白球,100個黑球混在一起,每次取兩個,如果取出的顏色相同,就放回一個黑球,如果取出的顏色不同就放回一個白球,求最后剩黑球的概率。這題一出來我就沒感覺是個簡單題,想了有一會,面試官哥哥給了提示說可不可以把它變成一種模型,提示很有用,瞬間就有了想法,將黑球用0表示,白球用1表示,這樣抽象出的模型就是100個0和100個1,兩兩異或,最后結(jié)果是0,說明最后剩下黑球的概率是1,我說了我的解法,似乎與面試官gg的解法不太一樣,簡單給了我他的想法,不過最后說恩,還可以,然后這題就過了。下一道題仍是一道算法題,給一個整數(shù)數(shù)組,求出這個數(shù)組絕對值和最小的連續(xù)子序列,然后說這道題和網(wǎng)上常考的求子數(shù)組最大和的那道題很像。我想了一會,然后面試官gg問我有沒有思路,我說和求子數(shù)組最大和的思路差不多,每次遇到正的就舍棄,負的留下,面試官gg問我你覺的這個思路可行嗎,說完我就瞬間意識到不可行,我說最笨的就是n(n2)窮舉每個連續(xù)子數(shù)組,當然我知道這道題肯定是能優(yōu)化的,所以一直在想優(yōu)化的方法,面試官gg提示,因為題目要求是連續(xù)的,你看看能不能通過這個條件把原有問題轉(zhuǎn)化一下,想了想沒有思路,然后面試官gg接著提示,既然是連續(xù)就可以用一個大數(shù)組的和減去一個小數(shù)組的和就能得到剩下連續(xù)數(shù)組的和了,這個讓我突然想起算法導論DP那張求矩陣相成最少次數(shù)那道題,于是向面試官說了自己的想法,用DP解決,面試官想了想說那你這其實還是o(n2)的解法,我想了想也是,于是接著想,面試官gg很nice,接著提示我,你可以將這個連續(xù)數(shù)組用另外一個數(shù)組表示,一趟遍歷就能構(gòu)造這個數(shù)組,然后他又在紙上給我寫了公式,這樣這道題就轉(zhuǎn)化成了求一個數(shù)組任意兩個數(shù)之差的絕對值最小,然后我想了想只要nlogn的時間復雜度排序一下,然后用n遍歷,就能找出來,最后的時間復雜是n+nlogn,面試官很贊同,說讓我在紙上好好寫一下,這道題要拿出去,于是我先打草稿,然后非常整潔,小心翼翼的寫到了準備拿出去的白紙上,最好檢查了一下,確定沒有bug,就教給了面試官gg,然后面試gg說咱們休息一下,你要不要上洗手間,那個我說要,然后去了趟洗手間,回來就是三面了。??
??
?????? 三面:三面仍就是一個面試官gg,上來就問了下我簡歷上的實習,看我曾在BAT上都實習過的經(jīng)歷,似乎很感興趣,又簡單問了下項目,我給他講了一個從頭到尾差不多都是我一個人寫的項目,因為項目已經(jīng)上線,就用他的電腦展示給他看了看,給他講了講需求,他說這個挺好的,然后接著仍然是算法題,第一道題兩個有序的數(shù)組,如何找出兩個數(shù)組合并后的第K大的數(shù),很快我就給了一個o(k)的解法,似乎面試官gg也知道我能很快給出這個解法,并馬上問我能不能優(yōu)化,我說在優(yōu)化的話只能是o(logk)了,他說恩,于是我就朝著這個方向想,參考二分查找的思想,簡單給他講了講一個我不成熟的思路,似乎方向是對的,但是和他討論了一下,沒有什么太大的進展,他說那這道題就算了,我們換一道題,題目是一個人知道未來n天的每天股票的價格,請你給出一個算法,使得這個人從哪天買入,哪天賣出能獲得最大的收益。這道題轉(zhuǎn)化一下就是求數(shù)組后面的數(shù)減去前面的數(shù)的差最大,如何找到這個兩個數(shù),o(n2)的做法就不說了,想了一會我和他說可以把數(shù)組分成兩部分,每次取出前部分的最小值,是o(1)解法,后半部分取最大值,因為每次后半部分都要縮小,所以可能把最大值刪掉,可以將后半部分變成堆,這樣每次取最大值就變成o(1),但是每次要用一下維護堆的那個算法,時間復雜度為o(logn),所以總的時間負責度為o(nlogn),然后用一個max的變量表示每次獲得的最大值,面試官gg很滿意,說答案就是o(nlogn),剩下的時間就是問我如何評價BAT這三家公司,為什么要跳槽一下話題了,說了很多,然后就說你等一下,我問一下hr有沒有什么問題然后hrmm就進來了,問我有沒有什么問題,我就問了下hulu和美國那邊有沒有項目一起在做,有沒有可能去美國那邊交流學習,hrmm耐心的給我講了很多。然后我接著問hulu每次的技術(shù)交流都是在清華,北大,有沒有考慮去其它學校做技術(shù)交流講座,hrmm說今年hulu將陸續(xù)在北郵,北航等學校開展活動,我聽了還是很欣喜的,然后hrmm說我們會盡快出結(jié)果,然后在約manager面試。??
??
???? 總結(jié):就這樣hulu的第一次面試結(jié)束了,不管結(jié)果怎樣hulu的面試正如我想的那樣非常有難度,學到了很多東西,要知道我應聘的是前端工程師,但是沒有問我一點前端問題,希望有面試hulu的同學,看到我的面試經(jīng)歷會有幫助。
??????
???? 最后:今天中午如我所料的收到了hulu的Thank you letter。不過自己已經(jīng)很滿足了,知道自己還有很多東西要學,找工作是個艱難的過程,需要自己踏踏實實的準備,耐心的總結(jié)每一次面試失利的原因,并及時彌補,最后祝愿每一個2014年畢業(yè)的同學都能收到自己滿意的offer。
“這道題轉(zhuǎn)化一下就是求數(shù)組后面的數(shù)減去前面的數(shù)的差最大,如何找到這個兩個數(shù),o(n2)的做法就不說了,想了一會我和他說可以把數(shù)組分成兩部分,每次取出前部分的最小值,是o(1)解法,后半部分取最大值,因為每次后半部分都要縮小,所以可能把最大值刪掉,可以將后半部分變成堆,這樣每次取最大值就變成o(1),但是每次要用一下維護堆的那個算法,時間復雜度為o(logn),所以總的時間負責度為o(nlogn),然后用一個max的變量表示每次獲得的最大值,面試官gg很滿意,說答案就是o(nlogn)?!边@個不應該是 o(n)么
總結(jié)
- 上一篇: 云吟职中计算机老师,云吟职中暑期召开20
- 下一篇: 【EXLIBRIS】猝不及史成