不容錯過的 Github萬星程序員面試寶典

本文轉自雷鋒網,如需轉載請至雷鋒網官網申請授權。

馬上就是秋招啦,相信很多小夥伴現在都在緊張的泡圖書館備戰和刷題。今天,我們要給大家推薦的是一份包含了阿里巴巴、華爲、百度、騰訊、美團、字節跳動、滴滴、京東等知名互聯網公司技術面試題的 github 項目。截止目前,該項目已獲得 16000+ star。

項目的 github 地址爲:https://github.com/0voice/interview_internal_reference

這份面試題庫共分爲 20 個篇章,其中,前面 8 篇(第一部分)是以公司爲區分,總結了各大互聯網公司的技術面試題和答案,後面部分(第二部分)是按照面試題的知識點進行了專題總結。

在第一部分,我們不僅可以看到這些知名互聯網公司的面試題,還可以看到出題人和參考答案。以排在最前面的阿里巴巴爲例子,我們可以看到,這裏面收集了 37 個面試題。

上圖的字比較小,爲了方便大家閱讀,我們把這些題目貼在下面:

阿里篇 ________________________________________ 1.1.1 如何實現一個高效的單向鏈表逆序輸出?

1.1.2 已知 sqrt(2) 約等於 1.414,要求不用數學庫,求 sqrt(2) 精確到小數點後 10 位

1.1.3 給定一個二叉搜索樹 (BST),找到樹中第 K 小的節點

1.1.4 LRU 緩存機制

1.1.5 關於 epoll 和 select 的區別,以下哪些說法是正確的

1.1.6 從 innodb 的索引結構分析,爲什麼索引的 key 長度不能太長

1.1.7 MySQL 的數據如何恢復到任意時間點?

1.1.8 NFS 和 SMB 是最常見的兩種 NAS(Network Attached Storage)協議,當把一個文件系統同時通過 NFS 和 SMB 協議共享給多個主機訪問時,以下哪些說法是錯誤的

1.1.9 輸入 ping IP 後敲回車,發包前會發生什麼?

1.2.0 請解釋下爲什麼鹿晗發佈戀情的時候,微博系統會崩潰,如何解決?

1.2.1 現有一批郵件需要發送給訂閱顧客,且有一個集羣(集羣的節點數不定,會動態擴容縮容)來負責具體的郵件發送任務,如何讓系統儘快地完成發送?

1.2.2 有一批氣象觀測站,現需要獲取這些站點的觀測數據,並存儲到 Hive 中。但是氣象局只提供了 api 查詢,每次只能查詢單個觀測點。那麼如果能夠方便快速地獲取到所有的觀測點的數據?

1.2.3 如何實現兩金額數據相加(最多小數點兩位)

1.2.4 關於並行計算的一些基礎開放問題

1.2.5 請計算 XILINX 公司 VU9P 芯片的算力相當於多少 TOPS,給出計算過程與公式

1.2.6 一顆現代處理器,每秒大概可以執行多少條簡單的 MOV 指令,有哪些主要的影響因素

1.2.7 請分析 MaxCompute 產品與分佈式技術的關係、當前大數據計算平臺類產品的市場現狀和發展趨勢

1.2.8 對大數據平臺中的元數據管理是怎麼理解的,元數據收集管理體系是怎麼樣的,會對大數據應用有什麼樣的影響

1.2.9 你理解常見如阿里,和友商大數據平臺的技術體系差異以及發展趨勢和技術瓶頸,在存儲和計算兩個方面進行概述

1.3.0 在雲計算大數據處理場景中,每天運行着成千上萬的任務,每個任務都要進行 IO 讀寫。存儲系統爲了更好的服務,經常會保證高優先級的任務優先執行。當多個作業或用戶訪問存儲系統時, 如何保證優先級和公平性

1.3.1 最大頻率棧

1.3.2 給定一個鏈表,刪除鏈表的倒數第 N 個節點,並且返回鏈表的頭結點

1.3.3 如果讓你設計一個通用的、支持各種數據庫秒級備份和恢復的系統,你會如何設計

1.3.4 如果讓你來設計一個支持數據庫、NOSQL 和大數據之間數據實時流動的數據流及處理的系統,你會考慮哪些問題?如何設計?

1.3.5 給定一個整數數組和一個整數,返回兩個數組的索引,這兩個索引指向的數字的加和等於指定的整數。需要最優的算法,分析算法的空間和時間複雜度

1.3.6 假如給你一個新產品,你將從哪些方面來保障它的質量?

1.3.7 請評估一下程序的執行結果?

打開這些面試題,我們可以看到出題人和參考答案。如打開第一題:「如何實現一個高效的單向鏈表逆序輸出?」我們看到的內容如下:

問題:如何實現一個高效的單向鏈表逆序輸出?

出題人:阿里巴巴出題專家:昀龍/阿里雲彈性人工智能負責人

參考答案:下面是其中一種寫法,也可以有不同的寫法,比如遞歸等。供參考。

typedef struct node{       int data;      struct node* next;     node(int d):data(d), next(NULL){}      }node;  void reverse(node* head)  {      if(NULL == head || NULL == head->next){          return;   }      node* prev=NULL;       node* pcur=head->next;      node* next;      while(pcur!=NULL){           if(pcur->next==NULL){              pcur->next=prev;              break;          }          next=pcur->next;          pcur->next=prev;          prev=pcur;          pcur=next;      }      head->next=pcur;      node*tmp=head->next;      while(tmp!=NULL){          cout<<tmp->data<<"\t";          tmp=tmp->next;      }  } 

第二部分分爲了 12 個技術專題,分別是 MySQL 篇、Redis 篇、MongDB 篇、Zookeeper 篇、Nginx 篇、算法篇、內存篇、cpu 篇、磁盤篇、網絡通信篇、安全篇和併發篇。這裏面針對每個專題,整理了一些經常會遇到的面試題。

例如,MySQL 篇包含的題目如下:

和前面一樣,這裏也給出了參考答案。打開上圖的第一個題目,我們看到如下內容:

題目:主鍵 超鍵 候選鍵 外鍵是什麼

定義

超鍵 (super key): 在關係中能唯一標識元組的屬性集稱爲關係模式的超鍵

候選鍵 (candidate key): 不含有多餘屬性的超鍵稱爲候選鍵。也就是在候選鍵中,若再刪除屬性,就不是鍵了!

主鍵 (primary key): 用戶選作元組標識的一個候選鍵程序主鍵

外鍵 (foreign key):如果關係模式 R 中屬性 K 是其它模式的主鍵,那麼 k 在模式 R 中稱爲外鍵。

舉例

比如有如下數據:

學號

姓名

性別

年齡

系別

專業

20020612

李輝

20

計算機

軟件開發

20060613

張明

18

計算機

軟件開發

20060614

王小玉

19

物理

力學

20060615

李淑華

17

生物

動物學

20060616

趙靜

21

化學

食品化學

20060617

趙靜

20

生物

植物學

1.超鍵

在關係中能唯一標識元組的屬性集稱爲關係模式的超鍵。

於是我們從例子中可以發現 學號是標識學生實體的唯一標識。那麼該元組的超鍵就爲學號。

除此之外我們還可以把它跟其他屬性組合起來,比如:

(學號,性別)

(學號,年齡)

這樣也是超鍵。

2.候選鍵

不含多餘屬性的超鍵爲候選鍵。

根據例子可知,學號是一個可以唯一標識元組的唯一標識,因此學號是一個候選鍵,實際上,候選鍵是超鍵的子集,比如(學號,年齡)是超鍵,但是它不是候選鍵。因爲它還有了額外的屬性。

3.主鍵

用戶選擇的候選鍵作爲該元組的唯一標識,那麼它就爲主鍵。

簡單的說,例子中的元組的候選鍵爲學號,但是我們選定他作爲該元組的唯一標識,那麼學號就爲主鍵。

4.外鍵

外鍵是相對於主鍵的,比如在學生記錄裏,主鍵爲學號,在成績單表中也有學號字段,因此學號爲成績單表的外鍵,爲學生表的主鍵。

總結

主鍵爲候選鍵的子集,候選鍵爲超鍵的子集,而外鍵的確定是相對於主鍵的。

雖然這只是一個非常簡單的概念題,但由此我們也可以看到,這份題庫給出的答案特別非常詳細,不僅對問題中提出的概念進行了解釋,還用具體的例子進行了說明,方便同學們的容易理解和記憶。

還在等什麼,趕快收藏這份資源開始學習吧~一分耕耘一分收穫,相信同學們接下來一定會拿到心儀的 offer,加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章