天天看點

位元組跳動測開面經,聽他講完,緊張得汗流了一背

在今年春招這麼嚴峻的情況下,我的一個朋友居然免筆試直接進入位元組面試環節,收到面試邀請的當晚,他興奮了一晚上沒睡着!

前言

位元組跳動測開面經,聽他講完,緊張得汗流了一背

巴拉巴拉一大堆有的沒的,說說自己在學校寫了啥代碼、獲得了啥獎、有沒有得過獎學金之類的,

可能是我沒有項目、比賽的獎項也不是ACM那種含金量高的,是以面試官就沒有問我關于履歷的

内容,就直接開始問我問題了。

位元組跳動測開面經,聽他講完,緊張得汗流了一背

當時腦抽,隻記起來extern C,還是第一個問題,面試官就一臉茫然。

1.全局變量

全局變量在外部使用聲明時,extern關鍵詞是必須的,如果變量無extern修飾且沒有顯式的初始化,同樣成為變量的定義,是以此時必須加extern,而編譯器在此标記存儲空間在執行時加載如記憶體并初始化為0。

2.extern “C”

extern “C” 既可以修飾一句 C++ 代碼,也可以修飾一段 C++ 代碼,它的功能是讓編譯器以處理 C 語言代碼的方式來處理修飾的 C++ 代碼。

3.static關鍵字的作用

面試的時候隻講了個大概,很多細節當時腦袋瓜子嗡嗡的沒說出來。

static修飾不同對象時的作用:

局部變量:

局部變量就是在函數内定義的變量,普通的局部變量,生存周期是随着函數的結束而結束,每次函數重新執行,局部變量都是新的值,不會保留上次的值。當用static修飾後,局部變量的生存周期就是當程式結束才會結束。再次調用函數時,用static修飾的變量會保留上一次的值。

應用:在函數内,我們想保留某些變量上一次的值,就可以用static去修飾該變量。比如:想統計該函數被執行的次數時,就可以定義被static修飾的int型變量,每執行一次該變量就++。

總結:用static修飾的局部變量,改變了生存周期,但是沒有改變其作用域。改變其生存周期的原因是被static修飾的局部變量被存放在.bss段或者.data段,而普通的局部變量是存放在棧上的。

全局變量:

全局變量用static修飾改變了作用域,沒有改變生存周期。普通的全局變量是可以被其他的.c檔案引用的,一旦被static修飾,就隻能被定義該全局變量的.c檔案引用,使得該全局變量的作用範圍減小。

作用:當一個全局變量不想被其他.c檔案引用時,可以用static修飾,這樣其他的檔案就不能通過extern的方式去通路,這樣主要是為了資料安全。

總結:改變其作用域,沒有改變生存周期。

函數:

函數用static修飾,改變了作用域。普通的函數是可以通過頭檔案聲名的方式被其他檔案調用,被static修飾後就隻能在本檔案裡被調用,這樣是為了資料的安全。

作用:有些函數并不想對外提供,隻需要在本檔案裡調用,這時候就可以用static去修飾。

總結:改變了作用域,沒有改變其生存周期。

位元組跳動測開面經,聽他講完,緊張得汗流了一背

​他居然沒問智能指針、右值引用、對象

繼承

講了一下繼承的public、proteed、private、多繼承、菱形繼承

虛函數

從虛函數扯到了多态的定義,再到多态的動靜态,再到虛表。

位元組跳動測開面經,聽他講完,緊張得汗流了一背

七層模型與五層模型

直接口述了一下七層模型的内容,最頂上的一層的名字一時沒想起來。

tcp與udp

其實他問的是tcp/ip協定是什麼,然後恰好我中午看了tcp和udp的差別,我就和面試管說我知道這個,然後他就讓我答了一下好,還是說了4到5點内容的。

TCP與UDP基本差別:

1.基于連接配接與無連接配接

2.TCP要求系統資源較多,UDP較少;

3.UDP程式結構較簡單

4.流模式(TCP)與資料報模式(UDP);

5.TCP保證資料正确性,UDP可能丢包

6.TCP保證資料順序,UDP不保證

具體程式設計時的差別:

1.socket()的參數不同

2.UDP Server不需要調用listen和accept

3.UDP收發資料用sendto/recvfrom函數

4.TCP:位址資訊在connect/accept時确定

5.UDP:在sendto/recvfrom函數中每次均需指定位址資訊

6.UDP:shutdown函數無效

基于上述不同,UDP和TCP程式設計步驟也有些不同

TCP和UDP是OSI模型中的運輸層中的協定。TCP提供可靠的通信傳輸,而UDP則常被用于讓廣播和細節控制交給應用的通信傳輸。

位元組跳動測開面經,聽他講完,緊張得汗流了一背

添加圖檔注釋,不超過 140 字(可選)

程序

講了一下程序和程式的差別,PCB,程序的排程算法的名字,上下文切換。

程序間通信

隻講了匿名管道相關,然後列舉了其他通信的名字如消息隊列。

位元組跳動測開面經,聽他講完,緊張得汗流了一背

​常見測試方法

經典黑盒白盒、單元、內建、系統

黑盒測試與白盒測試

說了一下兩者的定義

位元組跳動測開面經,聽他講完,緊張得汗流了一背

添加圖檔注釋,不超過 140 字(可選)

​ 有兩個沒有刻度的杯子,一個水龍頭,一個5L,一個6L,問怎麼得到3L

很久之前看過,但忘了,好歹面試時想出來了。

我是這麼說的:

先給5L的杯子裝滿,然後倒入6L,兩個杯子同時放水,這樣5L裡就有1L,再把6L倒空,在同時放水,6L就有4L,

再把5倒空,同時放水,5L裡就有2L,再把6L倒空,同時放水,這樣當5L滿時,6L裡就恰好3L。

我以為我答的很不錯,面試官來了句隻有一個水龍頭,你再好好想想。

然後我腦子又抽了,說把5L杯子放到6L裡,當6L滿把5L拿出來,重複三次,一聽完,面試官就笑了,委婉的說了一下(真實意思:你腦洞真夠大的)。

面試結束我才反應過來,什麼同時放水,改一下放水順序不就OK了嗎,整個面試,我最大的遺憾!!!

位元組跳動測開面經,聽他講完,緊張得汗流了一背

劍指 Offer II 119. 最長連續序列

位元組跳動測開面經,聽他講完,緊張得汗流了一背

當時的思路是直接sort()然後周遊記錄len然後更新max,就直接寫了,畢竟之前沒做過

面試官:目前算法的時間複雜度是多少呢

我:忽略排序的話是O(N),

面試官:那到底是多少

我:O(N*LOG N)+ O(N),然後取最大

面試官:有沒有O(N)的算法呢?

想了一下沒出來

面試官:優化時間複雜度的方法有哪些

我:減少循環次數和層數

面試官:其實還有空間換時間

我:對對對。

面試官:你在想一想

其實我想到了哈希,去找-1的和+1的

他又問:什麼可以減少比較次數

我直接蒙了。

最後哈希沒搞出來,面試就結束了

這次面試簡直就像天上掉餡餅一般,雖然我可能并沒有把握住

這次面試可以說是我的第一次正式面試,面了一小時十五分鐘,就當漲經驗了。

是以說,鐵子們,履歷一定要海投,萬一餡餅真砸到你身上呢!!!

劍指offer一定要全部過一遍,最好每一題都知道最優解!!!

多看面經總是有好處的!!!

經過這次面試,我發現得自己把知識點串起來講一遍,不然面試時腦瓜子嗡嗡的!!!

面試時可以适當的引導面試官,讓他問你你想讓他問的,親測,真的好用!!!

但願能過(滿懷希望,雖然不大),過了我能開心的睡不着的!

繼續閱讀