0.我們的公眾號(hào):尋常幾盞燈火味榛,歡迎前往朵夏,更多面經(jīng)內(nèi)推究流,祝您早日拿到offer奧~
1.算法題:鏈表反轉(zhuǎn)
算法思想:使用遞歸的方法,它利用遞歸走到鏈表的末端动遭,然后再更新每一個(gè)node的next 值芬探,實(shí)現(xiàn)鏈表的反轉(zhuǎn)。而newhead 的值沒(méi)有發(fā)生改變厘惦,為該鏈表的最后一個(gè)結(jié)點(diǎn)偷仿,所以,反轉(zhuǎn)后宵蕉,我們可以得到新鏈表的head酝静。注意關(guān)于鏈表問(wèn)題的常見(jiàn)注意點(diǎn)的思考:?1、如果輸入的頭結(jié)點(diǎn)是 NULL羡玛,或者整個(gè)鏈表只有一個(gè)結(jié)點(diǎn)的時(shí)候?2别智、鏈表斷裂的考慮
算法代碼:
structListNode {
int val;
struct ListNode *next;
ListNode(intx) :
val(x), next(NULL) {
}
};*/
class Solution {
public:??
ListNode* ReverseList(ListNode* pHead) {
//如果鏈表為空或者鏈表中只有一個(gè)元素
if(pHead==NULL||pHead->next==NULL)?
return pHead;//先反轉(zhuǎn)后面的鏈表,走到鏈表的末端結(jié)點(diǎn)
ListNode* pReverseNode=ReverseList(pHead->next);
//再將當(dāng)前節(jié)點(diǎn)設(shè)置為后面節(jié)點(diǎn)的后續(xù)節(jié)點(diǎn)
pHead->next->next=pHead;???
pHead->next=NULL;??
return pReverseNode;??
}
};
2.C++三大特性
繼承稼稿,多態(tài)薄榛,封裝
3.網(wǎng)絡(luò)7層模型
1、OSI七層模型的劃分?OSI定義了網(wǎng)絡(luò)互連的七層框架(物理層让歼、數(shù)據(jù)鏈路層敞恋、網(wǎng)絡(luò)層、傳輸層谋右、會(huì)話(huà)層硬猫、表示層、應(yīng)用層),即ISO開(kāi)放互連系統(tǒng)參考模型啸蜜。如下圖坑雅。 每一層實(shí)現(xiàn)各自的功能和協(xié)議,并完成與相鄰層的接口通信盔性。OSI的服務(wù)定義詳細(xì)說(shuō)明了各層所提供的服務(wù)霞丧。某一層的服務(wù)就是該層及其下各層的一種能力,它通過(guò)接口提供給更高一層冕香。各層所提供的服務(wù)與這些服務(wù)是怎么實(shí)現(xiàn)的無(wú)關(guān)蛹尝。
2、各層功能定義
<1> 應(yīng)用層??OSI參考模型中最靠近用戶(hù)的一層悉尾,是為計(jì)算機(jī)用戶(hù)提供應(yīng)用接口突那,也為用戶(hù)直接提供各種網(wǎng)絡(luò)服務(wù)。我們常見(jiàn)應(yīng)用層的網(wǎng)絡(luò)服務(wù)協(xié)議有:HTTP构眯,HTTPS愕难,F(xiàn)TP,POP3惫霸、SMTP等猫缭。
<2> 表示層表示層提供各種用于應(yīng)用層數(shù)據(jù)的編碼和轉(zhuǎn)換功能,確保一個(gè)系統(tǒng)的應(yīng)用層發(fā)送的數(shù)據(jù)能被另一個(gè)系統(tǒng)的應(yīng)用層識(shí)別。如果必要壹店,該層可提供一種標(biāo)準(zhǔn)表示形式猜丹,用于將計(jì)算機(jī)內(nèi)部的多種數(shù)據(jù)格式轉(zhuǎn)換成通信中采用的標(biāo)準(zhǔn)表示形式。數(shù)據(jù)壓縮和加密也是表示層可提供的轉(zhuǎn)換功能之一硅卢。??
<3> 會(huì)話(huà)層會(huì)話(huà)層就是負(fù)責(zé)建立射窒、管理和終止表示層實(shí)體之間的通信會(huì)話(huà)。該層的通信由不同設(shè)備中的應(yīng)用程序之間的服務(wù)請(qǐng)求和響應(yīng)組成将塑。
<4> 傳輸層傳輸層建立了主機(jī)端到端的鏈接脉顿,傳輸層的作用是為上層協(xié)議提供端到端的可靠和透明的數(shù)據(jù)傳輸服務(wù),包括處理差錯(cuò)控制和流量控制等問(wèn)題点寥。
<5> 網(wǎng)絡(luò)層本層通過(guò)IP尋址來(lái)建立兩個(gè)節(jié)點(diǎn)之間的連接艾疟,為源端的運(yùn)輸層送來(lái)的分組,選擇合適的路由和交換節(jié)點(diǎn)开财,正確無(wú)誤地按照地址傳送給目的端的運(yùn)輸層汉柒。就是通常說(shuō)的IP層。這一層就是我們經(jīng)常說(shuō)的IP協(xié)議層责鳍。IP協(xié)議是Internet的基礎(chǔ)碾褂。??
<6> 數(shù)據(jù)鏈路層將比特組合成字節(jié),再將字節(jié)組合成幀,使用鏈路層地址 (以太網(wǎng)使用MAC地址)來(lái)訪(fǎng)問(wèn)介質(zhì),并進(jìn)行差錯(cuò)檢測(cè)。數(shù)據(jù)鏈路層又分為2個(gè)子層:邏輯鏈路控制子層(LLC)和媒體訪(fǎng)問(wèn)控制子層(MAC)历葛。MAC子層處理CSMA/CD算法正塌、數(shù)據(jù)出錯(cuò)校驗(yàn)嘀略、成幀等;LLC子層定義了一些字段使上次協(xié)議能共享數(shù)據(jù)鏈路層乓诽。在實(shí)際使用中帜羊,LLC子層并非必需的。
<7> 物理層?實(shí)際最終信號(hào)的傳輸是通過(guò)物理層實(shí)現(xiàn)的鸠天。通過(guò)物理介質(zhì)傳輸比特流讼育。規(guī)定了電平、速度和電纜針腳稠集。常用設(shè)備有(各種物理設(shè)備)集線(xiàn)器奶段、中繼器、調(diào)制解調(diào)器剥纷、網(wǎng)線(xiàn)痹籍、雙絞線(xiàn)、同軸電纜晦鞋。這些都是物理層的傳輸介質(zhì)蹲缠。3、補(bǔ)充知識(shí)一個(gè)設(shè)備工作在哪一層悠垛,關(guān)鍵看它工作時(shí)利用哪一層的數(shù)據(jù)頭部信息线定。網(wǎng)橋工作時(shí),是以MAC頭部來(lái)決定轉(zhuǎn)發(fā)端口的确买,因此顯然它是數(shù)據(jù)鏈路層的設(shè)備渔肩。?
具體說(shuō):?
物理層:網(wǎng)卡,網(wǎng)線(xiàn)拇惋,集線(xiàn)器,中繼器抹剩,調(diào)制解調(diào)器 數(shù)據(jù)鏈路層:網(wǎng)橋撑帖,交換機(jī) 網(wǎng)絡(luò)層:路由器 網(wǎng)關(guān)工作在第四層傳輸層及其以上。 集線(xiàn)器是物理層設(shè)備,采用廣播的形式來(lái)傳輸信息澳眷。?
交換機(jī)就是用來(lái)進(jìn)行報(bào)文交換的機(jī)器胡嘿。多為鏈路層設(shè)備(二層交換機(jī)),能夠進(jìn)行地址學(xué)習(xí)钳踊,采用存儲(chǔ)轉(zhuǎn)發(fā)的形式來(lái)交換報(bào)文.衷敌。?
路由器的一個(gè)作用是連通不同的網(wǎng)絡(luò),另一個(gè)作用是選擇信息傳送的線(xiàn)路拓瞪。選擇通暢快捷的近路缴罗,能大大提高通信速度,減輕網(wǎng)絡(luò)系統(tǒng)通信負(fù)荷祭埂,節(jié)約網(wǎng)絡(luò)系統(tǒng)資源面氓,提高網(wǎng)絡(luò)系統(tǒng)暢通率兵钮。
4.C++11特性知道哪些?
?1舌界、“語(yǔ)法糖”:nullptr, auto自動(dòng)類(lèi)型推導(dǎo)掘譬,范圍for循環(huán),初始化列表呻拌,ambda表達(dá)式等2葱轩、右值引用和移動(dòng)語(yǔ)義
3、智能指針
4藐握、C++11多線(xiàn)程編程:thread庫(kù)及其相配套的同步原語(yǔ)mutex, lock guard, condition_variable,以及異步std::future
5.數(shù)據(jù)庫(kù)索引靴拱,為什么有索引?
數(shù)據(jù)庫(kù)索引就像是一本書(shū)的目錄一樣趾娃,使用它可以讓你在數(shù)據(jù)庫(kù)里搜索查詢(xún)??速度大大提升缭嫡。而我們使用索引的目的就是,加快表中的查找和排序抬闷。索引的 幾種類(lèi)型分別是普通索引妇蛀、唯一索引、聚集索引笤成、主鍵索引评架、全文索引幾種。