『壹』 .net面試問題
當然亮點是別人不會的,你會了,並使得項目更高效,樓主應該多了解一下更版高的技術,做權這一行的,天天都在學習。
我是做B/S的,以前做項目會根據需求分析來做相應的功能。比如在做功能大的CMS和商城系統的時候,我會用到ajax+ashx做無刷新分頁和評論,MVC+三層,存儲過程,緩存,URL重寫,頁面靜態化。比如,在做到ajax別人用到了MS的updatapanel會導致頁面樣式丟失,ajax功能失效,我們可以通過單步調試理解代碼執行過程,通過httpwatch深刻理解請求與響應的過程,這樣就很容易找到問題所在。當然也要對底層要理解,像我做的B/S里就要求深刻理解頁面的生命周期。通過Reflector這個反編譯工具你會找到很多底層的代碼。
面試嘛,一定要能侃,當然技術是來不了半點含糊的。誇誇其談不是沒有的,多看一些技術文章,到博客園看看你感興趣的文章,一般就會侃了。嘿嘿~其實我沒做過大項目……
『貳』 .net找工作要不要背面試題,兩年.NET開發經驗
我覺得要背。
你不知道你會碰到一個什麼樣的HR,所以多做准備也是好的。
還有就專是面試題一般來說會更屬基礎性,多做一點題的話能夠找到自己平時做項目時沒搞懂的東西。
項目不就是那樣,很多東西你會用,但不見得了解技術核心。
還有,面試題得分高的話,起碼會給你更大的被錄用的概率吧。
祝好運。
『叄』 軟體工程設計師 C#、ASP.NET開發面試一般都會筆試和面試哪些題目,謝謝
#, ASP.NET筆試題(1)
1. 簡述 private、 protected、 public、 internal 修飾符的訪問許可權
答:
private : 私有成員, 在類的內部才可以訪問。
protected : 保護成員,該類內部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內可以訪問。
2. 列舉ASP.NET頁面之間傳遞值的幾種方式
答:
(1) 使用QueryString, 如....?id=1; response. Redirect()....
(2) 使用Session變數
(3) 使用Server.Transfer
3. 一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第30位數是多少,用遞歸演算法實現
答:
public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if (i > 0 && i <= 2)
return 1;
else return Foo(i - 1) + Foo(i - 2);
}
}
4. C#中的委託是什麼?事件是不是一種委託?
答:委託可以把一個方法作為參數代入另一個方法。委託可以理解為指向一個函數的引用。事件是一種特殊的委託
5. override與重載的區別
答:
override與重載的區別重載是方法的名稱相同。參數或參數類型不同,進行多次重載以適應不同的需要
Override是進行基類中函數的重寫。為了適應需要。
6. 如果在一個B/S結構的系統中需要傳遞變數值,但是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
答:this.Server.Transfer
7. 請編程遍歷頁面上所有TextBox控制項並給它賦值為string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;
tb.Text = String.Empty ;
}
}
8. 請編程實現一個冒泡排序演算法?
答:
int [] array = new int;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i];
array[i] = array[j];
array[j] = temp ;
}
}
}
9. 描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
答:不是。可以用任意類型。
10. 求以下表達式的值,寫出您想到的一種或幾種實現方法:1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString();
int Sum = 0;
for (int i = 0; i < Num + 1; i++)
{
if ((i % 2) == 1)
{
Sum += i;
}
else
{
Sum = Sum - I;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine();
11. 用.net做B/S結構的系統,您是用幾層結構來開發,每一層之間的關系以及為什麼要這樣分層?
答:一般為3層。數據訪問層,業務層,表示層。數據訪問層對資料庫進行增刪查改。業務層一般分為二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。表示層為了與用戶交互例如用戶添加表單。
優點: 分工明確,條理清晰,易於調試,而且具有可擴展性。
缺點: 增加成本。
12. 在下面的例子里
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields()
{
}
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
當使用new B()創建B的實例時,產生什麼輸出?
答:X=1,Y=0; x=1 y=-1
13. 什麼叫應用程序域?
答:應用程序域可以理解為一種輕量級進程。起到安全的作用。佔用資源小。
14. CTS、CLS、CLR分別作何解釋?
答:CTS:通用語言系統。CLS:通用語言規范。CLR:公共語言運行庫。
15. 什麼是裝箱和拆箱?
答:從值類型介面轉換到引用類型裝箱。從引用類型轉換到值類型拆箱。
16. 什麼是受管制的代碼?
答:unsafe:非託管代碼。不經過CLR運行。
17. 什麼是強類型系統?
答:RTTI:類型識別系統。
18. .net中讀寫資料庫需要用到那些類?他們的作用?
答:DataSet:數據存儲器。
DataCommand:執行語句命令。
DataAdapter:數據的集合,用語填充。
19. ASP.net的身份驗證方式有哪些?分別是什麼原理?
答:10。Windwos(默認)用IIS...From(窗體)用帳戶....Passport(密鑰)
20. 什麼是Code-Behind技術?
答:代碼後植。
21. 在.net中,配件的意思是?
答:程序集。(中間語言,源數據,資源,裝配清單)
22. 常用的調用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜單選項
23. .net Remoting 的工作原理是什麼?
答:伺服器端向客戶端發送一個進程編號,一個程序域編號,以確定對象的位置。
24. 在C#中,string str = null 與 string str = " " 請盡量使用文字或圖象說明其中的區別
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度為空字元串的內存空間。
25. 請詳述在dotnet中類(class)與結構(struct)的異同?
答:Class可以被實例化,屬於引用類型,是分配在內存的堆上的,Struct屬於值類型,是分配在內存的棧上的.
(1)、結構是值類型;
(2)、結構不支持繼承;
(3)、結構不能定義默認的構造函數;
(4)、結構不能定義析構函數;
(5)、結構不能使用初始值設置域值
26. 根據委託(delegate)的知識,請完成以下用戶控制項中代碼片段的填寫:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//請在以下補齊代碼用來調用OnDBOperate委託簽名的OnNew事件。
}
}
}
}
答:if( OnNew != null ) OnNew(this, e);
27. 分析以下代碼,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i=______ j=______
答:i=13,j=10
28. SQLSERVER伺服器中,給定表 table1 中有兩個欄位 ID、LastUpdateDate,ID表示更新的事務號,LastUpdateDate表示更新時的伺服器時間,請使用一句SQL語句獲得最後更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
29. 根據線程安全的相關知識,分析以下代碼,當調用test方法時i>10時是否會引起死鎖?並簡要說明理由。
public void test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現死鎖。但如果把int換做一個object,那麼死鎖會發生)
30. 簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。
答:WS主要是可利用HTTP,穿透防火牆。而Remoting可以利用TCP/IP,二進制傳送提高效率。
31. 公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到以下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如DataGrid相似)。根據您的知識,請簡要談一下您的思路
答:根據點擊的列頭,包該列的ID取出,按照該ID排序後,在給綁定到ListView中。
32. 給定以下XML文件,完成演算法流程圖
<FileSystem>
<DriverC>
<Dir DirName="MSDOS622">
<File FileName ="Command.com"></File>
</Dir>
<File FileName ="MSDOS.SYS"></File>
<File FileName ="IO.SYS"></File>
</DriverC>
</FileSystem>
請畫出遍歷所有文件名(FileName)流程圖(請使用遞歸演算法)。
答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
33. 寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增長的ID作為主鍵,注意:ID可能不是連續的。
答:解1: select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
34. 面向對象的語言具有_______性、________性、_______性
答:封裝、繼承、多態。
35. 能用foreach遍歷訪問的對象需要實現 ____________介面或聲明____________方法的類型。
答:IEnumerable 、 GetEnumerator。
36. GC是什麼? 為什麼要有GC?
答:GC是垃圾收集器。程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一: System.gc() Runtime.getRuntime().gc()
37. String s = new String("xyz");創建了幾個String Object?
答:兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象s。
38. abstract class和interface有什麼區別?
答:
聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變數,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。
介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程序體。介面只可以定義static final成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程序體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何對象上調用介面的方法。由於有抽象類,它允許使用介面名作為引用變數的類型。通常的動態聯編將生效。引用可以轉換到介面類型或從介面類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了介面。
39. 啟動一個線程是用run()還是start()?
答:啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味著它可以由JVM調度並執行。這並不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。
40. 介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?
答:介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
41. 構造器Constructor是否可被override?
答:構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
42. 是否可以繼承String類?
答:String類是final類故不可以繼承。
43. try{ }里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行,什麼時候被執行,在return前還是後?
答:會執行,在return前執行。
44. 兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
答:不對,有相同的hash code。
45. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。
47. 當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
48. abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
答:都不能。
49. List, Set, Map是否繼承自Collection介面?
答:List,Set是Map不是
50. Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
答:Set里的元素是不能重復的,那麼用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。
51. 數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法。
52. sleep() 和 wait() 有什麼區別?
答:sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿後,線程不一定立即恢復執行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)「醒來」的線程具有更高的優先順序
(b)正在運行的線程因為其它原因而阻塞。
wait()是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
54. 談談final, finally, finalize的區別
答:
final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此 一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,可以保證它們在使用中 不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為 final的方法也同樣只能使用,不能重載
finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會 執行,然後控制就會進入 finally 塊(如果有的話)。
finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理 工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的 ,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
55. 如何處理幾十萬條並發數據?
答:用存儲過程或事務。取得最大標識的時候同時更新..注意主鍵不是自增量方式這種方法並發的時候是不會有重復主鍵的..取得最大標識要有一個存儲過程來獲取.
56. Session有什麼重大BUG,微軟提出了什麼方法加以解決?
答:是iis中由於有進程回收機制,系統繁忙的話Session會丟失,可以用Sate server或SQL Server資料庫的方式存儲Session不過這種方式比較慢,而且無法捕獲Session的END事件。
57. 進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程可以有多個線程,這些線程共享這個進程的資源。線程(Thread)與進程(Process)二者都定義了某種邊界,不同的是進程定義的是應用程序與應用程序之間的邊界,不同的進程之間不能共享代碼和數據空間,而線程定義的是代碼執行堆棧和執行上下文的邊界。一個進程可以包括若干個線程,同時創建多個線程來完成某項任務,便是多線程。而同一進程中的不同線程共享代碼和數據空間。用一個比喻來說,如果一個家庭代表一個進程,在家庭內部,各個成員就是線程,家庭中的每個成員都有義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也可以派出幾個成員來協同完成,而家庭之外的人則沒有辦法直接消費不屬於自己家庭的財產。
58. 堆和棧的區別?
答:棧:由編譯器自動分配、釋放。在函數體中定義的變數通常在棧上。
堆:一般由程序員分配釋放。用new、malloc等分配內存函數分配得到的就是在堆上。
59. 成員變數和成員函數前加static的作用?
答:它們被稱為常成員變數和常成員函數,又稱為類成員變數和類成員函數。分別用來反映類的狀態。比如類成員變數可以用來統計類實例的數量,類成員函數負責這種統計的動作。
60. ASP.NET與ASP相比,主要有哪些進步?
答:asp解釋形,aspx編譯型,性能提高,有利於保護源碼。
『肆』 幫忙給弄一些asp.net工程師面試時的筆試題。謝謝
1、簡述private,protected,public,internal修飾符的訪問許可權
1.private私有的,public公共的,protected受保護的
internal內部許可權的
private : 私有成員, 在類的內部才可以訪問。
protected : 保護成員,該類內部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內可以訪問。
2.請編程遍歷頁面上所有TextBox控制項並給它賦值為stringEmpty
前台的代碼:
foreach (Control txtobj in this.Page.Controls)
{
if (txtobj.GetType().Name == "TextBox")
{
// ((TextBox)txtobj).Text = "";//這是第一種方法賦值,第二種在下面
TextBox tb = new TextBox();
tb = (TextBox)this.FindControl(txtobj.ID); nbsp;
tb.Text = string.Empty;
}
後台代碼:
foreach(Control ctl in this.Controls)
{
if(ctl is TextBox){
(ctl as TextBox).Text = string.Empty;
}}
}
4.ASP.net的身份驗證方法有哪些?分別是什麼原因?
1、 Windows 身份驗證提供程序
提供有關怎麼將 Windows 身份驗證與 Microsoft Internet 信息服務 (IIS) 身份驗證結合用來確保 ASP.NET 應用程序安全的信息。
2、 Forms 身份驗證提供程序
提供有關怎麼用您自己的代碼創建應用程序特定的登陸窗體並執行身份驗證的信息。用 Forms 身份驗證的一種簡便方法是用 ASP.NET 成員資格和 ASP.NET 登陸控制項,它們一起提供了一種只需少量或無需代碼就可以收集、驗證和管理用戶憑據的方法。有關更多信息,請
參見用成員資格管理用戶和 ASP.NET 登陸控制項概述。
3、 Passport 身份驗證提供程序
提供有關由 Microsoft 提供的集中身份驗證服務的信息,該服務為成員站點提供單一登陸和核心配置文件服務。
5.在C#中string str=null 與string str=「」請盡量使用文字說明其中的區別
string str=null;不會開辟內存給str,string str="";會開辟一塊內存,值為空字元串
6.try{}里有一個return語句,那麼緊跟在這個try後的finaliy{}里的code會不會被執行,什麼時候被執行。在return前還是後?
finally()代碼塊 無論什麼情況都會被執行,在return之後。
下面是個測試程序public class FinallyTest {
public static void main(String[] args) {
System.out.println(new FinallyTest().test()); }
static int test() {
int x = 1;
try{
x++;
return x;
}finally{
++x;
} }}
肯定執行了你在finally里加一條輸出語句你就知道了但結果為什麼會是2呢?在try語句中,在執行return語句時,要返回的結果已經准備好了,
就在此時,程序轉到finally執行了。在轉去之前,try中先把要返回的結果存放到不同於a的局部變數中去,
執行完finally之後,在從中取出返回結果,因此,即使finally中對變數a進行了改變,但是不會影響返回結果。
它應該使用棧保存返回值。
7.ASP.NET與ASP相比,主要有哪些進步?
1.網頁內容與程序代碼分離2.多語言支持3.執行效率更高4.面向對象的特性5.運行在.net平台上
8.請說明在.net中常用的幾種頁面間傳遞參數的方法。並說出他們的優缺點。
QueryString此方法的優點是簡單、方便,缺點是能傳遞的數據量少,而且不能傳遞對象。
Session該 方 法 的 特點是 :
(1)用戶數據存儲在伺服器端;
(2)ASP.NET 中的Session 對象也可以不依賴Cookie 而正常工作;
(3)可以直接存儲對象,且無大小限制;
(4)有效期與用戶的活動時間有關,具體為用戶活動時間+自定義延遲時間。該方法的缺點是:由於Web 應用程序對每個用戶都會生成 Session 變數,因此它會隨著用戶數量的增多而加重伺服器的負擔。如果數據量比較小,Sessionss 對象是保存只需要在當前對話中保持
的特定數據的極好位置。
cookie該方法的缺點是:並非所有的瀏覽器都支持Cookie;用戶可以禁用和刪除它;信息採用明文保存,安全性差。當特定的用戶需要特定的數據片,並且需要把數據在某個可變的時段中保持的時候,Cookie 就非常方便,存在於客戶端,不佔用伺服器資源。
static靜態變數,可能直接通類名來調用,優點是如果善加利用,則可以有效提高數據傳遞效率,缺點是如果濫用,則會導致用戶或頁面間數據紊亂,造成極大的隱患。
9.DataReader與Dataset有什麼區別?
dataset表示一個數據集,是數據在內存中的緩存。 可以包括多個表
DatSet 連接資料庫時是非面向連接的。把表全部讀到Sql中的緩沖池,並斷開於資料庫的連接
datareader 連接資料庫時是面向連接的。讀表時,只能向前讀取,讀完數據後有用戶決定是否斷開連接。
10.什麼叫做SQL注入,在.net 中如何防止?請舉例說明
sql注入大都是SQL語法里的一些組合,通過執行SQL語句進而執行攻擊者所要的操作,其主要原因是程序沒有細致地過濾用戶輸入的數據,致使非法數據侵入系統。
.net中可以使用帶參數的sql語句或者直接調用存儲過程可以有效的防止sql注入攻擊
還可以對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;對單引號和
雙"-"進行轉換等。
『伍』 .NET面試技術問題
40 post能得到的數據比來get要大
39 靜態源
38,34 string 不可改變大小,BUFFER可以,
buffer 提供的方法少很多,但是絕對高效,對多字串操作請用BUFFER
35,5, 三個區別。構造函數有區別,struct是值類型,CLASS是引用類型,類可以繼承,結構不可以
33 重載看參數個數和參數類型
28 2個
29 object 重載同時存在,覆寫舊的那個就沒了。
21 委託是方法的簽名,事件是一種多播委託
26 所有子類中可訪問
7 虛擬
『陸』 好心人 提供一份用友net軟體工程師的筆試、面試題
用友筆試題目NET面試題專欄 (部分)
用友, 筆試, NET, 專欄, 題目
1、 面向對象的語言具有___封裝__性、___繼承__性、___多態_性。
2、 能用foreach遍歷訪問的對象需要實現 __ IEnumerable __介面或聲明__GetEnumerator __方法的類型。
3、 以下敘述正確的是:
A. 介面中可以有虛方法。 B. 一個類可以實現多個介面。
C. 介面不能被實例化。 D. 介面中可以包含已實現的方法。
4、 簡述 private、 protected、 public、 internal 修飾符的訪問許可權。
Private 私有成員:只有本類內部可以訪問
Protected 受保護成員:只有本類和本類的子類可以訪問
Public 公有成員:完全公開,沒有訪問限制
Internal :在同一命名空間下可以訪問
5、寫出一條Sql語句: 取出表A中第31到第40記錄(SQLServer, 以自動增長的ID作為主鍵, 注意:ID可能不是連續的。)
select top 10 * from A where id not in (select top 30 id from A)
5、 DataReader與DataSet有什麼區別?
(1)、dataset表示一個數據集,是數據在內存中的緩存。 可以包括多個表;
(2)、dataset連接資料庫時是非面向連接的。把表全部讀到Sql中的緩沖池,並斷開於資料庫的連接
(3)、datareader 連接資料庫時是面向連接的。讀表時,只能向前讀取,讀完數據後有用戶決定是否斷開連接。
6、 簡述什麼是裝箱?
把一個值類型的數據轉換為引用類型的數據的過程叫裝箱。
7、 下列選項中,(c)是引用類型。
a) enum類型 b) struct類型
c) string類型 d) int類型
8、 一個資料庫中的一個表中有 year 、salary這兩個欄位,原表中數據如原表,請用SQL查詢出結果顯示的數據:
原表中數據:
year salary
—————————————–
2000 1000
2001 2000
2002 3000
2003 4000
結果表中數據:
year salary
——————————————
2000 1000
2001 3000
2002 6000
2003 10000
寫出SQL語句如下:
create table test([year] int ,salary int)
insert test(year,salary) values(2000,1000)
insert test(year,salary) values(2001,2000)
insert test(year,salary) values(2002,3000)
insert test(year,salary) values(2003,4000)
select t1.year, (select sum(salary) from test as t2 where t2.year<=t1.year) as salary from test t1 order by year asc
9、運行下列代碼:
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields(){}
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
}
public override void PrintFields()
{
Console.WriteLine(」x={0},y={1}」, x, y);
}
}
new B()時,輸出的結果是:x=?;y=?
x=1;y=0
10、用C#寫出singleton(單例)模式的例子?
<一>、我對單例模式的理解說明如下:
單例模式的意圖是:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
它的工作原理是:用一個特殊的方法來實例化所需的對象。其中最關鍵的就是這個特殊的方法:
(1)、調用這個方法時,檢查對象是否已經實例化。如果已經實例化,該方法僅返回對該對象的一個引用。如果尚未實例化,該方法就實例化該對象並返回對此新實例的一個引用。
(2)、為了確保這是實例化此類型對象的唯一方法,我將這個類的構造函數定義為保護的或者私有的。
<二>、詳細實例如下:
using System;
class Singleton
{
private static Singleton instance;
protected Singleton() {}
public static Singleton Instance()
{
if( instance == null )
instance = new Singleton();
return instance;
}
}
public class Client
{
public static void Main()
{
Singleton s1 = Singleton.Instance();
Singleton s2 = Singleton.Instance();
if( s1 == s2 )
Console.WriteLine( 「The same instance」 );
}
}
『柒』 .net 面試題目
1, 請你說說.NET中類和結構的區別? 答:結構和類具有大體的語法,但是結構受到的限制比類要多。結構不能申明有默認的構造函數,為 結構的副本是又編譯器創建和銷毀的,所以不需要默認的構造函數和析構函數。結構是值類型,所以對結 構變數所做的改變不會影響其的原值,而類是應用類型,改變其變數的值會改變其原值。申明結構用 Struck關鍵字,申明類用class關鍵字,向方法傳遞結構是時是通過值傳遞的,而不是通過引用。與類不同 ,結構的實例化可以不使用New關鍵字。類可以實現介面。 2, 死鎖的必要條件?怎麼克服? 答:系統的資源不足,進程的推進的順序不合適,資源分配不當,一個資源每次只能被一個進程使用 ,一個資源請求資源時,而此時這個資源已阻塞,對已獲得資源不放,進程獲得資源時,未使用完前,不 能強行剝奪。 3, 介面是否可以繼承介面?抽象類是否可以實現介面?抽象類是否可以繼承實體類? 答:介面是可以繼承介面的,抽象類是可以實現介面的,抽象類可以繼承實體類,但是有個條件,條 件是,實體類必須要有明確的構造函數。 4, 構造器Constructor是否可以被繼承?是否可以被Override? 答:Constructor不可以被繼承,因此不能被重寫(Overriding),但可以被重載(Overloading). 5,是否可以繼承String類? 答:因為String類是final類所以不可以繼承string類。 5, 當一個線程進入一個對象的方法後,其它線程是否可以進入該對象的方法? 答:不可以,一個對象的方法只能由一個線程訪問。 6, 用最有效的方法算出等已8對於幾? 答:2<<3. 7,C#是否可以對內存直接進行操作? 答:這個問題比較難回答,也是個很大的問題。但是可以這樣問答。C#是可以對內存進行直接操作的 ,雖然很少用到指針,但是C#是可以使用指針的,在用的時候需要在前邊加unsafe,,在.net中使用了垃圾 回收機制(GC)功能,它替代了程序員,不過在C#中不可以直接使用finalize方法,而是在析構函數中調 用基類的finalize()方法。 7, 數組有沒有Length()這和方法?string有沒有這個方法? 答:數組中沒有這個方法,但有這個屬性,string中有這個方法。 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#種索引器實現過程,是否只能根據數字索引? 答:不是的,可以是任意類型。 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是棧,是由是操作系統自動分配和釋放的,棧上的空間是有限的。程序在編譯期間變數和函數分 配內存都是在棧上進行的,且在運行時函數調用時的參數的傳遞也是在棧上進行的。
希望採納
『捌』 net開發工程師面試時會問什麼問題
其實,不管來是什麼樣的面試形自,問的問題都差不多,萬變不離其宗,都有規律可尋。其實對所有的面試官而言,只有一個目的:在最短的時間里了解到你最多的信息。想高效率的准備面試,先從這七個大方面著手吧!
一、基本情況
1、請用最簡潔的語言描述您從前的工作經歷和工作成果。
二、專業背景
您認為此工作崗位應當具備哪些素質?
三、工作模式
您平時習慣於單獨工作還是團隊工作?
四、價值取向
您對原來的單位和上司的看法如何?
五、資質特性
您如何描述自己的個性?
六、薪資待遇
是否方便告訴我您目前的待遇是多少?
七、背景調查
您是否介意我們通過您原來的單位迚行一些調查?
95%的面試基本上都離不開這些問題,當然還有可能問一些專業問題,我想如果你做過的話應該都不是什麼難事,一般面試官都不會過多的問專業方面的問題的。