【求職】貝殼C++方向面經

第一篇

一面 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 就問了一些基本的操作,怎麼用的,爲什麼單核單線程,線程切換 和 進程切換的區別

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