字節跳動客戶端實習二三面

二面(80min)

1.首先自我介紹沒什麼好說的

2.簡歷上寫的語言是C/C++/Python,先講一下這三種語言的區別吧

其實就是面向過程、面向對象和解釋性語言的區別,由於一面問過面向過程和麪向對象的區別以及各自的應用場景,因此後來專門查了一下,信誓旦旦地講完了,結果面試官來了句你講的這不是根本上的區別,最根本的區別是什麼?我懵逼表示沒有深入地思考過,面試官說C語言底層是採用goto語句實現程序的跳轉,而C++可以用類的接口實現跳轉。接着追問那他們跟Python的區別是什麼呢,我說Python是解釋性語言,balabala扯了幾句,面試官還是說這不是根本區別,然後簡單跟我講了下。

後來自己查了下:編譯性語言和解釋性語言最大的區別就是,編譯性語言是整個程序編譯完之後才能運行,只須編譯一次就可以把源代碼編譯成機器語言,後面的執行無須重新編譯,直接使用之前的編譯結果就可以,程序執行效率比較高,但比較依賴編譯器,因此跨平臺性差一些;而解釋性語言,源代碼不能直接翻譯成機器語言,而是先翻譯成中間代碼,再由解釋器對中間代碼進行解釋運行,程序不需要編譯,程序在運行時才翻譯成機器語言,每執行一次都要翻譯一次,運行效率一般相對比較低,依賴解釋器,但跨平臺性好。

3.類和結構體的區別是什麼

我傻傻地問是C++中類和結構體的區別麼,面試官說其實我問的是類和結構體這兩種結構的區別,你可以用某種語言裏的舉例,然後我把C++中類和結構體的區別講了下(默認繼承的方式和類能用作模板類參數),面試官表示否認三連,說我說的還是表面的東西,類是引用類型,結構體是值類型,他們的區別是什麼?然後才終於明白問題是什麼(o(╥﹏╥)o),接着回答兩者區別。

4.多進程的通信方式

管道(無名管道和有名管道)、系統IPC(消息隊列、信號量、共享內存、信號等)、套接字socket(不同主機間進程的通信)。

知道管道的實現機制嗎?不知道。那舉個應用的例子吧,比如手機上兩個app是兩個進程對吧,那當發送消息通知的時候這兩個進程是怎麼實現通信的呢?還是很懵逼,弱弱地說可能是信號量+共享內存吧,信號量實現進程間的同步,共享內存使多個進程可以共享同一塊內存空間。然後面試官又問那你知道管道和系統IPC的區別嗎,什麼時候用管道,什麼時候用系統IPC?還是表示不清楚。。。

5.堆和棧有什麼不同

堆是動態分配內存,棧有靜態和動態分配;堆是不連續的內存空間,用一個空閒鏈表存儲,棧是一塊連續的內存空間,由系統預先設定好;堆的生命週期長,棧的生命週期短;new/delete分配和釋放的內存是堆上的,棧主要用於函數棧;堆地址是向上增長的,棧是向下增長的。

對線程瞭解的多麼?不多。那應該大概有個概念吧,線程可以共享內存,那兩個線程可以共享棧內存嗎?然後看我有點懵逼,面試官舉了個例子,分析了下爲什麼兩個線程可以共享堆內存,然後讓我分析下可不可以共享棧內存,於是按照面試官的分析方式分析了下線程不可以共享棧內存。

6.問TCP和UDP的區別,並舉幾個應用的例子

從是否面向連接、服務對象、可靠性、頭部長度、擁塞控制和流量控制、長度的動態變化、應用場景幾個方面都講了一下。

例子,UDP舉了下DNS服務器和麪試時的視頻連接,TCP舉了下微信聊天的文字、HTTP、FTP。

然後面試官糾正說HTTP不能完全說是TCP連接,因爲HTTP3.0已經提出了QUIC機制,相當於是一種UDP連接。好吧,其實學校裏開會的時候貌似聽老闆提到過,確實是這樣沒錯。

7.對比HTTP下載、FTP下載以及P2P的下載,在本質上有什麼差別

並不知道,就瞎扯了一點C/S跟P2P的區別,面試官說這是中心化和去中心化的區別,就算把這個當做FTP和P2P的區別,那HTTP下載和FTP下載的區別呢?這個是真不清楚。。。然後面試官讓我平時一定要多留意多思考身邊存在的問題。。。

8.操作系統中的各種鎖,比如互斥鎖、條件鎖、讀寫鎖、遞歸鎖等,它們各自的應用場景是什麼

9.說一下死鎖形成的條件

10.有沒有自己實踐過多線程

沒有,後面自己應該多去學習一下,動手實現一下

11.參加過物聯網比賽,那瞭解彙編嗎

本科的時候學過,忘得差不多了。。。

12.學校裏學了什麼課程,哪些是自學的

13.貼一段實際工作中用到的代碼給面試官看下代碼風格

14.算法題:

1).輸入一個整數將它轉化爲16進制輸出

2).股市問題,給一個數組,比如[5, 10, 1, 9, 8, 6],輸出在哪天買入和哪天賣出可以獲得最大利益

 

三面(40min)

1.專業本科和碩士都是自動化,有什麼計算機相關的課程嗎,對ios瞭解多少

2.挑簡歷上的一個項目講一講

3.TCP三次握手建立連接的過程

4.爲什麼TCP建立連接是3次握手,而斷開連接是4次揮手

5.說一下TCP的慢啓動

6.線程和進程的區別

7.講講C++的三個特性

8.多態分爲重載和重寫,說說它們的區別

9.在瀏覽器網址輸入百度,接下來是怎麼一個流程

10.HTTP建立連接時如何找到Web服務器的位置,如果服務器距離很遠的話ARP協議還要廣播尋找MAC地址嗎

11.知道廣播風暴嗎

12.瞭解路由算法嗎

 

總的來說,感覺二面問的還是挺深入的,比較區別的時候,會刨根問底,有的時候也會讓你舉幾個應用的例子,不過面試官人還是很好的,不明白的會循循善誘;三面面試官電腦出了問題,就電話面的,題目問的都比較基礎,也沒出算法題,比較幸運。

二面面試官說得對,自己周圍還有很多值得學習的東西,自己還是太菜了,學無止境啊。。。

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