2021年阿里巴巴校招真實面試題

小編:管理員 1007閱讀 2021.06.11

第1題:


我們有很多瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了以后會在5分鐘后死亡,而喝到蒸餾水的小白鼠則一切正!,F在有5只小白鼠,請問一下,我們用這五只小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分()
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


第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


第9題:


http屬于()協議,ICMP屬于()協議。



應用層,網絡層


第10題:


深度為k的完全二叉樹至少有()個結點,至多有()個結點。



2^(k-1),2^k-1


第11題:


字節為6位的二進制有符號整數,其最小值是()。



-32


第12題:


設有28盞燈,擬公用一個電源,則至少需有4插頭的接線板數()個。



9


第13題:


有一顆結構如下的樹,對其做鏡像反轉后如下,請寫出能實現該功能的代碼。注意:請勿對該樹做任何假設,它不一定是平衡樹,也不一定有序。
  1 1
  / | \ / | \
  2 3 4 4 3 2
  /|\ /\ | | / \ / | \
  6 5 7 8 9 10 10 9 8 7 5 6



以孩子、兄弟的存儲結構來存儲這棵樹,使之成為一顆二叉樹,然后對二叉樹進行鏈表的轉換。

view plain

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(); 



第14題:


假設某個網站每天有超過10億次的頁面訪問量,出于安全考慮,網站會記錄訪問客戶端訪問的ip地址和對應的時間,如果現在已經記錄了1000億條數據,想統計一個指定時間段內的區域ip地址訪問量,那么這些數據應該按照何種方式來組織,才能盡快滿足上面的統計需求呢,設計完方案后,并指出該方案的優缺點,比如在什么情況下,可能會非常慢?



用B+樹來組織,非葉子節點存儲(某個時間點,頁面訪問量),葉子節點是訪問的IP地址。這個方案的優點是查詢某個時間段內的IP訪問量很快,但是要統計某個IP的訪問次數或是上次訪問時間就不得不遍歷整個樹的葉子節點。答:或者可以建立二級索引,分別是時間和地點來建立索引。


第15題:


寫出C語言的地址對齊宏ALIGN(PALGNBYTES),其中P是要對齊的地址,ALIGNBYTES是要對齊的字節數(2的N次方),比如說:ALIGN(13,16)=16


第16題:


在高性能服務器的代碼中經常會看到類似這樣的代碼:
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的作用是?


第17題:


在現代web服務系統的設計中,為了減輕源站的壓力,通常采用分布式緩存技術,其原理如下圖所示,前端的分配器將針對不同內容的用戶請求分配給不同的緩存服務器向用戶提供服務。
  分配器
  / | \
  緩存 緩存 ...緩存
  服務器1 服務器2 ...服務器n

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

2)當部分緩存服務器故障,或是因為系統擴容,導致緩存服務器的數量動態減少或增加時,你的分配策略是否可以保證較小的緩存文件重分配的開銷,如果不能,如何改進?

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


關聯標簽:
最近中文字幕2018_最近中文字幕完整版2019_最近更新中文字幕第1