五萬字長文C C++ 面試知識總結(上) | IT人
文章推薦指數: 80 %
C/C++ 面試知識總結這是一篇五萬字的C/C++面試知識點總結,包括答案:這是上篇,下篇今天也推送了,需要的同學記得去看看。
本文花費了博主大量的時間 ...
Togglenavigation
IT人
IT人
五萬字長文CC++面試知識總結(上)
列文發表於
2019-04-24
面試
C++
C/C++面試知識總結
這是一篇五萬字的C/C++面試知識點總結,包括答案:這是上篇,下篇今天也推送了,需要的同學記得去看看。
本文花費了博主大量的時間進行收集、排版:如果你覺得文章對你有幫助,幫忙點贊給博主一點鼓勵~~
目錄
C/C++
STL
資料結構
演算法
Problems
作業系統
計算機網路
網路程式設計
資料庫
設計模式
連結裝載庫
海量資料處理
音視訊
其他
書籍
複習刷題網站
招聘時間崗位
面試題目經驗
C/C++
const
作用
修飾變數,說明該變數不可以被改變;
修飾指標,分為指向常量的指標和指標常量;
常量引用,經常用於形參型別,即避免了拷貝,又避免了函式對值的修改;
修飾成員函式,說明該成員函式內不能修改成員變數。
使用
//類
classA
{
private:
constinta;//常物件成員,只能在初始化列表賦值
public:
//建構函式
A(){};
A(intx):a(x){};//初始化列表
//const可用於對過載函式的區分
intgetValue();//普通成員函式
intgetValue()const;//常成員函式,不得修改類中的任何資料成員的值
};
voidfunction()
{
//物件
Ab;//普通物件,可以呼叫全部成員函式
constAa;//常物件,只能呼叫常成員函式、更新常成員變數
constA*p=&a;//常指標
constA&q=a;//常引用
//指標
chargreeting[]="Hello";
char*p1=greeting;//指標變數,指向字元陣列變數
constchar*p2=greeting;//指標變數,指向字元陣列常量
char*constp3=greeting;//常指標,指向字元陣列變數
constchar*constp4=greeting;//常指標,指向字元陣列常量
}
//函式
voidfunction1(constintVar);//傳遞過來的引數在函式內不可變
voidfunction2(constchar*Var);//引數指標所指內容為常量
voidfunction3(char*constVar);//引數指標為常指標
voidfunction4(constint&Var);//引用引數在函式內為常量
//函式返回值
constintfunction5();//返回一個常數
constint*function6();//返回一個指向常量的指標變數,使用:constint*p=function6();
int*constfunction7();//返回一個指向變數的常指標,使用:int*constp=function7();
複製程式碼static
作用
修飾普通變數,修改變數的儲存區域和生命週期,使變數儲存在靜態區,在main函式執行前就分配了空間,如果有初始值就用初始值初始化它,如果沒有初始值系統用預設值初始化它。
修飾普通函式,表明函式的作用範圍,僅在定義該函式的檔案內才能使用。
在多人開發專案時,為了防止與他人命令函式重名,可以將函式定位為static。
修飾成員變數,修飾成員變數使所有的物件只儲存一個該變數,而且不需要生成物件就可以訪問該成員。
修飾成員函式,修飾成員函式使得不需要生成物件就可以訪問該函式,但是在static函式內不能訪問非靜態成員。
this指標
this 指標是一個隱含於每一個非靜態成員函式中的特殊指標。
它指向正在被該成員函式操作的那個物件。
當對一個物件呼叫成員函式時,編譯程式先將物件的地址賦給 this 指標,然後呼叫成員函式,每次成員函式存取資料成員時,由隱含使用 this 指標。
當一個成員函式被呼叫時,自動向它傳遞一個隱含的引數,該引數是一個指向這個成員函式所在的物件的指標。
this 指標被隱含地宣告為: ClassName *constthis,這意味著不能給this指標賦值;在ClassName類的const成員函式中,this指標的型別為:constClassName* const,這說明不能對 this 指標所指向的這種物件是不可修改的(即不能對這種物件的資料成員進行賦值操作);
this 並不是一個常規變數,而是個右值,所以不能取得 this 的地址(不能 &this)。
在以下場景中,經常需要顯式引用 this 指標:
為實現物件的鏈式引用;
為避免對同一物件進行賦值操作;
在實現一些資料結構時,如list。
inline行內函數
特徵
相當於把行內函數裡面的內容寫在呼叫行內函數處;
相當於不用執行進入函式的步驟,直接執行函式體;
相當於巨集,卻比巨集多了型別檢查,真正具有函式特性;
不能包含迴圈、遞迴、switch等複雜操作;
在類宣告中定義的函式,除了虛擬函式的其他函式都會自動隱式地當成行內函數。
使用
//宣告1(加inline,建議使用)
inlineintfunctionName(intfirst,intsecend,...);
//宣告2(不加inline)
intfunctionName(intfirst,intsecend,...);
//定義
inlineintfunctionName(intfirst,intsecend,...){/****/};
//類內定義,隱式內聯
classA{
intdoA(){return0;}//隱式內聯
}
//類外定義,需要顯式內聯
classA{
intdoA();
}
inlineintA::doA(){return0;}//需要顯式內聯
複製程式碼編譯器對inline函式的處理步驟
將inline函式體複製到inline函式呼叫點處;
為所用inline函式中的區域性變數分配記憶體空間;
將inline函式的的輸入引數和返回值對映到呼叫方法的區域性變數空間中;
如果inline函式有多個返回點,將其轉變為inline函式程式碼塊末尾的分支(使用GOTO)。
優缺點
優點
行內函數同巨集函式一樣將在被呼叫處進行程式碼展開,省去了引數壓棧、棧幀開闢與回收,結果返回等,從而提高程式執行速度。
行內函數相比巨集函式來說,在程式碼展開時,會做安全檢查或自動型別轉換(同普通函式),而巨集定義則不會。
在類中宣告同時定義的成員函式,自動轉化為行內函數,因此行內函數可以訪問類的成員變數,巨集定義則不能。
行內函數在執行時可除錯,而巨集定義不可以。
缺點
程式碼膨脹。
內聯是以程式碼膨脹(複製)為代價,消除函式呼叫帶來的開銷。
如果執行函式體內程式碼的時間,相比於函式呼叫的開銷較大,那麼效率的收穫會很少。
另一方面,每一處行內函數的呼叫都要複製程式碼,將使程式的總程式碼量增大,消耗更多的記憶體空間。
inline函式無法隨著函式庫升級而升級。
inline函式的改變需要重新編譯,不像non-inline可以直接連結。
是否內聯,程式設計師不可控。
行內函數只是對編譯器的建議,是否對函式內聯,決定權在於編譯器。
虛擬函式(virtual)可以是行內函數(inline)嗎?
Are"inlinevirtual"memberfunctionseveractually"inlined"?
答案:www.cs.technion.ac.il/users/yechi…
虛擬函式可以是行內函數,內聯是可以修飾虛擬函式的,但是當虛擬函式表現多型性的時候不能內聯。
內聯是在編譯器建議編譯器內聯,而虛擬函式的多型性在執行期,編譯器無法知道執行期呼叫哪個程式碼,因此虛擬函式表現為多型性時(執行期)不可以內聯。
inlinevirtual 唯一可以內聯的時候是:編譯器知道所呼叫的物件是哪個類(如 Base::who()),這隻有在編譯器具有實際物件而不是物件的指標或引用時才會發生。
虛擬函式內聯使用
#include
deleteptr;
ptr=nullptr;
system("pause");
return0;
}
複製程式碼assert()
斷言,是巨集,而非函式。
assert巨集的原型定義在
可以通過定義 NDEBUG 來關閉assert,但是需要在原始碼的開頭,include
使用
#defineNDEBUG//加上這行,則assert不可用
#include
sizeof對指標,得到指標本身所佔空間大小。
#pragmapack(n)
設定結構體、聯合以及類成員變數以n位元組方式對齊
使用
#pragmapack(push)//儲存對齊狀態
#pragmapack(4)//設定為4位元組對齊
structtest
{
charm1;
doublem4;
intm3;
};
#pragmapack(pop)//恢復對齊狀態
複製程式碼位域
Bit mode: 2; // mode 佔 2 位
複製程式碼類可以將其(非靜態)資料成員定義為位域(bit-field),在一個位域中含有一定數量的二進位制位。
當一個程式需要向其他程式或硬體裝置傳遞二進位制資料時,通常會用到位域。
位域在記憶體中的佈局是與機器有關的
位域的型別必須是整型或列舉型別,帶符號型別中的位域的行為將因具體實現而定
取地址運算子(&)不能作用於位域,任何指標都無法指向類的位域
volatile
volatile int i = 10;
複製程式碼
volatile關鍵字是一種型別修飾符,用它宣告的型別變數表示可以被某些編譯器未知的因素(作業系統、硬體、其它執行緒等)更改。
所以使用volatile告訴編譯器不應對這樣的物件進行優化。
volatile關鍵字宣告的變數,每次訪問時都必須從記憶體中取出值(沒有被volatile修飾的變數,可能由於編譯器的優化,從CPU暫存器中取值)
const可以是volatile(如只讀的狀態暫存器)
指標可以是volatile
extern"C"
被extern限定的函式或變數是extern型別的
被 extern"C" 修飾的變數和函式是按照C語言方式編譯和連線的
extern"C" 的作用是讓C++編譯器將 extern"C" 宣告的程式碼當作C語言程式碼處理,可以避免C++因符號修飾導致程式碼不能和C語言庫中的符號進行連結的問題。
"C"使用
#ifdef__cplusplus
extern"C"{
#endif
void*memset(void*,int,size_t);
#ifdef__cplusplus
}
#endif
複製程式碼struct和typedefstruct
C中
//c
typedefstructStudent{
intage;
}S;
複製程式碼等價於
//c
structStudent{
intage;
};
typedefstructStudentS;
複製程式碼此時 S 等價於 structStudent,但兩個識別符號名稱空間不相同。
另外還可以定義與 structStudent 不衝突的 voidStudent(){}。
C++中
由於編譯器定位符號的規則(搜尋規則)改變,導致不同於C語言。
一、如果在類識別符號空間定義了 structStudent{...};,使用 Studentme; 時,編譯器將搜尋全域性識別符號表,Student 未找到,則在類識別符號內搜尋。
即表現為可以使用 Student 也可以使用 structStudent,如下:
//cpp
structStudent{
intage;
};
voidf(Studentme);//正確,"struct"關鍵字可省略
複製程式碼二、若定義了與 Student 同名函式之後,則 Student 只代表函式,不代表結構體,如下:
typedefstructStudent{
intage;
}S;
voidStudent(){}//正確,定義後"Student"只代表此函式
//voidS(){}//錯誤,符號"S"已經被定義為一個"structStudent"的別名
intmain(){
Student();
structStudentme;//或者"Sme";
return0;
}
複製程式碼C++中struct和class
總的來說,struct更適合看成是一個資料結構的實現體,class更適合看成是一個物件的實現體。
區別
最本質的一個區別就是預設的訪問控制
預設的繼承訪問許可權。
struct是public的,class是private的。
struct作為資料結構的實現體,它預設的資料訪問控制是public的,而class作為物件的實現體,它預設的成員變數訪問控制是private的。
union聯合
聯合(union)是一種節省空間的特殊的類,一個union可以有多個資料成員,但是在任意時刻只有一個資料成員可以有值。
當某個成員被賦值後其他成員變為未定義狀態。
聯合有如下特點:
預設訪問控制符為public
可以含有建構函式、解構函式
不能含有引用型別的成員
不能繼承自其他類,不能作為基類
不能含有虛擬函式
匿名union在定義所在作用域可直接訪問union成員
匿名union不能包含protected成員或private成員
全域性匿名聯合必須是靜態(static)的
使用
#include
右值引用
右值引用就是必須繫結到右值(一個臨時物件、將要銷燬的物件)的引用,一般表示物件的值。
右值引用可實現轉移語義(MoveSementics)和精確傳遞(PerfectForwarding),它的主要目的有兩個方面:
消除兩個物件互動時不必要的物件拷貝,節省運算儲存資源,提高效率。
能夠更簡潔明確地定義泛型函式。
引用摺疊
X&&、X&&&、X&&&可摺疊成X&
X&&&&可摺疊成X&&
巨集
巨集定義可以實現類似於函式的功能,但是它終歸不是函式,而巨集定義中括弧中的“引數”也不是真的引數,在巨集展開的時候對“引數”進行的是一對一的替換。
成員初始化列表
好處
更高效:少了一次呼叫預設建構函式的過程。
有些場合必須要用初始化列表:
常量成員,因為常量只能初始化不能賦值,所以必須放在初始化列表裡面
引用型別,引用必須在定義的時候初始化,並且不能重新賦值,所以也要寫在初始化列表裡面
沒有預設建構函式的類型別,因為使用初始化列表可以不必呼叫預設建構函式來初始化,而是直接呼叫拷貝建構函式初始化。
initializer_list列表初始化【C++11】
用花括號初始化器列表列表初始化一個物件,其中對應建構函式接受一個 std::initializer_list 引數.
initializer_list使用
#include
物件導向特徵
物件導向三大特徵——封裝、繼承、多型
封裝
把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。
關鍵字:public,protected,friendly,private。
不寫預設為friendly。
關鍵字
當前類
包內
子孫類
包外
public
√
√
√
√
protected
√
√
√
×
friendly
√
√
×
×
private
√
×
×
×
繼承
基類(父類)——>派生類(子類)
多型
多型,即多種狀態,在面嚮物件語言中,介面的多種不同的實現方式即為多型。
C++多型有兩種:靜態多型(早繫結)、動態多型(晚繫結)。
靜態多型是通過函式過載實現的;動態多型是通過虛擬函式實現的。
多型是以封裝和繼承為基礎的。
靜態多型(早繫結)
函式過載
classA
{
public:
voiddo(inta);
voiddo(inta,intb);
};
複製程式碼動態多型(晚繫結)
虛擬函式:用virtual修飾成員函式,使其成為虛擬函式
注意:
普通函式(非類成員函式)不能是虛擬函式
靜態函式(static)不能是虛擬函式
建構函式不能是虛擬函式(因為在呼叫建構函式時,虛表指標並沒有在物件的記憶體空間中,必須要建構函式呼叫完成後才會形成虛表指標)
行內函數不能是表現多型性時的虛擬函式,解釋見:虛擬函式(virtual)可以是行內函數(inline)嗎?:t.cn/E4WVXSP
動態多型使用
classShape//形狀類
{
public:
virtualdoublecalcArea()
{
...
}
virtual~Shape();
};
classCircle:publicShape//圓形類
{
public:
virtualdoublecalcArea();
...
};
classRect:publicShape//矩形類
{
public:
virtualdoublecalcArea();
...
};
intmain()
{
Shape*shape1=newCircle(4.0);
Shape*shape2=newRect(5.0,6.0);
shape1->calcArea();//呼叫圓形類裡面的方法
shape2->calcArea();//呼叫矩形類裡面的方法
deleteshape1;
shape1=nullptr;
deleteshape2;
shape2=nullptr;
return0;
}
複製程式碼虛解構函式
虛解構函式是為了解決基類的指標指向派生類物件,並用基類的指標刪除派生類物件。
虛解構函式使用
classShape
{
public:
Shape();//建構函式不能是虛擬函式
virtualdoublecalcArea();
virtual~Shape();//虛解構函式
};
classCircle:publicShape//圓形類
{
public:
virtualdoublecalcArea();
...
};
intmain()
{
Shape*shape1=newCircle(4.0);
shape1->calcArea();
deleteshape1;//因為Shape有虛解構函式,所以delete釋放記憶體時,先呼叫子類解構函式,再呼叫基類解構函式,防止記憶體洩漏。
shape1=NULL;
return0;
}
複製程式碼純虛擬函式
純虛擬函式是一種特殊的虛擬函式,在基類中不能對虛擬函式給出有意義的實現,而把它宣告為純虛擬函式,它的實現留給該基類的派生類去做。
virtual int A() = 0;
複製程式碼虛擬函式、純虛擬函式
CSDN.C++中的虛擬函式、純虛擬函式區別和聯絡:t.cn/E4WVQBI
類裡如果宣告瞭虛擬函式,這個函式是實現的,哪怕是空實現,它的作用就是為了能讓這個函式在它的子類裡面可以被覆蓋,這樣的話,這樣編譯器就可以使用後期繫結來達到多型了。
純虛擬函式只是一個介面,是個函式的宣告而已,它要留到子類裡去實現。
虛擬函式在子類裡面也可以不過載的;但純虛擬函式必須在子類去實現。
虛擬函式的類用於“實作繼承”,繼承介面的同時也繼承了父類的實現。
當然大家也可以完成自己的實現。
純虛擬函式關注的是介面的統一性,實現由子類完成。
帶純虛擬函式的類叫抽象類,這種類不能直接生成物件,而只有被繼承,並重寫其虛擬函式後,才能使用。
抽象類和大家口頭常說的虛基類還是有區別的,在C#中用abstract定義抽象類,而在C++中有抽象類的概念,但是沒有這個關鍵字。
抽象類被繼承後,子類可以繼續是抽象類,也可以是普通類,而虛基類,是含有純虛擬函式的類,它如果被繼承,那麼子類就必須實現虛基類裡面的所有純虛擬函式,其子類不能是抽象類。
虛擬函式指標、虛擬函式表
虛擬函式指標:在含有虛擬函式類的物件中,指向虛擬函式表,在執行時確定。
虛擬函式表:在程式只讀資料段(.rodatasection,見:目標檔案儲存結構:t.cn/E4WVBeF),存放…
虛繼承
虛繼承用於解決多繼承條件下的菱形繼承問題(浪費儲存空間、存在二義性)。
底層實現原理與編譯器相關,一般通過虛基類指標和虛基類表實現,每個虛繼承的子類都有一個虛基類指標(佔用一個指標的儲存空間,4位元組)和虛基類表(不佔用類物件的儲存空間)(需要強調的是,虛基類依舊會在子類裡面存在拷貝,只是僅僅最多存在一份而已,並不是不在子類裡面了);當虛繼承的子類被當做父類繼承時,虛基類指標也會被繼承。
實際上,vbptr指的是虛基類表指標(virtualbasetablepointer),該指標指向了一個虛基類表(virtualtable),虛表中記錄了虛基類與本類的偏移地址;通過偏移地址,這樣就找到了虛基類成員,而虛繼承也不用像普通多繼承那樣維持著公共基類(虛基類)的兩份同樣的拷貝,節省了儲存空間。
虛繼承、虛擬函式
相同之處:都利用了虛指標(均佔用類的儲存空間)和虛表(均不佔用類的儲存空間)
不同之處:
虛擬函式不佔用儲存空間
虛擬函式表儲存的是虛擬函式地址
虛基類依舊存在繼承類中,只佔用儲存空間
虛基類表儲存的是虛基類相對直接繼承類的偏移
虛繼承
虛擬函式
模板類、成員模板、虛擬函式
模板類中可以使用虛擬函式
一個類(無論是普通類還是類别範本)的成員模板(本身是模板的成員函式)不能是虛擬函式
抽象類、介面類、聚合類
抽象類:含有純虛擬函式的類
介面類:僅含有純虛擬函式的抽象類
聚合類:使用者可以直接訪問其成員,並且具有特殊的初始化語法形式。
滿足如下特點:
所有成員都是public
沒有有定於任何建構函式
沒有類內初始化
沒有基類,也沒有virtual函式
記憶體分配和管理
malloc、calloc、realloc、alloca
malloc:申請指定位元組數的記憶體。
申請到的記憶體中的初始值不確定。
calloc:為指定長度的物件,分配能容納其指定個數的記憶體。
申請到的記憶體的每一位(bit)都初始化為0。
realloc:更改以前分配的記憶體長度(增加或減少)。
當增加長度時,可能需將以前分配區的內容移到另一個足夠大的區域,而新增區域內的初始值則不確定。
alloca:在棧上申請記憶體。
程式在出棧的時候,會自動釋放記憶體。
但是需要注意的是,alloca不具可移植性,而且在沒有傳統堆疊的機器上很難實現。
alloca不宜使用在必須廣泛移植的程式中。
C99中支援變長陣列(VLA),可以用來替代alloca。
malloc、free
用於分配、釋放記憶體
malloc、free使用
申請記憶體,確認是否申請成功
char *str = (char*) malloc(100);
assert(str != nullptr);
複製程式碼釋放記憶體後指標置空
free(p);
p = nullptr;
複製程式碼new、delete
new/new[]:完成兩件事,先底層呼叫malloc分了配記憶體,然後呼叫建構函式(建立物件)。
delete/delete[]:也完成兩件事,先呼叫解構函式(清理資源),然後底層呼叫free釋放空間。
new在申請記憶體時會自動計算所需位元組數,而malloc則需我們自己輸入申請記憶體空間的位元組數。
new、delete使用
申請記憶體,確認是否申請成功
intmain()
{
T*t=newT();//先記憶體分配,再建構函式
deletet;//先解構函式,再記憶體釋放
return0;
}
複製程式碼定位new
定位new(placementnew)允許我們向new傳遞額外的引數。
new(palce_address)type
new(palce_address)type(initializers)
new(palce_address)type[size]
new(palce_address)type[size]{bracedinitializerlist}
複製程式碼
palce_address 是個指標
initializers 提供一個(可能為空的)以逗號分隔的初始值列表
deletethis合法嗎?
Isitlegal(andmoral)foramemberfunctiontosaydeletethis?
答案:t.cn/E4Wfcfl
合法,但:
必須保證this物件是通過 new(不是 new[]、不是placementnew、不是棧上、不是全域性、不是其他物件成員)分配的
必須保證呼叫 deletethis 的成員函式是最後一個呼叫this的成員函式
必須保證成員函式的 deletethis 後面沒有呼叫this了
必須保證 deletethis 後沒有人使用了
如何定義一個只能在堆上(棧上)生成物件的類?
如何定義一個只能在堆上(棧上)生成物件的類?
答案:t.cn/E4WfDhP
只能在堆上
方法:將解構函式設定為私有
原因:C++是靜態繫結語言,編譯器管理棧上物件的生命週期,編譯器在為類物件分配棧空間時,會先檢查類的解構函式的訪問性。
若解構函式不可訪問,則不能在棧上建立物件。
只能在棧上
方法:將new和delete過載為私有
原因:在堆上生成物件,使用new關鍵詞操作,其過程分為兩階段:第一階段,使用new在堆上尋找可用記憶體,分配給物件;第二階段,呼叫建構函式生成物件。
將new操作設定為私有,那麼第一階段就無法完成,就不能夠在堆上生成物件。
智慧指標
C++標準庫(STL)中
標頭檔案:#include
掃描下方二維碼,及時獲取更多網際網路求職面經、java、python、爬蟲、大資料等技術,和海量資料分享:公眾號後臺回覆“csdn”即可免費領取【csdn】和【百度文庫】下載服務;公眾號後臺回覆“資料”:即可領取5T精品學習資料、java面試考點和java面經總結,以及幾十個java、大資料專案,資料很全,你想找的幾乎都有
推薦閱讀
【微信事業群】二面面經
相關文章
C++檔案說明及使用方法
2020-11-19
C++
希爾排序使用直接插入排序、二分插入排序的C++程式碼實現演算法
2020-11-19
演算法C++
歸併排序(C++_分治遞迴)
2020-11-20
C++
TSP問題(換位表達,啟發式交叉,啟發式變異)C++實現
2020-11-20
C++
《演算法筆記》2.4小節——C/C++快速入門->迴圈結構例題5-1-1連續自然數求和
2020-11-20
演算法C++
【面試攻略】C++面試-銀漢
2020-11-21
面試C++
c++11-17模板核心知識(五)——理解模板引數推導規則
2020-11-21
C++
初學計算機語言者(C語言,C++,java,pytion,C#)
2020-11-21
JavaC++C#
【面試攻略】C++面試-4399
2020-11-21
面試C++
兩圓相交求面積c++
2020-11-21
C++
C++中使用巨集定義來註釋掉所有的cout輸出
2020-11-21
C++
【c++】結構體sort排序
2020-11-21
C++
2020最新全面Java學習路線及視訊(萬字長文)
2020-11-21
Java
C++知識點49——類繼承與類的構造、拷貝、operator=和解構函式
2020-11-21
C++
淺析氣泡排序-c++
2020-11-21
C++
C++純虛數的使用
2020-11-22
C++
【PAT甲級A1084】BrokenKeyboard(20分)(c++)
2020-11-22
C++
C++L1-7谷歌的招聘
2020-11-22
C++
一文讓你學完C++,乾貨收藏!!!
2020-11-22
C++
最新文章
論文閱讀ExploringTemporalInformationforDynamicNetworkEmbedding
vue的常用事件
一文掌握GitHubActions基本概念與配置
ElasticSearch7.3學習(三十二)----logstash三大外掛(input、filter、output)及其綜合示例
SpringDataJPA系列4——Spring宣告式數事務處理與多資料來源支援
Flex&Bison開始
生態+人才雙豐收,昇騰AI助力成都人工智慧產業雄起
社交軟體紅包技術解密(十二):解密抖音春節紅包背後的技術設計與實踐
【WPF】CAD工程圖紙轉WPF可直接使用的xaml程式碼技巧
Obsidian基礎教程
微軟智慧雲在華髮布多項混合雲服務及功能更新
一文詳解|Go分散式鏈路追蹤實現原理
延伸文章資訊
- 1【面試】C語言面試100題 - 台部落
100 條經典C語言筆試題目(2)請寫出float x 與“零值”比較的if 語句: ... 【標準答案】c和c++ 中struct的主要區別是c中的struct
- 2【C/C++】【面試】 科技業筆試常考觀念題: 資料型態(data type)
- 3【C/C++】【面試】 考古題經驗分享- 初級 - DummyH的部落格
【C/C++】【面試】 考古題經驗分享- 初級 · 此篇只涉及C語言的基礎概念,熟悉C語言的開發者可跳過此篇。 · 在應徵程式設計師的面試中,常會有該語言的專業 ...
- 4C/C++ - 常見C 語言觀念題目總整理(適合考試和面試)
標籤: Software Development-C/Cpp. 常見的C/C++ 問題總整理,增強C 語言觀念並練習一些題目,努力脫離考試苦海吧! (非從零開始,適合稍有C/C++ ...
- 5面試C/C++ 觀念整理
這裡有些題目是來自網路上MTK面試的C考古題,另外又加入了一些易搞混的觀念,幫自己統整一下,也希望能幫助在求職的讀者,面試的過程真的心很累啊!