聽說的一道google面試題

才智咖 人氣:1.24W


1)堆與棧的區別?
2)如何判斷棧分配記憶體的方向(向上/向下)
3)如何最快的判斷棧的容量(不要用遞迴和迴圈)

聽說的一道google面試題

---------------------------------------------------------------------

2)用函式,返回函式內的區域性變數地址,和發起呼叫的函式內區域性變數地址比較
3)這個只想出這一個方法,windows下,讀取可執行檔案格式裡有“保留堆疊大小”的屬性,應該可以判斷棧的容量

--------------------------------------------------------

樓主可有更好的答案?

--------------------------------------------------------

1、棧,先進後出,這是主要區別。棧用於函式內臨時變數,堆用於動態分配記憶體。
2、用函式,同上
3、等待答案。


--------------------------------------------------------

1, 堆是堆,棧是棧。如果有人很認真的問你是否會區別土豆與黃瓜,你是什麼感覺?
2,現在的機箱很多都支援橫放與豎放的,這個不太好說吧
3,如果說明書沒有標明相應引數的話,一般測試容量最好的工具是量杯。


--------------------------------------------------------

1.堆是扔個東西進去或者取出來就要重排序放好的,棧是隻能扔在上面從上面取的~
個東西進去再看記憶體新地址和原地址(前提是能直接訪問記憶體...,不同的程式設計語言有規定各自標準庫實現棧的方向,這個要看程式語言的`文件)
3.定義棧的時候應該要定義棧的當前length和每單位大小的,乘下

--------------------------------------------------------

1. 棧是資料的存取方法,先進後出;堆是資料的排列方法,用2叉樹定義就是,子節點都必須大於(或都小於)父節點。堆和棧說的是兩碼事。
2. 函式,同上的上
3. 那要看用什麼儲存方式了,如果用陣列(或其他靜態的連續的儲存方式)儲存資料,最大容量你定義多少就是多少,要得到已用的容量,用尾地址減首地址在加1就是了;用連結串列(或其他動態的非連續的儲存方式),最大容量就是就是程式自己定