今下午媳婦參加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;
}