asp.net c# 常見面試試題總結匯總(含答案)


一、C#中 property 與 attribute的區別,他們各有什麼用處,這種機制的好處在哪裏? 
 property和attribute漢語稱之爲屬性。不過property是指類向外提供的數據區域。而attribute則是描述對象在編譯時或運行時屬性的。這二者是有本質區別的。
2 .列舉ASP.NET 頁面之間傳遞值的幾種方式。 
1.使用QueryString, ....?id=1; response. Redirect()....
2.使用Session變量
3.使用Server.Transfer 
3. 一列數的規則以下: 一、一、二、三、五、八、1三、2一、34...... 求第30位數是多少, 用遞歸算法實現。
 public class MainClass
    {
        //主函數調用輸出低30的數值
        public static void Main()
        {
            Console.WriteLine(Foo(30));
            Console.ReadLine();
        }
        //方法封裝,參數爲第幾個,求第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.請編程遍歷頁面上全部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 ;
   }
}
7.在下面的例子裏
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 
 8.什麼是裝箱和拆箱?  javascript

從值類型接口轉換到引用類型裝箱。從引用類型轉換到值類型拆箱。
例如:
裝箱: int i=0; Object obj=i;
拆箱: int i=0; Object obj=i;
int j=(int)obj;
9經常使用的調用WebService的方法有哪些? 
 1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜單選項
10.簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。
 服務器端向客戶端發送一個進程編號,一個程序域編號,以肯定對象的位置。
11.公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到如下的特殊功能:點擊 
 答:根據點擊的列頭,包該列的ID取出,按照該ID排序後,在給綁定到ListView中。
12.能用foreach遍歷訪問的對象須要實現 ________________接口或聲明________________方法的類型。 
 答:IEnumerable 、 GetEnumerator。
13.abstract class和interface有什麼區別? 
聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。不能建立abstract 類的實例。然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽象的,沒有一個有程序體。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。 java

14.sleep() 和 wait() 有什麼區別?
sleep()方法是使線程中止一段時間的方法。在sleep 時間間隔期滿後,線程不必定當即恢復執行。這是由於在那個時刻,其它線程可能正在運行並且沒有被調度爲放棄執行,除非(a)「醒來」的線程具備更高的優先(b)正在運行的線程由於其它緣由而阻塞。
wait()是線程交互時,若是線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
15.如何處理幾十萬條併發數據?.
 答:用存儲過程或事務。取得最大標識的時候同時更新..注意主鍵不是自增量方式這種方法併發的時候是不會有重複主鍵的..取得最大標識要有一個存儲過程來獲取. web

16.Session有什麼重大BUG,微軟提出了什麼方法加以解決?
 答:是iis中因爲有進程回收機制,系統繁忙的話Session會丟失,能夠用Sate server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,並且沒法捕獲Session的END事件。
17.進程和線程的區別? 面試

進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程能夠有多個線程,這些線程共享這個進程的資源。
18.請說明在.net中經常使用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
 答:session(viewstate) 簡單,但易丟失
application 全局 cookie 簡單,但可能不支持,可能被僞造
input  type="hidden" 簡單,可能被僞造
url參數 簡單,顯示於地址欄,長度有限
數據庫 穩定,安全,但性能相對弱 算法

19.DataReader與Dataset有什麼區別?
 一個是隻能向前的只讀遊標,一個是內存中的表。
 20.軟件開發過程通常有幾個階段?每一個階段的做用?
 需求分析,架構設計,代碼編寫,QA,部署
21.什麼叫作SQL注入,如何防止?請舉例說明。
 利用sql關鍵字對網站進行攻擊。過濾關鍵字'等
22.ADO.net中經常使用的對象有哪些?分別描述一下。
 答:Connection 數據庫鏈接對象
Command 數據庫命令
DataReader 數據讀取器
DataSet 數據集
23.寫一個HTML頁面,實現如下功能,左鍵點擊頁面時顯示「您好」,右鍵點擊時顯示「禁止右鍵」。並在2分鐘後自動關閉頁面。 sql

<script language=javascript>
setTimeout('window.close();',3000);
function show()
{
if (window.event.button == 1)
{
alert("左");
}
else if (window.event.button == 2)
{
alert("右");
}
}
</script> 數據庫

數據庫面試題 編程

1.一道SQL語句面試題,關於group by表內容:
2005-05-09 勝
2005-05-09 勝
2005-05-09 負
2005-05-09 負
2005-05-10 勝
2005-05-10 負
2005-05-10 負
若是要生成下列結果, 該如何寫sql語句?
              勝 負
2005-05-09 2 2
2005-05-10 1 2
//建立臨時表 2013-06-24 liangjw
create table #tmp(rq varchar(10),shengfu nchar(1)) 安全

insert into #tmp values('2005-05-09','勝')
insert into #tmp values('2005-05-09','勝')
insert into #tmp values('2005-05-09','負')
insert into #tmp values('2005-05-09','負')
insert into #tmp values('2005-05-10','勝')
insert into #tmp values('2005-05-10','負')
insert into #tmp values('2005-05-10','負') 服務器

1)select rq, sum(case when shengfu='勝' then 1 else 0 end)'勝',sum(case when shengfu='負' then 1 else 0 end)'負' from #tmp group by rq

2. 表中有A B C三列,用SQL語句實現:當A列大於B列時選擇A列不然選擇B列,當B列大於C列時選擇B列不然選擇C列。
------------------------------------------
select (case when a>b then a else b end ),
 (case when b>c then b esle c end)
 from table_name

3.面試題:一個日期判斷的sql語句?
 請取出tb_send表中日期(SendTime字段)爲當天的全部記錄?(SendTime字段爲datetime型,包含日期與時間)

select * from tb where datediff(dd,SendTime,getdate())=0
4.有一張表,裏面有3個字段:語文,數學,英語。其中有3條記錄分別表示語文70分,數學80分,英語58分,請用一條sql語句查詢出這三條記錄並按如下條件顯示出來(並寫出您的思路): 
   大於或等於80表示優秀,大於或等於60表示及格,小於60分表示不及格。 
       顯示格式: 
       語文              數學                英語 
       及格              優秀                不及格   
------------------------------------------
 select
 (case when 語文>=80 then '優秀'
         when 語文>=60 then '及格'
else '不及格') as 語文,
 (case when 數學>=80 then '優秀'
         when 數學>=60 then '及格'
else '不及格') as 數學,
 (case when 英語>=80 then '優秀'
         when 英語>=60 then '及格'
else '不及格') as 英語,
from table

5.在sqlserver2000中請用sql建立一張用戶臨時表和系統臨時表,裏面包含兩個字段ID和IDValues,類型都是int型,並解釋下二者的區別?
------------------------------------------
 用戶臨時表:create table #xx(ID int, IDValues int)
系統臨時表:create table ##xx(ID int, IDValues int)
區別:
用戶臨時表只對建立這個表的用戶的Session可見,對其餘進程是不可見的.
當建立它的進程消失時這個臨時表就自動刪除.
全局臨時表對整個SQL Server實例均可見,可是全部訪問它的Session都消失的時候,它也自動刪除.

8.一個表中的Id有多個記錄,把全部這個id的記錄查出來,並顯示共有多少條記錄數。

select id, Count(*) from tb group by id having count(*)>1
 select * from(select count(ID) as count from table group by ID)T where T.count>1

相關文章
相關標籤/搜索