linux使用與命令
linux下常用軟體
cc++
stl虛函式
物件導向思想
tcp協議
http協議
高併發mysql
redis
資料結構與演算法
設計模式
中斷的概念:
sigpipe和sigint
i/o復用
select的使用和原理
epoll的使用和原理阻塞和非阻塞
同步與非同步
多程序fork函式的返回值
殭屍程序和孤兒程序,怎麼預防和處理
多執行緒
執行緒的建立ipc通訊如何確定乙個程序應該開多少執行緒
不同ipc通訊方式的優缺點和應用場景:
條件變數鎖
linux 發行版本與核心版本
linux重啟失敗原因分析
包安裝方式
lvm
ssh與telnet的區別
檢視日誌末尾gdb如何除錯多執行緒:輸出到檔案
valgrind:記憶體洩漏檢查工具預處理包含三方面的內容:巨集定義與巨集替換、檔案包含、條件編譯。gprof:**效能檢查工具
用%x列印字元陣列
scanf的使用
會導致coredump的情況:函式返回區域性變數
函式指標與指標函式陣列指標與指標陣列
常量指標與指標常量
float精度的判斷記憶體管理與釋放:fabs()
pow
記憶體布局:棧堆全文代。
堆和棧的區別:
棧區由編譯器自動分配釋放。其操作方式類似於資料結構中的棧,速度較快。
堆區由程式設計師分配釋放,若程式設計師不釋放,程式結束時由作業系統**。其分配方式類似於鍊錶,一般速度較慢。容易產生記憶體碎片。堆上分配記憶體,在c中使用malloc,在c++中使用new。
malloc/free與new/delete的區別:
①操作物件不同。前者是標準庫函式,不在編譯器控制許可權之內。後者是c++的運算子,除了分配釋放空間外,還會呼叫構造或析構函式。
②用法不同。malloc返回的是void*,因此是型別不安全的,而且malloc且需手動計算要申請的記憶體位元組數。而new內建了sizeof、型別轉換和型別安全檢查功能,無需手動計算。另外注意如果使用new建立物件陣列,那麼只能使用物件的無參建構函式。
記憶體洩漏的定義與確定:
野指標:
類空類中自帶的函式:
static
不考慮類,static的作用主要有三條:
①隱藏:即對其他原始檔隱藏;
②預設初始化為0:包括未初始化的全域性靜態變數與區域性靜態變數。另外未初始化的全域性變數也具備這一屬性。這是因為全域性變數和靜態不買單都儲存在bss段(即全域性靜態區);
③保持區域性變數內容的持久:即在對應函式中可持續使用。
類中static的作用:屬於乙個類但不屬於此類的特定物件。
靜態資料成員:必須在類外定義並初始化,對於const static資料成員,可以在類的定義體中初始化,但仍需在類外進行定義(只是此時無需初始化)。
靜態成員函式:通過類名呼叫。不具有this指標,因此無法訪問非靜態資料成員和非靜態成員函式。不能被宣告為const、虛函式、volatile。
全域性變數與靜態變數的異同:
const的用法
c與c++中的const的區別:
在c中,預設const是外部連線的;而在c++中,const全域性變數對其他原始檔隱藏,如果要被其他檔案訪問,需使用extern修飾。
指標常量:*p為const;
常量指標:p為const。
指標常量
const int* p;
常量指標
int * const p = &d;
在c++中使用const而非使用#define的原因:
①const常量有型別,編譯器可進行型別安全檢查;
②使用const常量可能導致更小的目標**,因為#define是盲目地替換;
③const可以執行常量摺疊(即將常量表示式計算求值)。
const修飾函式引數與返回值:
①const修飾函式返回值;
②const修飾函式引數:常用於const引用。
const在類中的使用:
①const修飾成員函式:const物件(或指向該物件的指標、引用)只能呼叫const成員函式;
②const修飾資料成員:此時必須在建構函式的成員初始化列表中進行初始化。
inline
inline函式與巨集定義的區別:
typedef和define
引用指標和引用的區別:
容器型別和各自特點迭代器與指標的區別
deque的使用:
記憶體池的實現
多型的實現過載、覆蓋、隱藏的區別:
virtual關鍵字的用法。
建構函式中使用虛函式基類的析構函式為何要設定為虛函式?
虛函式的實現抽象類和介面類的區別
物件導向程式設計的基本原則
tcp通訊過程:三次握手、四次揮手**
tcp通訊狀態轉移圖
linux下客戶端和伺服器端建立tcp通訊使用到的函式怎麼提高伺服器的併發處理能力:
a. 提高cpu併發計算能力
(1)多程序&多執行緒
(2)減少程序切換,使用執行緒,考慮程序繫結cpu
(3)減少使用不必要的鎖,考慮無鎖程式設計
(4)考慮程序優先順序
(5)關注系統負載
(6)關注cpu使用率,除了使用者空間和核心空間的cpu使用率以外,還要關注i/o wait
b. 減少系統呼叫的使用
c. 考慮減少記憶體分配和釋放
(1)改善資料結構和演算法複雜度
(2)使用記憶體池
(3)考慮使用共享記憶體
d. 考慮使用持久連線
e. 改進i/o模型
(1)dma技術
(2)非同步i/o
(3)改進多路i/o就緒通知策略,epoll
(4)sendfile
(5)記憶體對映
(6)直接i/o
f. 改進伺服器併發策略
(1)乙個程序處理乙個連線,非阻塞i/o,使用長連線
(2)乙個程序處理多個連線,非同步i/o, 使用長連線
c++使用到的mysql庫:mysqlclient庫
mysql埠號:3306
mysql基礎語句、巢狀語句的使用。
獲取乙個表的前n條記錄。
資料庫索引怎麼建立,索引的優缺點:
如何提高資料庫查詢速度?有哪些優化技巧?
事務的特性acid:
c++使用到的redis庫
redis的基本資料型別和操作
單鏈表與雙鏈表
紅黑樹特性
棧的應用:用於四則運算
佇列的應用:排序演算法用於輸出倒數n行
氣泡排序、交換排序、選擇排序鍊錶快排堆排
判斷鍊錶是否有公共節點。
判斷鍊錶是否有環。
鍊錶的增刪。
查詢鍊錶倒數第k個結點。
樹二叉排序樹和鍊錶的轉換
二叉樹的前中後序非遞迴**
平衡二叉樹的基本概念
線索二叉樹的基本概念
紅黑樹的基本概念
動態規劃
bfs
dfs
最長子序列其他演算法
用陣列實現大數乘法
實現乙個string類
實現乙個動態陣列
常用的設計模式
FPGA工程師筆試面試題(二)
1 ic設計中同步復位與非同步復位的區別 同步復位在時鐘沿才復位訊號,完成復位動作。非同步復位不管時鐘,只要復位訊號滿足條件,就完成復位動作。非同步復位對復位訊號要求比較高,不能有毛刺,如果其與時鐘關係不確定,也可能出現亞穩態。2 moore 與 mealy狀態機的特徵 兩種典型的狀態機是摩爾 mo...
後段開發工程師面試題 三
range 函式說明 range start,stop step 根據start與stop指定的範圍以及step設定的步長,生成乙個序列。range示例 range 5 0,1,2,3,4 range 1,5 1,2,3,4 range 0,6,2 0,2,4 xrange 函式說明 用法與rang...
演算法工程師 面試題與解答
可以用於分類任務,速度快,能容易地更新模型吸收新的資料。不可以,僅能用於線性問題。只有當目標和特徵是線性關係時,才能用邏輯回歸。在應用邏輯回歸時注意兩點 一是當知道模型是非線性時,不適用邏輯回歸 二是當使用邏輯回歸時,應注意選擇和目標為線性關係的特徵。深度學習可能存在過擬合問題 高方差,有兩個解決方...