網(wǎng)易雷火工作室服務(wù)端開發(fā)暑期實(shí)習(xí)一面
5.8一面,當(dāng)天晚上收到5.11二面通知
但是我感覺我回答的相當(dāng)差,一大半都不會,會的題估計(jì)都沒答對幾個(gè),完全不相信自己能過這種感覺
我Java和C++各投了一半吧差不多,本來打算一起準(zhǔn)備,然后發(fā)現(xiàn)實(shí)驗(yàn)室活太多準(zhǔn)備不過來了,就先準(zhǔn)備Java了
所以我是只背了一些Java八股,C++還沒開始背,所以沒寄希望能過一面
以下是一面面經(jīng):
1. 自我介紹
2. 請問C++,初始化一個(gè)對象有哪些方式
不太會,只是淺淺學(xué)過
----那我給你看一段代碼吧
代碼段落里好像有B b; B m(b); B n = b; B c = move(b)????有點(diǎn)記不清了差不多這個(gè)意思
我完全看不懂,跟他老老實(shí)實(shí)說了實(shí)話
3. class B{
union{
int a;
byte b;
}
int c;
double d;
}
求cout << sizeof(b)
我不太會,問了下union的含義,簡單給他講了下int和double各占多少個(gè)字節(jié),然后他說對齊的問題我沒考慮到
4. 你知道.xxx文件嗎,一連問了我四種文件格式,我全都沒聽說過,他說是Linux系統(tǒng)中常見的文件格式
5. 那你知道動(dòng)態(tài)鏈接和靜態(tài)鏈接的區(qū)別嗎
我也不太會,但是閑扯了一點(diǎn)
他看我確實(shí)不太會C++,直接換成計(jì)網(wǎng)了:
6. 那就問你點(diǎn)計(jì)網(wǎng)的問題吧,你知道tcp嗎,tcp粘包問題你聽過嗎
聽過,TCP的算法默認(rèn)會將多個(gè)tcp分組的包一起發(fā)送,導(dǎo)致接收方無法分辨不同消息之間的分界
7. 那tcp粘包問題如何解決呢?
發(fā)送定長的包?
----這種不夠靈活,而且會產(chǎn)生碎片
那就結(jié)尾加上標(biāo)識符?
----這種可能出現(xiàn)正文中的相同標(biāo)識符干擾
那就包首定義長度?
----這個(gè)可以
8. tcp發(fā)包的時(shí)候,序列號如果溢出了怎么辦,比如 0xFFFFF變成了0x000000,怎么說明后一個(gè)比前一個(gè)大?
加上版本號?比如版本2的0x00>版本1的0xFF?
----那如果版本號也溢出呢?
那就兩個(gè)版本號交替?0和1交替?
----這個(gè)可以
9. 你知道TCP的time to alive嗎
關(guān)閉連接后的存活時(shí)間?
如果服務(wù)端一直因?yàn)榈却瑫r(shí)連接過載怎么辦,無法釋放連接?
這個(gè)我沒太聽懂
10. 來個(gè)經(jīng)典的吧,www.google.com會發(fā)生什么(略)
11. 那網(wǎng)絡(luò)就到這里,來點(diǎn)操作系統(tǒng)吧,你知道fork嗎
創(chuàng)建子進(jìn)程?
----那你知道子進(jìn)程和父進(jìn)程怎么通信嗎,他們倆可以共享某些內(nèi)存嗎,這個(gè)機(jī)制你了解嗎
不太了解
12. 如果4G的內(nèi)存,一個(gè)進(jìn)程可以給他分配8G的虛擬內(nèi)存嗎
這個(gè)我不太懂,Java是不需要手動(dòng)分配內(nèi)存的
然后問到這里,感覺面試官已經(jīng)有點(diǎn)無語了,那我問你個(gè)代碼題吧
class Time{
int timeStamp;
int year;
int month;
int day;
int dayInWeek; #周幾
int hour;
int minute;
int second;
}
怎么求兩個(gè)Time a和b是否在同一周內(nèi)
一開始我也不會,但在面試官提示下,我用時(shí)間戳相減,如果在一周以內(nèi)(7*24*60*60)并且大的時(shí)間dayInWeek大于小的時(shí)間,就是True
當(dāng)晚收到了美團(tuán)的一面掛的消息,和網(wǎng)易進(jìn)二面的消息,百味雜陳
美團(tuán)我認(rèn)為自己一面答得還不錯(cuò),結(jié)果直接掛了,網(wǎng)易我完全懵逼狀態(tài),感覺我是來搞笑的,結(jié)果居然過了,看起來面試這東西還真是玄學(xué),可能你面試之前就決定要不要你了,后面就是走個(gè)流程吧,可能跟你發(fā)揮真的關(guān)系不大