?轉載請標明出處,原文地址:[http://blog.csdn.net/hackbuteer1/article/details/6823329](http://blog.csdn.net/hackbuteer1/article/details/6823329)
**一、單選題**
1、我們有很多瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了以后會在5分鐘后死亡,而喝到蒸餾水的小白鼠則一切正常。現在有5只小白鼠,請問一下,我們用這五只小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分(C)
A、5瓶?????????????????? ? B、6瓶????????????????????????? ?**C、31瓶**????????????????????????????? D、32瓶
2、若某鏈表最常用的操作是在最后一個結點之后插入一個結點和刪除最后一個結點,則采用()存儲方式最節省時間?
A、單鏈表?????????????????? B、帶頭結點的非循環雙鏈表??????????????????????**C、帶頭節點的雙循環鏈表**?????????????? D、循環鏈表
3、如果需要對磁盤上的1000W條記錄構建索引,你認為下面哪種數據結構來存儲索引最合適?()
A、Hash Table????????????????????? B、AVL-Tree???????????????????? ?**C、B-Tree**??????????????? D、List
4、可用來檢測一個web服務器是否正常工作的命令是()
A、ping????????????????????? B、tracert??????????????????????????**C、telnet**????????????????????????? D、ftp
只有C可以測試Web主機的網頁服務器是否工作正常,假設該服務器的網頁服務器使用的是默認端口,則可以使用命令telnet hostname 80 來測試其是否工作。
5、下面哪個操作是Windows獨有的I/O技術()
A、Select?????????????????????????? B、Poll?????????????????????????????? **C、IOCP**????????????????????????????? D、Epoll
6、IPV6地址包含了()位
A、16?????????????????????????????? B、32??????????????????????????????? C、64??????????????????????????????**D、128**
7、數據庫里建索引常用的數據結構是()
A、鏈表???????????????????????? B、隊列????????????????????? ?**C、樹**??????????????????????????? D、哈希表
8、在公司局域網上ping www.taobao.com沒有涉及到的網絡協議是()
A、ARP????????????????????????? B、DNS??????????????????????????????**C、TCP**?????????????????????? ?D、ICMP
DNS是將域名[www.taobao.com](http://www.taobao.com/)映射成主機的IP地址,ARP是將IP地址映射成物理地址,ICMP是報文控制協議,由路由器發送給執行ping命令的主機,而一個ping命令并不會建立一條TCP連接,故沒有涉及TCP協議。
**二、填空題**
1、http屬于(應用層)協議,ICMP屬于(網絡層)協議。
2、深度為k的完全二叉樹至少有(2^(k-1))個結點,至多有(2^k-1)個結點。
3、字節為6位的二進制有符號整數,其最小值是(-32)。
4、設有28盞燈,擬公用一個電源,則至少需有4插頭的接線板數(9)個。
第一個板4個口,此后每增加1個板會消耗1個原來的口,總的只增加3個口,故N個接線板能提供 1+3*N個電源口。
**三、綜合題**
1、有一顆結構如下的樹,對其做鏡像反轉后如下,請寫出能實現該功能的代碼。注意:請勿對該樹做任何假設,它不一定是平衡樹,也不一定有序。
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的訪問次數或是上次訪問時間就不得不遍歷整個樹的葉子節點。答:
或者可以建立二級索引,分別是時間和地點來建立索引。
**四、附加題**
1、寫出C語言的地址對齊宏ALIGN(PALGNBYTES),其中P是要對齊的地址,ALIGNBYTES是要對齊的字節數(2的N次方),比如說:ALIGN(13,16)=16
~~~
ALIGN(P,ALIGNBYTES) ( (void*)( ((unsigned long)P+ALIGNBYTES-1)&~(ALIGNBYTES-1) ) )
~~~
2、在高性能服務器的代碼中經常會看到類似這樣的代碼:
~~~
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的作用是?
3、在現代web服務系統的設計中,為了減輕源站的壓力,通常采用分布式緩存技術,其原理如下圖所示,前端的分配器將針對不同內容的用戶請求分配給不同的緩存服務器向用戶提供服務。
分配器
/ | \
緩存 緩存 ...緩存
服務器1 服務器2 ...服務器n
1)請問如何設置分配策略,可以保證充分利用每個緩存服務器的存儲空間(每個內容只在一個緩存服務器有副本)
2)當部分緩存服務器故障,或是因為系統擴容,導致緩存服務器的數量動態減少或增加時,你的分配策略是否可以保證較小的緩存文件重分配的開銷,如果不能,如何改進?
3)當各個緩存服務器的存儲空間存在差異時(如有4個緩存服務器,存儲空間比為4:9:15:7),如何改進你的策略,按照如上的比例將內容調度到緩存服務器?
轉載請標明出處,原文地址:[http://blog.csdn.net/hackbuteer1/article/details/6823329](http://blog.csdn.net/hackbuteer1/article/details/6823329)
- 前言
- 程序員有趣的面試智力題
- 淘寶網 校園招聘 技術人員筆試題
- 網新恒天2011.9.21招聘會筆試題
- 淘寶2011.9.21校園招聘會筆試題
- 騰訊2011.10.15校園招聘會筆試題
- 網易游戲2011.10.15校園招聘會筆試題
- 百度2011.10.16校園招聘會筆試題
- 微策略2011校園招聘筆試題(找出數組中兩個只出現一次的數字)
- 百度最新面試題集錦
- C/C++筆試題目大全
- 各大IT公司校園招聘程序猿筆試、面試題集錦
- Trie樹詳解及其應用
- 后綴數組求最長重復子串
- 海量數據隨機抽樣問題(蓄水池問題)
- 搜狐2012.9.15校園招聘會筆試題
- 搜狗2012.9.23校園招聘會筆試題
- Google2012.9.24校園招聘會筆試題
- 優酷土豆2012.9.12校園招聘會筆試題