原创 操作系統常問的面試題目

操作系統常問的面試題目 linux進程fork複製了父進程的哪些資源 fork採用了寫時複製技術,而寫時複製的核心是:只有進程空間的各段的內容要發生變化時,纔會將父進程的內容複製一份給子進程。故剛開始只複製了父進程的頁表以及給子進程創

原创 深入理解tcp網絡編程中的send和recv

深入理解tcp網絡編程中的send和recv 每個TCP socket在內核中都有一個發送緩衝區和一個接收緩衝區,TCP的全雙工的工作模式以及TCP的滑動窗口便是依賴於這兩個獨立的buffer以及此buffer的填充狀態。 接收緩衝區把數

原创 網絡相關的面試題

網絡相關的面試題 服務器端不調用accept會發生什麼 不調用accept時,也能建立連接,即三次握手完成。但不能進行API的控制,即不能進行繼續通訊。以及建立好連接的隊列大大小爲:backlog。從而在Unix系統服務器中,若客戶端

原创 給出一個表達式,求取表達式的值

給出一個表達式,求取表達式的值 #include <iostream> #include <string> #include <vector> #include <sstream> #include <stack> using name

原创 避免殭屍進程的方法

避免殭屍進程的方法 何爲殭屍進程 如果父進程先退出,子進程自動被 init 進程收養,不會產生殭屍進程。 如果子進程先退出。父進程 wait() 處理(即父進程調用wait/waitpid方法來處理),則殭屍進程會被父進程清理;如果父進程

原创 fork,vfork,clone函數的區別及其聯繫

fork,vfork,clone函數的區別及其聯繫 fork  fork函數用於創建子進程,典型的調用一次,返回兩次的函數,其中返回子進程的PID和0,其中調用進程返回了子進程的PID,而子進程則返回了0。 當發出fork()系統調用時,

原创 new/delete、malloc/free以及new[]/delete[]的區別和聯繫

new/delete、malloc/free以及new[]/delete[]的區別和聯繫 malloc函數 全稱爲memory allocation,原型爲extern void *malloc(unsigned int num_by

原创 常見的算法題目

常見的算法題目 0-1揹包問題: 給定 n 種物品和一個容量爲 C 的揹包,物品 i 的重量是 ,其價值爲  。問:應該如何選擇裝入揹包的物品,使得裝入揹包中的物品的總價值最大? 分析: 思路1:dp[i][j]表示:在面對第 i 件物品

原创 IP地址相關細節

IP地址相關細節 在邏輯上標記一臺唯一的電腦,用於更好的查找此電腦的位置。 IPV4 ipv4的分類:4個字節(點分10進製表示) A類地址:0開頭,接着7位網絡號(共1個字節),後面24位主機號 B類地址:10開頭,接着14位網絡號

原创 C++資源管理技術之RAII

C++資源管理技術 RAII 是“Resource Acquisition Is Initialization”的首字母縮寫。也稱爲“資源獲取就是初始化”,是c++等編程語言常用的管理資源、避免內存泄露的方法。它保證在任何情況下,使用對象

原创 C++中臨時對象即返回值優化

C++中臨時對象即返回值優化

原创 構造函數、複製構造函數、賦值運算符的調用

構造函數、複製構造函數、賦值運算符的調用 結合下面的例子來討論三者的調用順序 #include <iostream> #include <vector> using namespace std; class Foo { public:

原创 TCP/IP網絡編程深入認識

TCP/IP網絡編程深入認識 TCP網絡編程中connect()、listen()和accept()三者之間的關係 基於 TCP 的網絡編程開發分爲服務器端和客戶端兩部分,常見的核心步驟和流程如下: connect函數:對於客戶端的

原创 C/C++常見面試題目

C/C++常見面試題目 與編譯過程相關的問題 爲什麼在C++裏面,一個類的成員函數不能既是 template 又是 virtual 的。 因爲C++的編譯與鏈接模型是"分離"的。一個C/C++程序就可以被分開編譯,然後用一個linke

原创 C/C++編譯過程

C/C++編譯過程 編譯過程主要分4個過程:編譯預處理;編譯、優化階段、彙編階段、鏈接程序。 編譯預處理 讀取c/cpp源程序,對其中的僞指令(以# 開頭的指令)和特殊符號進行處理。 1. 宏定義指令 如#define Name To