技術面試(三)-在校生應聘實習崗位

這次是海康的電話面
1、UDP和TCP的區別
很不錯的一篇文章,解析UDP和TCP非常到位,包含三次握手和四次揮手,粘包問題
添加鏈接描述

2、Linux的指令
mkdir、cd、ifconfig、df -h、touch、exit、pwd、rm、vi、mv

3、MySQL的指令
這是我另一篇文章,講的就是MySQL的命令
添加鏈接描述

4、學過哪些容器
map、vector、list
5、vector和list的區別

    1、
    		vector和數組類似,擁有一段連續的內存空間,並且起始地址不變。vector和數組類似,擁有一段連續的內存空間,並且起始地址不變。
			因此,它能夠高效地進行隨機存取,時間複雜度是O(1)。
			但是,因爲其內存空間是連續的,所以在進行插入和刪除操作時,會造成內存塊的拷貝,因此時間複雜度爲O(n)。
			另外,當數組內存空間不夠時,會重新申請一塊內動空間並進行內存拷貝。
	2、
			list是由雙向鏈表實現的,因此內存空間是不連續的。
			其只能通過指針訪問數據,所以list的隨機存取效率很低,時間複雜度爲O(n)。
			不過由於鏈表自身的特點,能夠進行高效的插入和刪除。
	3、
			vector和list對於迭代器的支持不同。
			相同點在於,vector< int >::iterator和list< int >::iterator都重載了 “++ ”操作。
			而不同點在於,在vector中,iterator支持 ”+“、”+=“,”<"等操作。而list中則不支持。

6、map與vector和list兩者相比又有什麼不同
map查找數據的速度是最快的(即使數據到達百萬級也可以說是毫秒級),但其查找性能是以插入數據時維護底層紅黑樹作爲代價的——即插入數據比較耗時。通過以上數據可以看出,大量數據插入的場景是不適合map的,性能非常低,比vector和list慢幾倍甚至十幾倍。

map適合偶爾插入一條數據並且很少clear,又頻繁查找的場景。

vector插入數據的速度是幾者中最好的,即使把vector擴容時的損耗計算在內。並且vector的查找速度比list快,其原因是list可能會多一些判斷,比如下一個節點是否存在啊之類的,但是vector就可以直接快速遍歷。當然對於查找我們就不用手動遍歷了,那樣性能太低了,直接使用std::find或者std::find_if就行了,速度會快速倍。

list插入速度稍慢於vector,查找速度也稍慢於vector,但是比較適合頻繁的隨機刪除節點或插入節點的應用場景,因爲list就不像vector那樣刪除或插入節點會導致節點後的數據拷貝。但實則上能不用list就不用吧,list調試起來比較麻煩。

總之,經常動不動就clear,然後大量插入新數據,偶爾查找一下的——那就用vector吧,性能相對極高

7、詳細說說自己最熟悉的一個項目
-------------------------------------

8、平常用vim還是編輯器編寫代碼
--------------------------------

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