搭建一個後台伺服器–引子

來源:互聯網
上載者:User

最近去了幾家公司面試,有一些大公司(比如企鵝)的考核內容真心弱智,考的都是些演算法,尼瑪,拿一個剛畢業的學生來做說不定也可以過的,看來本來就不是在招搞伺服器的,舉個例子,企鵝多個部門都曾出的一道題:如何知道集合A,B中的相關性。

意思就是哪些元素在A,B之中都有,哪些元素在A,B中不都出現。

其實解法很簡單,學過演算法的完全可以做到 。我們知道集合具有互異性,就是集合中的元素只能出現一次,可以建一個map< key, value >,是標準庫的還是自建一個紅/黑樹狀結構都無所謂,

將A,B集合中的元素當成key,各自遍曆一次,插入map中,每次插入 value自增一次,最後再遍曆一次map,所有 value = 2的key是A,B共有的,value=1的key是A,B相異的。

如果A,B中的元素是整數,而且很小,問題則退化成類似計數排序,解法如下:

A{ 2,4,6,10,7,25 } B{ 3,9,4,2,19,25 }

#define MAX_NUMint test( int A[], int a_len, int B[], int b_len ){int size, i, max, tp_key;int  *tmp;if( !a_len || !b_len ){return -1;}size = MAX_NUM * sizeof( int );tmp = malloc( size );if( !tmp ){return -1;}memset( tmp, 0, size );max = 0;for( i = 0; i < a_len; ++i ){tp_key = A[i];max = tp_key > max ? tp_key : max;tmp[ tp_key ]++;}for( i = 0; i < b_len; ++i ){tp_key = B[i];max = tp_key > max ? tp_key : max;tmp[ tp_key ] ++;}++max;for( i = 0; i < max; ++i ){if( !tmp[ i ] )continue;if( 1 == tmp[ i ]  ){printf( "%d is in A or B\n", i );}else{printf( "%d is in A and B\n", i );}}free( tmp );return 0;}

言歸正傳,其實演算法應該是大家的基本功,考核演算法應該也沒有錯,但既然招的是伺服器架構開發,我想考核更多的是實戰經驗。

有一家中等公司的面試題不錯,此系列博文將圍繞它展開研究。

原題:時間同步系統開發需求

需求情境:用戶端向伺服器發起登入請求,鑒權通過後(為了簡化工作,所有登入請求,只要請求參數裡的使用者名稱和密碼不為空白,都鑒權通過),用戶端再向伺服器請求當前系統時間,伺服器返回當前系統時間後關閉串連。

要求:

1、傳輸層使用TCP協議,應用程式層協議不限。

2、可支援同時線上使用者量:大於 2W。

3、並發效能:沒有明確指標。

4、伺服器端運行環境:linux 2.4以上核心版本;開發語言:C++/C。

5、用戶端運行環境:不限;開發語言:不限。(可以很簡單,不要求介面)

6、要求有類比效能測試操作方法,如多用戶端、多線程類比同時請求等。

7、用真實代碼。

8、不要求日誌系統,但是要考慮在主線程列印螢幕引起的效能問題。

我就覺得要是哪個公司面試的時候能出得出這樣的題目,那就應該很專業了,對面試的人也就可以算得上挑戰了。

tcp 服務端-用戶端通訊的程式,網上一搜一大堆,大家可能都會寫,但是並發量和容錯性不一定能上得去,2W的並發量不是蓋出來的,如果這道題目能夠搞定,基本上伺服器這塊應該是難不倒了。

下面說說我應該怎麼做:

首先是建立前後端的通訊協定:

request:

username/password, 約定username與password  各佔32個位元組(聯同末位0)

response:

time_t 格式

由於通訊內容簡單,選擇二進位傳輸,而不選擇http,當然如果要考考 http 協議的瞭解,那就另當別論了。

請回頭對題目認真看看,或者自己也可以寫寫,這裡沒有放代碼,是因為我打算連載,請關注啦。

下篇我給大家寫用戶端程式先。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.