面試題 騰訊2012面試題

2021-05-28 17:37:49 字數 1048 閱讀 8597

問題描述:例如手機朋友網有n個伺服器,為了方便使用者的訪問會在伺服器上快取資料,因此使用者每次訪問的時候最好能保持同一臺伺服器。已有的做法是根據serveripindex[qqnum%n]得到請求的伺服器,這種方法很方便將使用者分到不同的伺服器上去。但是如果一台伺服器死掉了,那麼n就變為了n-1,那麼serveripindex[qqnum%n]與serveripindex[qqnum%(n-1)]基本上都不一樣了,所以大多數使用者的請求都會轉到其他伺服器,這樣會發生大量訪問錯誤。

問:如何改進或者換一種方法,使得:(1)一台伺服器死掉後,不會造成大面積的訪問錯誤,(2)原有的訪問基本還是停留在同一臺伺服器上;(3)盡量考慮負載均衡。

思路是在伺服器與使用者之間多加一層對映關係,不再將使用者號碼直接對映到伺服器上,而是將使用者號碼對映到與伺服器一對一的一組索引表上面。

1、索引表與伺服器一對一繫結,正常工作時,使用者名稱索引到的是對應伺服器的ip(與原有方式相同)。

2、當某台伺服器異常時,分配到本伺服器的號碼,按照順序索引平均分配到其它伺服器上。

目前只處理了單台伺服器故障,很容易可以擴充套件到多台伺服器故障的情況。

#include #include #define max_server	200

int server_ip[max_server] = ;

typedef struct

si_map;

si_map si_map[max_server] = ;

void init()

}int getserver(int index)

return si_map[index].server;

}int change(char c,int old)

void work()

c=getchar();

// 隨機改變壞的伺服器

if( c == 's' || c == 's' ) }

}}void main()

騰訊面試題

題目 class aaa aaa pa 0x10000000 問1 pa 10 問2 char pa 10 問3 int pa 10 回答 1 0x10000000 10 16 雙位元組對齊 2 0x10000000 10 3 0x10000000 10 4 題目二 有乙個集合,由0 1000的數字...

騰訊面試題

版上看到的,好東西得記下來。1.有1到10w這10w個數,去除2個並打亂次序,如何找出那兩個數。不准用位圖!關鍵 x y 1 2 3 10w a 0 a 1 a 2 a 10w 1 根據qq號做hash,整個登入時間戳。3.有乙個江洋大盜,他每次寫信都是從一張報紙上剪下單詞,再把單詞貼在信上。假如某...

騰訊面試題

題目 兩個陣列a n b n 其中a n 的各個元素值已知,現給b i 賦值,b i a 0 a 1 a 2 a n 1 a i 要求 1.不准用除法運算 2.除了迴圈計數值,a n b n 外,不准再用其他任何變數 包括區域性變數,全域性變數等 3.滿足時間複雜度o n 空間複雜度o 1 pack...