本來投的是平台型產品經理(技術背景),不知道為什麼被後台開發撈走了。
其實我是想做開發的,現在技術不夠,投個產品經理試試。
面試官打**來問我面後台開發有沒有興趣,都打過來了,那肯定面啦。
首先面試官給我拋了兩道題:(1)毒牛奶;(2)賽馬。
後來才知道是很經典的面試題,但是面試過程中完全是新鮮玩意兒。
(1)毒牛奶:若干桶牛奶,其一有毒,老鼠試之,請快且少鼠地找出毒奶。
我給的回答是,直接當作二分查詢做,每一天都把牛奶等分成兩部分,讓老鼠喝掉其中一部分。如果中毒了,第二天把這批牛奶等分,重複上述步驟;如果沒有中毒,那就取另一批牛奶等分,重複上述步驟。
所以時間複雜度應該是o(log2n)。
然後面試官問我,如果要求第二天就知道哪個是毒牛奶,用的老鼠不限,那怎樣做才是使得用的老鼠最少呢?
這我就不知道了,直接回答了n只老鼠。。。。這肯定是不對的。
但其實還有更好的方法:把n變成二進位制,二進位制有幾位就用幾隻老鼠。假設n=8,則變成二進位制就是:
如此一來,讓一號老鼠喝二進位制第一位為1的牛奶,也就是1,3,5,7;n號老鼠喝二進位制第n位為1的牛奶。這樣子第二天把這些n號老鼠放到其第n位的二進位製上,就知道哪個牛奶有毒了。
(2)賽馬:有25匹馬,5個賽道,不能計時,用最少的場次找到跑最快的前三名。
這題答得實在磕磕絆絆,面試官提示了好幾次,慢慢引導,才回答準確並且比較接近答案,但仍然不是最好的。
我的回答是這樣的:首先25匹馬分成五組,五組跑下來,我就可以把每組的第一名組織在一起稱為a組(a1,a2,···,a5),每組第二名組織在一起稱為b組(b1,b2,···,b5),······,每組第五名組織在一起稱為e組(e1,e2,···,e5)。這時候已經跑了5場了。
然後a組跑1場,找到第一名。然後讓第一名所在那組的第二名與a組剩餘的四匹馬跑,找到第二名。然後按照同樣的方法,再跑一場,找到第三名。所以一共需要5+1+1+1=8場。
實際上可以做得更好,關鍵是第六場開始如何處理:
第六場也是讓a組跑,找出最快的第一名。然後,關鍵來了!這時候其實有部分馬是不需要跑的,可以直接淘汰的.
a1a2 a3
b1 b2b3
c1c2 c3
d1 d2 d3
e1 e2 e3
假設a1是最快的,那實際上就剩下加粗的那五個有機會進入2,3名。其餘的馬都可以扔掉了。加粗這5匹馬正好組在一起賽一場。
所以,只需要5+1+1=7場比賽。
其實面試官問我還能不能更少場次的時候,我要是更冷靜點應該還是能答上來的,被提示太多次了有點著急了。唉。
因為是後台開發,所以抓住校車小程式問我。但因為我不是做後台的,所以我直說,除了後台,其他都是我做的。對於面試官提問的linux,資料庫,c++開發,我都表示不是很懂。
實際上不應該這樣回答的,應該說我做了什麼,而不是「其他都是我做的」。
所以面試官就問了我linux裡進城通訊都有哪幾種方式,答案是:
管道(pipe),
命名管道(fifo),
訊息佇列(message queue),
共享記憶體(shared memory),
訊號量(semaphore),
訊號(signal)
套接字(socket)
詳情戳這裡複習吧:
我用遞迴做的,但是忘了檢查根節點是否位空。這個一定要記住啊!
structtreenode
;int depth(const
struct treenode *root)
else
}int godeep(treenode *p)
else
}return0;
}
他還問我不用遞迴怎麼寫,這個不知道了,等過兩天覆習到樹的時候這裡補上:
結果:最終掛了。難受。但至少比18年暑假的面試有進步了,繼續努力吧。
t_t
騰訊後台實習面經
不知不覺距離拿到offer的日子已經十餘天了,特此寫篇面經記錄一下自己的面試過程,由於過了一段時間還有些問題記不清了。晚上9點左右面試官來 開始面試。面試大概只進行了17分鐘,然後面試官讓我去官網投遞簡歷,期間還打個 催我一下。第二天看見狀態變成複試了。中午睡覺時面試官來 開始面試。面試一開始就說明...
c 後台開發電面
熟悉一門語言不是淺顯的認為寫了多少 寫過多少演算法。要理解這個語言具有代表性的東西。昨晚上的乙個 面試,顯然是浪費別人時間的乙個事情,但是很感謝這樣高素質的面試官能平心靜氣的跟你說完。下面是技術面試的大概內容。1 物件導向,c 怎麼實現介面?2 stl常用的vector,map,set,list底層...
京東二面 Java 後台開發
面試官其實是考 四則運算表示式求值,是棧的一種應用方式。棧的應用 四則運算表示式求值 抽象類與介面 知乎上乙個同樣問題的答案 如果多執行緒的程序是 cpu 密集型的,那多執行緒並不能有多少效率上的提公升,相反還可能會因為執行緒的頻繁切換,導致效率下降,推薦使用多程序 如果是 io 密集型,多執行緒程...