原创 面試算法題. 迭代方法求二叉樹的高度

#include <iostream> #include <stack> using namespace std; struct TreeNode{ TreeNode(int v) : val(v), left(nu

原创 面試算法題. 二叉樹前、中、後序遍歷的迭代版本. 簡單複習

// 1. 先序遍歷 void FirstSearch(TreeNode* root) { if (nullptr == root) return; sta

原创 C++. 引用. 底層實現原理. 調試理解

 test code. #include <iostream> #include <string> using namespace std; int main(int argc, char* argv[]) { int ref_

原创 五種常見的流媒體協議(簡單歸類)

流媒體(streaming media)是指將一連串數據壓縮後,經過網絡分段發送,即時傳輸以供觀看音視頻的一種技術。 通過使用 streaming media 技術,用戶無需將文件下載到本地即可播放。由於媒體是以連續的數據流發送的,因此在

原创 C++面試題. 小米社招

一面: C++面向對象的三種特性?(每條詳細說說) C++繼承和組合?你在實際項目中是怎麼使用的?什麼情況下使用繼承?什麼情況下使用組合? C++構造函數可以是虛函數嗎?爲什麼? C++析構函數可以是虛函數嗎?爲什麼要將析構函數設置爲虛函

原创 P2P流媒體開源項目彙總與簡述

1. PeerCast項目 2002年成立,最早的開源P2P流媒體項目。PeerCast把節點按樹結構組織起來,每個頻道都是一顆樹,直播源是根節點,父節點只給子節點提供數據。節點離根節點越遠,傳輸時延遲就越大,所以數的深度應該儘可能短,但

原创 面試算法題. 單向鏈表奇偶節點拆分與排序. 鏈表的基本操作

思路: 將奇偶節點拆分 降序鏈表反轉 兩個有序鏈表合併  // 鏈表節點結構 struct ListNode { ListNode(int a = 0) : val(a), next(nullptr) { } int v

原创 面試算法題. 單鏈表反轉的遞歸版本

// 鏈表節點結構 struct ListNode { ListNode(int a = 0) : val(a), next(nullptr) { } int val; ListNode* next; }; //

原创 leetcode刷題. 面試題55 - II. 平衡二叉樹

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。 bool IsBalanced(TreeNode *root, int &depth) {

原创 C++. 使用模板偏特化的技巧來判斷兩個類型之間的關係. 面試題

1. 判斷兩個類型是否相同 template<class T1, class T2> class my_is_same { public: operator bool() { return false;

原创 C++. 變量的存儲說明符和cv-限定符. 簡單複習

在C++中創建變量時,前面有時會有一些修飾符,這裏總結一下。 大體分爲兩個類別:存儲說明符和cv-限定符。 存儲說明符 存儲說明符有下面這些: auto register static extern mutable auto修飾符的變量時

原创 C++. C語言中可變參數函數實現原理

C函數調用的棧結構 可變參數函數的實現與函數調用的棧結構密切相關,正常情況下C的函數參數入棧規則爲__stdcall, 它是從右到左的,即函數中的最右邊的參數最先入棧。例如,對於函數: void fun(int a, int b, i

原创 C++. POD數據類型

1、   所有標量類型(基本類型和指針類型)、POD結構類型、POD聯合類型、以及這幾種類型的數組、const/volatile修飾的版         本都是POD類型。 2、  POD結構/聯合類型:一個聚合體(包括class),它

原创 C++. 理解特種成員函數的生成規則. 很重要的知識點

1. 特種成員函數是指在創建類時C++會自動生成的成員函數:默認構造函數、析構函數、複製操作、移動操作。 2. 移動操作(移動拷貝構造函數和移動賦值運算符)僅當類中未包含用戶顯示聲明的複製操作、移動操作和析構函數時編譯器纔會自動生成。 3

原创 C++. 派生類的複製操作也必須處理它的基類成員的複製

class Copy { public: Copy(){} Copy(int c) : c_(c){} private: int c_; }; class Copytest : public Copy { public: Co