1. 程式人生 > >騰訊面試準備

騰訊面試準備

1.const的含義及實現機制,比如:const int i,是怎麼做到i只可讀的?

答:const用來說明所定義的變數是隻讀的,這些在編譯期間完成,編譯器可能使用常數直接替換掉對此變數的引用

2.到商店裡買200的商品返還100優惠券(可以在本商店代替現金)。請問實際上折扣是多少?

答:由於優惠券可以代替現金,所以可以使用200元優惠券買東西,然後還可以獲得100元的優惠券,假設開始時花了x元,那麼可以買到 x + x/2 + x/4 + …的東西。所以實際上折扣是50%.(當然,大部分時候很難一直兌換下去,所以50%是折扣的上限),如果使用優惠券買東西不能獲得新的優惠券,那麼總過花去了200元,可以買到200+100元的商品,所以實際折扣為 200/300 = 67%.

3.tcp三次握手的過程,accept發生在三次握手哪個階段?

答:第一次握手:客戶端傳送syn包(syn=j)到伺服器。第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個ASK包(ask=k)。第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1)。三次握手完成後,客戶端和伺服器就建立了tcp連線。這時可以呼叫accept函式獲得此連線。

4.用UDP協議通訊時怎樣得知目標機是否獲得了資料包

用UDP協議通訊時怎樣得知目標機是否獲得了資料包?

5.統計論壇線上人數分佈

求一個論壇的線上人數,假設有一個論壇,其註冊ID有兩億個,每個ID從登陸到退出會向一個日誌檔案中記下登陸時間和退出時間,要求寫一個演算法統計一天中論壇的使用者線上分佈,取樣粒度為秒。

6.從10G個數中找到中數

在一個檔案中有 10G 個整數,亂序排列,要求找出中位數。記憶體限制為 2G。

7.兩個整數集合A和B,求其交集

答:集合A,B交集,第一想法就是給兩個排序,從頭遍歷找到相等的就存下來,第二個想法就是求集合範圍,就是求A{min,max},B{min, max}如果A包含B,那麼就把A的集合範圍縮小成B,反之亦然,如此,最終會確定一個較小的範圍得到交集

8.找出1到10w中沒有出現的兩個數字

有1到10w這10w個數,去除2個並打亂次序,如何找出那兩個數?

答:x+y = n, x^2 + y^2 = m,按照這個思路能求出x,y缺的那個數,第二種方案,利用hash陣列

9.需要多少隻小白鼠才能在24小時內找到毒藥

有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點帶毒的水24小時後就會死亡,至少要多少隻小白鼠才能在24小時時鑑別出那瓶水有毒?

答:10只,二分法

10.判斷數字是否出現在40億個數中?

給40億個不重複的unsigned int的整數,沒排過序的,然後再給幾個數,如何快速判斷這幾個數是否在那40億個數當中?