秋招面試(三)Bigo一面

今下午媳婦參加Bigo面試,熱乎乎的涼經分享一下。

1、項目

實習基本問題不大。

2、求類大小,如下數據結構,問a、b的值分別是多少?

class Test1
{
    int a;
    int *b;
}
Test1 test1;
int a = sizeof(test);

class Test2{}
Test2 test2;
int b = sizeof(test2);

a的大小爲8:一個int(4kb)+一個指針(4kb)

b的大小爲1:C++編譯器不允許對象爲零長度。試想一個長度爲0的對象在內存中怎麼存放?怎麼獲取它的地址?爲了避免這種情況,C++強制給這種類插入一個缺省成員,長度爲1。如果有自定義的變量,變量將取代這個缺省成員。

3、int a[10],求sizeof(a);

   數組大小:40kb;

4、若將a作爲參數傳入函數,其大小爲多少?

數組作爲參數傳入函數,將轉換爲指針,則其大小爲4kb;

5、const修飾符放在函數前與函數後有什麼區別?

當const在函數名前面的時候修飾的是函數返回值,在函數名後面表示是常成員函數,該函數不能修改對象內的任何成員,只能發生讀操作,不能發生寫操作。

6、函數多態

函數多態提高代碼擴展性,C++裏主要有靜態多態與動態多態兩種。

靜態多態:通過函數重載實現。

動態多態:通過虛函數實現。

7、手撕代碼。二叉樹,求任意兩個元素的公共父節點。

TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q){
    if(!root||root==p||root==q)
        return root;
    TreeNode left = lowestCommonAncestor(root.left, p, q);
    TreeNode right = lowestCommonAncestor(root.right, p, q);
    if(left&&right)
        return root;
    if(!left)
        return right;
    if(!right)
        return left;
}

 

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