3. 簡述 private、 protected、 public、 internal 修飾符的存取權限。
private : 私人成員, 在類的內部才可以訪問。protected : 保護成員,該類內部和繼承類中可以訪問。public : 公用成員,完全公開,沒有訪問限制。internal: 在同一命名空間內可以訪問。
4. 寫出一條Sql語句: 取出表A中第31到第40記錄(SQLServer, 以自動成長的ID作為主鍵, 注意:ID可能不是連續的。)
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)
5 .列舉ASP.NET 頁面之間傳遞值的幾種方式。
1.
使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session變數
3.使用Server.Transfer
2。請說明在.net中常用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
session(viewstate) 簡單,但易丟失
application 全域
cookie 簡單,但可能不支援,可能被偽造
input ttype="hidden" 簡單,可能被偽造
url參數簡單,顯示於地址欄,長度有限
資料庫穩定,安全,但效能相對弱
2.override與重載的區別
Override用來重寫父類的方法,重載使用相同名的方法或操作符擁有不同類型的參數
3、.net的錯誤處理機制是什麼
.net錯誤處理機制採用try->catch->finally結構,發生錯誤時,層層上拋,直到找到匹配的Catch為止。
4、C#中介面和類的異同
介面和類都是類,不同的事,介面只包含方法或屬性的聲明,不包含具體實現方法的代碼,介面可以實現多繼承,而類只能是單繼承,繼承介面的類必須實現介面中聲明的方法或屬性。介面主要定義一種規範,統一調用方法,在大型項目中介面正發揮日益重要的作用。
4、DataReader和DataSet的異同
DataReader和DataSet最大的區別在於,DataReader使用時始終佔用SqlConnection,線上操作資料庫..任何對SqlConnection的操作都會引發DataReader的異常..因為DataReader每次只在記憶體中載入一條資料,所以佔用的記憶體是很小的..因為DataReader的特殊性和高效能.所以DataReader是只進的..你讀了第一條後就不能再去讀取第一條了..
DataSet則是將資料一次性載入在記憶體中.拋棄資料庫連接..讀取完畢即放棄資料庫連接..因為DataSet將資料全部載入在記憶體中.所以比較消耗記憶體...但是確比DataReader要靈活..可以動態添加行,列,資料.對資料庫進行回傳更新操作...
1.
在c#中using和new這兩個關鍵字有什麼意義,請寫出你所知道的意義?
Using 引入一個名子空間,或在使用了一個對像後自動調用其IDespose,New 執行個體化一個對像,或修飾一個方法,表此方法完全重寫此方法
2.在下面的例子裡
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
3.下面的例子中
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
4.談談類和結構的區別?
最大區別一個是參考型別,一個是實值型別 預設成員訪問為public是另外一個區別
1. 在.net(C# or vb.net)中如何獲得當前表單或控制項的控制代碼,特別是控制項本身的控制代碼(請列舉)。
this(C#) Me(vb.net).
2在.net(C# or vb.net)中如何使用者自訂訊息,並在表單中處理這些訊息。
在form中重載DefWndProc函數來處理訊息:
protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM_Lbutton :
///string與MFC中的CString的Format函數的使用方法有所不同
string message = string.Format("收到訊息!參數為:{0},{1}",m.wParam,m.lParam);
MessageBox.Show(message);///顯示一個訊息框
break;
case USER:
處理的代碼
default:
base.DefWndProc(ref m);///調用基類函數處理非自訂訊息。
break;
}
}
3. 在.net(C# or vb.net)如何啟動另一個程式。process
4. 在.net(C# or vb.net)中如何取消一個表單的關閉
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
5. 在.net(C# or vb.net)中,Appplication.Exit 還是 Form.Close有什麼不同?
答案:一個是退出整個應用程式,一個是關閉其中一個form
6. 在C#中有一個double型的變數,比如10321.5,比如122235401.21644,作為貨幣的值如何按各個不同國家的習慣來輸出。比如美國用$10,321.50和$122,235,401.22而在英國則為£10 321.50和£122 235 401.22
答案:
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");為英國貨幣類型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);
7. 某一密碼僅使用K、L、M、N、O共5個字母,密碼中的單詞從左向右排列,密碼單詞必須遵循如下規則:
(1) 密碼單詞的最小長度是兩個字母,可以相同,也可以不同
(2) K不可能是單詞的第一個字母
(3) 如果L出現,則出現次數不止一次
(4) M不能使最後一個也不能是倒數第二個字母
(5) K出現,則N就一定出現
(6) O如果是最後一個字母,則L一定出現
問題一:下列哪一個字母可以放在LO中的O後面,形成一個3個字母的密碼單詞?
A) K B)L C) M D) N
答案:B
問題二:如果能得到的字母是K、L、M,那麼能夠形成的兩個字母長的密碼單詞的總數是多少?
A)1個 B)3個 C)6個 D)9個
答案:A
問題三:下列哪一個是單詞密碼?
A) KLLN B) LOML C) MLLO D)NMKO
答案:C
8. 62-63=1 等式不成立,請移動一個數字(不可以移動減號和等號),使得等式成立,如何移動?
答案:62移動成2的6次方
new有幾種用法
第一種:new Class();
第二種:覆蓋方法
public new XXXX(){}
第三種:new 約束指定泛型類聲明中的任何型別參數都必須有公用的無參數建構函式。
2.如何把一個array複製到arrayList裡
foreach( object o in array )arrayList.Add(o);
3.datagrid.datasouse可以串連什麼資料來源 [dataset,datatable,dataview]
dataset,datatable,dataview , IList
4.概述反射和序列化
反射:程式集包含模組,而模組包含類型,類型又包含成員。反射則提供了封裝程式集、模組和類型的對象。您可以使用反射動態地建立類型的執行個體,將類型綁定到現有對象,或從現有對象中擷取類型。然後,可以調用類型的方法或訪問其欄位和屬性
序列化:序列化是將對象轉換為容易傳輸的格式的過程。例如,可以序列化一個對象,然後使用 HTTP 通過 Internet 在用戶端和伺服器之間傳輸該對象。在另一端,還原序列化將從該流重新構造對象。
5.概述o/r mapping 的原理
利用反射,配置 將類於資料庫表映射
7.用sealed修飾的類有什麼特點
sealed 修飾符用於防止從所修飾的類派生出其它類。如果一個密封類被指定為其它類的基類,則會發生編譯時間錯誤。
密封類不能同時為抽象類別。
sealed 修飾符主要用於防止非有意的派生,但是它還能促使某些運行時最佳化。具體說來,由於密封類永遠不會有任何衍生類別,所以對密封類的執行個體的虛擬函數成員的調用可以轉換為非虛擬調用來處理。
11.詳述.NET裡class和struct的異同!
class:放在 ? struct放在?
struct值傳遞
類與結構有很多相似之處:結構可以實現介面,並且可以具有與類相同的成員類型。然而,結構在幾個重要方面不同於類:結構為實值型別而不是參考型別,並且結構不支援繼承。結構的值儲存在“在堆棧上”或“內聯”。細心的程式員有時可以通過聰明地使用結構來增強效能。
12.概述.NET裡對 remoting 和 webservice 兩項技術的理解和實際中的應用。
遠程邏輯調用,remoing介面只能用在.net中
13.什麼是code-behind技術 aspx and cs
14.概述三層結構體系 web/business/dataaccess
15.asp.net如何?MVC模式,舉例說明! web/business/dataaccess
2.什麼是ASP.net中的使用者控制項
答:使用者控制項就是.ascx副檔名的東西嘍,可以拖到不同的頁面中調用,以節省代碼.比如登陸可能在多個頁面上有,就可以做成使用者控制項,但是有一個問題就是使用者控制項拖到不同層級的目錄下后里面的圖片等的相對路徑會變得不準確,需要自已寫方法調整.
3.什麼叫應用程式定義域?什麼是受管制的代碼?什麼是強型別系統?什麼是裝箱和拆箱?什麼是重載?CTS、CLS和CLR分別作何解釋?
答:裝箱就是把實值型別轉成參考型別,從MS IL角度看好像是boxing,沒記錯的話是把值從堆棧轉到堆中.拆箱相反,重載就是指一個方法名同,參數個數不同,傳回值可以相同的方法.CLR是通用語言運行時,其它的不清楚.
4.列舉一下你所瞭解的XML技術及其應用
答:XML可是好東西,儲存配置,站與站之間的交流,WEB SERVICE都要用它.
5.實值型別和參考型別的區別?寫出C#的範例代碼。
答:結構是實值型別,類是參考型別,所以傳結構就是實值型別的應用啦,傳對象或類就是參考型別的,這個不用多寫了吧.
6.ADO.net中常用的對象有哪些?分別描述一下。
答:connection command sqladapter dataset datatable dataview等等.寫不完了.
7.如何理解委託?
答:據說相當於函數指標,定義了委託就可以在不調用原方法名稱的情況下調用那個方法.
msdn2005中是這樣解釋的:
委託具有以下特點:
委託類似於 C++ 函數指標,但它是型別安全的。
委託允許將方法作為參數進行傳遞。
委託可用於定義回調方法。
委託可以連結在一起;例如,可以對一個事件調用多個方法。
方法不需要與委託簽名精確匹配。有關更多資訊,請參見協變和逆變。
C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。
8.C#中的介面和類有什麼異同。
答:介面是負責功能的定義,項目中通過介面來規範類,操作類以及抽象類別的概念!
而類是負責功能的具體實現!
在類中也有抽象類別的定義,抽象類別與介面的區別在於:
抽象類別是一個不完全的類,類裡面有抽象的方法,屬性,也可以有具體的方法和屬性,需要進一步的專業化。
但介面是一個行為的規範,裡面的所有東西都是抽象的!
一個類只可以繼承一個基類也就是父類,但可以實現多個介面
9.。net中讀寫資料庫需要用到哪些類?他們的作用
答:這個類自已可以寫的啊,你是指基類嗎?那configuration,sqlconnection,sqlcommand等都要用到.
10.UDP串連和TCP串連的異同。
答:前者只管傳,不管資料到不到,無須建立串連.後者保證傳輸的資料準確,須要連結.
11.ASP.net的身分識別驗證方式有哪些?分別是什麼原理?
答:form認證,windows整合認證等,原理不清楚.
13.什麼是code-Behind技術。
答:代碼分離,這是個明智的東西,像ASP這樣混成一堆很不爽.或者可以理解成HTML代碼寫在前台,C#代碼寫在後台.當然前台也有指令碼,類的調用等,其實寫在一起也是可以的.
15..net中讀寫XML的類都歸屬於哪些命名空間?
答:System.Xml
16.解釋一下UDDI、WSDL的意義及其作用。
答:
17.什麼是SOAP,有哪些應用。
答:SOAP(Simple Object Access Protocol )簡易物件存取通訊協定 (SOAP)是在分散或分布式的環境中交換資訊並執行遠端程序呼叫的協議,是一個基於XML的協議。使用SOAP,不用考慮任何特定的傳輸協議(最常用的還是HTTP協議),可以允許任何類型的對象或代碼,在任何平台上,以任何一直語言相互連信。這種相互連信採用的是XML格式的訊息,具體請看:http://playist.blogchina.com/2521621.html
20.常用的調用webservice方法有哪些?
答:
可以從瀏覽器、ASP頁或其他WEB服務調用可以使用HTTP-GET HTTP-POST訪問WEB服務也可以從ASP頁或其他WEB服務向其他WEB服務發出SOAP請求HTTP-GET HTTP-POST SOAP 使用WEB服務代理
6. 私用組件與共用組件有什麼區別?
一個私用組件通常為單個應用程式所使用,並且儲存於這個應用程式所在的目錄之中,或此目錄下面的一個子目錄中。共用組件通常儲存在全域組件快取(Global Assembly Cache)之中,這是一個由.NET運行時所維護的程式集倉庫。共用組件通常是對許多應用程式都有用的程式碼程式庫,比如.NET Framework類。
7. 請解釋進程與線程的區別?進程與程式的區別?
一般,一個應用程式對應於一個或多個進程,可以把進程看作是該應用程式在*作系統中的標識;而一個進程通常由多個線程組成,而線程是*作系統為該應用程式分配處理時間的最小單元。
8. CLR與IL分別是什麼含義?
CLR:通用語言執行平台,類似於Java中的JVM,Java虛擬機器;在.Net環境下,各種程式設計語言使用一種共同的基礎資源環境,這就是CLR,CLR將直接與*作系統進行通訊,而程式設計語言如C#.NET將盡量避免直接與*作系統直接通訊,加強了程式碼的執行安全性,可以這樣看:CLR就是具體的程式設計語言如:C#.NET與*作系統之間的翻譯,同時它為具體的程式設計語言提供了許多資源:
IL,中繼語言,也稱MSIL,微軟中繼語言,或CIL,通用中繼語言;所有.NET原始碼(不管用哪種語言編寫)在進行編譯時間都被編譯成IL。在應用程式運行時被即時(Just-In-Time,JIT)編譯器處理成為機器碼,被解釋及執行。
10 .請解釋ASP。NET中以什麼方式進行資料驗證
Aps.net 中有非空驗證,比較驗證,取值範圍驗證,Regex驗證及客戶自訂驗證五大控制項,另還有一個集中驗證資訊處理控制項
11. WEB控制項可以激發服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什嗎?為什麼要使用自動傳回。
在web控制項發生事件時,用戶端採用提交的形式將資料交回服務端,服務端先調用Page_Load事件,然後根據傳回的狀態資訊自動調用服務端事件自動傳回是當我們在點擊用戶端控制項時,採用提交表單的形式將資料直接傳回到務端
只有通過自動傳回才能實現服務端事件的機制,如果沒有自動回傳機制就只能調用用戶端事件,而不能調用服務端事件
12. WEB控制項及HTML服務端控制項能否調用用戶端方法?如果能,請解釋如何調用?
可以調用
例如:<asp:TextBox id="TextBox1" FONT-SIZE: 9pt; COLOR: black">clientfunction();" runat="server">
</asp:TextBox>
<INPUT id="Button2" value="Button" name="Button2"
runat="server" FONT-SIZE: 9pt; COLOR: black">clientfunction();">
13. 請解釋web.config檔案中的重要節點
appSettings包含自訂應用程式設定。
system.web 系統配置
compilation動態調試編譯設定
customErrors自訂錯誤資訊設定
authentication身分識別驗證,此節設定應用程式的身分識別驗證策略。
authorization授權, 此節設定應用程式的授權策略.
14. 請解釋ASP。NET中的web頁面與其隱藏類之間的關係?
一個ASP.NET頁面一般都對應一個隱藏類,一般都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.aspx的頁面聲明如下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs" 表明經編譯此頁面時使用哪一個代碼檔案
Inherits="T1.Tst1" 表用運行時使用哪一個隱藏類
15. 什麼是viewstate,能否禁用?是否所用控制項都可以禁用?
Viewstate是儲存狀態的一種機制,EnableViewState屬性設定為false即可禁用
16. 當發現不能讀取頁面上的輸入的資料時很有可能是什麼原因造成的?怎麼解決
很有可能是在Page_Load中資料處理時沒有進行Page的IsPostBack屬性判斷
17. 請解釋什麼是內容物件,在什麼情況下要使用內容物件
內容物件是指HttpContext類的Current 屬性,當我們在一個普通類中要訪問內建對象(Response,Request,Session,Server,Appliction等)時就要以使用此對象
18. 請解釋轉寄與跳轉的區別?
轉寄就是服務端的跳轉A頁面提交資料到B頁面,B頁面進行處理然後從服務端跳轉到其它頁面
跳轉就是指用戶端的跳轉
1.請簡述一下用Socket進行同步通訊編程的詳細步驟
1、在應用程式和遠程裝置中使用協議和網路地址初始化通訊端
2、在應用程式中通過指定連接埠和地址建立監聽
3、遠程裝置發出串連請求
4、應用程式接受串連產生通訊scoket
5、應用程式和遠程裝置開始通訊(在通訊中應用程式將掛起直到通訊結束)
6、通訊結束,關閉應用程式和遠程裝置的Socket回收資源
1、在C#中,string str = null 與 string str = “” 請盡量使用文字或圖象說明其中的區別。
string str = null 是不給他分配記憶體空間,而string str = “”給它分配長度為空白字元竄的記憶體空間.
2、請詳述在dotnet中類(class)與結構(struct)的異同:(10分)
Class可以被執行個體化,屬於參考型別,是分配在記憶體的堆上的,Struct屬於實值型別,是分配在記憶體的棧上的.
3、根據委託(delegate)的知識,請完成以下使用者控制項中程式碼片段的填寫:(10)
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 );
4、分析以下代碼,完成填空(10分)
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i= j= i還真的不知道, j=10
5、SQLSERVER伺服器中,給定表 table1 中有兩個欄位 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的伺服器時間,請使用一句SQL語句獲得最後更新的事務號。(10)
select top ID from table1 order by LastUpdateData desc
8、簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。(10)
remoting是.net 中用來跨越machine, process, appdomain 進行方法調用的技術,對於三成結構的程式,就可以使用remoting技術來構建.它是分布應用的基礎技術.相當於以前的DCOM Web Service是一種構建應用程式的普通模型,並能在所有支援internet網通訊的作業系統上實施。Web Service令基於組件的開發和web的結合達到最佳,基於組件的物件模型
9.什麼叫做SQL注入,如何防止?請舉例說明。
利用sql關鍵字對網站進行攻擊。過濾關鍵字'等
所謂SQL注入(SQL Injection),就是利用程式員對使用者輸入資料的合法性檢測不嚴或不檢測的特點,故意從用戶端提交特殊的代碼,從而收集程式及伺服器的資訊,從而擷取想得到的資料。
http://localhost/lawjia/show.asp?ID=444 and user>0,這時,伺服器運行Select * from 表名 where 欄位=444 and user>0這樣的查詢,當然,這個語句是運行不下去的,肯定出錯,錯誤資訊如下:
·錯誤類型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]將 nvarchar 值 'sonybb' 轉換為資料類型為 int 的列時發生語法錯誤。
a 產生一個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=(int)myList;
20.請敘述類與結構的區別。
1)、結構是實值型別;
2)、結構不支援繼承;
3)、結構不能定義預設的建構函式;
4)、結構不能定義解構函式;
5)、結構不能使用初始值設定域值。