C 常見面試問題

2021-08-10 00:15:04 字數 2584 閱讀 8149

一、抽象與介面的區別:

1,抽象(abstract):

(1)抽象類中可以有抽象方法,也可沒有;

(2)抽象方法包含實現,也可以由子類實現;

(3)抽象類不能被sealed修飾,只能使用abstract關鍵字

(4)抽象方法不能在抽象類外部宣告;

(5)抽象類只能單繼承;

(6)可以有虛方法(virtual),在不同的繼承中,可以有不同的實現(需要override重寫);

2、介面(inte***ce):

(1)介面比抽象類更抽象;

(2)可以多繼承;

(3)不包含方法的實現,只能由子類實現;

二、多型:

概念上:乙個介面多個功能

靜態多型性:方法重寫和運算子重寫實現,編譯期間實現;

動態多型性:由抽象和虛方法實現,執行期間實現;

三、c#-using用法:

(1)引入命名空間:using system;

(2)建立類或命名空間的別名:using project =system.project;

(3)using語句中的物件只能實現ideposeable介面,然後呼叫介面中的dispose方法釋放此物件;

四、反射(reflection)

概念:反射程式訪問,檢查並修改自己的一種能力;

反射封裝了程式集,模組,類的資訊。可以在程式執行時動態建立類的例項,並將其繫結到現有物件,由當前物件訪問類,然後呼叫其方法或訪問欄位和屬性;

優點:

(1)提高程式的靈活性

(2)降低程式的耦合度,提高**的復用性;

(3)允許程式建立和控制任何型別的物件,不需要提前編碼

缺點:

(1)程式的邏輯模糊:在除錯程式時候,我們需要清晰看到程式執行的內部邏輯,而反射繞過源**,因此,程式的可維護性降低;

(2)效能問題:反射是一種解釋操作,在訪問欄位和屬性時比直接接入**要慢,造成程式的效能降低;

用途:

(1)允許程式 執行期間檢視特性(attribute)資訊,審查元資料;

(2)允許檢視類的資訊,並建立類的例項;

五、靜態構造器與構造器區別:

1,靜態構造器:

(1)用static修飾,不能出現訪問修飾符:

**public class c

}**

(2)用來初始化靜態變數,在靜態變數被呼叫或者進行例項化的時候呼叫,有系統呼叫;

(3)必須是無參的

2,(普通)構造器:

(1)用來初始化物件(類的例項);

(2)可以有修飾符,不能有static;

*public class c

}*六、委託(delegate)和事件(event):

委託:

(1)委託類似乙個指標變數,在委託宣告時就已經規定了變數只能指向特定引數和特定返回值的方法,

(2)宣告委託:delegate void mydelegate(); 使用new關鍵字例項委託;

(3)invoke方法同步呼叫對應的委託物件方法,begininvoke,endinvoke方法非同步呼叫對應的委託物件方法;

(4)委託鏈裡兩個方法,method用於獲取委託呼叫的方法,target用於獲取當前呼叫的類的例項;

(5)委託分為:有返回值委託,無返回值委託,多路委託(委託鏈),委託逆變,委託協變,泛型委託;

事件:

(1)事件給委託提供了良好封裝性,一方面它允許從類的外部新增、刪除繫結的方法,另一方面,不允許從類的外部來觸發繫結的方法;

七、集合:

arraylist(動態陣列):有序的集合,根據索引遍歷;

hashtable(雜湊表):可根據鍵/值來訪問集合中元素;

sortedlist(排序列表):arrylist和hashtable組成,根據索引和鍵來訪問;

堆疊(stacks)、佇列(queue)、點陣列(bitarylist):二進位制陣列,根據索引訪問;

八、多執行緒(thread)

(1)執行緒被定義為程式執行的路徑;乙個執行緒執行乙個任務,例如計算機作業系統中並行程式設計的實現。節省cpu週期的浪費,提高程式執行的效率;

(2)執行緒死鎖:死鎖也稱假死,是指程式依舊在執行,只是停留在某一環節沒有繼續執行。原因:當兩個執行緒執行時同時需要對方的資源的時候,就會陷入相互等待之中,此時程式就是假死狀態;

解決辦法:進行死鎖檢測,然後掛起一些執行緒,釋放與**一些資源,讓另外執行緒先執行;

(3)阻塞和非阻塞:當乙個執行緒需要的資源被占用時,便陷入阻塞狀態,這個執行緒必須等待,直到資源可用時繼續執行。當我們需要執行另外乙個執行緒b時,可以呼叫thread.sleep()將當前執行緒a阻塞掉,等b執行緒執行完,在喚醒執行緒a。

(4)lock():保證當前塊執行完畢,可解決阻塞問題;注:被lock的物件一定要引用型別的,否則報錯!!!;

九、網路程式設計和通訊

(1)tcp/ip協議:可靠,有效,可連線

(2)udp協議:無連線,不可靠

(3)socket套接字通訊流程:建立socket——>(bind)繫結ip/埠——>新增監聽(listen)——>接收(receive)——>傳送(send)

C 多型常見面試問題

答 多型,通俗來說,就是多種形態,具體點就是去完成某個行為,當不同的物件去完成時會產生出不同的狀態。其中多型又分為動態多型和靜態多型。靜態多型 在程式編譯期間確定了程式的行為。動態多型 在程式執行期間,根據具體拿到的物件確定程式的具體行為,呼叫具體的函式 答 過載 指函式名相同,返回值可以不同,但形...

SVM常見面試問題

答 幾何間隔與樣本的誤分次數間存在關係 其中的分母就是樣本到分類間隔距離,分子中的r是所有樣本中的最長向量值 答 會,超平面會靠近樣本少的類別。因為使用的是軟間隔分類,而如果對所有類別都是使用同樣的懲罰係數,則由於優化目標裡面有最小化懲罰量,所以靠近少數樣本時,其懲罰量會少一些。比如 假設理想的分隔...

SpringMVC 常見面試問題

springmvc流程 原理 流程圖 亂碼問題 重定向和 在返回值前面加 redirect 或 forward return forward 跳轉的頁面或路由 重定向和 的區別 全域性異常 自定義實現spring的全域性異常解析器handlerexceptionresolver springboot...