新鮮出爐!騰訊、百度、阿里等2019年最新面試題彙總(含部分答案解析)

​2019年最新的阿里、騰訊、百度、美團、頭條等大廠技術面試題目近日被彙總整理,專家出題人分析彙總以及答案也在逐步補全中。目前該項目在GitHub上已得到超22580個Star,內容分爲阿里篇、華爲篇、百度篇、騰訊篇、美團篇、頭條篇、滴滴篇、京東篇、MySQL篇、Redis篇、MongDB篇、ZooKeeper篇、Nginx篇、算法篇、內存篇、CPU篇、磁盤篇、網絡通訊篇、安全篇、併發篇。很少說了,來一塊兒看看吧。(文末附有免費領取方式java

 

 

阿里篇node

 

1.1.1 如何實現一個高效的單向鏈表逆序輸出?面試

出題人阿里巴巴出題專家:昀龍/阿里雲彈性人工智能負責人
參考答案下面是其中一種寫法,也能夠有不一樣的寫法,好比遞歸等。供參考。

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;    }}算法

 

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

 

出題人阿里巴巴出題專家:文景/阿里雲 CDN 資深技術專家緩存

 

參考答案安全

 

 * 考察點微信

 

一、基礎算法的靈活應用能力(二分法學過數據結構的同窗都知道,但不必定往這個方向考慮;若是學過數值計算的同窗,應該還要能想到牛頓迭代法並解釋清楚)網絡

 

二、退出條件設計數據結構

 

* 解決辦法

1. 已知sqrt(2)約等於 1.414,那麼就能夠在(1.4,1.5)區間作二分

查找,如:a)high=>1.5 b) low=>1.4 c) mid => (high+low)/2=1.45 d) 1.45*1.45>2 ?high=>1.45 : low => 1.45 e) 循環到 c)

2. 退出條件

a) 先後兩次的差值的絕對值<=0.0000000001, 則可退出

 

const double EPSINON = 0.0000000001;double sqrt2(){ double low = 1.4, high = 1.5; double mid = (low + high) / 2; while (high - low > EPSINON){ if (mid*mid > 2){ high = mid; } else{ low = mid; } mid = (high + low) / 2; } return mid;}

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

 

出題人阿里巴巴出題專家:文景/阿里雲 CDN 資深技術專家

 

參考答案

 

* 考察點

 

一、基礎數據結構的理解和編碼能力

二、遞歸使用

* 示例
 5 / \ 3 6 / \ 2 4 / 1

說明:保證輸入的 K 知足 1<=K<=(節點數目)

樹相關的題目,第一眼就想到遞歸求解,左右子樹分別遍歷。聯想到二叉搜索樹的性質,root 大於左子樹,小於右子樹,若是左子樹的節點數目等於 K-1,那麼 root 就是結果,不然若是左子樹節點數目小於 K-1,那麼結果必然在右子樹,不然就在左子樹。所以在搜索的時候同時返回節點數目,跟 K 作對比,就能得出結果了。

/** * 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);    }}

 

1.1.4 LRU緩存機制

 

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

 

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

 

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

……

 

華爲篇

 

2.1.0 static有什麼用途?(請至少說明兩種)

 

2.1.1 引用與指針有什麼區別?

 

2.1.2 描述實時系統的基本特性

 

……

 

百度篇

 

3.1.0 在函數內定義一個字符數組,用gets函數輸入字符串的時候,若是輸入越界,爲何程序會崩潰?

3.1.1 C++中引用與指針的區別

3.1.2 C/C++程序的內存分區

……

 

  • 騰訊篇 
  • 美團篇
  • 頭條篇
  • 滴滴篇
  • 京東篇
  • MySQL
  • Redis
  • MongDB
  • Zookeeper
  • Nginx
  • 算法篇
  • 內存篇
  • cpu
  • 磁盤篇
  • 網絡通訊篇
  • 安全篇
  • 併發篇

 

 

免費領取java進階資料和最新面試題目及解析

請添加博主微信

 

變強沒有捷徑,惟有不斷學習。

相關文章
相關標籤/搜索