第一篇
一面 2019/10/16
1、手寫快排
2、如何查找一個矩陣裏最小的和爲 0 的矩陣
3、鎖有哪些
4、進程和線程
5、tcp 和 udp 區 osi 七層結構
第二篇
一面 2019/9/10
1、B 樹、B+樹的數據結構,樹長什麼樣,有什麼特點?
2、平衡二叉樹的數據結構,講一下特點
3、寫求質數的代碼
4、兩個排序好的數組,要求去重。可以用 set 做集合的並集、交集,也可以用 map 實現
5、用來處理高併發的手段都有什麼
6、七人排六排,要求每排人數不少於 3 人
7、線程同步的幾種方式?
8、動態鏈接庫和靜態鏈接庫的區別
9、手寫判斷一棵樹是不是平衡二叉樹
二面 2019/9/12
1、UDP 中的 socket 編程,需不需要用 connect,如果用了會發生什麼?
2、根據 GPS 可以解析出來經度緯度,設計一個數據庫中的表,可以實現搜索附近的人的功能,
這個表要怎麼設計,索引要怎樣建立
3、給一個圖像上加上不明顯的水印,怎麼加
4、你會什麼?研究過什麼?有看過開源代碼麼?
5、寫一下傅里葉變換的公式
6、撕代碼,求公約數代碼
7、怎樣得到變量名,就是把變量名轉化成字符串
8、網絡傳輸中一臺設備去連接到 baidu 這個網址,目標 ip 和目標 mac 是什麼
第三篇
一面 2019/11/5
1、完整 HTTP 請求的過程
2、瀏覽器輸入網址後詳細過程
3、用冒泡可以嗎?堆爲什麼效率快?數據量大的話
4、設計模式瞭解嗎?
5、搜索引擎爲什麼可以幾毫米找到上百萬的文件?爲什麼比本地的快、一個 5L,一個 3L
空杯子,沒有刻度,怎麼量出 4L 的水?
6、臺階問題,斐波那契數列(走 2 個臺階,3 個臺階,n 個臺階呢)臺階特別多,如何優
化
7、怎麼判斷一個 IPv4 是否合法?
二面 2019/11/71、
C++內存管理
2、棧溢出,怎麼解決這個問題
3、valgrind
4、C++內存開發過程會出現什麼問題?
5、內存溢出
6、指針問題
7、智能指針原理?
8、一個資源管理類 shared_ptr weak_ptr uniqe_ptr(auto_ptr)
9、多線程用過嗎?在用的過程中會出現什麼問題
10、線程死鎖用過嗎,什麼情況下會造成死鎖?
11、兩個線程申請一個資源會造成死鎖嗎?
12、怎麼預防死鎖?怎麼解決死鎖的問題?
13、http 和 https 的區別?https 實現過程?
14、https 在性能上有損失嗎?在時間上會變慢嗎?
15、長鏈接瞭解嗎? 長鏈接和短鏈接的區別, 在什麼情況下用長鏈接、短鏈接?
(keep-alive)
16、手撕代碼-鏈表的逆序
第四篇
一面 2019/9/20
1、介紹了 apue
2、模板類
3、vector 怎麼回事?如何擴容?擴容後用 memcpy 還是 for 循環
4、c 抽象了什麼東西?後來面試官好心解釋了一下
5、問語法括號匹配怎麼樣做,那括號用什麼結構存儲?
6、哈希表原理?哪裏有哈希表?
7、哈希一致性
8、數據庫會嗎?
9、http 瞭解?
第五篇
一面 2018/9/8
1、刪除字符串中所有出現的,比如刪除中間的 ba 又會出現一個,所以結果爲“ ”
2、php 相關
3、b,b+樹的區別
4、innodb 的存儲引擎爲什麼選用 b+tree
5、索引優化的問題
6、什麼時候需要添加索引
7、介紹一下 levelDB 吧
8、skiplist,levelDB 爲什麼選用 skiplist 做索引
9、levelDB 使用的 lms tree 以及爲什麼 levelDB 適用於寫多讀少的問題
二面 2018/9/10
1、寫個冒泡排序
2、一些指令,查找當前 8080 端口被哪個進程佔用找出來
3、出個情景題你寫一下吧,現在一個文件 a 裏面分別有 a1 ,b1 ,c1 三個子文件夾,這三個
文件夾下分別有若干文件爲 atext1 atext2… btext1 …ctext1…把這些文件移動到a 的平行
文件夾 b 下,並且更改名字爲 batext1, …bbtext1 bctext1
4、問了寫的一個 c/s 的轉發系統
5、php 封 webservice 的一些東西,包括 php 本身連接 mysql 用到的
6、你最近有在讀什麼書呢?
第六篇
一面 2018/9/3
1、說說 epoll 模型
2、講講四次揮手,越詳細越好
3、大量的 CLOSE_WAIT 會怎麼樣
4、CLOSING 狀態
5、字符串刪除,長串裏刪除所有子串,考慮刪除子串後可能會再次出現子串 6、
上一個題我用了 strstr,讓我實現 strstr
7、一億個數據,找到第 K 大的
8、講講 TCP 報頭字段
9、listen 第二個參數怎麼設置的。對轉語言有什麼看法?瞭解過 PHP 嗎?
10、講講 TCP 連接過程
11、爲什麼要有 TIME_WAIT?
12、寫一下二叉樹深度遍歷非遞歸
二面 2018/9/5
1、講講數據庫索引
2、講講 B+樹
3、講講 B+與 B-的區別
4、講講紅黑樹,插入時如何旋轉
5、對稱加密與非對稱加密區別
6、圖的的數據結構是什麼?如何表示
7、session 與 cookie
8、一億個用戶,用戶 ID 唯一,保存在內存,有一種權限,用戶對該權限只有兩種可能,
有或者沒有。每次能夠快速定位到用戶是否擁有該權限,如何設計存儲?
9、瞭解過 MD5 嗎?
第七篇
一面 2018/9/2
1、數組{1,2,3,1,1,1,1,1}與座標軸圍成的最大矩形面積,下標表示 x 軸,數組中的數表示
高度,求最大的矩形面經
2、二叉樹蛇形遍歷
3、二臺服務器要通信,需要考慮哪些指標?如效率、可靠性等,如何設計這麼個可靠的協 議
4、tcp 擁塞控制算法
5、操作系統如何實現互斥鎖
6、分佈式和數據庫的內容
7、分佈式的優勢?
8、分佈式系統高可用性和數據一致性如何保證?
9、數據庫事務?延展很多,包括併發和恢復等等
10、手寫歸併排序算法並解釋
11、操作系統的相關知識
12、進程間通信方式?有什麼區別
13、平時用的主要環境是什麼?
14、Linux 瞭解多嗎?會 Shell 編程嗎?工具用的是否熟練?
15、從瀏覽器輸入網址到顯示頁面的過程?
16、IO 多路複用,select 和 epoll 的區別?
17、解釋進程 fork 一下?
18、用戶太和內核態?
19、const 和 define
第八篇
一面 2019/8/31
1、項目介紹,針對項目深挖了兩個細節
2、http 狀態碼(429, 502, 504)
3、https(爲什麼 CA 認證能保證安全?CA 僞裝攻擊怎麼辦?)
4、三次握手和四次揮手,爲什麼四次?三次行不行?
5、數據庫引擎(Innodb、mysima 區別)
6、如何發現慢查詢?如何優化慢查詢
7、聯合索引?
8、悲觀鎖和樂觀鎖?悲觀鎖怎麼實現?
10、同步、異步、阻塞、非阻塞?
11、NIO、BIO、AIO?
12、select、epoll?
13、MVC 三層架構?爲什麼要用它?
14、掃雷,寫一個隨機埋 n 個雷的算法
第九篇
一面 2019/8/19
1、TCP 三次握手和四次揮手的過程
2、進程間通信的方式
3、進程、線程間同步的方式
4、鎖機制、自旋鎖、以及如何避免死鎖
5、select、poll、epoll 間的區別,epoll 的兩種工作模式
6、手寫了兩道代碼題,一道二分查找,一道判斷兩個二叉樹是否相等
7、哈希表避免衝突的方式
8、你熟悉的排序方式,以及其適合的應用場景
9、數組與鏈表的優缺點,以及其適合的應用場景
10、TCP 三次握手四次揮手過程,需要把每個狀態都表達出來
11、select、poll、epoll 間的區別,epoll 的兩種工作模式12、
B 樹、B+樹、跳錶
13、給了一個場景,要用布隆過濾器。讓說一下如何實現布隆過濾器
14、手寫兩道代碼:一道二分查找,一道兩個鏈表求交點
15、有沒有用過抓包工具,得到三次握手四次揮手的包
第十篇
一面 2019/10/5
1、如何計算一個包含重複元素的數組中不同元素的個數
2、[1,1,2,3,4,4,5] 返回 5
3、Tcp 三次握手、四次揮手,爲什麼連接需要三次,斷開卻要四次
4、進程和線程的區別,進程通信方式,線程通信方式
5、C++中如何實現內存管理
6、new 和 malloc 的區別
7、全程懟項目
8、手撕 n 的階乘末尾的零的個數
9、項目中用到了 redis 就問了一些基本的操作,怎麼用的,爲什麼單核單線程,線程切換 和 進程切換的區別