C C 常見的面試筆試題

2021-10-17 15:41:10 字數 1678 閱讀 6143

1、程序的記憶體空間的劃分為那些段,各儲存什麼資料?

劃分的段

儲存的資料

test **段

儲存二進位制指令、常量

data資料段

儲存初始化的全域性變數和被static修飾的區域性變數

bss 靜態資料段

儲存未初始化的全域性變數和被static修飾的區域性變數

stack 棧

儲存區域性變數、塊變數,由作業系統管理,小

heap 堆

由程式設計師手動管理,大

2、全面敘述關鍵字static的作用

改變儲存位置:

改變區域性變數的儲存位置,由stack變成data或bss

延長生命週期:

延長區域性變數的生命週期

限制作用範圍:

限制全域性、函式只能在本檔案中使用

可以防止全域性變數、函式命名衝突,或者也可以防止別人呼叫

3、關鍵字const的作用是什麼

」保護「變數不被顯式的修改

初始化後的全域性變數、靜態區域性變數被const修飾後,位置會變成text段,變成常量

因此強行修改會產生段錯誤

4、區域性變數和全域性變數的區別

區域性變數:

是定義在函式內的變數

儲存在stack段

只能在本函式內使用

函式呼叫時開始直到函式結束

全域性變數:

定義在函式外的變數

儲存在data段或bss段

程式的任何位置都能使用

main函式執行前直到程式結束才釋放

5、堆記憶體與棧記憶體的區別

定義 大小 使用 安全 優缺點

6、堆記憶體越界的後果

超過33頁產生段錯誤

破壞malloc的維護資訊 ,再次使用malloc/free時會出錯

產生髒資料

7、什麼是記憶體洩漏,如何定位記憶體洩漏

記憶體洩漏:

記憶體無法再使用,也無法釋放或未釋放,再次使用時只能重新申請,然後重複以上過程,日積月累最後導致系統中可用的記憶體越來越少,然後系統越來越慢甚至崩潰

如何避免:

誰申請就誰釋放,應該知道誰釋放誰

如何定位:

1、檢視記憶體使用情況

2、分析**,使用**分析工具檢查malloc的使用情況

3、包裝malloc、free,申請、釋放資訊記錄到日誌中

8、什麼是記憶體碎片,如何減少記憶體碎片

記憶體碎片:

已經釋放但無法再繼續使用的記憶體,是由申請釋放的時間不協調導致的,而且無法避免,只能儘量減少

如何減少:

1、盡量使用棧記憶體

2、不要頻繁的申請和釋放記憶體

3、盡量申請大塊的記憶體自己管理

未完待續…

python常見的面試筆試題

a 12,13,3,56,35,33 for i in range len a for j in range len a i 1 if a j a j 1 a j a j 1 a j 1 a j for i in range 1,10 for j in range 1,i 1 print s s s...

mybatis常見面試 筆試題

1 和 的區別是什麼?是properties檔案中的變數佔位符 它可以用於標籤屬性值和sql內部,屬於靜態文字替換 比如 會被靜態替換為com.mysql.jdbc.driver。是sql的引數佔位符 mybatis會將sql中的 替換為?號 在sql執行前會使用preparedstatement的...

面試筆試題

1 昨天參加一公司筆試,給幾道演算法題整懵了,其實也不難,但好久沒有碰演算法,只是有思路,要讓我在這麼短的時間內寫出程式來還是不行。2 這裡將其中一道稍微複雜一點的演算法題寫下來,以此小結。3 4 題目描述 5 將n個雞蛋放入到m個籃子中去 n m 保證每個籃子中至少乙個雞蛋,然後指定乙個數x,要求...