微信支付面試已面過三輪,所以在這裏總結一下二、三面面經,大家一起交流學習!
二面
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、有什麼想問我的嗎?
總結
自己對於一些東西的底層還是沒有理解透,理解不到位,總的來說微信三面給人感覺更底層一些,面試官都要求說到”是什麼,怎麼做,爲什麼這麼做“,繼續努力吧!
面試官讓等通知,希望菜雞有機會吧,許願!