.NET筆試題集(四)

來源:互聯網
上載者:User

標籤:項目   error   類中訪問   區別   部署   狀態   toolbar   預存程序   query   

 

1、請你簡單的說明資料庫建立索引的優缺點

使用索引可以加快資料的查詢速度,不過由於資料插入過程中會建索引,所以會降低資料的插入、更新速度,索引還會佔磁碟空間。

 

2、什麼是WEB服務控制項?使用WEB服務控制項有那些優勢、劣勢?

web服務控制項就是可以在伺服器執行的控制項,優勢在於可以回傳資料(ViewState),帶有事件驅動(doPostBack),簡化了Html標籤的使用,使得開發ASP.net程式可以像開發Winform程式一樣簡單。Web服務控制項最終還是被渲染(Render)為Html標籤。使用WEB服務控制項的劣勢是會產生一些無用的屬性、ViewState等,不利於SEO,一般在內網系統或者互連網系統的後台中使用WEB服務控制項。如果沒有複雜的伺服器互動動作,就不用Web伺服器控制項。runat=server的HTML控制項有什麼特點:路徑不用程式員解析,可以使用“~”來虛擬路徑。

 

3、下面程式的執行結果是什嗎?

int i = 10;if (i <=0);Console.WriteLine("i必須大於0");Console.WriteLine("ok");

答案:

i必須大於0

ok

解答:注意if (i <=0)後面的“;”,由於有了“;”,所以Console.WriteLine("i必須大於0")不再是和if一起的一部分,而是獨立的語句。for迴圈也是如此。

 

4、下面程式的執行結果是什嗎?

static void Main(string[] args){    Console.WriteLine(Calc());    Console.ReadKey();}static int Calc(){    int i = 0;    try    {        return i;    }    finally    {        Console.WriteLine("finally");        i++;    }}

答案:

finally

0

解答:return先執行,finally後執行,所以return的值是沒有i++之前的0。注意並不是return的時候函數真的就“返回、執行結束”了,return只是標記函數的傳回值是0,標記完了還會執行finally中的代碼,只有finally中的代碼執行完成後函數才真正的返回。

 

 5、在下述選項時,沒有構成死迴圈的程式是 (C)

A.int i=100;while (1) { i=i%100+1; if (i>100) break; }

B.for (;;);

C.int k=1000; do { ++k; }while(k>=10000);

D.int s=36; while (s);--s;

 

6、下列哪個是和資料庫訪問技術關係不大的技術(C)

A、SQLHelper

B、EnterPrise Library

C、AppDomain

D、Linq

 

7、下列哪些說法是錯誤的(AC)

A、將bmp格式的檔案修改為jpg是修改圖片格式最簡單的方法

B、將QQ動態表情顯示在網頁上用gif格式比較好

C、將bmp格式的圖片放到網頁中可以最佳化網站速度

D、png格式用在網頁中可以實現透明的效果。

答案:A、C。A錯誤是因為修改檔案的尾碼並沒有真的修改檔案的格式,要使用Photoshop、mspaint等圖片處理工具進行轉換才可以。C錯誤是因為在網頁中不能使用bmp圖片。

 

8、從以下簡寫中任選一個簡單描述

OA(Office Automation):辦公自動化

MIS(Managment Information system):管理資訊系統

HRM(Human Resource Managment):人力資源管理,包括員工管理、薪資管理、入職管理、離職管理、報銷管理、請假管理等

CRM(Customer Relation Managment):客戶關係管理系統,包括客戶管理、客戶關懷、客戶回訪、投訴管理、諮詢管理、報修管理等

KM(Knowledge Managment):知識管理

 

9、下面程式的執行結果是什嗎?

public struct Point{    public int x;    public int y;    public Point(int x, int y)    {        this.x = x;        this.y = y;    }}Point p1 = new Point(100, 100);Point p2 = p1;p1.x = 200;Console.WriteLine("{0},{1}", p1.x, p2.x);

答案:

200,100

解答:結構體是複製傳遞的。

 

10、開放式問題:如果程式連不上SQLServer資料庫伺服器伺服器,你會怎麼排除這個故障?

參考解答:首先ping一下伺服器IP,看是否能夠ping通,如果不能ping通,則看是否網路有問題;如果能ping通,再telnet一下伺服器的1433連接埠,看是否能夠連通;如果不能連通則可能是SQLServer服務停掉了或者是伺服器上的防火牆封掉了1433連接埠;如果能連通再檢查是不是本地程式的問題、驅動的問題。

 

11、Http狀態代碼各是什麼意思。

301 :重新導向

404 :頁面不錯在

500:伺服器內部錯誤

 

12、MVC模式的優缺點

MVC(Model-View-Controller)把互動系統的組成分解成模型、視圖、控制器三種組件

mvc的優點:

1.通過把項目分成model view和controller,使得複雜項目更加容易維護。

2.沒有使用view state和伺服器表單控制項,可以更方便的控制應用程式的行為

3.應用程式通過controller來控製程序請求,可以提供豐富的url重寫。

4.對單元測試的支援更加出色

5.在團隊開發模式下表現更出眾

MVC的不足: 

(1)增加了系統結構和實現的複雜性。對於簡單的介面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的複雜性,並可能產生過多的更新操作,降低運行效率。    
(2)視圖與控制器間的過於緊密的串連。視圖與控制器是相互分離,但確實聯絡緊密的組件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。    
(3)視圖對模型資料的低效率訪問。依據模型操作介面的不同,視圖可能需要多次調用才能獲得足夠的顯示資料。對未變化資料的不必要的頻繁訪問,也將損害操作效能。

 

13、什麼是Viewstate?它有什麼作用?

ViewState用來儲存頁面狀態,就是說提交之後我們還可以看到文字框裡面的內容就是ViewState儲存的功勞。 

ViewState只維護當前頁面的狀態,不同頁面之間不能共用,Session可以。 

ViewState你可以理解為一個隱藏控制項。

 

14、ASP.Net頁面生命週期簡單描述

每個頁面的生命週期為使用者的每一次訪問,也就是說每一次用戶端與伺服器之間的一個往返過程.全域變數的生命週期在此之間.

1. Page_Init(); 
2. Load ViewState and Postback data; 
3. Page_Load(); 
4. Handle control events; 
5. Page_PreRender(); 
6. Page_Render(); 
7. Unload event; 
8. Dispose method called;

 

15、預存程序和sql語句的優缺點

優點: 
1.提高效能,減少網路傳輸,節約時間 。

2.減少網路流量    預存程序位於伺服器上,調用的時候只須傳遞預存程序的名稱以及參數,不用每次訪問都傳遞很長的sql 語句。

4.安全性     減少sql 注入式攻擊。

5.可維護性高    更新預存程序通常比更改、測試以及重新部署程式集需要較少的時間和精力。

缺點:

1.互動性差 。

2.可移植性差

 

16、什麼時候使用抽象類別,什麼時候用介面 

介面用於規範,抽象類別用於共性。

介面中只能聲明方法,屬性,事件,索引器。而抽象類別中可以有方法的實現,也可以定義非靜態類變數。抽象類別是類,所以只能被單繼承,但是介面卻可以一次實現多個。抽象類別可以提供某些方法的部分實現,介面不可以.抽象類別的執行個體是它的子類給出的。介面的執行個體是實現介面的類給出的。再抽象類別中加入一個方法,那麼它的子類就同時有了這個方法。而在介面中加入新的方法,那麼實現它的類就要重新編寫(這就是為什麼說介面是一個類的規範了)。介面成員被定義為公用的,但抽象類別的成員也可以是私人的、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程式的代碼或衍生類別中訪問)。此外介面不能包含欄位、建構函式、解構函式、靜態成員或常量。

 

17、C#中的堆和棧

棧(Stack)由系統管理生存期,儲存代碼執行和調用路徑,執行或調用完畢即從棧中清除。
堆(Heap)中儲存值和對象,調用完畢之後依然存在,由記憶體回收行程尋找棧中有無指向該值或對象的引用,無則從堆中刪除。

 

18、C# ref與out區別: 

1、使用ref型參數時,傳入的參數必須先被初始化。對out而言,必須在方法中對其完成初始化。

2、使用ref和out時,在方法的參數和執行方法時,都要加Ref或Out關鍵字。以滿足匹配。

3、out適合用在需要retrun多個傳回值的地方,而ref則用在需要被調用的方法修改調用者的引用的時候。

 

19、你對泛型瞭解嗎?簡單說明一下泛型的有什麼好處?

泛型:通過參數化型別來實現在同一份代碼上操作多種資料類型。利用“參數化型別”將類型抽象化,從而實現靈活的複用 
好處是——型別安全和減少裝箱、拆箱。提高效能、型別安全和品質,減少重複性的編程任務 

 

20、new有幾種用法 

第一種:執行個體化對象,new Class();

第二種:覆蓋基類方法,public new XXXX(){}

第三種:new 約束指定泛型類聲明中的任何型別參數都必須有公用的無參數建構函式。

 

21、Session有什麼重大BUG,微軟提出了什麼方法加以解決? 

答:iis中由於有進程回收機制,系統繁忙的話Session會丟失,可以用Sate server或SQL Server資料庫的方式儲存Session不過這種方式比較慢,而且無法捕獲Session的END事件 

 

22、<%# %> 和 <% %> 有什麼區別?

<%# %>表示繫結資料源 <% %>是伺服器端代碼塊 常量

 

23、DateTime.Parse(myString); 這行代碼有什麼問題?

有問題,當myString不能滿足時間格式要求的時候,會引發異常,建議使用DateTime.TryParse() 

 

24、為什麼不提倡catch(Exception) ,catch(Exception e){throw e;}和catch(Exception e){throw;}的區別,error和exception區別

try..catch在出現異常的時候影響效能; 應該捕獲更具體得異常,比如IOExeception,OutOfMemoryException等 

第一個將發生的異常對象拋出,另一個只是拋出異常,並沒有拋出原異常對象

error 表示恢複不是不可能但很困難的情況下的一種嚴重問題。比如說記憶體溢出。不可能指望程式能處理這樣的情況。

exception 表示一種設計或實現問題。也就是說,它表示如果程式運行正常,從不會發生的情況。

 

25、GET與POST的區別 

在FORM提交的時候,如果不指定Method,則預設為GET請求,Form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣發送,但空格轉換為“+“號,其它符號轉換為%XX,其中X

為該符號以16進位表示的ASCII(或ISO Latin-1)值。GET請求請提交的資料放置在HTTP請求協議頭中,而POST提交的資料則放在實體資料中;

在使用 POST 方法的情況下,傳輸資料時不會將資料作為 URL 的一部分;它們會作為一個獨立的實體來傳輸。因此,POST 方法更安全,你也可以用這個方法傳輸更多的資料。而且用 POST 傳輸的數

據不一定要是文本,用 GET 方法傳輸的卻一定要是文本。

(1)get是從伺服器上擷取資料,post是向伺服器傳送資料。

(2)在用戶端,Get方式在通過URL提交資料,資料在URL中可以看到;POST方式,資料放置在HTML HEADER內提交。

(3)對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料。

(4)GET方式提交的資料最多隻能有1024位元組,而POST則沒有此限制。

(5)安全性問題。正如在(1)中提到,使用 Get 的時候,參數會顯示在地址欄上,而 Post 不會。所以,如果這些資料是中文資料而且是非敏感性資料,那麼使用 get;如果使用者輸入的資料不是中文字元而且包含敏感性資料,那麼還是使用 post為好。

 

26、Bind和Eval函數的區別

綁定運算式 <%# Eval("欄位名") %> <%# Bind("欄位名") %> 

1. Eval 單向綁定:資料是唯讀 
    Bind 雙向繫結:資料可以更改,並返回伺服器端,伺服器可以處理更改後的資料,如存入資料庫. 
2.當對次運算式操作時候,必須用Eval 如<%# Eval("欄位名").ToString().Trim() %> 
3. 繫結控制項的屬性時要用Bind,而Eval則是其它一些。 例如

<asp:TextBox ID="First" RunAt="Server" Text=‘<%# Bind("FirstName") %>‘ /> <td><%# Eval("ProductID") %></td>

 

27、Server.UrlEncode、HttpUtility.UrlDecode的區別 

Server.UrlEncode的編碼方式是按照本地程式設定的編碼方式進行編碼的,HttpUtility.UrlEncode是預設的按照.net的utf-8格式進行編碼的。

 

28、如何?串連池

確保你每一次的串連使用相同的連接字串(和串連池相同);只有連接字串相同時串連池才會工作。如果連接字串不相同,應用程式就不會使用串連池而是建立一個新的串連。

優點

使用串連池的最主要的優點是效能。建立一個新的資料庫連接所耗費的時間主要取決於網路的速度以及應用程式和資料庫伺服器的(網路)距離,而且這個過程通常是一個很耗時的過程。而採用資料庫連接池後,資料庫連接請求可以直接通過串連池滿足而不需要為該請求重新串連、認證到資料庫伺服器,這樣就節省了時間。

缺點

資料庫連接池中可能存在著多個沒有被使用的串連一直串連著資料庫(這意味著資源的浪費)。

技巧和提示

1.當你需要資料庫連接時才去建立串連池,而不是提前建立。一旦你使用完串連立即關閉它,不要等到垃圾收集器來處理它。

2.在關閉資料庫連接前確保關閉了所有使用者定義的事務。

3.不要關閉資料庫中所有的串連,至少保證串連池中有一個串連可用。如果記憶體和其他資源是你必須首先考慮的問題,可以關閉所有的串連,然後在下一個請求到來時建立串連池。

 

29、提高.NET的效能 

1 使用非同步方式調用Web服務和遠程對象

只要有可能就要避免在請求的處理過程中對Web服務和遠程對象的同步調用,因為它佔用的是的ASP.NET 線程池中的背景工作執行緒,這將直接影響Web伺服器響應其它請求的能力。

2 使用適當的Caching策略來提高效能

3 判斷字串,不要用""比較。

//避免 
if(strABC!=null && strABC!="") 
{}

//推薦 
if(!strABC.IsNullOrEmpty) 
{}

4 頁面最佳化

5 用完馬上關閉資料庫連接 

6 盡量使用預存程序,並最佳化查詢語句 

7 唯讀資料訪問用SqlDataReader,不要使用DataSet

……….

 

30、簡述你對XML Web Service的原理的認識? 

答:利用SOAP(簡易物件存取通訊協定 (SOAP))在http上執行遠程方法的調用,也可以使用WSDL(Web服務描述語言)來完成完整的描述Web服務,然後用UDDI註冊各個服務提供者提供的服務,以便共用他們。

.NET筆試題集(四)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.