1 內部名稱
C和C++語言實現都會按照特定的規則把用戶(程序員)定義的標識符(各種函數,變量,類型,以及命名空間)轉換爲相應的內部名稱。當然,這些內部名稱的命名方法還與用戶爲它們指定的連接規範有關,比如使用C的連接規範,則main的內部名稱就是_main。
2 C爲什麼不支持重載,C++支持重載
部分採摘至《高質量c++/c語言》
其實這個原因,還是要從C和C++的命名規則來看
在C語言中,採用了極其簡單的函數名稱規則:僅在所有函數名的前面添加前綴“_”,從唯一識別函數的作用上,實際上和不添加前綴沒什麼區別。
但是C++則採用了不同的重命名規則(Name-Mangling)。同名函數可以根據函數的參數類型,參數個數,參數順序等等生成不同的內部函數名,從而重載函數。例如在在他們的前面分別添加所屬各級作用域的名稱(class,namespace等),及重載函數經過編碼的參數信息(參數類型,個數),作爲前綴或者後綴,產生全局名字Sample_1_foo@pch@1、Sample_1_foo@int@1、Sample_2_foo@pch@1、Sample_2_foo@int@1。這樣就可以區分了。另外,標準C++的不同實現會採用不同的Name_Mangling。
c++內存佈局
智能指針的用途(以及內部的大概實現)
仿函數
C++特點是什麼,多態實現機制?(面試問過)多態作用?兩個必要條件?
面向對象的三個基本特徵,並簡單敘述之?
爲什麼要把基類的析構函數定義爲虛函數
多態的用處(泛型)
C++虛函數是如何實現的?
進程間通信的方式
進程內存空間分佈情況
線程間同步的幾種方法
各種Linux下的命令(查看磁盤使用率,TCP抓包等等)
虛擬地址空間有多大
面試題
1-100中少一個數,快速缺的找出這個數
1-100中缺少兩個數,找出這兩個數
TCP半關閉
http有幾種方法(常用的 GET,POST,PUT…)
TCP爲什麼是四次揮手
設計模式