經典 C 語言趣味面試題 16 道:考點解析與避坑指南
題目來源 改編自 Steven Kobes C Test,涵蓋類型轉換、指針算術、運算符優先級、遞歸、可變參數、位運算技巧等核心考點。 第 1 題:set
C++ 中字面量 0 是八進制還是十進制?標準條文權威解讀
結論先行 在 C/C++ 中,字面量 0 屬於八進制常量(octal literal)。這由語言標準語法規則直接決定。 標準條文依據 (C++17 §5.13
C++ 抽象類與接口的本質區別:語義、設計意圖與工程實踐
核心定義對比 維度抽象類接口 語法形式含純虛函數的類(可含數據成員、構造函數、非虛函數)純抽象類:僅含純虛函數,無數據成員,無構造函數(C++ 無 inter
紅黑樹完整指南:性質、旋轉、插入刪除算法與 C 語言實作
紅黑樹五大定義性質 紅黑樹是一種自平衡二元搜尋樹,每個節點額外儲存一個顏色屬性(紅/黑),滿足以下條件: 節點非紅即黑 根節點為黑 所有葉節點(NIL/哨兵)
從零手寫 strcpy:C 字串複製函數完整實作與記憶體陷阱解析
標準庫 strcpy 行為回顧 strcpy(char *dest, const char *src) 將來源字串(含結束符 \0)複製至目的地址。關鍵特性:
Linux 核心執行緒優先權設定完整指南:調度策略與系統呼叫實作
核心執行緒與行程調度的關係 在 Linux 核心中,核心級執行緒與行程在調度層面本質上是相同的,這點與 POSIX 執行緒(pthread)有顯著差異。因此,核
Johnson 算法求稀疏圖全源最短路徑:C 語言完整實現與《算法導論》圖 25-1 驗證
算法原理回顧 Johnson 算法結合 Bellman-Ford 與 Dijkstra,解決帶負權邊但無負權環的稀疏圖全源最短路徑問題,時間複雜度 O(V² l
C 語言數字與字符串轉換完全指南:標準庫函數與實戰技巧
標準轉換函數速查表 方向函數原型適用類型備註 整數 → 字符串itoachar* itoa(int value, char* str, int radix)i
C/C++ 指標與取址操作完全指南:從基礎語法到記憶體模型圖解
核心概念速覽 符號名稱含義 &取址運算符獲取變量在記憶體中的位址 *解引用/間接訪問獲取指標指向位址處的值 T*指標類型指向類型 T 對象的指標
輾轉相除法(歐幾里得算法)求最大公約數:遞歸與迭代雙實現詳解
算法原理 輾轉相除法(Euclidean Algorithm)求兩自然數 m, n 的最大公約數 (GCD): 確保 = n,計算餘數 r = m % n(0
C/C++ static 關鍵字三大作用全解析:隱藏、持久、零初始化
static 的三重語義 static 是 C/C++ 中最易誤解的關鍵字之一,其核心作用可歸納為三點: 隱藏:限制符號可見範圍 持久:延長變量生命週期至程序
malloc/free 核心實現原理深度剖析:從 K&R 經典代碼到現代記憶體分配器設計
前言:為什麼要手寫 malloc? 許多大廠面試要求「手寫簡易 malloc」,目的不在造輪子,而在考察對記憶體管理核心思想的掌握:空閒塊管理、分割合併、對齊、
深度解析:為什麼多線程讀寫同一個 shared_ptr 必須加鎖
共識與誤區 shared_ptr 的引用計數是線程安全且無鎖的(原子操作),但對象本身的讀寫不是。許多開發者誤以為「引用計數安全」即「全方位安全」,實則不然。
Linux 下讓自編譯程式以 Root 權限免 sudo 執行的完整方案
問題背景 編寫使用原始套接字(Raw Socket)的程式(如自製 ping)時,必須擁有 root 權限才能建立 socket。系統自帶的 ping 卻可在普
C++ 記憶體管理深度解析:堆與棧的核心差異與應用選擇
程序記憶體佈局六大區域 理解堆與棧的差異,首先需要掌握程序在記憶體中的分佈: 棧區:編譯器自動分配釋放,存放函數參數、局部變量,函數結束自動回收。 堆區:程序
基於條件變量的消息隊列實現詳解:雙緩衝機制與線程同步優化
條件變量:線程同步的高效機制 條件變量是多線程編程中實現線程間同步的另一種核心機制。它為多線程提供了一個「會合場所」——當條件變量與互斥鎖配合使用時,允許線程以