上海某國(guó)企社招的.NET面試題,給開8K值嗎?
????今天我要分享的是某上海國(guó)企社招的.NET面試題。這些面試題目由網(wǎng)友提供,主要包括筆試題和操作題。還是先列出面試題目,大家先試做一下,然后再看后面答案。
試題
1、請(qǐng)解釋什么是面向?qū)ο缶幊蹋∣OP)?
2、請(qǐng)解釋程序的基本結(jié)構(gòu)是什么,并簡(jiǎn)要描述每個(gè)組成部分的作用。
3、列舉并解釋幾個(gè)C#中常用的修飾符。
4、請(qǐng)說明接口和抽象類之間的區(qū)別,并提供一個(gè)使用場(chǎng)景示例。
5、請(qǐng)列舉并解釋.NET Core和.NET Framework之間的區(qū)別。
6、Program.cs中builder.Services和var app = builder.Build()的app有什么用?
7、在.NET Core中,中間件是什么?請(qǐng)解釋它們?cè)谡?qǐng)求處理過程中的作用。
8、在ASP.NET Core中,如何將服務(wù)依賴注入到控制器中?
9、在.NET Core中,有哪幾種服務(wù)生命周期?請(qǐng)簡(jiǎn)要描述每個(gè)生命周期的特點(diǎn)。
10、Cookies和Session有什么區(qū)別?請(qǐng)解釋它們?cè)赪eb開發(fā)中的不同用途。
操作題:
11、請(qǐng)用代碼反轉(zhuǎn)這個(gè)字符串:string strTmp= "槽跳發(fā)開TENTOD";
12、請(qǐng)用C#代碼計(jì)算某年某月的最后一天是幾號(hào)號(hào)?比如今年二月
解答
1、請(qǐng)解釋什么是面向?qū)ο缶幊蹋∣OP)?
答:面向?qū)ο缶幊蹋∣OP)是一種編程范式,它將程序設(shè)計(jì)組織為一組對(duì)象,這些對(duì)象通過相互之間的交互來完成任務(wù)。OOP的核心思想是將現(xiàn)實(shí)世界中的事物抽象為對(duì)象,每個(gè)對(duì)象都具有狀態(tài)(屬性)和行為(方法),并且可以通過封裝、繼承和多態(tài)來實(shí)現(xiàn)代碼的模塊化、重用性和可擴(kuò)展性。這是比較官方的說法,大家可以用自己的理解回答。
詳解--> 面試必備:聊聊面向?qū)ο笕筇卣?/span>
2、請(qǐng)解釋程序的基本結(jié)構(gòu)是什么,并簡(jiǎn)要描述每個(gè)組成部分的作用。
答:命名空間(Namespace):組織和管理相關(guān)的類和類型。
類(Class):用于定義對(duì)象的屬性和方法。
方法(Method):用于定義類中的行為和操作。
變量(Variable):用于存儲(chǔ)和操作數(shù)據(jù)。
語句(Statement):用于控制程序的執(zhí)行流程。
表達(dá)式(Expression):用于計(jì)算和生成值。
注釋(Comment):用于解釋和說明代碼的作用和用途。
這是道基礎(chǔ)題,如果長(zhǎng)時(shí)間不面試可能會(huì)蒙。
3、列舉并解釋幾個(gè)C#中常用的修飾符。
答:
public:公共修飾符,表示可以從任何位置訪問。
private:私有修飾符,表示只能在當(dāng)前類內(nèi)部訪問。
protected:受保護(hù)修飾符,表示只能在當(dāng)前類及其派生類內(nèi)部訪問。
internal:內(nèi)部修飾符,表示只能在當(dāng)前程序集內(nèi)部訪問。
protected internal:受保護(hù)的內(nèi)部修飾符,表示只能在當(dāng)前程序集內(nèi)部和派生類內(nèi)部訪問。
現(xiàn)在最新版的還有file修飾符,如果能回答出來是加分項(xiàng)
詳解-->面試必備:聊聊C#中public、private、protected、internal訪問修飾符作用范圍?
4、請(qǐng)說明接口和抽象類之間的區(qū)別,并提供一個(gè)使用場(chǎng)景示例。
答:
接口定義了一組公共的方法和屬性,但不能包含實(shí)現(xiàn)代碼。類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,從而獲得接口定義的行為。
抽象類是一個(gè)可以包含實(shí)現(xiàn)代碼和抽象成員的類。抽象類可以被繼承,子類可以實(shí)現(xiàn)抽象成員并提供具體的實(shí)現(xiàn)。
使用場(chǎng)景示例:
接口通常用于定義約定和合同,使不同的類能夠以一致的方式進(jìn)行交互。例如,一個(gè)日志記錄接口定義了寫日志的方法,多個(gè)類可以實(shí)現(xiàn)這個(gè)接口來提供不同的日志記錄實(shí)現(xiàn)。
抽象類通常用于作為具有共同特征的類的基類,提供通用的實(shí)現(xiàn)和行為。子類可以繼承抽象類并擴(kuò)展或覆蓋其中的方法。例如,一個(gè)動(dòng)物抽象類可以定義一個(gè)通用的“移動(dòng)”方法,而子類如狗、貓、鳥等可以具體實(shí)現(xiàn)各自的移動(dòng)方式。
-->c#中抽象類(abstract)和接口(interface)的相同點(diǎn)與區(qū)別
5、請(qǐng)列舉并解釋.NET Core和.NET Framework之間的區(qū)別。
答:
.NET Core是一個(gè)跨平臺(tái)的開源框架,支持在Windows、macOS和Linux等多個(gè)操作系統(tǒng)上運(yùn)行。它更加輕量級(jí)、模塊化,并且可以選擇性地引用和使用所需的組件。
.NET Framework是一個(gè)面向Windows操作系統(tǒng)的框架,主要用于Windows應(yīng)用程序開發(fā)。它包含了大量的類庫和功能,適用于各種類型的應(yīng)用程序開發(fā)。
詳解--> .Net Core、 .Net FrameWork和 .Net 5對(duì)比
6、Program.cs中builder.Services和var app = builder.Build()的app有什么用?
答:在Program.cs中,builder.Services 是用于配置和注冊(cè)依賴注入的服務(wù)容器,通過該容器可以向應(yīng)用程序添加各種服務(wù)。而 var app = builder.Build() 是用于構(gòu)建 WebHost 或 Host 對(duì)象,它代表整個(gè)應(yīng)用程序的主機(jī)。
7、在.NET Core中,中間件是什么?請(qǐng)解釋它們?cè)谡?qǐng)求處理過程中的作用。
答:在.NET Core中,中間件是一種組件,用于處理HTTP請(qǐng)求和響應(yīng)。中間件在請(qǐng)求管道中按順序執(zhí)行,并可以修改或處理請(qǐng)求和響應(yīng)。它們提供了一種靈活的方式來處理各種功能,例如日志記錄、身份驗(yàn)證、路由等。
在請(qǐng)求處理過程中,中間件可以執(zhí)行以下操作:
接收并處理傳入的HTTP請(qǐng)求。
調(diào)用下一個(gè)中間件或終止請(qǐng)求處理。
修改請(qǐng)求或響應(yīng)的內(nèi)容。
執(zhí)行任意自定義邏輯。
更多面試題-->必考的ASP.NET Core的中間件面試題
8、在ASP.NET Core中,如何將服務(wù)依賴注入到控制器中?
答:默認(rèn)在ASP.NET Core中,可以通過構(gòu)造函數(shù)注入(Constructor Injection)的方式將服務(wù)依賴注入到控制器中。通過第三方注入組件可以使用接口注入和屬性注入。
public class MyController : Controller
{
????private?readonly?IMyService?_myService;
public MyController(IMyService myService)
{
_myService = myService;
????}
// ...
}
詳解-->
面試疑問:.NET Core依賴注入有三種方式是真的嗎?
9、在.NET Core中,有哪幾種服務(wù)生命周期?請(qǐng)簡(jiǎn)要描述每個(gè)生命周期的特點(diǎn)。
答:
Singleton:服務(wù)在應(yīng)用程序的整個(gè)生命周期中只會(huì)創(chuàng)建一個(gè)實(shí)例,每次請(qǐng)求都會(huì)使用同一個(gè)實(shí)例。
Scoped:服務(wù)在每個(gè)請(qǐng)求過程中創(chuàng)建一個(gè)實(shí)例,同一個(gè)請(qǐng)求內(nèi)的不同組件將共享同一個(gè)實(shí)例。
Transient:每次請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的實(shí)例,每次請(qǐng)求都使用不同的實(shí)例。
10、Cookies和Session有什么區(qū)別?請(qǐng)解釋它們?cè)赪eb開發(fā)中的不同用途。
答:
Cookies是在客戶端(瀏覽器)上存儲(chǔ)數(shù)據(jù)的小型文件。它們可以通過瀏覽器自動(dòng)發(fā)送到服務(wù)器,用于識(shí)別和跟蹤用戶會(huì)話。
Session是在服務(wù)器端存儲(chǔ)用戶狀態(tài)的機(jī)制,可以存儲(chǔ)和檢索用戶特定的數(shù)據(jù)。它使用一個(gè)唯一的會(huì)話標(biāo)識(shí)符(Session ID)來跟蹤用戶的會(huì)話狀態(tài)。
主要區(qū)別如下:
存儲(chǔ)位置:Cookies存儲(chǔ)在客戶端,Session存儲(chǔ)在服務(wù)器端。
大小限制:Cookies的大小通常受到瀏覽器和服務(wù)器的限制,而Session的大小限制一般由服務(wù)器配置確定。
安全性:Cookies存儲(chǔ)在客戶端,可能會(huì)受到篡改和竊取的風(fēng)險(xiǎn)。而Session存儲(chǔ)在服務(wù)器端,相對(duì)更安全。
數(shù)據(jù)存儲(chǔ):Cookies可以存儲(chǔ)簡(jiǎn)單的鍵值對(duì)數(shù)據(jù),而Session可以存儲(chǔ)更復(fù)雜的對(duì)象和數(shù)據(jù)結(jié)構(gòu)。
這道題是比較老的題了,現(xiàn)在都用token了。但是也必須會(huì)啊。
詳解-->傻傻分不清之 Cookie、Session、Token、JWT
操作題:
11、請(qǐng)用代碼反轉(zhuǎn)這個(gè)字符串:string strTmp= "槽跳發(fā)開TENTOD";
代碼如下:
string strTmp = "槽跳發(fā)開TENTOD";
char[] charArray = strTmp.ToCharArray();
Array.Reverse(charArray);
string reversedStr = new string(charArray);
Console.WriteLine(reversedStr);
//輸出結(jié)果為:DOTNET開發(fā)跳槽
還可以用循環(huán)反轉(zhuǎn)字符串的方式,代碼如下:
string strTmp = "槽跳發(fā)開TENTOD";
char[] charArray = strTmp.ToCharArray();
int left = 0;
int right = charArray.Length - 1;
while (left < right)
{
// 交換左右兩個(gè)字符
char temp = charArray[left];
charArray[left] = charArray[right];
charArray[right] = temp;
// 移動(dòng)左右指針
left++;
right--;
}
string reversedStr = new string(charArray);
Console.WriteLine(reversedStr);
12、請(qǐng)用C#如何獲得下個(gè)月的第一天和最后一天的日期?
DateTime currentDate = DateTime.Now;
DateTime firstDayOfNextMonth = new DateTime(currentDate.Year, currentDate.Month, 1).AddMonths(1);
DateTime lastDayOfNextMonth = firstDayOfNextMonth.AddMonths(1).AddDays(-1);
Console.WriteLine("下個(gè)月的第一天:" + firstDayOfNextMonth.ToShortDateString());
Console.WriteLine("下個(gè)月的最后一天:" + lastDayOfNextMonth.ToShortDateString());
這是個(gè)基礎(chǔ)題。
結(jié)語
????是不是覺得特別的簡(jiǎn)單,這是比較基礎(chǔ)的.NET面試題,適合初級(jí)的.NET工程師。這個(gè)網(wǎng)友通過了面試,但是對(duì)方只能給8K,他工作經(jīng)驗(yàn)3年,大家說怎么樣?可以去嗎?小編覺得如果圖穩(wěn)定可以去,畢竟是國(guó)企。希望本次的面試題能給大家的面試有所幫助,對(duì)于以上面試題你有什么看法歡迎大家留言討論。
版權(quán)聲明:本文來源于網(wǎng)友收集或網(wǎng)友供稿,僅供學(xué)習(xí)交流之用,如果有侵權(quán),請(qǐng)轉(zhuǎn)告小編或者留言,本公眾號(hào)立即刪除。
支持小薇
關(guān)注公眾號(hào)↑↑↑:DotNet開發(fā)跳槽?????
點(diǎn) 分 享

點(diǎn) 收 藏

點(diǎn) 點(diǎn) 贊
點(diǎn)在看
