首頁>技術>

C和C++語言基礎

參考書籍:《C++ primer》,《effective C++》,《STL原始碼解析》,《深度搜索C++物件模型》

extern關鍵字作用static關鍵字作用volatile是幹啥的說說const的作用,越多越好new與malloc區別C++多型性與虛擬函式表C++多型的實現?虛擬函式的作用?虛擬函式用於實現多型,這點大家都能答上來但是虛擬函式在設計上還具有封裝和抽象的作用。比如抽象工廠模式。動態繫結是如何實現的?靜態多型和動態多型。靜態多型是指透過模板技術或者函式過載技術實現的多型,其在編譯器確定行為。動態多型是指透過虛擬函式技術實現在執行期動態繫結的技術。虛擬函式表虛擬函式表是針對類的還是針對物件的?同一個類的兩個物件的虛擬函式表是怎麼維護的?編譯器為每一個類維護一個虛擬函式表,每個物件的首地址儲存著該虛擬函式表的指標,同一個類的不同物件實際上指向同一張虛擬函式表。純虛擬函式如何定義,為什麼對於存在虛擬函式的類中解構函式要定義成虛擬函式解構函式能丟擲異常嗎建構函式和解構函式中呼叫虛擬函式嗎?指標和引用的區別指標與陣列千絲萬縷的聯絡智慧指標是怎麼實現的?什麼時候改變引用計數?建構函式中計數初始化為1;複製建構函式中計數值加1;賦值運算子中,左邊的物件引用計數減一,右邊的物件引用計數加一;解構函式中引用計數減一;在賦值運算子和解構函式中,如果減一後為0,則呼叫delete釋放物件。share_prt與weak_ptr的區別?C++四種類型轉換static_cast, dynamic_cast, const_cast, reinterpret_cast記憶體對齊的原則行內函數有什麼優點?行內函數與宏定義的區別?C++記憶體管理STL裡的記憶體池實現STL裡set和map是基於什麼實現的。紅黑樹的特點?STL裡的其他資料結構和演算法實現也要清楚 這個問題,把STL原始碼剖析好好看看,不僅面試不慌,自己對STL的使用也會上升一個層次。必須在建構函式初始化式裡進行初始化的資料成員有哪些模板特化定位記憶體洩露 (1)在windows平臺下透過CRT中的庫函式進行檢測; (2)在可能洩漏的呼叫前後生成塊的快照,比較前後的狀態,定位洩漏的位置 (3)Linux下透過工具valgrind檢測手寫strcpy,memcpy,strcat,strcmp等函式資料結構與演算法

這一塊考察範圍太廣,主要靠多刷題吧,牛客網,劍指OFFER,LeetCode等。

Hash表Hash表實現(拉鍊和分散地址)Hash策略常見的有哪些?STL中hash_map擴容發生什麼? (1) 建立一個新桶,該桶是原來桶兩倍大最接近的質數(判斷n是不是質數的方法:用n除2到sqrt(n)範圍內的數) ; (2) 將原來桶裡的數透過指標的轉換,插入到新桶中(注意STL這裡做的很精細,沒有直接將資料從舊桶遍歷複製資料插入到新桶,而是透過指標轉換) (3) 透過swap函式將新桶和舊桶交換,銷燬新桶。二叉樹結構,二叉查詢樹實現;二叉樹的六種遍歷;二叉樹的按層遍歷;遞迴是解決二叉樹相關問題的神級方法;樹的各種常見演算法題(http://blog.csdn.net/xiajun07061225/article/details/12760493);什麼是紅黑樹?紅黑樹與AVL樹的區別Trie樹(字典樹)連結串列連結串列和插入和刪除,單向和雙向連結串列都要會連結串列的問題考慮多個指標和遞迴 (1) 反向列印連結串列(遞迴) (2) 列印倒數第K個節點(前後指標) (3) 連結串列是否有環(快慢指標)等等。棧和佇列佇列和棧的區別?(從實現,應用,自身特點多個方面來闡述,不要只說一個先入先出,先入後出,這個你會別人也會,要展現出你比別人掌握的更深)典型的應用場景海量資料問題十億整數(隨機生成,可重複)中前K最大的數十億整數(隨機生成,可重複)中出現頻率最高的一千個排序演算法排序演算法當然是基礎內容了,必須至少能快速寫出,快排,建堆,和歸併每種演算法的時間空間複雜度,最好最差平均情況位運算布隆過濾器

幾十億個數經常要查詢某一個數在不在裡面,使用布隆過濾器,布隆過濾器的原理。布隆過濾器可能出現誤判,怎麼保證無誤差?

網路與TCP/IP

參考書籍:《圖解TCP/IP》,《TCP/IP詳解 卷一》,《圖解HTTP》,《HTTP權威指南》

TCP與UDP之間的區別 (1) IP首部,TCP首部,UDP首部 (2) TCP和UDP區別 (3) TCP和UDP應用場景 (4) 如何實現可靠的UDPTCP三次握手與四次揮手詳細說明TCP狀態遷移過程 (1) 三次握手和四次揮手狀態變化; (2) 2MSL是什麼狀態?作用是什麼? (3)三次握手為什麼不是兩次或者四次?TCP相關技術TCP重發機制,Nagle演算法TCP的擁塞控制使用的演算法和具體過程TCP的視窗滑動TCP客戶與伺服器模型,用到哪些函式UDP客戶與伺服器模型,用到哪些函式域名解析過程,ARP的機制,RARP的實現Ping和TraceRoute實現原理HTTPhttp/https 1.0、1.1、2.0的特點和區別get/post 區別HTTP返回狀態碼http 協議頭相關

http資料由請求行,首部欄位,空行,報文主體四個部分組成 首部欄位分為:通用首部欄位,請求首部欄位,響應首部欄位,實體首部欄位

https與http的區別?如何實現加密傳輸?加解密方式?瀏覽器中輸入一個URL發生什麼,用到哪些協議?安全相關

至少了解攻擊的原理和基本的防禦方法,常見的攻擊方法有一下幾種

SQL注入XSSCSRFSYN洪水攻擊APR欺騙資料庫

主要參考書籍:《資料庫系統概念》,《高效能MySQL》

SQL語言(內外連線,子查詢,分組,聚集,巢狀,邏輯)MySQL索引方法?索引的最佳化?InnoDB與MyISAM區別?事務的ACID事務的四個隔離級別查詢最佳化(從索引上最佳化,從SQL語言上最佳化)B-與B+樹區別?MySQL的聯合索引(又稱多列索引)是什麼?生效的條件?分庫分表Linux

主要參考書籍:《現代作業系統》,《APUE》,《UNP》,《LINUX核心設計與實現》,《深入理解LINUX核心》

程序與執行緒

(1) 程序與執行緒區別? (2) 執行緒比程序具有哪些優勢? (3) 什麼時候用多程序?什麼時候用多執行緒? (4) LINUX中程序和執行緒使用的幾個函式? (5) 執行緒同步? 在Windows下執行緒同步的方式有:互斥量,訊號量,事件,關鍵程式碼段 在Linux下執行緒同步的方式有:互斥鎖,自旋鎖,讀寫鎖,屏障(併發完成同一項任務時,屏障的作用特別好使) 知道這些鎖之間的區別,使用場景?

程序間通訊方式匿名管道與命名管道的區別:匿名管道只能在具有公共祖先的兩個程序間使用。共享檔案對映mmap mmap建立程序空間到檔案的對映,在建立的時候並不直接將檔案複製到物理記憶體,同樣採用缺頁終端。mmap對映一個具體的檔案可以實現任意程序間共享記憶體,對映一個匿名檔案,可以實現父子程序間共享記憶體。常見的訊號有哪些?:SIGINT,SIGKILL(不能被捕獲),SIGTERM(可以被捕獲),SIGSEGV,SIGCHLD,SIGALRM記憶體管理虛擬記憶體的作用?虛擬記憶體的實現?作業系統層面對記憶體的管理?記憶體池的作用?STL裡記憶體池如何實現?程序空間和核心空間對記憶體的管理不同?Linux的slab層,VAM?夥伴演算法高階記憶體程序排程Linux程序分為兩種,實時程序和非實時程序;優先順序分為靜態優先順序和動態優先順序,優先順序的範圍;排程策略互動程序透過平均睡眠時間而被獎勵;死鎖

(1) 死鎖產生的條件; (2) 死鎖的避免;

命令列Linux命令 在一個檔案中,倒序列印第二行前100個大寫字母
cat filename | head -n 2 | tail -n 1 | grep '[[:upper:]]' -o | tr -d '\n'| cut -c 1-100 | rev 
與CPU,記憶體,磁碟相關的命令(top,free, df, fdisk)網路相關的命令netstat,tcpdump等sed, awk, grep三個超強大的命名,分別用與格式化修改,統計,和正則查詢ipcs和ipcrm命令查詢當前目錄以及字母下以.c結尾的檔案,且檔案中包含”hello world”的檔案的路徑建立定時任務IO模型五種IO模型:阻塞IO,非阻塞IO,IO複用,訊號驅動式IO,非同步IOselect,poll,epoll的區別執行緒池,記憶體池 自己動手實現一遍Linux的APIfork與vfork區別 fork和vfork都用於建立子程序。但是vfork建立子程序後,父程序阻塞,直到子程序呼叫exit()或者excle()。 對於核心中過程fork透過呼叫clone函式,然後clone函式呼叫do_fork()。do_fork()中呼叫copy_process()函式先複製task_struct結構體,然後複製其他關於記憶體,檔案,暫存器等資訊。fork採用寫時複製技術,因此子程序和父程序的頁表指向相同的頁框。但是vfork不需要複製頁表,因為父程序會一直阻塞,直接使用父程序頁表。exit()與_exit()區別 exit()清理後進入核心,_exit()直接陷入核心。孤兒程序與僵死程序孤兒程序是怎麼產生的?僵死程序是怎麼產生的?僵死程序的危害?如何避免僵死程序的產生?Linux是如何避免記憶體碎片的夥伴演算法,用於管理物理記憶體,避免記憶體碎片;快取記憶體Slab層用於管理核心分配記憶體,避免碎片。共享記憶體的實現原理?系統呼叫與庫函式(open, close, create, lseek, write, read)同步方法有哪些?互斥鎖,自旋鎖,訊號量,讀寫鎖,屏障互斥鎖與自旋鎖的區別:互斥鎖得不到資源的時候阻塞,不佔用cpu資源。自旋鎖得不到資源的時候,不停的查詢,而然佔用cpu資源。死鎖其他++i是否是原子操作 明顯不是,++i主要有三個步驟,把資料從記憶體放在暫存器上,在暫存器上進行自增,把資料從暫存器複製會記憶體,每個步驟都可能被中斷。判斷大小端設計模式單例模式執行緒安全的寫法STL裡的迭代器模式,介面卡模式分散式系統map_reduce原理 (這篇文章講的很通俗易懂)負載均衡CDN

主要列出考察內容的方向,問題的理解就得靠自己實踐和閱讀書籍了。

13
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 使用TensorFlow和深度混合學習進行時間序列預測