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