下午4點接到一個杭州打過來的電話,阿里巴巴一面。持續時間半個小時。
面試官是阿里雲KVStore組。
1.自我介紹,說一下項目
說了下之前在公司做的手繪幾何圖形規整輸出的項目,提了下當時遇到的問題,以及用到的解決方法。也說了下現在組里面在做的表情識別的項目。講了8分鍾的樣子。
2.C++STL標准庫里的知識
sort的時間復雜度。
這個好簡單,O(NlogN),然后我補充了下sort是快排的思想,然后是不穩定的排序算法,是基於泛型編程的思想,除了支持基本的STL中的數據類型,還支持自定義的數據類型進行排序。傳進去的是迭代器或者指針,直接操作的地址,然后支持重載,第三個參數可以重寫cmp排序規則。
Vector的增長模式。
首先vector是一種順序容器,動態數組,在聲明的時候可以調用構造函數直接開辟一定大小連續的空間。當空間滿的時候,重新申請一個2倍的空間,將原來的所有數據考唄過去。
Map底層
紅黑樹,比較復雜,和multimap的區別。
3.平常怎么調試代碼,主要在那個平台
平常主要用vs,Windows下,用過mac下的clion。編譯出錯,先看是不是語法錯誤,如果是邏輯錯我,通過打log、打斷點,定位錯誤的地方調試。
4.內存泄漏的問題
我只答出了數組越界,指針作用域之外指向地址不明,變野指針,復雜度太高遞歸次數太多爆棧。答得不好,后來查了下,發現還有好多沒說到,C++內存泄漏的幾種情況。
5.有了解C++的發展么
現在出到了C++17,上一個版本是C++14,17不了解,出了什么智能指針,方便管理內存。我用過的只有aotu關鍵字。
6.網絡編程
問epoll和poll,最近在補,還沒看到那塊,說了下自己寫的TCP的Socket編程,服務器端和客戶端的業務邏輯。
7.Linux
同步互斥 文件加鎖解鎖,線程安全 猝。
我提問環節,讓面試官介紹了下他所在部門主要做哪方面。
KVStore,做redis數據存儲的,平常是在linux上對內核進行開發優化,也做一部分遠程運維。