C# 程序員最經常使用的面試題及答案

1 .列舉ASP.NET 頁面之間傳遞值的幾種方式。
  答. 1).使用QueryString, 如....?id=1; response. Redirect().... 
      2).使用Session變量 
      3).使用Server.Transfer
2.若是在一個B/S結構的系統中須要傳遞變量值,可是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
答 : QueryString、 this.Server.Transfer
3. 一列數的規則以下: 一、一、二、三、五、八、1三、2一、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.在下面的例子裏
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
5.net中讀寫數據庫須要用到那些類?他們的做用?
答:SqlConnection/OleDbConnection:創建數據庫的鏈接;
      SqlCommand/OleDbCommand:執行數據庫腳本。算法




60.ASP。NET與ASP相比,主要有哪些進步?
答:asp解釋形,aspx編譯型,性能提升,能夠跟美工的工做分開進行,更有利於團隊開發。

61.產生一個int數組,長度爲100,並向其中隨機插入1-100,而且不能重複。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];


65.DataReader與Dataset有什麼區別?
答:一個是隻能向前的只讀遊標,一個是內存中的表。

68.須要實現對一個字符串的處理,首先將該字符串首尾的空格去掉,若是字符串中間還有連續空格的話,僅保留一個空格,即容許字符串中間有多個空格,但連續的空格數不可超過一個.
答:string inputStr=" xx xx ";
     inputStr = Regex.Replace(inputStr.Trim(), @"\s+", " ");

69.下面這段代碼輸出什麼?爲何?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
答:不相等,由於比較的是對像
74.什麼是虛函數?什麼是抽像函數?
答:虛函數:可由子類繼承並重寫的函數。抽像函數:規定其非虛子類必須實現的函數,必須被重寫。
77.什麼是ASP.net中的用戶控件?
答:用戶控件通常用在內容多爲靜態,或者少量會改變的狀況下..用的比較大..相似ASP中的include..可是功能要強大的多。

80.什麼是code-Behind技術。
答:ASPX,RESX和CS三個後綴的文件,這個就是代碼分離.實現了HTML代碼和服務器代碼分離.方便代碼編寫和整理.

85.當整數a賦值給一個object對像時,整數a將會被?
答:裝箱。

87.public static const int A=1;這段代碼有錯誤麼?是什麼?
答:const不能用static修飾。
94.下面的代碼中有什麼錯誤嗎?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F(); 答:abstract override 是不能夠一塊兒修飾.
} // new public abstract void F(); 

96.下面這段代碼有錯誤麼?
switch (i){
case(): 答://case()條件不能爲空
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault; 答://wrong,格式不正確
CaseTwo();
break;
}

109.寫一個HTML頁面,實現如下功能,左鍵點擊頁面時顯示「您好」,右鍵點擊時顯示「禁止右鍵」。並在2分鐘後自動關閉頁面。
答:<script ***script>
setTimeout('window.close();',3000);
function show()
{
if (window.event.button == 1)
{
alert("左");
}
else if (window.event.button == 2)
{
alert("右");
}
}
< /script>
118.<%# %> 和 <% %> 有什麼區別?
答:<%# %>表示綁定的數據源
< % %>是服務器端代碼塊
120.重載與覆蓋的區別?
答:一、方法的覆蓋是子類和父類之間的關係,是垂直關係;方法的重載是同一個類中方法之間的關係,是水平關係
                  二、覆蓋只能由一個方法,或只能由一對方法產生關係;方法的重載是多個方法之間的關係。
                  三、覆蓋要求參數列表相同;重載要求參數列表不一樣。
                  四、覆蓋關係中,調用那個方法體,是根據對象的類型(對像對應存儲空間類型)來決定;重載關係,是根據調 用時的實參表與形參表來選擇方法體的。

125.分析如下代碼。
public static void test(string ConnectString)數據庫

{
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = ConnectString;
try {
   conn.Open();
…….
}
catch(Exception Ex)
{
   MessageBox.Show(Ex.ToString());
}
finally
   { 
   if (!conn.State.Equals(ConnectionState.Closed))
    conn.Close();
   }
}
請問 1)以上代碼能夠正確使用鏈接池嗎?
答:回答:若是傳入的connectionString是如出一轍的話,能夠正確使用鏈接池。不過如出一轍的意思是,連字符的空格數,順序徹底一致。 
128.在下面的例子裏
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

129.下面的例子中

using System;
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
產生的輸出結果是什麼?
答:x=1,y=2

數組

相關文章
相關標籤/搜索