秋招面經總結(持續更新中)

大華:(一面8月12,二面8月15)

一面:(25分鐘)

1、自我介紹

2、博客都是關於哪些技術的

3、fork源碼的剖析(只是簡單的剖析嗎?有沒有將其替換掉使用)

4、select、poll、epoll的區別

5、raw_socket的原理以及和TCP/UDP中socket的區別

6、libevent的工作原理

7、在TCP/IP五層傳輸協議中,數據傳輸的方式還有給數據加頭加的是什麼頭

8、擁塞避免的算法

9、良好的編程習慣是指?

二面:(35分鐘)

1、講一下shared_ptr,它的引用計數是在堆上還是棧上? 它的對象在堆上還是棧上?指針是在堆上還是棧上

2、講一下三次握手,爲什麼兩次不可以?(我其實不該說狀態的,可能我不說狀態就沒有下面這個問題了吧,自己挖的坑自己要負責)

3、講一下socket編程中的具體函數所對應的狀態?我說了編程的流程,然後說到connect和accept那裏,面試官問那connect之後的狀態?accept之前是什麼狀態?是已經連接建立好了嗎?我說沒有,但是現在想明白了,connet之後建立完三次握手連接了,返回的那個套接字它是在listen監聽隊列中的,此時如果這個套接字上有事件那直接accept就行(迷,我不知道說對了沒有)

4、講一下二叉樹、滿二叉樹、完全二叉樹

5、說一下常用的shell命令

6、文件傳輸項目中傳輸數據的具體細節、上傳文件的時候怎麼判斷這個文件在服務器端已經存在了,md5值,只有文件名相同的才能進行計算md5值?那要是文件名不相同那是不是就算有重複的也可以繼續上傳了?

7、四種強制類型的轉換的使用,並具體舉例,dynamitic_cast是從基類強轉成派生類還是從派生類強轉成基類

8、很多個整型數據找TOP10,最小堆的實現

9、多個線程去訪問一個資源可不可以?會產生什麼問題?可以,但是會引起線程不安全;那怎麼解決呢? 

10、C++11新特性瞭解嗎?

字節跳動(8月18日連續三面)

一面:(46分鐘)

1、算法題:兩個有序數組的合併

2、如果是多個有序數組(N個有序數組,每個數組長度爲M)的合併怎麼做?

(1)採用小頂堆,然後首先取出每個數組的第一個元素來構建小頂堆

(2)小頂堆構建完成之後將堆頂的元素存在排序數組中

(3)取出和堆頂元素在一個數組中的下一個元素放到小堆頂中,並調整堆

(4)重複上述三個步驟(上述步驟總共執行M*N次)

3、數據庫的隔離級別

4、HTTP的頭部字段

5、請求方式有哪些,都有什麼區別?

6、HTTP頭部可以包含二進制嗎?

二面:(47分鐘)

1、算法題:求二叉樹中兩個節點的最遠距離

2、TCP的擁塞控制

3、HTTP和HTTPS的區別

4、HTTPS的安全外殼是怎麼實現的(我舉例說的是我的實習項目中的非對稱加密算法RSA)

5、怎麼查看Linux下哪個進程打開了哪些文件

6、epoll的底層實現,我說了epoll中用到的數據結構:紅黑樹和隊列

7、epoll底層爲什麼要使用紅黑樹呢?

7、阻塞和非阻塞

8、Linux中的阻塞和非阻塞是怎麼體現的?

三面:(一個小時左右記不太清了)

1、多個有序數組的合併求時間複雜度

2、TCP可以三次握手,但是要四次揮手

3、邏輯推理題:地球是一個二維圓,12點位置是一個飛機場,飛機必須從飛機場起飛,必須從飛機場降落,飛機加滿油可以繞地球半圈,飛機之間可以互相加油,問:最少需要出動多少架次的飛機,使得有一架飛機可以繞地球一圈?

4、項目文件傳輸的時候怎麼限速

5、實習項目中遇到的最大問題

6、TCP和UDP的區別

7、TCP是可靠的了,UDP爲什麼還要去實現可靠性

總結:面試字節跳動遇到的三位面試官真的都好好,非常感謝他們,現在將我的一點面經拿出來跟大家分享,我能記住的就這麼多了,希望對大家有用。還有就是面試過程中給大家一點建議,真的不要緊張,多和面試官溝通,我個人認爲和面試官溝通這個環節很重要,因爲一個好的面試氛圍對面試過程和結果的影響很大,最後希望大家都好運吧!

深信服(一面8月21日、二面8月13)

一面:(38分鐘)

1、大端小端以及用代碼怎麼實現?

2、內存空間的5的段的分佈

3、宏,定義宏的細節?你平時看的宏代碼量那麼多,爲什麼它會和教科書上不一樣呢?(我回答的是可移植性高)

4、hash衝突?解決哈希衝突的方法?開放地址法、鏈地址法、再哈希法、建立一個公共溢出區

5、給你一片英文文章,如何從中找出出現次數前十的單詞?數據量不是很大(字典樹、hash映射+小根堆、效率最低的就是挨個遍歷)

6、m個字符串,左移n個位置,數據量非常大,怎麼解?(題目可以歸結爲旋轉字符串)

      我只說了將這個字符串分割成n和m-n長度的字符串,然後求解,我說可能時間效率還是不能解決,面試官說可以,然後就開始問下一個更難的了

7、n個數據放8個桶,桶大小爲100,每個數據允許放的桶不一樣,怎麼設計可以讓桶放最多的數據,這個問題你覺得面試官問的對嗎?(結合漢諾塔問題來解)

     我不會,想了半天我還是不會,我就給面試官說我寫不出來,面試官就說我可以下來再想想然後可以後面發給他,說他現在還沒有得到過滿意的答案,我….我感覺我涼了,他說人資哪邊7-8天內會給回覆,我感覺我涼了,並且很徹底

8、網絡瞭解的多嗎?協議的底層實現瞭解嗎?

    我就大概把有哪些協議說了一下,然後簡單的說了一下里面有什麼,最後被問了ICMP,我就說了一下,本來是要結束了,面試官突然想起來要問這個,其實我很希望他能問很多網絡的知識,我給他還說我喜歡網絡

 

二面:(47分鐘)

1、設計百度網盤,每個功能模塊怎麼設計?

2、增加新的功能模塊的時候怎麼加?比如要添加一個視頻進去,有很多用戶都在用但是不能因爲你加這一個功能重啓而導致別的用戶也全部重啓怎麼解決?使用多進程(我…..)

3、斷點續傳是怎麼實現的?

4、文件傳輸項目中你遇到過什麼問題?

5、socket返回值的含義?

6、socket各個參數的含義瞭解嗎?

7、爲什麼socket返回值是個整數,那是怎麼通過這個整數來進行通信的呢?

7、libevent庫實現的原理?看過它的源碼嗎?沒有

8、還看過什麼開源的代碼?fork()

9、爲什麼要四次揮手?

10、還對哪塊比較熟悉?網絡,具體是哪些?我就把我會的那些協議都列舉了一遍,可能這就是爲什麼要問下面這個問題的根源吧

11、現在剛開機去ping一個百度網頁,這個過程中都經過了什麼?我感覺我和面試官說的不是同一個問題

百度(一面8月20日,二面8月21日)

一面:(28分鐘)

1、智能指針都用過哪些?(shared_ptr、weak_ptr)

2、說一下多態(簡單講就是 繼承、指針、虛函數)

3、二叉樹和BST樹

4、BST樹是什麼?

(1)我說了BST它的頭節點有四個值域,Lchild指向BST樹的最小節點,Rchild指向BST樹的最大節點

(2)BST樹的中序遍歷是有序的,它的左孩子比根小,右孩子比根大

5、二叉樹?我說節點和層數的關係,面試官說不問這個,如果一棵二叉樹只有左孩子或者右孩子那它的搜索時間複雜度是不是就從O(logn)變成了O(n),那怎麼解決,然後我不會,面試官就問平衡二叉樹瞭解過嗎,我說了解過一點,然後我就將了AVL樹的特點,其實面試官問這個問題的目的是想知道一個只有左孩子或者右孩子的二叉樹怎麼能讓它的查找時間複雜度還爲O(logn),就是從二叉樹到AVL樹的轉換

6、講一下實習期間的項目(講的不太好)

7、講一下文件傳輸項目的實現

8、講一下哈希表的優缺點?

(1)最優查找時間複雜度O(1)

(2)會產生衝突,解決衝突的方法有哪些?我當時緊張,說一共有三種,但我只說出來了一種,面試官說其實不止一種

(3)因爲哈希表它是由鏈表和數組組成的,所以如果數據重複度高的話,鏈表會很長(不對),面試官說,那如果只是一個鏈表的話,它也可以很長,這有什麼問題嗎?然後面試官就說其實是剛開始開闢空間…,面試官提示之後我就又進行了補充

 現在總結哈希表的優缺點

優點:最優時間複雜度可以達到O(1)

缺點:說數組的缺點就行

(1)(主要原因)因爲哈希它是由數組和鏈表組成的,數組的缺點就是,在剛開始申請空間大小的時候就要確定其大小,也就是說在編譯階段就要確定其大小,在運行階段其大小是不允許改變的,但是如果數據過多可能會造成越界的問題,如果數據太少就會造成空間浪費的問題,所以說哈希也有這樣的特點

(2)動態的申請鏈表節點很浪費時間

二面:(1小時2分鐘)

1、寫時拷貝:

2、文件傳輸項目中怎麼實現斷點續傳的?

3、文件傳輸項目中能達到多少個用戶?

4、二手房租賃管理系統中使用的是多線程嗎?

5、在二手房租賃管理系統中對數據庫的操作深入嗎?不深入,ok,那就問別的

6、算法:給定一個數字n,求出1到n的所有數的二進制中1的個數

7、算法:求多個有序數組的交集

8、模擬實現生產者和消費者(不會,然後就換了求多個有序數組的交集)

 

 

 

 

 

 

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