騰訊微信支付2020暑期實習二面、三面面經

微信支付面試已面過三輪,所以在這裏總結一下二、三面面經,大家一起交流學習!

二面

1、上來就做題!都沒自我介紹!?

公司員工每天上下班需要進行打卡操作,工作時間爲早上9點到晚上5點。遲到或者早退半小時當天按曠工處理。hr能查看所有員工的打卡信息,員工只能查看自己的打卡信息。
請編寫一個能支持以上場景的程序。

/**
 * 以下代碼是簡單僞代碼實現
 * 當時沒有考慮併發,面試官沒有提
 */
public class Time {
    private DataTime firstTime;
    private DataTime lastTime;
    
    public void setFirstTime(DataTime firstTime){
        this.firstTime  = firstTime;
    }
    public void setLastTime(DataTime lastTime){
        this.lastTime  = lastTime;
    }
   
}

Public class Person{
    private Time personTime;
    private boolean isLate;
    // 僞代碼
    public void firstCall(){
        personTime.setFirstTime(currentTimeMillis());
        //如果超過九點半則記爲曠工 
        if(currentTimeMillis()){
            this.isLate = true;
        }
    }
    
    // 僞代碼
    public void lastCall(){
        personTime.setLastTime(currentTimeMillis());
        //如果早於下午4:30就記爲曠工 
        if(currentTimeMillis()){
            this.isLate = true;
        }
    }
    
    //hr獲取打卡時間
    public Time getTime(){
        return this.personTime;
    }
    //獲取是否曠工
    public boolean isLate(){
        return this.isLate;
    }
}

2、項目介紹、難點

項目階段全程我在說,說完之後問了一下細節,爲什麼消息隊列使用Redis,有了解過其他的嗎
我提了一下Rabbitmq

3、項目中的sql優化問題

1、索引優化
2、聯合查詢優化

4、索引底層實現,爲什麼採用B+樹實現?

1、B+樹
2、多路搜索、數據在葉子節點,契合磁盤存儲原理,局部性原理和預讀取


5、那你知道B+樹是幾層嗎?

讀者可以參考這兩篇文章:
https://blog.csdn.net/qq_41999455/article/details/106138619
https://blog.csdn.net/qq_41999455/article/details/104946754

6、MySQL事務有用過嗎?

講了一下幾種隔離級別的使用

7、那語言這塊用什麼多一些?C++寫過嗎?

因爲我簡歷上寫了Java C++ Go,但是Java用的最多,C++沒有寫過完整項目。。。

8、Java中的map有哪些?

HashMap hashTable

9、它們之間什麼區別?

1、線程安全問題
2、擴容機制不同
3、Hash值計算不一樣
4、HashMap允許null做鍵值,hashtable不允許null做鍵值

10、有了解過Java中的NIO嗎?原理是什麼?

1、基於直接內存實現
2、NIO底層原理,同步非阻塞的IO模型,它是面向緩衝區的

11、Java的內存數據區介紹一下

講了一下Java的運行時數據區,各類數據存儲

12、Linux中的IO多路複用知道嗎?講一下

從select、poll、epoll詳細說了一下底層實現
這一塊希望讀者可以深入瞭解一下,與內核相關

13、分佈式有了解過是吧?知道分佈式事務嗎?CAP?講一下

1、分區容錯性、高可用性、數據一致性;
2、三者不能同時滿足,一般的分佈式系統都會優先滿足高可用、放棄強一致性選擇最終一致性
3、從單應用架構的事務說起,介紹分佈式事務的出現意義,目前分佈式事務常用的2PC、3PC都講了一下

14、除過2PC、3PC還有什麼協議算法呢?

paxos算法以及zookeeper使用的ZAB協議算法

15、有實際場景應用過嗎?

16、前端用過是吧,能說一下嗎?

後臺開發問我全棧。。。
前端都是很久之前寫過的簡單頁面了。。。

17、那你知道目前哪些組件、框架比較好嗎?

提了一下vue,我沒用過。。。

18、編譯原理學過了嗎?

還沒有,這學期纔開。。

19、那今天就這樣吧,後續會有人聯繫你下一面。

三面 (3.27)

1、自我介紹
2、時間複雜度爲O(nlgn)的排序算法都有哪些呢?

快排、歸併、堆排序

3、快排是穩定的嗎?

不是穩定的

4、穩定是指什麼意思?

在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序後的序列中,r[i]仍在r[j]之前,則稱這種排序算法是穩定的

5、算法題:整數無序雙向鏈表可以轉換爲排序二叉樹(能不能、爲什麼能、怎麼做)

面試官要求不要一棵樹的空間,我沒想到。。還是太菜🤣

6、Linux進程的通信方式有哪些?

有名管道、無名管道、消息隊列、共享內存

7、管道、消息隊列、共享內存它們三者哪個開銷最小?

原諒我個菜雞沒了解這麼深,所以就以自己理解說了管道最小。。。
“那爲什麼管道相比其他兩個開銷小呢?“
emmm,扯了一些有的沒得。。
補充:共享內存開銷最小讀者可以看這一篇文章詳細瞭解

8、網絡瞭解吧,TCP爲什麼是三次握手但揮手四次呢?

tcp是全雙工通信,其次談到了close-wait狀態

9、http是那層協議?

應用層

10、那你知道https嗎,是怎麼實現的?

在http基礎上做了ssl、tls

11、那https的數據是怎麼加密的呢

證書獲取階段是非對稱加密、數據傳輸階段是對稱加密,詳細說了一下流程

12、我們一般使用sleep讓進程睡眠,那我們能不能做到微妙級別的sleep呢?

這個我不知道啊。。所以就扯操作系統的操作性能和線程切換時間,認爲可以達到微妙。。。

13、MySQL索引知道吧,它的索引結構是什麼呢?

hash、B+樹

14、現在有一個聯合索引(A,B),那麼 A、B、(A,B)三者誰能夠命中索引呢?

結合索引的最左前綴特性,A、(A,B)能夠命中

15、那(A、B)這個聯合索引的B+樹結構是怎樣的呢?

這裏不太懂,我說的是根節點爲A,子節點爲B的B+樹

16、有什麼想問我的嗎?

總結

自己對於一些東西的底層還是沒有理解透,理解不到位,總的來說微信三面給人感覺更底層一些,面試官都要求說到”是什麼,怎麼做,爲什麼這麼做“,繼續努力吧!
面試官讓等通知,希望菜雞有機會吧,許願!

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