33條C#、.Net經典面試題目及答案

?  1, 請你說說.NET中類和結構的區別?

  答:結構和類具有大體的語法,但是結構受到的限制比類要多。結構不能申明有默認的構造函數,為結構的副本是又編譯器創建和銷毀的,所以不需要默認的構造函數和析構函數。結構是值類型,所以對結構變量所做的改變不會影響其的原值,而類是應用類型,改變其變量的值會改變其原值。申明結構用Struck關鍵字,申明類用class關鍵字,向方法傳遞結構是時是通過值傳遞的,而不是通過引用。與類不同,結構的實例化可以不使用New關鍵字。類可以實現接口。

?

  2, 死鎖的必要條件?怎么克服?

  答:系統的資源不足,進程的推進的順序不合適,資源分配不當,一個資源每次只能被一個進程使用,一個資源請求資源時,而此時這個資源已阻塞,對已獲得資源不放,進程獲得資源時,未使用完前,不能強行剝奪。

? ? ? ?備注:?死鎖的表現為閉環的狀態依賴,簡單的說就是A等待B的狀態為B1時才會將狀態設為A1,而B等待A的狀態為A1的時候才會將狀態設為B1.出現這種邏輯一般是在多線程編程,而且多線程公用同一資源的時候。一下的例子里面就是典型的死鎖,主線程等待ResourceFlag2然后設置ResourceFlag1,輔助線程等待ResourceFlag1然后設置ResourceFlag2.

?

  3, 接口是否可以繼承接口?抽象類是否可以實現接口?抽象類是否可以繼承實體類?

  答:接口是可以繼承接口的,抽象類是可以實現接口的,抽象類可以繼承實體類,但是有個條件,條件是,實體類必須要有明確的構造函數。

?

  4, 構造器Constructor是否可以被繼承?是否可以被Override?

  答:Constructor不可以被繼承,因此不能被重寫(Overriding),但可以被重載(Overloading).

?

  5, 當一個線程進入一個對象的方法后,其它線程是否可以進入該對象的方法?

  答:不可以,一個對象的方法只能由一個線程訪問。

?

  6, 用最有效的方法算出等已8對于幾?

  答:2<<3. ?2的二進制表示為:00?10,2<<表示把2左移三位,也就是把1左移三位成:10?00,而10?00的轉換成十進制后即是8

?

  7, C#是否可以對內存直接進行操作?

  答:這個問題比較難回答,也是個很大的問題。但是可以這樣問答。C#是可以對內存進行直接操作的,雖然很少用到指針,但是C#是可以使用指針的,在用的時候需要在前邊加unsafe,,在.net中使用了垃圾回收機制(GC)功能,它替代了程序員,不過在C#中不可以直接使用finalize方法,而是在析構函數中調用基類的finalize()方法。

?

  8, Error和Exception有是區別?

  答:error表示恢復不是不可能,但是很困難,exception表示一種實際或實現問題,它表示程序運行正常不可以發生的。

?

  9, 談談final,finally,finallize的區別?

  答:final用于申明屬性,方法和類,表示屬性不可變,方法不可以被覆蓋,類不可以被繼承。

  Finally是異常處理語句結構中,表示總是執行的部分。

  Finallize表示是object類一個方法,在垃圾回收機制中執行的時候會被調用被回收對象的方法。

?

  10, HashMap和Hashtable區別?

  答:HashMap是Hashtable的輕量級實現,非線程安全的實現他們都實現了map接口,主要區別是HashMap鍵值可以為空null,效率可以高于Hashtable。

?

  11,Collection和Collections的區別?

  答:Collection是集合類的上級接口,Collections是針對集合類的一個幫助類,它提供一系列靜態方法來實現對各種集合的搜索,排序,線程安全化操作。

?

  12,C#中委托是什么?事件是不是一種委托?

  答:委托是一種安全的類似與函數指針,但是她比指針要安全的多,它可以把方法作為一個參數傳遞給另一個方法,可以理解為指向函數的引用。事件是一種消息機制,它是一種委托,委托不帶方法體。

?

  13,Override, Overload,的區別?

  答:Override是重寫的意思,它表示重寫基類的方法,而且方法的名稱,返回類型,參數類型,參數個數要與基類相同。

  Overload是重載是意思,它也表示重寫基類的方法,但是只要方法名相同,別的可以不同。

?

  14,在一個BS結構中需要傳遞變量值時,不能使用session,coolke,application,你有幾中方法?

  答:this.server.Transfer,Querystring.

?

  15, C#種索引器實現過程,是否只能根據數字索引?

  答:不是的,可以是任意類型。

?

  16,New有種用法?

  答:有3種,第一種是,實例化如:New Class()

  第二種是,public new 隱藏基類的方法

  第三種是,在泛型類申明中的任何類型參數都必須有公共的無參構造函數。

?

  17,任何把一個Array復制到Arraylist中?

  答:Foreach (object o in Array), ArrayList.Add (0)

  等有好多中種方法。自己想。

?

? ? ?18,概述反射和序列化?

  答:反射:要給發射下一個定義還是比較難的,這里先說說我的理解。反射提供了封裝程序集,模塊和類型對象,可以用反射動態地創建類型的實例,將類型綁定到現有對象,或者從現有對象類型里獲取類型,然后調用類型的方法或訪問字段和屬性。

  序列化:將對象轉換為另一種媒介傳輸的格式過程。如,序列化一個對象,用Http通過internet在客戶端和服務器之間傳遞該對象,在另一端用反序列化從該流中重新得到對象。

?

  19,Const和ReadOnly?

  答:Const用來申明編程時申明常量,ReadOnly用來申明運行時常量。

?

  20,UDP和TCP連接有和異同?

  答:TCP是傳輸控制協議,提供的是面向連接的,是可靠的,字節流服務,當用戶和服務器彼此進行數據交互的時候,必須在他們數據交互前要進行TCP連接之后才能傳輸數據。TCP提供超時重撥,檢驗數據功能。UDP是用戶數據報協議,是一個簡單的面向數據報的傳輸協議,是不可靠的連接。

?

  21,進程和線程分別該怎么理解?

  答:進程是比線程大的程序運行單元,都是由操作系統所體會的系統運行單元,一個程序中至少要有一個進程,有一個進程中,至少要有一個線程,線程的劃分尺度要比進程要小,進程擁有獨立的內存單元,線程是共享內存,從而極大的提高了程序的運行效率同一個進程中的多個線程可以并發執行。

?

  22,ASP.NET頁面之間傳遞值的幾種方式?

?

  答:QueryString,session,cookies,application,server.Transfer,respose.redictor.

?

  23. 什么叫應用程序域?什么是托管代碼?什么是強類型系統?什么是裝箱和拆箱?什么是重載?CTS、CLS和CLR分別作何解釋?

  答:應用程序域:就是為安全性,可靠性,隔離性,和版本控制,及卸載程序提供的隔離邊界。它通常由運行庫宿主創建,應用程序域提供了一個更安全,用途更廣的處理單元。

  托管代碼:使用CLR編譯語言編輯器開發編寫的代碼就叫托管代碼。

  裝箱和拆箱:是把值類型轉換為引用類型的過程,是隱式的,相反的過程就是拆箱,是顯式的。

  CTS是公共類型系統,CLS是公共語言規范,CLR公共語言運行庫。

  強類型系統:每個變量和對象都必須具有申明類型。

?

  24. 值類型和引用類型的區別?

  答:值類型的值是存放在堆棧中的,改變其值,不改變變量原有的值,而引用類型的值是存放在棧中的,其引用的地址是存放在堆棧中的,改變其值也就改變了變量原有的值。值類型不允許包含null值,然而可空類型可以將null賦值給值類型l。

  

? ? ? ?25. ASP.net的身份驗證方式有哪些?

  答:windows,forms,passport

?

  26. 解釋一下UDDI、WSDL的意義及其作用?

  答:UDDI是統一描述集成協議,是一套基于Web的,分布式的,為WEB服務提供的信息注冊的實現標準規范,同時為也是為企業本身提供的Web服務注冊以讓別的企業能夠發現并訪問的協議標準。提供了基于標準的規范,用于描述和發現服務,還提供了一組基于因特網的實現。

  WSDL這是一個基于XML的描述WEB服務的接口。

?

  27. 什么是SOAP?

  答:是簡單訪問協議。是在分布式環境中,交換信息并實現遠程調用的協議。是一個基于XML的協議。使用SOAP,可以不考慮任何傳輸協議,但通常還是HTTP協議,可以允許任何類型的對象或代碼,在任何平臺上,以任一種語言相互通信。它是一種輕量級協議。

?

  28. 如何部署一個ASP.net頁面?

  答:vs2003,vs2005里邊都有發表機制,vs2003可以發布然后在復制部署。

  Vs2005可以直接部署到對應的位置。

?

  29. 如何理解.net中的垃圾回收機制?

  答:.NET中的垃圾回收機制是引用程序對內存的回收和釋放。當每次用new關鍵字創建一個對象時,運行庫都要從托管堆中為其分配內存,因為空間是有限的,最終垃圾回收機制是要回收不用的內存的。已釋放內存,重新使用。

  

? ? ? 30. 面向對象的三大基本原則?

  答:封裝,繼承,多態。

 

?  ?31. 在.NET中所有類的基類是?

  答:object。

  

? ? ? 32. 能用foreach遍歷訪問的對象需要實現?

  答:需要實現IEnumerable接口和GetEnumerator ()方法。

?

  33. Heap與stack的差別?

  答:Heap是堆,空間是由手動操作分配和釋放的,它的存儲區很大的自由存儲區。

  Stack是棧,是由是操作系統自動分配和釋放的,棧上的空間是有限的。程序在編譯期間變量和函數分配內存都是在棧上進行的,且在運行時函數調用時的參數的傳遞也是在棧上進行的。

轉載于:https://www.cnblogs.com/yechangzhong-826217795/p/7110224.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392226.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392226.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392226.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pb 放棄數據窗口所做修改_為什么我放棄在線數據課程進行基于項目的學習

pb 放棄數據窗口所做修改by Josh Temple通過喬什坦普爾 為什么我放棄在線數據課程進行基于項目的學習 (Why I abandoned online data courses for project-based learning) 如何通過處理有趣的項目來發展基本數據技能 (How to develop essential data skills by tackling inte…

數字濾波器的matlab 與fpga實現,1 數字濾波器的MATLAB與FPGA實現——杜勇(配套光盤) 程序源碼 - 下載 - 搜珍網...

壓縮包 : f3d09239c2bf5ce6f06578c866ff06.rar 列表Chapter_3/E3_1/incremental_db/compiled_partitions/SymbExam.db_infoChapter_3/E3_1/incremental_db/READMEChapter_3/E3_1/simulation/modelsim/modelsim.iniChapter_3/E3_1/simulation/modelsim/msim_transcriptChapter_3…

Office 365 系列之九:配置和體驗 Exchange 和 Lync

在之前的篇章中&#xff0c;我們已經安裝好 Office 365 Pro Plus 和通過 O365 訂閱激活了。接下來我們來看看具體怎么配置和使用 Exchange 和 Skype, 這部分內容對于學習過 Exchange Server 2016 和 Skype For Business 2015 的同學來說就很簡單了。通過 OWA 訪問 Exchange 對于…

leetcode 1631. 最小體力消耗路徑(并查集)

你準備參加一場遠足活動。給你一個二維 rows x columns 的地圖 heights &#xff0c;其中 heights[row][col] 表示格子 (row, col) 的高度。一開始你在最左上角的格子 (0, 0) &#xff0c;且你希望去最右下角的格子 (rows-1, columns-1) &#xff08;注意下標從 0 開始編號&…

netflix_Netflix的Polynote

netflixNetflix open source Polynote is a new notebook environment and was born out of the necessity to accelerate data science experimentation at Netflix.Netflix開源Polynote是一種新的筆記本環境&#xff0c;其誕生是出于加速Netflix數據科學實驗的需要。 Over t…

Django-內置用戶系統

Django自帶的用戶認證 我們在開發一個網站的時候&#xff0c;無可避免的需要設計實現網站的用戶系統。此時我們需要實現包括 1.用戶注冊 2.用戶登錄 3.用戶認證 4.注銷 5.修改密碼 Django作為一個完美主義者的終極框架&#xff0c;當然也會想到用戶的這些痛點。它內置了強大的用…

React 與 可視化

一般會想到 canvas 和 svg ; svg更適合畫圖, 但由于cavans在移動端的良好兼容性, 使用的更廣; 什么是svg, scalable vector graphics 全稱 可縮放矢量圖形, 是一種來描述二維矢量圖形的xml語言 canvas 能做的 svg基本都可以做, 字體圖標, icon, logo 也能作 在ie上也是從ie9開…

css 跳動的心_如何用純CSS為您的情人打造一顆跳動的心

css 跳動的心Each year on February 14th, many people exchange cards, candies, gifts or flowers with their special “valentine”. The day of romance we call Valentine’s Day is named for a Christian martyr and dates back to the 5th century, but has origins i…

oracle怎么獲取行,在oracle中如何實現SELECT TOP N取得前幾行記錄

在sql server中可以通過SELECT TOP N來取得想要結果的前幾行的信息。但是在oracle中必須借助偽列rownum來完成一個查詢語句在取得結果集后&#xff0c;偽列rownum就會從1開始&#xff0c;從上往下依次遞增。rownum是對結果集的編序排列。例如下表&#xff1a;SQL> select id…

圖片管理程序(Java)

圖片管理程序 gitee完整代碼下載 github完整代碼下載 華南農業大學課程設計作品&#xff08;99分&#xff09; 問題描述 題目目的是編寫一個能夠對數字像片進行管理的應用程序。 程序能夠顯示的圖片格式包括,.JPG、.JPEG、.GIF、.PNG、和.BMP。 圖像文件尺寸,要求能夠處理從…

氣流與路易吉,阿戈,MLFlow,KubeFlow

任務編排工具和工作流程 (Task orchestration tools and workflows) Recently there’s been an explosion of new tools for orchestrating task- and data workflows (sometimes referred to as “MLOps”). The quantity of these tools can make it hard to choose which o…

移動WEB開發之JS內置touch事件[轉]

iOS上的Safari也支持click 和mouseover等傳統的交互事件&#xff0c;只是不推薦在iOS的瀏覽器應用上使用click和mouseover&#xff0c;因為這兩個事件是為了支持鼠標點擊而設計 出來的。Click事件在iOS上會有半秒左右的延遲&#xff0c;原因是iOS要highlight接收到click的eleme…

編寫代碼的軟件用什么編寫的_如何通過像編寫代碼一樣克服對編寫的恐懼

編寫代碼的軟件用什么編寫的by Chris Rowe通過克里斯羅 How often do you get the fear? What do I mean by fear? How about the knot I got in my stomach just before I plunged out of plane on a parachute jump? It’s more than the brain logically planning to av…

快速學習一個新的模塊

1、模塊名.__doc__查看函數簡介&#xff0c;為了便于查看&#xff0c;采用print&#xff08;模塊名.__doc__&#xff09;打印出來&#xff0c;這樣的格式便于查看。 2、采用內置方法dir()查看模塊的變量、函數、類等等&#xff1b;采用"模塊名.__all__"查看模塊中提供…

php 公鑰格式轉換,如何把OpenSSH公鑰轉換成OpenSSL格式

《如何把OpenSSH公鑰轉換成OpenSSL格式》要點&#xff1a;本文介紹了如何把OpenSSH公鑰轉換成OpenSSL格式&#xff0c;希望對您有用。如果有疑問&#xff0c;可以聯系我們。首先看看OpenSSL工具的簡單使用方法,我們以rsa加密算法為例生成一個私鑰&#xff1a;openssl genrsa -o…

模擬操作系統(Java)

gitee完整代碼下載 github完整代碼下載 一、 需求分析 模擬一個采用多道程序設計方法的單用戶操作系統&#xff0c;該操作系統包括進程管理、存儲管理、設備管理、文件管理和用戶接口四部分。預計程序所能達到的功能&#xff1a; 進程管理模擬&#xff1a;實現操作系統進程管…

數據庫面試復習_數據科學面試復習

數據庫面試復習大面試前先刷新 (REFRESH BEFORE THE BIG INTERVIEW) 介紹 (Introduction) I crafted this study guide from multiple sources to make it as comprehensive as possible. This guide helped me prepare for both the technical and behavioral aspects of the …

hibernate緩存

&#xff08;轉自&#xff1a;http://www.cnblogs.com/java-class/p/6108175.html&#xff09; 閱讀目錄 1. 為什么要用 Hibernate 緩存&#xff1f;2. 項目實戰3. Hibernate 緩存原理回到頂部1. 為什么要用 Hibernate 緩存&#xff1f; Hibernate是一個持久層框架&#xff0c;…

oracle 連接greenplum,Oracle通過DBLINK訪問GreenPlum

為多個數據庫之間的整合和遷移做POC&#xff0c;嘗試使用Oracle Gateway和Heterogeneous Service來中轉訪問&#xff0c;測試過好多次&#xff0c;最終發現只有在32位的Oracle當中才能成功配置。 配置環境如下&#xff1a; Windows 2003 32bit 或 Windows 2008 64bit Oracle10G…

如何使用React和Redux前端創建Rails項目

by Mark Hopson馬克霍普森(Mark Hopson) 如何使用React和Redux前端(加上Typescript&#xff01;)創建Rails項目 (How to create a Rails project with a React and Redux front-end (plus Typescript!)) 在Rails項目中使用React和Redux設置單頁Javascript App的完整指南。 (A …