面試形式
視頻面試,時長30分鐘
內容
(1)自我介紹
(2)項目說明介紹
(3)操作系統原理(死鎖/線程和進程)
(4)數據庫
PS:(2)(3)根本沒有接觸過,所以當面試官問到時,就直接pass了
(5)介紹一下C++的引用和指針區別
- 引⽤只能在定義時初始化⼀次,之後不能改變指向其它變量(從⼀⽽終);指
針變量的值可變。引用可以認爲是一種特殊的指針。 - 引⽤必須指向有效的變量,指針可以爲空。
- sizeof指針對象和引⽤對象的意義不⼀樣。 sizeof引⽤得到的是所指向的變量的
⼤⼩,⽽sizeof指針是對象地址的⼤⼩。 - 指針和引⽤⾃增(++)⾃減(–)意義不⼀樣。
- 相對⽽⾔,引⽤⽐指針更安全。
- 回答還可包括:常引用/引用作爲函數參數時/引用作爲返回參數時等內容。
(6)C++是類型安全的嗎?
總結:
- 類型安全是指同一段內存在不同的地方,會被強制要求使用相同的辦法來解釋(內存中的數據是用類型來解釋的)。
- 類型安全很大程度上可以等價於內存安全,類型安全的代碼不會試圖訪問自己沒被授權的內存區域。
- Java語言是類型安全的,除非強制類型轉換。
- C++不是類型安全的,因爲同一段內存可以用不同的數據類型來解釋,比如1用int來解釋就是1,用boolean來解釋就是true
(7)C++的存儲方式有幾種
內存的三種分配方式:
- 從靜態存儲區分配:此時的內存在程序編譯的時候已經分配好,並且在程序的整個運行期間都存在。全局變量,static變量等在此存儲。
- 在棧區分配:相關代碼執行時創建,執行結束時被自動釋放。局部變量在此存儲。棧內存分配運算內置於處理器的指令集中,效率高,但容量有限。
- 在堆區分配:動態分配內存。用new/malloc時開闢,delete/free時釋放。生存期由用戶指定,靈活。但有內存泄露等問題。
(8)編程題:將m元錢,隨機放入n個紅包中
#include <iostream>
#include <vector>
#include <ctime>
int main()
{
double dm;
int in;
vector<double> vdres;
cin>>dm>>in;
for(int i =0; i < in-1; i++)
{
double dtmp = rand()%10;
double dtmp1 = (double)dtmp/10*dm;
res.push_back(dtmp1);
dm -= dtmp1;
}
res.push_back(dm);
for(int i = 0; i < in ; i++)
cout<<vdres[o]<<endl;
return 0;
}
該算法的問題在於先搶的人有大的概率會拿到較多的錢
(9)簡答題:如果給你250ml的農夫山泉,你該如何對它進行測試