標籤:資訊 soap協議 服務端 成本 framework 名稱 重要 不同 簡化
1、傳入某個屬性的set方法的隱含參數的名稱是什嗎?
value,它的類型和屬性所聲名的類型相同。
2、C#支援多重繼承嗎?
類之間不支援,介面之間支援。類對介面叫做實現,不叫繼承。
3、C#中所有對象共同的基類是什嗎?
System.Object
4、通過超連結怎樣傳遞中文參數?
答:用URL編碼,通過QueryString傳遞,用urlencode編碼 用urldecode解碼。
5、string、String;int、Int32;Boolean、bool的區別
String、Int32、Boolean等都屬於.Net中定義的類,而string、int、bool相當於C#中對這些類定義的別名。CTS。
6、Server.Transfer和Response.Redirect的區別是什嗎?
答: Server.Transfer僅是伺服器中控制權的轉向,在用戶端瀏覽器地址欄中不會顯示出轉向後的地址;Response.Redirect則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求連結。這樣,從瀏覽器的地址欄中可以看到跳轉後的連結地址。
Server.Transfer是伺服器請求資源,伺服器直接存取目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道伺服器發送的內容是從哪兒來的,所以它的地址欄中還是原來的地址。 這個過程中瀏覽器和Web伺服器之間經過了一次互動。
Response.Redirect就是服務端根據邏輯,發送一個狀態代碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數重新請求。這個過程中瀏覽器和Web伺服器之間經過了兩次互動。
7、不是說字串是不可變的嗎?string s="abc";s="123"不就是變了嗎?
String是不可變的在這段代碼中,s原先指向一個String對象,內容是 "abc",然後我們將s指向"123",那麼s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另一個 String對象,內容為"123",原來那個對象還存在於記憶體之中,只是s這個引用變數不再指向它了。
8、是否可以從一個static方法內部發出對非static方法的調用?
不可以。因為非static方法是要與對象關聯在一起的,必須建立一個對象後,才可以在該對象上進行方法調用,而static方法調用時不需要建立對象,可以直接調用。也就是說,當一個static方法被調用時,可能還沒有建立任何執行個體對象,如果從一個static方法中發出對非static方法的調用,那個非static方法是關聯到哪個對象上的呢?這個邏輯無法成立,所以,一個static方法內部不能發出對非static方法的調用。
9、.Net中會存在記憶體流失嗎,請簡單描述。
所謂記憶體泄露就是指一個不再被程式使用的對象或變數一直被佔據在記憶體中。.Net中有記憶體回收機制,它可以保證一對象不再被引用的時候,即對象變成了孤兒的時候,對象將自動被記憶體回收行程從記憶體中清除掉。雖然.Net可以回收無用的對象,但是.Net仍然存在由於使用不當導致的記憶體泄露問題。.Net中的記憶體泄露的情況:長生命週期的對象持有短生命週期對象的引用就很可能發生記憶體泄露,儘管短生命週期對象已經不再需要,但是因為長生命週期對象持有它的引用而導致不能被回收,這就是.Net中記憶體泄露的發生情境,通俗地說,就是程式員可能建立了一個對象,以後一直不再使用這個對象,這個對象卻一直被引用,即這個對象無用但是卻無法被記憶體回收行程回收的,這就是.Net中可能出現記憶體泄露的情況,例如,緩衝系統,我們載入了一個對象放在緩衝中(例如放在一個全域Dictionary對象中),然後一直不再使用它,這個對象一直被緩衝引用,但卻不再被使用。擴充:使用弱引用那麼即使被引用也可以被回收。
10、說出一些常用的類、介面,請各舉5個
常用的類:StreamReader、WebClient、Dictionary<K,V>、StringBuilder、SqlConnection、FileStream、File、Regex、List<T>
常用的介面:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary
11、BS與CS的聯絡與區別。
C/S是Client/Server的縮寫。用戶端需要安裝專用的用戶端軟體。
B/S是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器。在這種結構下,使用者介面完全通過WWW瀏覽器實現,一部分事務邏輯在前端實現,但是主要邏輯在伺服器端實現。瀏覽器通過Web Server 同資料庫進行資料互動。
C/S 與 B/S 區別:
1).硬體環境不同:
C/S 一般建立在專用的網路上, 小範圍裡的網路環境, 區域網路之間再通過專門伺服器提供串連和資料交換服務.
B/S 建立在廣域網路之上的, 不必是專門的網路硬體環境,例與電話上網, 租用裝置. 資訊自己管理. 有比C/S更強的適應範圍, 一般只要有作業系統和瀏覽器就行
2).對安全要求不同
C/S 一般面向相對固定的使用者群, 對資訊安全的控制能力很強. 一般高度機密的資訊系統採用C/S 結構適宜. 可以通過B/S發布部分可公開資訊.
B/S 建立在廣域網路之上, 對安全的控制能力相對弱, 可能面向不可知的使用者。
3).處理問題不同
C/S 程式可以處理使用者面固定, 並且在相同地區, 安全要求高需求, 與作業系統相關. 應該都是相同的系統。C/S的用戶端由於是本地程式,因此和本地硬體、程式的互動性很強,比如可以控制原生其他程式、可以讀寫本地磁碟檔案、可以與硬體互動。
B/S 建立在廣域網路上, 面向不同的使用者群, 分散地區, 這是C/S無法作到的. 與作業系統平台關係最小,正應為如此B/S很難和本地硬體、程式、檔案進行互動,比如很難控制原生其他程式、很難讀寫本地磁碟檔案、很難與硬體互動,當然可以用ActiveX技術解決,比如網銀等就是這麼解決的,這樣做的問題就是可能會被客戶拒絕,而且只局限於Windows作業系統。
C/S也分為兩層架構和三層架構。兩層架構:用戶端程式程式直連資料庫;三層架構:用戶端訪問服務端的服務,主要邏輯代碼寫在服務端的服務中,然後服務端服務再去訪問資料庫,Oracle版分布式話務中心,WCF。
12、編寫一個單例(Singleton)類。
public FileManager{ private FileManager(){} public static FileManager Instance = new FileManager();}
13、什麼是sql注入?如何避免sql注入?
使用者根據系統的程式構造非法的參數從而導致程式執行不是程式員期望的惡意SQL語句。使用參數化的SQL就可以避免SQL注入。使用參數化Paramter
1‘ or 1=1
14、說出一些資料庫最佳化方面的經驗?
索引內部原理:想象成Dictionary,插入、刪除、更新的速度慢了,加上索引也多佔用了空間,查詢的速度快了。加上索引以後速度提升非常明顯。
(1)在經常檢索的欄位上(select * from Person where [email protected])使用索引提高查詢速度。
(2)select中只列出必要的欄位,而不是*。
(3)避免隱式類型轉換造成的全表掃描,在索引上使用函數也會造成全表掃描(因為索引只是為欄位建立的,一旦使用運算式或者函數,那麼索引就是失效了,當然也可以使用“函數索引”、“運算式索引”解決這個問題),使用索引不一定能提高查詢速度。
(4)避免在索引列上使用計算(where Name+‘A‘[email protected])
15、談談ViewState。談談對ASP.Net原理的理解。談談ASP.Net生命週期。
Label、Textbox在禁用ViewState的時候自增的不同表現
Http是無狀態的,WebForm為了實現基於http的“有狀態”從而簡化開發,ViewState用來在兩次請求間保持狀態。頁面返回前將介面的狀態序列化到ViewState中,這樣就將狀態儲存在了瀏覽器中,下次頁面提交的時候會順便再將ViewState提交到伺服器,這樣伺服器就根據ViewState還原了狀態,這樣WebForm開發就像有狀態一樣了。談談自訂AutoInc控制項。
16、post、get的區別
get的參數會顯示在瀏覽器地址欄中,而post的參數不會顯示在瀏覽器地址欄中;
使用post提交的頁面在點擊【重新整理】按鈕的時候瀏覽器一般會提示“是否重新提交”,而get則不會;
用get的頁面可以被搜尋引擎抓取,而用post的則不可以;
用post可以提交的資料量非常大,而用get可以提交的資料量則非常小(2k),受限於網頁地址的長度。
用post可以進行檔案的提交,而用get則不可以。
17、Http預設的連接埠號碼是(80)、Ftp預設的連接埠號碼是(21)、SQLServer的預設連接埠號碼是(1433)
18、運算子++a表示(先將a加1,然後運算式的值為a加1後的值),a++表示(運算式的值為a,然後a加1)。
19、下面程式的執行結果是什嗎?
int i = 10;Console.WriteLine(i++);Console.WriteLine(++i);Console.WriteLine(i=20);
答案:
10
12
20
20、如果不用VisualStudio,用哪個命令列編譯C#程式?
答:csc.exe。
21、下列哪個名詞和WebService不直接相關?(B)
A、UDDI
B、GUID
C、WSDL
D、SOAP
SOAP和HTTP的關係:SOAP基於Http協議的,和普通網頁不同的是網頁返回HTML,SOAP則是符合SOAP協議的XML資料。
22、.Net Framework中的類是專門供C#調用的是嗎?
答:錯。VB.Net等語言都可以調用.Net Framework中的類。CTS、CLS。
23、開放性問題:說出儘可能多的基於.Net Framework的語言。
參考解答:C#、VB.Net、F#、PowerShell、IronPython、J#、Ruby.Net
24、.Net、ASP.Net、C#、VisualStudio之間的關係是什嗎?
答:.Net一般指的是.Net Framework,提供了基礎的.Net類,這些類可以被任何一種.Net程式設計語言調用,.Net Framework還提供了CLR、JIT、GC等基礎功能。
ASP.Net是.Net中用來進行Web開發的一種技術,ASP.Net的頁面部分寫在aspx 檔案中,邏輯代碼通常通過Code-behind的方式用C#、VB.Net等支援.Net的語言編寫。
C#是使用最廣泛的支援.Net的程式設計語言。除了C#還有VB.Net、IronPython等。
VisualStudio是微軟提供的用來進行.Net開發的整合式開發環境(IDE),使用VisualStudio可以簡化很多工作,不用程式員直接調用csc.exe等命令列進行程式的編譯,而且VisualStudio提供了代碼自動完成、代碼高亮等功能方便開發。除了VisualStudio,還有SharpDevelop、MonoDevelop等免費、開源的IDE,VisualStudio Express版這個免費版本。
25、AJAX解決什麼問題?如何使用AJAX?AJAX有什麼問題需要注意?項目中哪裡用到了AJAX?
答:AJAX解決的問題就是“無重新整理更新頁面”,用傳統的HTML表單方式進行頁面的更新時,每次都要將請求提交到伺服器,伺服器返回後再重繪介面,這樣介面就會經曆:提交→變白→重新顯示這樣一個過程,使用者體驗非常差,使用AJAX則不會導致頁面重新提交、重新整理。
AJAX最本質的實現是在Javascript中使用XMLHttpRequest進行Http的請求,開發中通常使用UpdatePanel、JQuery等方式簡化AJAX的開發,UpdatePanel的方式實現AJAX最簡單,但是資料通訊量比較大,因為要來回傳整個ViewState,而且不靈活,對於複雜的需求則可以使用JQuery提供的ajax功能。
UpdatePanel的內部原理。
AJAX最重要的問題是無法跨域請求(www.rupeng.com →so.rupeng.com),也就是無法在頁面中向和當前網域名稱不同的頁面發送請求,可以使用在當前頁面所在的域的服務端做代理頁面的方式解決。
26、NET通過對各語言先編譯成( IL),然後再執行時用( JIT)將其編譯成本地平台代碼,來實現異構平台下對象的互操作。
27、Application 、Cookie和 Session 兩種會話有什麼不同?
答:Application是用來存取整個網站全域的資訊,而Session是用來存取與具體某個訪問者關聯的資訊。
28、開放式問題:你經常訪問的技術類的網站是什嗎?
部落格園(www.cnblogs.com)、csdn、codeplex、codeproject、msdn文檔、msdn論壇
29、你對.net的GC的理解
GC是.Net的垃圾收集器,可以進行記憶體資源的回收,程式員無需關心資源的回收,當一個對象沒有任何引用的時候就可以被回收了。一個對象可以被回收並不意味著一定會被立即回收,GC會選擇時機進行回收。可以調用GC.Collect()讓GC立即回收。GC不能回收非託管資源,對於非託管資源一般都實現了IDisposable介面,然後使用using關鍵字進行資源的回收。
30、請寫一個SQL語句:從user表中取出name列中的起始字元是“北京”的全部記錄
select * from [user] wherer name like‘北京%‘
.NET筆試題集(三)