字節跳動測試工程師面試總結2019.7.17

字節跳動測試工程師面試總結2019.7.17

面試形式

視頻面試,時長30分鐘

內容

(1)自我介紹
(2)項目說明介紹
(3)操作系統原理(死鎖/線程和進程)
(4)數據庫
PS:(2)(3)根本沒有接觸過,所以當面試官問到時,就直接pass了

(5)介紹一下C++的引用和指針區別

  1. 引⽤只能在定義時初始化⼀次,之後不能改變指向其它變量(從⼀⽽終);指
    針變量的值可變。引用可以認爲是一種特殊的指針。
  2. 引⽤必須指向有效的變量,指針可以爲空。
  3. sizeof指針對象和引⽤對象的意義不⼀樣。 sizeof引⽤得到的是所指向的變量的
    ⼤⼩,⽽sizeof指針是對象地址的⼤⼩。
  4. 指針和引⽤⾃增(++)⾃減(–)意義不⼀樣。
  5. 相對⽽⾔,引⽤⽐指針更安全。
  6. 回答還可包括:常引用/引用作爲函數參數時/引用作爲返回參數時等內容。

(6)C++是類型安全的嗎?
總結:

  1. 類型安全是指同一段內存在不同的地方,會被強制要求使用相同的辦法來解釋(內存中的數據是用類型來解釋的)。
  2. 類型安全很大程度上可以等價於內存安全,類型安全的代碼不會試圖訪問自己沒被授權的內存區域。
  3. Java語言是類型安全的,除非強制類型轉換。
  4. C++不是類型安全的,因爲同一段內存可以用不同的數據類型來解釋,比如1用int來解釋就是1,用boolean來解釋就是true

(7)C++的存儲方式有幾種
內存的三種分配方式:

  1. 從靜態存儲區分配:此時的內存在程序編譯的時候已經分配好,並且在程序的整個運行期間都存在。全局變量,static變量等在此存儲。
  2. 在棧區分配:相關代碼執行時創建,執行結束時被自動釋放。局部變量在此存儲。棧內存分配運算內置於處理器的指令集中,效率高,但容量有限。
  3. 在堆區分配:動態分配內存。用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的農夫山泉,你該如何對它進行測試

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