騰訊暑期實習一面面經

騰訊暑期實習一面面經

面的是騰訊音樂部門,全民K歌下面做 linux C++開發的,全程大概45min左右,過程記錄如下:

1. linux 指令有用過嗎?

常用的查看文件指令:

		cat 、 tac 、more 、less 、 head 、 tail

查看空閒和已用內存大小的指令:

		free		不帶選項默認是以KB爲單位
		
		free -m		以MB爲單位,同樣適用於 -b(B爲單位) 、 -g(GB爲單位) 、 -tera(TB爲單位)

查看系統中進程及資源的使用情況

		top			top是動態監視系統任務的工具,top輸出的結果是連續的

殺死進程指令:

​ 1. 先用監視進程的指令 psps 查看進程 pid :

		ps -ef   			顯示所有進程
		
		ps -ef | grep 進程名 			根據程序名稱查詢相關進程狀態

​ 2. 再用 kill pid 殺死進程:

		kill 933		默認是選項是 -15,代表 SIGTERM,系統會發送一個SIGTERM的信號給對應的程序。當程序接收到該signal後,將會發生以下情況之一:程序立刻停止;當程序釋放相應資源後再停止;程序可能仍然繼續運行。
		
		kill -9 933			-9 代表 SIGKILL, 強制殺死進程
		
		kill all 程序名		可以通過程序名字直接殺死所有相關進程

設定進程優先級**:

​ Linux操作系統中,進程之間是競爭資源(CPU和內存)的關係,競爭的優劣度(謙讓度)是通過一個數值來實現的,-20——19,其中,負值或者0表示最高優先級。而nice可以爲進程指定謙讓度的值,所以進程的優先級就是:父進程的優先級的值+所指定的謙讓度的值相加。

		nice -n 謙讓度的增量值 程序		運行指定的程序,併爲它指定謙讓度增量
		
		renice 謙讓度 pid 				通過進程 pid 來改變謙讓度,進而達到更改進程優先級的目的

其餘常見的:

		ls  	列出目錄下的文件 

		sudo 	以系統管理者執行 

		chmod	改變一個或多個文件的權限(存取模式)

2. 講一下C++中const和define的區別

從編譯處理的階段、類型和安全檢查、存儲方式三個方面簡單介紹

3. C++中多態有幾種?

重載和重寫:

  1. 重載主要是指函數重載,屬於靜態多態,在編譯的時候就已經確定;
  2. 重寫是指虛函數機制實現的動態多態,在運行期間動態綁定:
    對於含有虛函數的類,在創建父類的對象的時候,會同時創建一個虛表指針,虛表指針會指向虛函數表,虛函數表中存放了各個虛函數的入口地址;在創建子類對象的時候,子類會繼承其父類的虛函數表,當子類重寫虛函數時,會將其繼承的虛函數表中的函數入口地址替換爲重寫的函數地址。使用虛函數,會增加訪問的內存開銷,降低效率。

4. 數據庫索引使用的數據結構是什麼?

B+樹,怎麼個實現方法

5. 數據庫中找出最近被搜索次數最多的十個關鍵詞

實現語句大概是這樣:

	select world from table group by world order by count(*) desc limit 10;

6. join 和 left join的區別

主要就是內連接和外連接的區別:

  1. 內連接不區分主副表,只查找兩張表匹配上的記錄。
  2. 外連接分爲主表和副表,left join 左邊的是主表,右邊的是副表,主要查詢主表的數據,當副表中的數據沒有和主表中的數據匹配上時,副表會自動模擬出 NULL 與之匹配。

7. 說說數據庫的兩種存儲引擎

MyISAM 和 InnoDB:

  1. MyISAM 是 mysql 常用的存儲引擎之一,但這種引擎不是默認的。MyISAM採用三個文件組織一張表:xxx.frm(存儲格式的文件)、xxx.MYD(存儲表中數據的文件)、xxx.MYI(存儲表中索引的文件)。
    優點:可被壓縮,節省存儲空間。並且可以轉換爲只讀表,提高檢索效率。
    缺點:不支持事務。
  2. InnoDB 表的結構存儲在 xxx.frm 文件中,數據存儲在 tablespace 這樣的表空間中(邏輯概念),無法被壓縮,無法轉換成只讀。
    優點:支持事務、行級鎖、外鍵等,數據的安全可以得到保障;在MySQL數據庫崩潰之後提供自動恢復機制;支持級聯刪除和級聯更新。
    缺點:無法被壓縮,無法轉換成只讀。

8. C++的STL使用過哪幾種

  1. 序列式容器:
    vector、deque(包含queue和stack)、list(單向和雙向)、array
  2. 關聯式容器:
    底層紅黑樹實現:set、map、multiset、multimap
    底層哈希實現:unordered_set、unordered_multiset、unordered_map、unordered_multimap

9. 講一下你瞭解的HTTP協議

從HTTP協議的作用、特點以及請求/響應的過程等方面簡單介紹。

10. TCP 和 UDP 的區別

主要從交付的可靠性、有無連接、適用場景區分,另外在首部開銷、報文長度、服務對象等方面還有些小的區別

11. select() 和 epoll()的區別

沒了解過網絡編程。。。

12. 還是剛纔查詢關鍵詞的場景,你自己用C++實現的話怎麼實現?

使用 map 存儲, key是關鍵詞, value是關鍵詞出現的次數, 然後自己實現一個排序函數或者仿函數,根據 map 的 second 大小排序,複雜度是 nlognn log n

有沒有複雜度更低的方法?

使用哈希表 + 最小堆,複雜度是 nlogkn log k ,想不出來 O(n) 的方法了。。。

13. 最後介紹實驗室的項目

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