阿里、騰訊、百度等大廠面試都考核哪些技術點?
關於MySQL、Redis面試官一般都會問什麼?
肖戰227事件,為什麼知乎會崩?如何解決?
金三銀四來了!小編再次彙總了各一線互聯網企業,阿里、騰訊、百度、美團、等等大廠最新技術面試題目,專家出題人分享彙總以及答案也在逐步補全中。內容分為阿里篇、華為篇、百度篇、騰訊篇、美團篇、頭條篇、滴滴篇、京東篇、MySQL篇、Redis篇、MongDB篇、ZooKeeper篇、Nginx篇、算法篇、內存篇、CPU篇、磁盤篇、網絡通信篇、安全篇、併發篇。
不多說了,來一起看看吧。(文末附有免費領取方式)
阿里篇(共計27題)
- 1.1.1 如何實現一個高效的單向鏈表逆序輸出?
出題人:阿里巴巴出題專家:昀龍/阿里雲彈性人工智能負責人
參考答案:下面是其中一種寫法,也可以有不同的寫法,比如遞歸等。供參考。
<code>typedef struct node{
in 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< tmp=tmp->next;
}
}
/<tmp->/<code>
- 1.1.2 已知sqrt(2)約等於1.414,要求不用數學庫,求sqrt(2)精確到小數點後10位
- 1.1.3 給定一個二叉搜索樹(BST),找到樹中第 K 小的節點
出題人:阿里巴巴出題專家:文景/阿里雲 CDN 資深技術專家
參考答案:
- 考察點
1、基礎數據結構的理解和編碼能力
2、遞歸使用
- 示例
<code> 5
/ \\
3 6
/ \\
2 4
/
1
/<code>
說明:保證輸入的 K 滿足 1<=K<=(節點數目)
樹相關的題目,第一眼就想到遞歸求解,左右子樹分別遍歷。聯想到二叉搜索樹的性質,root 大於左子樹,小於右子樹,如果左子樹的節點數目等於 K-1,那麼 root 就是結果,否則如果左子樹節點數目小於 K-1,那麼結果必然在右子樹,否則就在左子樹。因此在搜索的時候同時返回節點數目,跟 K 做對比,就能得出結果了。
<code>/**
* Definition for a binary tree node.
**/
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
class Solution {
private class ResultType {
boolean found; // 是否找到
int val; // 節點數目
ResultType(boolean found, int val) {
this.found = found;
this.val = val;
}
}
public int kthSmallest(TreeNode root, int k) {
return kthSmallestHelper(root, k).val;
}
private ResultType kthSmallestHelper(TreeNode root, int k) {
if (root == null) {
return new ResultType(false, 0);
}
ResultType left = kthSmallestHelper(root.left, k);
// 左子樹找到,直接返回
if (left.found) {
return new ResultType(true, left.val);
}
// 左子樹的節點數目 = K-1,結果為 root 的值
if (k - left.val == 1) {
return new ResultType(true, root.val);
}
// 右子樹尋找
ResultType right = kthSmallestHelper(root.right, k - left.val - 1);
if (right.found) {
return new ResultType(true, right.val);
}
// 沒找到,返回節點總數
return new ResultType(false, left.val + 1 + right.val);
}
}
/<code>
- 1.1.4 LRU緩存機制
題目:LRU 緩存機制設計和實現一個 LRU(最近最少使用)緩存數據結構,使它應該支持以下操作:get 和 put。get(key) - 如果 key 存在於緩存中,則獲取 key 的 value(總是正數),否則返回 -1。put(key,value) - 如果 key 不存在,請設置或插入 value。當緩存達到其容量時,它應該在插入新項目之前使最近最少使用的項目作廢。
- 1.1.5 關於epoll和select的區別,以下哪些說法是正確的(多選)
A. epoll 和 select 都是 I/O 多路複用的技術,都可以實現同時監聽多個 I/O 事件的狀態。
B. epoll 相比 select 效率更高,主要是基於其操作系統支持的I/O事件通知機制,而 select 是基於輪詢機制。
C. epoll 支持水平觸發和邊沿觸發兩種模式。
D. select 能並行支持 I/O 比較小,且無法修改。
出題人:阿里巴巴出題專家:寈峰/阿里技術專家
參考答案:A,B,C
【延伸】那在高併發的訪問下,epoll使用那一種觸發方式要高效些?當使用邊緣觸發的時候要注意些什麼東西?
- 1.1.6 從innodb的索引結構分析,為什麼索引的 key 長度不能太長
- 1.1.7 MySQL的數據如何恢復到任意時間點?
- .....
華為篇(共計50題)
- 2.1.0 static有什麼用途?(請至少說明兩種)
- 2.1.1 引用與指針有什麼區別?
- 2.1.2 描述實時系統的基本特性
- ……
百度篇(共計48題) - 3.1.0 在函數內定義一個字符數組,用gets函數輸入字符串的時候,如果輸入越界,為什麼程序會崩潰?
- 3.1.1 C++中引用與指針的區別
- 3.1.2 C/C++程序的內存分區
- ……
騰訊篇(共計82題)
Java基礎
- 4.1.0 JAVA中的幾種基本數據類型是什麼,各自佔用多少字節。
- 4.1.1 String類能被繼承嗎,為什麼。
- 4.1.2 String,Stringbuffer,StringBuilder的區別。
- 4.1.3 ArrayList和LinkedList有什麼區別。
JVM
- 4.4.2 什麼情況下會發生棧內存溢出。
- 4.4.3 JVM的內存結構,Eden和Survivor比例。
- 4.4.4 JVM內存為什麼要分成新生代,老年代,持久代。新生代中為什麼要分為Eden和Survivor。
開源框架
- 4.5.5 簡單講講tomcat結構,以及其類加載器流程,線程模型等。
- 4.5.6 tomcat如何調優,涉及哪些參數 。
- 4.5.7 ……
美團篇(共計40題)
- 5.1.0 java虛擬機內存模型
- 5.1.1 內存溢出一般發生在哪個區?永久代會不會導致內存溢出?
- 5.1.2 動態加載類的框架了解哪些?
- 5.1.3 ……
頭條篇(共計37題)
- 6.1.0 5個人去一個海島尋寶,最後一共找到了100枚金幣。他們約定了一個分配方案。
- 6.1.1 給你一個有序整數數組,數組中的數可以是正數、負數、零,請實現一個函數,這個函數返回一個整數:返回這個數組所有數的平方值中有多少種不同的取值。
- 6.1.2 一個環有10個節點,編號0-9。從0點出發,走N步又能回到0點,共有多少種走法?
- 6.1.3 ……
滴滴篇(共計12題)
- 7.1.0 B+樹、B-樹的區別?
- 7.1.1 數據庫隔離級別,幻讀和不可重複讀的區別?
- 7.1.2 有hell, well, hello, world等字符串組,現在問能否拼接成helloworld,代碼實現。
- 7.1.3 ……
京東篇(共計13題)
- 8.1.0 一般sql注入怎麼發現觸點的,從源碼闡述sqlmap如何測試注入點的。
- 8.1.1 masscan掃描端口時靠什麼檢測,為什麼這麼快? 請詳述.
- 8.1.2 你寫過哪些小工具,你為你使用過的工具做過什麼修改.
- 8.1.3 ……
MySQL篇(共計9題)
- 9.1.0 主鍵 超鍵 候選鍵 外鍵
- 9.1.1 數據庫事務的四個特性及含義
- 9.1.2 視圖的作用,視圖可以更改麼?
- 9.1.3 ……
Redis篇(共計10題)
- 10.1.0 使用Redis有哪些好處?
參考答案:
(1) 速度快,因為數據存在內存中,類似於HashMap,HashMap的優勢就是查找和操作的時間複雜度都是O(1)
(2) 支持豐富數據類型,支持string,list,set,sorted set,hash
(3) 支持事務,操作都是原子性,所謂的原子性就是對數據的更改要麼全部執行,要麼全部不執行
(4) 豐富的特性:可用於緩存,消息,按key設置過期時間,過期後將會自動刪除
- 10.1.1 redis相比memcached有哪些優勢?
- 10.1.2 redis常見性能問題和解決方案
- 10.1.3 MySQL裡有2000w數據,redis中只存20w的數據,如何保證redis中的數據都是熱點數據
- ……
MongDB篇(共計47題)
- 11.1.0 什麼是MongoDB?
- 11.1.1 MongoDB是由哪種語言寫的?
- 11.1.2 MongoDB的優勢有哪些?
- 11.1.3 ……
Zookeeper篇(共計19題)
- 12.1.0 zookeeper是什麼?
- 12.1.1 zookeeper提供了什麼?
- 12.1.2 zookeeper文件系統
- 12.1.3 ……
Nginx篇(共計20題)
- 13.1.0 請解釋一下什麼是Nginx?
- 13.1.1 請列舉Nginx的一些特性?
- 13.1.2 請列舉Nginx和Apache 之間的不同點?
- 13.1.3 ……
(以下內容持續補全中……)
- 算法篇
- 內存篇
- cpu篇
- 磁盤篇
- 網絡通信篇
- 安全篇
- 併發篇
最新整理的面試題資料,需要的靚仔(靚女)轉發此文章+私信“BATJ面試”即可免費下載!
閱讀更多 享學課堂online 的文章