淘寶2011.9.21校園招聘會筆試題+答案

1、單選題 一、咱們有不少瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了之後會在5分鐘後死亡,而喝到蒸餾水的小白鼠則一切正常。如今有5只小白鼠,請問一下,咱們用這五隻小白鼠,5分鐘的時間,可以檢測多少瓶液體的成分(C) A、5瓶 B、6瓶 C、31瓶 D、32瓶前端

二、若某鏈表最經常使用的操做是在最後一個結點以後插入一個結點和刪除最後一個結點,則採用(C)存儲方式最節省時間? A、單鏈表 B、帶頭結點的非循環雙鏈表 C、帶頭節點的雙循環鏈表 D、循環鏈表web

3、若是須要對磁盤上的1000W條記錄構建索引,你認爲下面哪一種數據結構來存儲索引最合適?(B) A、Hash Table B、AVL-Tree C、B-Tree D、List數據庫

四、可用來檢測一個web服務器是否正常工做的命令是(C) A、ping B、tracert C、telnet D、ftp緩存

只有C能夠測試Web主機的網頁服務器是否工做正常,假設該服務器的網頁服務器使用的是默認端口,則可使用命令telnet hostname 80 來測試其是否工做。 5、下面哪一個操做是Windows獨有的I/O技術(C) A、Select B、Poll C、IOCP D、Epoll安全

六、IPV6地址包含了(D)位 A、16 B、32 C、64 D、128服務器

七、數據庫裏建索引經常使用的數據結構是(C) A、鏈表 B、隊列 C、樹 D、哈希表網絡

八、在公司局域網上ping www.taobao.com沒有涉及到的網絡協議是(C) A、ARP B、DNS C、TCP D、ICMP數據結構

DNS是將域名www.taobao.com映射成主機的IP地址,ARP是將IP地址映射成物理地址,ICMP是報文控制協議,由路由器發送給執行ping命令的主機,而一個ping命令並不會創建一條TCP鏈接,故沒有涉及TCP協議。 2、填空題 一、http屬於(應用層)協議,ICMP屬於(網絡層)協議。 二、深度爲k的徹底二叉樹至少有(2^(k-1))個結點,至多有(2^k-1)個結點。 三、字節爲6位的二進制有符號整數,其最小值是(-32)。 四、設有28盞燈,擬公用一個電源,則至少需有4插頭的接線板數(9)個。分佈式

第一個板4個口,此後每增長1個板會消耗1個原來的口,總的只增長3個口,故N個接線板能提供 1+3*N個電源口。 3、綜合題 一、有一顆結構以下的樹,對其作鏡像反轉後以下,請寫出能實現該功能的代碼。注意:請勿對該樹作任何假設,它不必定是平衡樹,也不必定有序。 1 1 / | \ / |
2 3 4 4 3 2 /|\ /\ | | / \ / |
6 5 7 8 9 10 10 9 8 7 5 6 答:以孩子、兄弟的存儲結構來存儲這棵樹,使之成爲一顆二叉樹,而後對二叉樹進行鏈表的轉換。性能

typedef struct TreeNode { int data; struct TreeNode *firstchild; struct TreeNode *nextsibling; }TreeNode,*Tree;

void MirrorTree(Tree root) { if(!root) return ; if(root->firstchild) { Tree p=root->firstchild; Tree cur=p->nextsibling; p->nextsibling=NULL; while(cur) { Tree curnext=cur->nextsibling; cur->nextsibling=p; if(p->firstchild) MirrorTree(p); p=cur; cur=curnext; } root->firstchild=p; } }

int main(void) { TreeNode *root=(TreeNode *)malloc(sizeof(TreeNode)); Init(); MirrorTree(root); OutPut(); } 2、假設某個網站天天有超過10億次的頁面訪問量,出於安全考慮,網站會記錄訪問客戶端訪問的ip地址和對應的時間,若是如今已經記錄了1000億條數據,想統計一個指定時間段內的區域ip地址訪問量,那麼這些數據應該按照何種方式來組織,才能儘快知足上面的統計需求呢,設計完方案後,並指出該方案的優缺點,好比在什麼狀況下,可能會很是慢? 答:用B+樹來組織,非葉子節點存儲(某個時間點,頁面訪問量),葉子節點是訪問的IP地址。這個方案的優勢是查詢某個時間段內的IP訪問量很快,可是要統計某個IP的訪問次數或是上次訪問時間就不得不遍歷整個樹的葉子節點。答: 或者能夠創建二級索引,分別是時間和地點來創建索引。

4、附加題 一、寫出C語言的地址對齊宏ALIGN(PALGNBYTES),其中P是要對齊的地址,ALIGNBYTES是要對齊的字節數(2的N次方),好比說:ALIGN(13,16)=16 ALIGN(P,ALIGNBYTES) ( (void*)( ((unsigned long)P+ALIGNBYTES-1)&~(ALIGNBYTES-1) ) )

二、在高性能服務器的代碼中常常會看到相似這樣的代碼: typedef union { erts_smp_rwmtx_t rwmtx; byte cache_line_align_[ERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(erts_smp_rwmtx_t))]; }erts_meta_main_tab_lock_t;

erts_meta_main_tab_lock_t main_tab_lock[16];

請問其中用來填充的cache_line_align的做用是?

三、在現代web服務系統的設計中,爲了減輕源站的壓力,一般採用分佈式緩存技術,其原理以下圖所示,前端的分配器將針對不一樣內容的用戶請求分配給不一樣的緩存服務器向用戶提供服務。 分配器 / |
緩存 緩存 ...緩存 服務器1 服務器2 ...服務器n

1)請問如何設置分配策略,能夠保證充分利用每一個緩存服務器的存儲空間(每一個內容只在一個緩存服務器有副本)

2)當部分緩存服務器故障,或是由於系統擴容,致使緩存服務器的數量動態減小或增長時,你的分配策略是否能夠保證較小的緩存文件重分配的開銷,若是不能,如何改進?

3)當各個緩存服務器的存儲空間存在差別時(若有4個緩存服務器,存儲空間比爲4:9:15:7),如何改進你的策略,按照如上的比例將內容調度到緩存服務器?

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息