原创 計算機網絡面試題(一)

1:建立TCP的各個系統調用 上圖給出了TCP服務器和客戶端所需要的系統調用 來自IBM 上圖中從上到下各層分別爲TCP應用->套接字層->協議層->接口層->物理層 其中套接字層負責接收任何TCP的系統調用,驗證上層傳遞參數的正確

原创 最長的可整合子數組的長度

#include <iostream> #include <vector> #include <algorithm> #include <unordered_set> #include <set> #include <climits> #

原创 C++面試題(四)

31:內存對齊的方式和爲什麼要內存對齊 內存對齊的規則: 1.結構(struct)(或聯合(union))的數據成員,第一個數據成員放在offset爲0的地方,以後每個數據成員存儲的起始位置要從該成員大小或者成員的子成員大小(只要該成員

原创 C++面試題(三)

21:C++虛函數相關問題 虛函數表指針: 佔四個內存單元, 指向一個虛函數表的起始位置,這個虛函數表存放着該類的所有虛函數指針,通過該表的偏移即可找到函數的入口地址,即要使用的虛函數。 虛函數實現原理 當實例化一個對象時,如果該類

原创 在行列都排好序的矩陣中找數

#include <iostream> #include <vector> using namespace std; bool isContanin(vector<vector<int> >& matrix, int k) { i

原创 找到無序數組中最小的k個數

#include <iostream> #include <vector> #include <algorithm> using namespace std; void swap(vector<int>& arr, int i, int

原创 之字形打印矩陣

#include <iostream> #include <vector> using namespace std; void printleve(vector<vector<int> > &m, int tr, int tc, int

原创 在數組中找到出現次數大於N/K的數

#include <iostream> #include <vector> #include <map> #include <list> using namespace std; void printHalf(vector<int>& a

原创 在其它數都出現偶次的數組中找到出現奇數次的數組

#include <iostream> #include <vector> using namespace std; void printOdd(vector<int> & arr) { int eO = 0; for(i

原创 使用位運算實現加減乘除(不準用+-*/操作符)

#include <iostream> #include <exception> #include <climits> using namespace std; int add(int a, int b) { int sum =

原创 需要排序的最短子數組的長度

#include <iostream> #include <vector> #include <cmath> using namespace std; int getMinLength(vector<int>& arr) { if

原创 轉圈打印矩陣

#include <iostream> #include <vector> using namespace std; void printEdge(vector<vector<int> > & m, int tR, int tC, int

原创 將正方形矩陣順時針旋轉90度

#include <iostream> #include <vector> using namespace std; void rotateEdge(vector<vector<int> > &m, int tr, int tc, int

原创 最小包含子串的長度

#include <iostream> #include <string> #include <climits> #include <cmath> #include <vector> using namespace std; int mi

原创 迴文最小分割數

#include <iostream> #include <string> #include <vector> #include <climits> using namespace std; int minCut(string str)