wordpress簡介怎么改東莞seo收費
1、tcp的重傳機制有哪幾種?具體描述一下
最基本的超時重傳
超過時間就會重傳
三個重復(fù)ACK 快速重傳
減少等待超時、
接收方可以發(fā)送選擇性確認
不用重傳整段
亂序到達 可以通知哪些丟失 重復(fù)數(shù)據(jù)重傳
2、override和final?
override可寫可不寫
寫出來就是顯式聲明 虛函數(shù) 重寫基類了 更加清晰
void doSomething(int x) override { // 使用 override 關(guān)鍵字// 派生類中的實現(xiàn)}
final是最后一代的意思 沒辦法繼續(xù)繼承了 無法被重寫了的意思
3、epoll的邊緣觸發(fā)和水平觸發(fā)?
水平是默認的-這個沒有疑問,只要fd有沒有處理的事件,就不斷通知應(yīng)用程序。
假設(shè)一個套接字上有數(shù)據(jù)可讀,水平觸發(fā)模式下,只要該套接字上還有數(shù)據(jù)可讀,每次調(diào)用 epoll_wait 都會返回該事件,直到數(shù)據(jù)被完全讀取。逐步處理數(shù)據(jù)
的場景。
邊緣觸發(fā):高效愛的,減少系統(tǒng)調(diào)用次數(shù),僅僅狀態(tài)變化才通知一次。
從無到有才能通知一次。適用于事件發(fā)生立即處理大量的數(shù)據(jù)
。減少重復(fù)通知。必須干完才能給你新派活。
4、tcp的滑動窗口?
滑動窗口為了流量控制
發(fā)送方和接收方之間動態(tài)調(diào)整發(fā)送和接受速度 防止網(wǎng)絡(luò)擁塞和丟包
先商定初始窗口大小----不超過窗口范圍發(fā)送數(shù)據(jù)包-----ack返回能接受的大小----滑動到新的窗口發(fā)送新的數(shù)據(jù)。
5、stl的常用容器及其底層實現(xiàn)數(shù)據(jù)結(jié)構(gòu)?
vector:動態(tài)數(shù)組 增長是兩倍增長
deque:雙端隊列(鏈表)
list:雙向鏈表
queue:一般用deque 也可以list
set:紅黑樹 自平衡二叉查找樹 set不重復(fù)
map:紅黑樹 鍵值對
unordered_set 和 unordered_multiset:哈希表 無序 平均o1 最壞o1
6、static的用法和作用?
函數(shù)內(nèi)靜態(tài)變量:只初始化一次 它在函數(shù)調(diào)用結(jié)束后依然存在,并在下次調(diào)用時保留上次的值。
void counter() {static int count = 0; // 只初始化一次count++;std::cout << "Count: " << count << std::endl;
}int main() {counter(); // 輸出: Count: 1counter(); // 輸出: Count: 2counter(); // 輸出: Count: 3return 0;
}
上面的例子可以看出來 每次調(diào)用counter函數(shù) 都不會把他置為0 而是保持上一次不變了 才能加
全局靜態(tài)變量-全局靜態(tài)函數(shù):作用域限制在自己的文件 不能被其他文件訪問 防止沖突 (命名)
類中的靜態(tài)變量 靜態(tài)成員函數(shù):這就是歸為類 而不是某個實例的屬性了 不實例化 Example 類的情況下直接通過類名調(diào)用。
7、智能指針?
這個不寫了 感覺是必考
8、虛函數(shù)、虛表指針?
有虛函數(shù)就有虛表
虛表里面是虛函數(shù)地址
虛表指針指向虛表
通過虛表指針找到虛表 找到對應(yīng)的函數(shù)指針 再調(diào)用函數(shù)
每個 Base 對象有一個 vptr,指向 Base_vtable;
每個 Derived 對象有一個 vptr,指向 Derived_vtable。
調(diào)用虛函數(shù)時,通過對象的 vptr 指針確定實際調(diào)用的函數(shù)。
class Base {
public:virtual void func1() { /* ... */ }virtual void func2() { /* ... */ }
};class Derived : public Base {
public:void func1() override { /* ... */ } // 重寫基類的 func1void func3() { /* ... */ } // 派生類獨有的函數(shù)
};對于 Base 類,它的虛表可能看起來像這樣:Base_vtable:
+---------------------+
| Base::func1 address |
+---------------------+
| Base::func2 address |
+---------------------+而對于 Derived 類,它的虛表可能看起來像這樣:Derived_vtable:
+---------------------+
| Derived::func1 address | // 重寫后的函數(shù)地址
+-----------------------+
| Base::func2 address | // 沒有重寫,指向基類的函數(shù)地址
+-----------------------+
9、內(nèi)存碎片?
不能有效利用的零散空間 影響系統(tǒng)性能和使用效率
有兩種:外部碎片 內(nèi)部碎片
外部碎片指的是由于內(nèi)存塊的分配和釋放操作導致可用的空閑內(nèi)存被分割成許多小塊,這些小塊分布在整個內(nèi)存空間中,而每個小塊都不足以滿足新的內(nèi)存分配請求。即便系統(tǒng)總的空閑內(nèi)存足夠,但因為它們不連續(xù),導致無法分配給需要較大連續(xù)空間的請求。
內(nèi)部碎片指的是分配的內(nèi)存塊內(nèi)部未被使用的部分。由于內(nèi)存分配器一般會按照一定的對齊要求(如8字節(jié)或16字節(jié)對齊)來分配內(nèi)存,所以分配的內(nèi)存塊可能會比實際需要的稍大,導致一部分內(nèi)存未被使用。
10、索引的優(yōu)缺點?
優(yōu)點:加速檢索 提高效率 可以條件查詢
缺點:增加空間 降低寫入性能 還要維護 有可能失效
11、索引可以用哪些數(shù)據(jù)結(jié)構(gòu)實現(xiàn)?
B樹 多路搜索自平衡搜索樹
B+樹 變種 葉子節(jié)點怎么怎么樣
哈希表
跳表(多層鏈表 查找變成logn)
前綴樹trie 就是用于前綴匹配
236. 二叉樹的最近公共祖先
給定一個二叉樹, 找到該樹中兩個指定節(jié)點的最近公共祖先。
百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個節(jié)點 p、q,最近公共祖先表示為一個節(jié)點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節(jié)點也可以是它自己的祖先)?!?/p>
class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root == nullptr || root == p || root == q) return root;TreeNode *left = lowestCommonAncestor(root->left, p, q);TreeNode *right = lowestCommonAncestor(root->right, p, q);if(left == nullptr) return right;if(right == nullptr) return left;return root;}
};