Asp.net(C#)面试100+题陆续添加中……
生活随笔
收集整理的這篇文章主要介紹了
Asp.net(C#)面试100+题陆续添加中……
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我收集的面試題以及自己對一些面試題的理解:
1、C#不支持多重繼承,可以通過接口實現。
2、public 全部公開
??? private 類內部
??? protected 自己和自己的子類
??? internal 在同一個程序集在一個DLL中
3、私有成員繼承,但不能訪問
4、自己提供了一個有參數的構造函數后,如果要保留無參數的,就必須自己寫一個
5、C#所有的基類是System.Object
重載是不同參數的調用
覆寫子類是改變父類的方法
多態是定義父類來調用子類的方法
6、要覆寫的方法是虛方法,virtual
7、覆寫簽名必須一致,除了將virtual改為override
8、不可以覆寫私有的虛方法,因為已經私有了。
9、可以局部繼承,類為Public,方法為sealed(封條)
10、抽象類是不可以被實例化的類
11、interface是只含有public abstract method僅有共有抽象方法的類
12、interface都是公有的
13、interface接口的所有方法是抽象的,抽象類abstract可以有方法的實現和修飾符
14、const編譯是常量,readonly運行是常量。
15、str=null不分配,str=""分配長度為空字符串的空間string.Empty常量
16、class是引用類型,struct是值類型
17、取得最新時間where date=(select MAX(LastUpdateDate) FROM t1)
18、remoting是用Tcp/Ip,webservice是用http,穿防火墻remoting是TCPIp,是給客戶端發一個進程和應用程序域編號,確定對象
19、頁面傳遞值QueryString,Session,Server.Transfer,input type="hidden",數據庫,cookie
20、1、1、2、3、5、8
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);
??? }
}
21、委托可以說是將方法作為參數傳入,指向一個方法的引用,事件是一種特殊的委托。
22、遍歷頁面TextBox,并賦值string.Empty
foreach(System.Windows.Forms.Control control in this.Controls)
{
??? if(control is Sytem.Windows.Forms.TextBox)
{
??? System.Windows.Froms.Textbox tb=(System.Windows.Forms.TextBox)control;
??? tb.Text=String.Empty;
}
}
23、冒泡
int [] list={1,3,5,6,4,2};
bool isOK=false;
while(!isOk)
{
??? isOk=true;
??? for(int i=0;i<list.Length-1;i++)
??? {
??????? if(list[i]>list[i+1])
??????? {
??????? swap(ref list[i],ref list[i+1]);
??????? isOk=false;
??????? }
??? }
}
private void?? swap(ref int a,ref int b)
{
??? int temp;
??? temp=a;
??? a=b;
??? b=temp;
}無必要,調用方法有開銷
24、索引器可以索引任意類型
25、//1-2+3-4+……+m自己寫的遞歸和公式
using System;
using System.Collections.Generic;
using System.Text;
//1-2+3-4+...?m
namespace ConsoleApplication1
{
??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? int num = 18;
??????????? print(num);
??????????? System.Console.WriteLine(clac1(num));
??????????? System.Console.Write("result2="+clac2(num));
??????????? System.Console.ReadLine();
??????? }
??????? private static int clac2(int num)
??????? {
??????????? if (num % 2 == 0)
??????????????? return num / 2 * -1;
??????????? else
??????????????? return (num-1) / 2 * -1+num;
??????? }
??????? private static int clac1(int num)
??????? {
??????????? if (num == 1)
??????????? {
??????????????? return 1;
??????????? }
??????????? else
??????????? {
??????????????? if (num % 2 == 1)
??????????????? {
??????????????????? return clac1(num - 1) + num;
??????????????? }
??????????????? else
??????????????? {
??????????????????? return clac1(num - 1) - num;
??????????????? }
??????????? }
??????? }
??????? private static void print(int num)
??????? {
??????????? StringBuilder sb = new StringBuilder();
??????????? for (int i = 1; i <= num; i++)
??????????? {
??????????????? sb.Append(i);
??????????????? if (i % 2 == 1 && i != num)
??????????????? {
??????????????????? sb.Append("-");
??????????????? }
??????????????? if (i % 2 == 0 && i != num)
??????????????? {
??????????????????? sb.Append("+");
??????????????? }
??????????
??????????? }
??????????? System.Console.Write(sb+"=");
??????????
???????????
??????? }
???
??? }
}
26、應用程序域是輕量級進程,安全作用。
27、CTS通用語言系統,CLS通用語言規范,CLR公共語言運行時(庫)
28、值到引用類型裝箱,引用到值拆箱
29、unsafe非托管代碼
30、調用WS方法:①WSDL.exe②Add Web Reference
31、使用foreach遍歷的對象要有IEnumerable接口和GetEnumerator方法
32、GC是收集器,System.gc();
33、啟動一個線程是start()
34、String類是final類不可繼承
35、List和Set是繼承自Collection接口
36、==是引用相等,equals是值相等
37、Session的Bug是系統繁忙會丟失
38、一個進程(系統資源分配)可以有多個線程(Cpu分配)
39、ASPX是編譯形,可以與美術分開
40、GAC是全局程序集緩存
41、發送請求get,post
42、DataReader是提供一個只讀游標,DataSet是表
43、軟件開發過程:需求分析、架構設計、代碼編寫、QA(質量分析)、部署
44、using引入命名空間和使用非托管資源new新建實例或隱藏父類方法
45、刪多的空格
str=Regex.Replace(str.Trim()," +"," ");
46、反射是動態獲取程序集信息(成員、方法)
47、虛函數,可由子類繼承差重寫的函數,抽象函數規定必須實現,必須重寫。
48、XML可擴展標記語言
49、ADO.net的常用對象:Connection Command DataReader DataSet DataAdapter
??? ??? (2C3D)
50、XML區分大小寫,必須結束,屬性必須要引號
51、錯誤處理try->catch->finally
52、<%#%>綁定<%=%>變量<%%>代碼
53、 重載是水平關系,參數不同
?????? 覆蓋是垂直關系,參數相同
54、取31到40條記錄
????? select top 10 * from A where id not in (select top 30 id from A)
55、面向對象:封裝、繼承、多態
56、finally的語句在return之前運行。
57、BS開發,數據訪問層、業務層、表示層
58、讀數據的方法:ExecuteScalar、Fill、ExecuteReader
59、HttpModule是HttpApplication對象初始化一并載入,在http請求中,很多事件比如sessionStart,可以在每個事件上掛事件,比如檢測錯誤寫日志,HttpHandler觸發時開始攔截觸發事件,抓住的意思,對擴展名如何處理,就是httphandle來處理,例如處理image,調用哪一類,比如處理jpg用什么處理,防盜鏈
60、存儲過程與Sql語句比較:
??? ①存儲過程創建時已經編譯,不用再編譯
??? ②可以將復雜操作與事務處理結合。
??? ③存儲過程可以重復使用。
??? ④安全性高
61、常用的設計模式工廠模式、建造者模式、觀察者模式、策略模式、原型模式、代理模式。
62、接口可以繼承接口、抽象類可以實現接口,抽象類可以繼承實體類,但實體類必須有明確的構造函數。
63、最有效的*8,2<<3
64、final申明不可變
????? finally是異常處理必須執行
????? finallize是類的一個方法,垃圾回收時執行
65、HashMap是HashTable的輕量級實現,(小地圖),實現了Map接口,HashMap可以鍵值為Null,效率更高
66、Collections是針對集合類的一個幫助類,有許多方法,Collection是集合類的上級接口。
67、委托是將方法作為一個參數傳遞,比函數指針更安全,不帶方法體。
68、Override是重寫基類的方法,參數等全相同,Overload是重載
69、response,redictor,Server.Transfer QueryString,cookie,session,input type="hidden"
70、反射是動態獲得對象的類型、方法、屬性
????? 序列化是將對象轉換為另一種傳輸的格式。
71、Const編譯時常量,ReadOnly運行時常量
72、TCP是傳輸控制協議,可靠的連接,UDP是用戶數據報協議,不可靠的連接
73、進程是系統分配資源,線程是Cpu分配,一個可以有多個線程
74、應用程序域:為安全性、版本控制、卸載程序提供的隔離邊界
????? 代管代碼:CLR公共語言運行時(庫)開發的代碼是托管代碼。
75、身份驗證:windows(比窗口認證可靠性更高更小攻擊面,但帳戶泄露,后果嚴重).forms(用戶群大的開放環境,論壇等,但受到的攻擊多).passport,
76、UDDI是集成協議,基于WEB、分布式的實現標準規范
????? WSDL是基于XmL描述的WEB服務的接口。
77、SOAP是簡單訪問,基于Xml,用于分布式環境。
78、ADO以RecorderSet存儲,單表,ADO.net用DataSet,多表
79、接口與抽象類的區別
????? 接口不能實例化,所有的方法都是公有的,抽象的,抽象類只要一個抽象方法,實現一個接口,必須實現所有的方法
80、值類型數據存在堆棧中,不可共用,引用類型存在堆中,可以共同使用,改引用地址
81、三層DataAccess,Business,Web
82、JS驗證是否數字
function check()
{
??? var t1=document.getElementById("tt");
??? var reg=/^"d+$/;
??? alert(reg.test(t1.value));
???
}
83、remoting工作原理是服務端向客戶端發送一個進程編號、一個程序域編號,確定對象的位置
84、WEB控件是可以在服務器端執行的控件,可以回送數據,有事件驅動
85、頁面代碼,OnInit(),Page_Load(),事件
86、上下文對象HttpContext,在類中調用
87、Transfer是轉發,Redirect是跳轉
88、JS中的類
function User(name,age)
{
??? this.name=name;
??? this.age=age;
??? this.getInfo=getInfo;
}
function getInfo()
{
??? document.write(this.name);
??? document.write(this.age);
}
var user1=new User("Lisng",33);
user1.getInfo();
89、C#中讀Xml
??????????? XmlDocument doc = new XmlDocument();
??????????? doc.Load(Server.MapPath("test.xml"));
??????????? foreach (XmlNode node in doc.ChildNodes)
??????????? {
??????????????? DisplayNode(node);
??????????? }
??????? private void DisplayNode(XmlNode node)
??????? {
??????????? Response.Write(node.Name + ":" + node.Value+"<br/>");
??????????? if (node.HasChildNodes)
??????????????? foreach (XmlNode _node in node.ChildNodes)
??????????????????? DisplayNode(_node);
??????? }
90、FrameSet無body,from
?? <frameset cols="50%,*">
??????? <frame name="treeframe" src="page1.aspx">
??????? <frame name="pageframe" src="">
??? </frameset>
91、FireFox不支持VBscript
92、XML作用①做網頁Xslt②數據庫③保存對象的序列化
93、手寫連接
??????????? // 在此處放置用戶代碼以初始化頁面
??????????? //string strConn="server=(local);database=MyBlog;User Id=sa;pwd=sa";
??????????? //string strConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:"Customer.mdb
??????????? string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:"test.mdb";
??????????? string strSql="select * from [User]";
??????????? DataTable dt=new DataTable();
???????????
??????????? //using(SqlConnection conn=new SqlConnection(strConn))
???????????
??????????? using(OleDbConnection conn=new OleDbConnection(strConn))
??????????? {
??????????????? conn.Open();
??????????????? using(OleDbCommand comm=new OleDbCommand(strSql,conn))
??????????????? {
??????????????????? OleDbDataAdapter da=new OleDbDataAdapter(comm);????
??????????????????? da.Fill(dt);
??????????????? }
??????????? }
??????????? DataGrid1.DataSource=dt;
??????????? DataGrid1.DataBind();
??????? }
94、ASP六大內建對象:
???????? Application Request Response Session? Server ObjectContext
???????? ARRSSO
95、VSS作用:團隊開發的代碼管理,簽出后,能保證代碼不沖突,可以加注釋
96、Code-behind將html和程序代碼分離
97、類是 引用、可繼承、默認構造、new實例化
??????? 結構 值類型、不可繼承、不可有默認構造、不可new實例化
98、操作符重載可以對操作符賦予不同的功能,自定義的操作符
99、遍歷TextBox并賦“”
private?? void?? textnull(Control?? a)?
{?
??? for (int i=0;i<a.Controls.Count ;i++ )
??? {
??????? if(a.Controls[i].GetType().ToString()=="System.Web.UI.WebControls.TextBox")
??????? {
??????????? ((TextBox)a.Controls[i])Text="";
??????? }
??????? else
??????? {
??????????? textnull(a.Controls[i]);
??????? }
??? }
}
100、單體模式類
public class Wife
{
??? private string name;
??? private static Wife wife=null;
??? private Wife()
??? {
??????? //不允許私自構造
??? }
??? public static Wife getWife()
??? {
??????? if(wife==null) wife=new Wife();//只有為空時才創建
??????? return wife;
??? }
};
101、寫出一個存儲過程, 取出表A中第@m條到第@n條記錄(@m和@n是輸入參數,@m < @n)(SQL Server, 以自動增長的ID作為主鍵, 注意:ID可能不是連續的。)
CREATE PROCEDURE [dbo].[Proc_ReadMToN]
(@m [int],
@n [int])
AS
SELECT * FROM TABLE
WHERE
ID > @m and ID<@n
102、插入隨機數
??????????? int[] Arr = 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];
??????????? }
103、頁面過程Init ->Load->PreRender->Render->Dispose->Unload
104、1000以內素數
????? static private Boolean IsZhiShu(int x)
??????? {
??????????? Boolean Yes = true;
??????????? for (int i = 2; i <= Math.Sqrt(x); i++)
??????????? {
??????????????? if((x % i)==0)
??????????????? {
??????????????????? Yes = false;
???????????????? }
??????????? }
??????????? return Yes;
??????????
??????? }
??????? static void Main(string[] args)
??????? {
??????????? for (int i = 2; i < 1000; i++)
??????????? {
??????????????? if (IsZhiShu(i) == true)
??????????????? {
??????????????????? Console.Write(i.ToString());
??????????????????? Console.Write("? ");
??????????????? }
??????????? }
??????????? Console.ReadKey();
??????? }
105、跳轉頁面方式
如果用戶決定:超級鏈接
如果要控制目標:HyperLink 動態設定NavigateUrl
Response.Redirect
如果要轉流程,避免不必要的網絡通信
Server.Transfer
如果要捕獲一個頁面的輸出,將結果插入另一個aspx
Server.Execute
106、面試的一道SQL
今天沒做起的一道SQL面試題
選出每科的最高分
?Lisng??? 語文??? 80??
Nonly??? 語文??? 78??
Jiang??? 數學??? 88??
Lxy??? 數學??? 80??
Jacky??? 外語??? 99?
Andy??? 數學??? 66??
? select b.stu_id,stu_name,a.course,a.score
from
(select course,max(score) as score from stu_info group by course) as a,
stu_info as b
where b.course=a.course and b.score=a.score
?分組后,只會出現
語文
數學
外語
score應該是一組,所以用max取最大值
?更強的
?select * from stu_info as a
where score=(select max(score) from stu_info where course=a.course)
107、ORM關系數據庫與對象的映射
108、Ado以Recordset存儲, Ado.net以DataSet,提供了數據集和數據適配器,有利于分布式處理。
109、asp.net2.0與1.1相比的優勢
語法增加了泛型、無名方法、可空類型、partial類
.net層面母版頁、模板、主題
110、可以看做操作數據集的新語法,LinqToXml,LinqToSql
111、WebService服務可以描述為可以在web上部署并可以被任何應用程序或其他服務調用的功能。
112、C#中的接口和類有什么異同。
??????? 答:接口,是可以多繼承,類只有單繼承.接口強調了你必須實現,而沒有具本實現的方法和虛類有點相似。
113、內置對象
Response、Request、Server、Session、Application、Cookie
114、請說明在.net中常用的幾種頁面間傳遞參數的方法,并說出他們的優缺點。
答:session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被偽造
input ttype="hidden" 簡單,可能被偽造
url參數 簡單,顯示于地址欄,長度有限
數據庫 穩定,安全,但性能相對弱
115、維護數據庫的完整性、一致性、你喜歡用觸發器還是自寫業務邏輯?為什么?
答:盡可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空字段)實現,這種方式的效率最好;其次用觸發器,這種方式可以保證無論何種業務系統訪問數據庫都能維持數據庫的完整性、一致性;最后再考慮用自寫業務邏輯實現,但這種方式效率最低、編程最復雜,當為下下之策。
1、C#不支持多重繼承,可以通過接口實現。
2、public 全部公開
??? private 類內部
??? protected 自己和自己的子類
??? internal 在同一個程序集在一個DLL中
3、私有成員繼承,但不能訪問
4、自己提供了一個有參數的構造函數后,如果要保留無參數的,就必須自己寫一個
5、C#所有的基類是System.Object
重載是不同參數的調用
覆寫子類是改變父類的方法
多態是定義父類來調用子類的方法
6、要覆寫的方法是虛方法,virtual
7、覆寫簽名必須一致,除了將virtual改為override
8、不可以覆寫私有的虛方法,因為已經私有了。
9、可以局部繼承,類為Public,方法為sealed(封條)
10、抽象類是不可以被實例化的類
11、interface是只含有public abstract method僅有共有抽象方法的類
12、interface都是公有的
13、interface接口的所有方法是抽象的,抽象類abstract可以有方法的實現和修飾符
14、const編譯是常量,readonly運行是常量。
15、str=null不分配,str=""分配長度為空字符串的空間string.Empty常量
16、class是引用類型,struct是值類型
17、取得最新時間where date=(select MAX(LastUpdateDate) FROM t1)
18、remoting是用Tcp/Ip,webservice是用http,穿防火墻remoting是TCPIp,是給客戶端發一個進程和應用程序域編號,確定對象
19、頁面傳遞值QueryString,Session,Server.Transfer,input type="hidden",數據庫,cookie
20、1、1、2、3、5、8
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);
??? }
}
21、委托可以說是將方法作為參數傳入,指向一個方法的引用,事件是一種特殊的委托。
22、遍歷頁面TextBox,并賦值string.Empty
foreach(System.Windows.Forms.Control control in this.Controls)
{
??? if(control is Sytem.Windows.Forms.TextBox)
{
??? System.Windows.Froms.Textbox tb=(System.Windows.Forms.TextBox)control;
??? tb.Text=String.Empty;
}
}
23、冒泡
int [] list={1,3,5,6,4,2};
bool isOK=false;
while(!isOk)
{
??? isOk=true;
??? for(int i=0;i<list.Length-1;i++)
??? {
??????? if(list[i]>list[i+1])
??????? {
??????? swap(ref list[i],ref list[i+1]);
??????? isOk=false;
??????? }
??? }
}
private void?? swap(ref int a,ref int b)
{
??? int temp;
??? temp=a;
??? a=b;
??? b=temp;
}無必要,調用方法有開銷
24、索引器可以索引任意類型
25、//1-2+3-4+……+m自己寫的遞歸和公式
using System;
using System.Collections.Generic;
using System.Text;
//1-2+3-4+...?m
namespace ConsoleApplication1
{
??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? int num = 18;
??????????? print(num);
??????????? System.Console.WriteLine(clac1(num));
??????????? System.Console.Write("result2="+clac2(num));
??????????? System.Console.ReadLine();
??????? }
??????? private static int clac2(int num)
??????? {
??????????? if (num % 2 == 0)
??????????????? return num / 2 * -1;
??????????? else
??????????????? return (num-1) / 2 * -1+num;
??????? }
??????? private static int clac1(int num)
??????? {
??????????? if (num == 1)
??????????? {
??????????????? return 1;
??????????? }
??????????? else
??????????? {
??????????????? if (num % 2 == 1)
??????????????? {
??????????????????? return clac1(num - 1) + num;
??????????????? }
??????????????? else
??????????????? {
??????????????????? return clac1(num - 1) - num;
??????????????? }
??????????? }
??????? }
??????? private static void print(int num)
??????? {
??????????? StringBuilder sb = new StringBuilder();
??????????? for (int i = 1; i <= num; i++)
??????????? {
??????????????? sb.Append(i);
??????????????? if (i % 2 == 1 && i != num)
??????????????? {
??????????????????? sb.Append("-");
??????????????? }
??????????????? if (i % 2 == 0 && i != num)
??????????????? {
??????????????????? sb.Append("+");
??????????????? }
??????????
??????????? }
??????????? System.Console.Write(sb+"=");
??????????
???????????
??????? }
???
??? }
}
26、應用程序域是輕量級進程,安全作用。
27、CTS通用語言系統,CLS通用語言規范,CLR公共語言運行時(庫)
28、值到引用類型裝箱,引用到值拆箱
29、unsafe非托管代碼
30、調用WS方法:①WSDL.exe②Add Web Reference
31、使用foreach遍歷的對象要有IEnumerable接口和GetEnumerator方法
32、GC是收集器,System.gc();
33、啟動一個線程是start()
34、String類是final類不可繼承
35、List和Set是繼承自Collection接口
36、==是引用相等,equals是值相等
37、Session的Bug是系統繁忙會丟失
38、一個進程(系統資源分配)可以有多個線程(Cpu分配)
39、ASPX是編譯形,可以與美術分開
40、GAC是全局程序集緩存
41、發送請求get,post
42、DataReader是提供一個只讀游標,DataSet是表
43、軟件開發過程:需求分析、架構設計、代碼編寫、QA(質量分析)、部署
44、using引入命名空間和使用非托管資源new新建實例或隱藏父類方法
45、刪多的空格
str=Regex.Replace(str.Trim()," +"," ");
46、反射是動態獲取程序集信息(成員、方法)
47、虛函數,可由子類繼承差重寫的函數,抽象函數規定必須實現,必須重寫。
48、XML可擴展標記語言
49、ADO.net的常用對象:Connection Command DataReader DataSet DataAdapter
??? ??? (2C3D)
50、XML區分大小寫,必須結束,屬性必須要引號
51、錯誤處理try->catch->finally
52、<%#%>綁定<%=%>變量<%%>代碼
53、 重載是水平關系,參數不同
?????? 覆蓋是垂直關系,參數相同
54、取31到40條記錄
????? select top 10 * from A where id not in (select top 30 id from A)
55、面向對象:封裝、繼承、多態
56、finally的語句在return之前運行。
57、BS開發,數據訪問層、業務層、表示層
58、讀數據的方法:ExecuteScalar、Fill、ExecuteReader
59、HttpModule是HttpApplication對象初始化一并載入,在http請求中,很多事件比如sessionStart,可以在每個事件上掛事件,比如檢測錯誤寫日志,HttpHandler觸發時開始攔截觸發事件,抓住的意思,對擴展名如何處理,就是httphandle來處理,例如處理image,調用哪一類,比如處理jpg用什么處理,防盜鏈
60、存儲過程與Sql語句比較:
??? ①存儲過程創建時已經編譯,不用再編譯
??? ②可以將復雜操作與事務處理結合。
??? ③存儲過程可以重復使用。
??? ④安全性高
61、常用的設計模式工廠模式、建造者模式、觀察者模式、策略模式、原型模式、代理模式。
62、接口可以繼承接口、抽象類可以實現接口,抽象類可以繼承實體類,但實體類必須有明確的構造函數。
63、最有效的*8,2<<3
64、final申明不可變
????? finally是異常處理必須執行
????? finallize是類的一個方法,垃圾回收時執行
65、HashMap是HashTable的輕量級實現,(小地圖),實現了Map接口,HashMap可以鍵值為Null,效率更高
66、Collections是針對集合類的一個幫助類,有許多方法,Collection是集合類的上級接口。
67、委托是將方法作為一個參數傳遞,比函數指針更安全,不帶方法體。
68、Override是重寫基類的方法,參數等全相同,Overload是重載
69、response,redictor,Server.Transfer QueryString,cookie,session,input type="hidden"
70、反射是動態獲得對象的類型、方法、屬性
????? 序列化是將對象轉換為另一種傳輸的格式。
71、Const編譯時常量,ReadOnly運行時常量
72、TCP是傳輸控制協議,可靠的連接,UDP是用戶數據報協議,不可靠的連接
73、進程是系統分配資源,線程是Cpu分配,一個可以有多個線程
74、應用程序域:為安全性、版本控制、卸載程序提供的隔離邊界
????? 代管代碼:CLR公共語言運行時(庫)開發的代碼是托管代碼。
75、身份驗證:windows(比窗口認證可靠性更高更小攻擊面,但帳戶泄露,后果嚴重).forms(用戶群大的開放環境,論壇等,但受到的攻擊多).passport,
76、UDDI是集成協議,基于WEB、分布式的實現標準規范
????? WSDL是基于XmL描述的WEB服務的接口。
77、SOAP是簡單訪問,基于Xml,用于分布式環境。
78、ADO以RecorderSet存儲,單表,ADO.net用DataSet,多表
79、接口與抽象類的區別
????? 接口不能實例化,所有的方法都是公有的,抽象的,抽象類只要一個抽象方法,實現一個接口,必須實現所有的方法
80、值類型數據存在堆棧中,不可共用,引用類型存在堆中,可以共同使用,改引用地址
81、三層DataAccess,Business,Web
82、JS驗證是否數字
function check()
{
??? var t1=document.getElementById("tt");
??? var reg=/^"d+$/;
??? alert(reg.test(t1.value));
???
}
83、remoting工作原理是服務端向客戶端發送一個進程編號、一個程序域編號,確定對象的位置
84、WEB控件是可以在服務器端執行的控件,可以回送數據,有事件驅動
85、頁面代碼,OnInit(),Page_Load(),事件
86、上下文對象HttpContext,在類中調用
87、Transfer是轉發,Redirect是跳轉
88、JS中的類
function User(name,age)
{
??? this.name=name;
??? this.age=age;
??? this.getInfo=getInfo;
}
function getInfo()
{
??? document.write(this.name);
??? document.write(this.age);
}
var user1=new User("Lisng",33);
user1.getInfo();
89、C#中讀Xml
??????????? XmlDocument doc = new XmlDocument();
??????????? doc.Load(Server.MapPath("test.xml"));
??????????? foreach (XmlNode node in doc.ChildNodes)
??????????? {
??????????????? DisplayNode(node);
??????????? }
??????? private void DisplayNode(XmlNode node)
??????? {
??????????? Response.Write(node.Name + ":" + node.Value+"<br/>");
??????????? if (node.HasChildNodes)
??????????????? foreach (XmlNode _node in node.ChildNodes)
??????????????????? DisplayNode(_node);
??????? }
90、FrameSet無body,from
?? <frameset cols="50%,*">
??????? <frame name="treeframe" src="page1.aspx">
??????? <frame name="pageframe" src="">
??? </frameset>
91、FireFox不支持VBscript
92、XML作用①做網頁Xslt②數據庫③保存對象的序列化
93、手寫連接
??????????? // 在此處放置用戶代碼以初始化頁面
??????????? //string strConn="server=(local);database=MyBlog;User Id=sa;pwd=sa";
??????????? //string strConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:"Customer.mdb
??????????? string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:"test.mdb";
??????????? string strSql="select * from [User]";
??????????? DataTable dt=new DataTable();
???????????
??????????? //using(SqlConnection conn=new SqlConnection(strConn))
???????????
??????????? using(OleDbConnection conn=new OleDbConnection(strConn))
??????????? {
??????????????? conn.Open();
??????????????? using(OleDbCommand comm=new OleDbCommand(strSql,conn))
??????????????? {
??????????????????? OleDbDataAdapter da=new OleDbDataAdapter(comm);????
??????????????????? da.Fill(dt);
??????????????? }
??????????? }
??????????? DataGrid1.DataSource=dt;
??????????? DataGrid1.DataBind();
??????? }
94、ASP六大內建對象:
???????? Application Request Response Session? Server ObjectContext
???????? ARRSSO
95、VSS作用:團隊開發的代碼管理,簽出后,能保證代碼不沖突,可以加注釋
96、Code-behind將html和程序代碼分離
97、類是 引用、可繼承、默認構造、new實例化
??????? 結構 值類型、不可繼承、不可有默認構造、不可new實例化
98、操作符重載可以對操作符賦予不同的功能,自定義的操作符
99、遍歷TextBox并賦“”
private?? void?? textnull(Control?? a)?
{?
??? for (int i=0;i<a.Controls.Count ;i++ )
??? {
??????? if(a.Controls[i].GetType().ToString()=="System.Web.UI.WebControls.TextBox")
??????? {
??????????? ((TextBox)a.Controls[i])Text="";
??????? }
??????? else
??????? {
??????????? textnull(a.Controls[i]);
??????? }
??? }
}
100、單體模式類
public class Wife
{
??? private string name;
??? private static Wife wife=null;
??? private Wife()
??? {
??????? //不允許私自構造
??? }
??? public static Wife getWife()
??? {
??????? if(wife==null) wife=new Wife();//只有為空時才創建
??????? return wife;
??? }
};
101、寫出一個存儲過程, 取出表A中第@m條到第@n條記錄(@m和@n是輸入參數,@m < @n)(SQL Server, 以自動增長的ID作為主鍵, 注意:ID可能不是連續的。)
CREATE PROCEDURE [dbo].[Proc_ReadMToN]
(@m [int],
@n [int])
AS
SELECT * FROM TABLE
WHERE
ID > @m and ID<@n
102、插入隨機數
??????????? int[] Arr = 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];
??????????? }
103、頁面過程Init ->Load->PreRender->Render->Dispose->Unload
104、1000以內素數
????? static private Boolean IsZhiShu(int x)
??????? {
??????????? Boolean Yes = true;
??????????? for (int i = 2; i <= Math.Sqrt(x); i++)
??????????? {
??????????????? if((x % i)==0)
??????????????? {
??????????????????? Yes = false;
???????????????? }
??????????? }
??????????? return Yes;
??????????
??????? }
??????? static void Main(string[] args)
??????? {
??????????? for (int i = 2; i < 1000; i++)
??????????? {
??????????????? if (IsZhiShu(i) == true)
??????????????? {
??????????????????? Console.Write(i.ToString());
??????????????????? Console.Write("? ");
??????????????? }
??????????? }
??????????? Console.ReadKey();
??????? }
105、跳轉頁面方式
如果用戶決定:超級鏈接
如果要控制目標:HyperLink 動態設定NavigateUrl
Response.Redirect
如果要轉流程,避免不必要的網絡通信
Server.Transfer
如果要捕獲一個頁面的輸出,將結果插入另一個aspx
Server.Execute
106、面試的一道SQL
今天沒做起的一道SQL面試題
選出每科的最高分
?Lisng??? 語文??? 80??
Nonly??? 語文??? 78??
Jiang??? 數學??? 88??
Lxy??? 數學??? 80??
Jacky??? 外語??? 99?
Andy??? 數學??? 66??
? select b.stu_id,stu_name,a.course,a.score
from
(select course,max(score) as score from stu_info group by course) as a,
stu_info as b
where b.course=a.course and b.score=a.score
?分組后,只會出現
語文
數學
外語
score應該是一組,所以用max取最大值
?更強的
?select * from stu_info as a
where score=(select max(score) from stu_info where course=a.course)
107、ORM關系數據庫與對象的映射
108、Ado以Recordset存儲, Ado.net以DataSet,提供了數據集和數據適配器,有利于分布式處理。
109、asp.net2.0與1.1相比的優勢
語法增加了泛型、無名方法、可空類型、partial類
.net層面母版頁、模板、主題
110、可以看做操作數據集的新語法,LinqToXml,LinqToSql
111、WebService服務可以描述為可以在web上部署并可以被任何應用程序或其他服務調用的功能。
112、C#中的接口和類有什么異同。
??????? 答:接口,是可以多繼承,類只有單繼承.接口強調了你必須實現,而沒有具本實現的方法和虛類有點相似。
113、內置對象
Response、Request、Server、Session、Application、Cookie
114、請說明在.net中常用的幾種頁面間傳遞參數的方法,并說出他們的優缺點。
答:session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被偽造
input ttype="hidden" 簡單,可能被偽造
url參數 簡單,顯示于地址欄,長度有限
數據庫 穩定,安全,但性能相對弱
115、維護數據庫的完整性、一致性、你喜歡用觸發器還是自寫業務邏輯?為什么?
答:盡可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空字段)實現,這種方式的效率最好;其次用觸發器,這種方式可以保證無論何種業務系統訪問數據庫都能維持數據庫的完整性、一致性;最后再考慮用自寫業務邏輯實現,但這種方式效率最低、編程最復雜,當為下下之策。
116、幾大對象
Request對象主要是讓服務器取得客戶端瀏覽器的一些數據,包括從HTML表單用Post或者GET方法傳遞的參數、Cookie和用戶認證。
Response對象用語輸出數據到客戶端,包括向瀏覽器輸出數據、重定向瀏覽器到另一個URL或向瀏覽器輸出Cookie文件。
Server對象提供對服務器上的方法和屬性進行的訪問?.其類名稱是HttpServerUtility.
Application對象在實際網絡開發中的用途就是記錄整個網絡的信息,如上線人數、在線名單、意見調查和網上選舉等。
Session即會話,是指一個用戶在一段時間內對某一個站點的一次訪問。?
Cookie就是Web服務器保存在用戶硬盤上的一段文本。
?
1.用兩種方法求數列 1,1,2,3,5,8.......n的第n位數function getN(n){if (n<3)?{return 1;}else{return getN(n-1)+getN(n-2);}}function getN2(n){if(n<3){return 1;}else{var a=1,b=1,c=0for(var i=3;i<=n;i++){c=a+b;a=b;b=c;}return b;}}2.寫出observer設計模式,貓叫,人醒,老鼠跑using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace observer1{public interface IObserver{void Response();}public interface IObject{void AddFollower(IObserver obs);}public class Mouse:IObserver{private string _name;public Mouse(string name,IObject obj){_name = name;obj.AddFollower(this);}public void Response(){Console.WriteLine("Mouse: "+ _name + " start running!");}}public class Person : IObserver{public Person(IObject obj){obj.AddFollower(this);}public void Response(){Console.WriteLine("person wake up!");}}public class Cat : IObject{?public List<IObserver> obsList;public Cat(){obsList = new List<IObserver>();}public void AddFollower(IObserver obr){obsList.Add(obr);}public void Cry(){Console.WriteLine("cat is crying!");foreach (IObserver obr in obsList){obr.Response();}}}class ObserverTest{static void Main(string[] args){Cat cat = new Cat();Mouse m1 = new Mouse("mouse1", cat);Mouse m2 = new Mouse("mouse2", cat);Person p = new Person(cat);cat.Cry();Console.ReadLine();}}}3.javascript三種彈出窗體的方式var pwd = prompt("enter your password:","***");if(confirm("Are you sure!")){if(pwd == "***"){alert("success!");}}4.現場設計數據庫,公交車經過的站點create table route(id int primary key identity(1,1) not null,name varchar(10) not null,remark varchar(10) null)create table routeInfo(rID int not null,--路線IDsID int not null,--站點ID)create clustered index i_rid on routeInfo(rID asc)create table stops(id int primary key identity(1,1) not null,name varchar(10) not null,remark varchar(10) null)truncate table stops/*create clustered index i_name on route(name asc)drop index PK__route__03317E3D on routecreate nonclustered index i_name on route(name desc)drop index i_name on routealter table route drop constraint idkey*/select * from route5.SQL刪除相同行記錄delete route from route as r left join (select min(id) as id,name,remark from route group by name,remark) as b on r.id=b.idwhere b.id is null6.數據庫索引方面的知識,聚集索引和非聚集索引聚:物理上連續的,葉節點是數據,一個表只有一個聚集非:索引是連續的,葉節點存的還是索引,索引指向內容一般來說:where 條件的都用聚或聯合聚,時間字段最好用聚,自增ID一般不浪費聚,7.ASP.NET里如何解決Session失效的問題分析原因Global.asax文件,Config文件被更改或掃描檢查是否有Session.Abandon是否有更新的文件放在BIN目錄下如果是Iframe造成的,在Header里面加一段代碼webconfig加大超時的時間webconfig的Session的3種存儲方式,inproc,stateserver,sql8.值類型和引用類型的區別值類型就是現金,要用直接用;引用類型是存折,要用還得先去銀行取現。值類型存取速度快,引用類型存取速度慢。值類型繼承自System.ValueType,引用類型繼承自System.Object值:直接存數據,棧引用:存對象的引用,堆,需要內存回收比較struct和class的不同,可以得出以下幾條struct和class的使用原則:1 在表示諸如點、矩形等主要用來存儲數據的輕量級對象時,首選struct。2 在表示數據量大、邏輯復雜的大對象時,首選class。3 在表現抽象和多級別的對象層次時,class是最佳選擇9. 選出TableA中15條到25條的數據,Identity ID是不連續自增的。with tmp as(?select row_number() over(order by id asc) as rowID ,name from route)select * from tmp where rowID between 2 and 510.編寫存儲過程,取出數據庫表中的15到25中的10條記錄。分頁,4種排序函數with tmp as?(select ntile(3) over(order by id asc) as page,* from route)select * from tmp面試:1. ? ? ? 大容量數據的更新。分批更新作業游標使用select case when ..... in newTb from stb2. ? ? ? 關注在設計模式 列出你熟悉的 然后讓你當場寫一個示例,從你列出的任選其一。單例class Singleton{private static Singleton _instance;private Singleton() { }public static Singleton instance{get {if (_instance == null){_instance = new Singleton();}return _instance;}}}簡單工廠class Program{static void Main(string[] args){IFruit apple = FriuFactory.CreateFriut("apple");IFruit banana = FriuFactory.CreateFriut("banana");Console.WriteLine("apple:" + apple.Price);Console.WriteLine("Banana:" + banana.Price);Console.ReadLine();}}public interface IFruit{int Price { get; }}public class Apple : IFruit{?public int Price{get {return 5;}}}public class Banana : IFruit{public int Price{get{return 6;}}}public class FriuFactory{public static IFruit CreateFriut(string key){switch (key){?case "apple":return new Apple();case "banana":return new Banana();}return null;}}適配器模式裝飾模式觀察者模式外觀模式3. ? ? ? 面試到一定的時候就讓你寫一個設計訂單表create table orders(id bigint identity(1,1) not null,userID bigint not null,orderID varchar(50) not null,createTime int not null,)create unique index u_id on orders(id)create unique clustered index c_userID on orders(userID asc)insert into orders values(3,'no125',datediff(second,'2000-1-1',getdate()))函數題:傳入一個list和一個值找出所有關于這個list中所有元素能組合這個值的組合相加得這個值,并對寫的算法進行討論。4. 數據庫問了怎么處理異常set xact_abort oncommit trantry{}catch (){}HR說的1. ? ? ? 很多候選人可能是做到一定程度,又可能是公司分工的問題,可能很多只是剛開始會親自去寫編碼或者寫東西,但是咱們要求的是項目中會親自寫代碼、寫SQL的,重技術,而且算法和SQL是必須會得,缺一不可。2. ? ? ? 我們比較期望候選人是參加到了項目中的,并且是親自動手操作過的,最好是核心部分,說白了就是真實參加到開發過程中,有了一定經驗,掌握了一定技術及思路的3. ? ? ? 我們是特別注重動手能力,高端一點的人會開始注重設計能力注意:多了解設計模式和微軟才出來的東東做了兩道題,分別是大數階乘和分頁查詢。但問的題比較多,整理如下:求5000的階乘(大數階乘),談談QQ農場的設計思路?SP的優缺點,臨時表與表變量的優缺點及適用場合?行列轉換的兩種方式:函數和CASE 子句SP:安全,高效,不會產生大量T-sql語句的代碼流量。對執行計劃的重復使用,可維護,版本控制如果更改輸入,輸出參數麻煩,可移植性差不支持面向對象的設計,無法采用面向對象的方式將業務邏輯進行封裝,從而無法形成通用的可支持復用的業務邏輯框架。臨時表是利用了硬盤(tempdb數據庫) ,表名變量是占用內存,因此小數據量當然是內存中的表變量更快。當大數據量時,就不能用表變量了,太耗內存了。大數據量時適合用臨時表。觸發器、自定義函數用表變量;存儲過程看情況,大部分用表變量;特殊的應用,大數據量的場合用臨時表。表變量有明確的作用域,在定義表變量的函數、存儲過程或批處理結束時,會自動清除表變量。表變量不必刪除,也就不會有命名沖突,臨時表特別是全局臨時表用的時候必須解決命名沖突。表變量:需要事先知道表結構 ?普通臨時表:只在當前會話中可用與表變量相同 ?into一下就可以了,方便 ?全局臨時表:可在多個會話中使用存在于temp中需顯示的drop ?select name,isnull(sum(case subject when 'math' then score end),0) as 'math',isnull(sum(case subject when 'english' then score end),0) as 'english'from score group by nameselect * from scorepivot(sum(score) for subject in(math,english)) as b有javascript實現C#的Format方法,如Format(“How {0} you,How {1} are you.”,"Are","old")=How Are you,How old are you.<script type="text/javascript">//V1 methodString.prototype.format = function(){var args = arguments;return this.replace(/\{(\d+)\}/g, ? ? ? ? ? ? ? ?function(m,i){return args[i];});}//V2 staticString.format = function() {if( arguments.length == 0 )return null;var str = arguments[0];?for(var i=1;i<arguments.length;i++) {var re = new RegExp('\\{' + (i-1) + '\\}','gm');str = str.replace(re, arguments[i]);}return str;}var a = "I Love {0}, and You Love {1},Where are {0}! {4}";alert(String.format(a, "You","Me"));alert(a.format("You","Me"));</script>對那些開源項目有了解?有了解過ORM架構嗎?AOP,IOC的概念,AOP為Aspect Oriented Programming的縮寫,意為:面向方法編程,可以通過預編譯方式和運行期動態代理實現在不修改源代碼的情況下給程序動態統一添加功能的一種技術。AOP是OOP的延續,是Aspect Oriented Programming的縮寫,意思是面向方面編程。AOP實際是GoF設計模式的延續,設計模式孜孜不倦追求的是調用者和被調用者之間的解耦,AOP可以說也是這種目標的一種實現。IOC控制反轉,依賴注入設計模式也問到了,后面談了對電子商務的看法和了解。1.一個12升的杯子裝有12升水,還提供8升的杯子1個,和5升的杯子一個.請幫我分6升的水出來?4,8,04,3,59,3,09,0,31,8,31,6,56,6,02.存儲過程/鎖和事務.(問我用代碼解鎖,在select語句最后加上 nolock)3. 聯接的種類,內聯接及左右聯接的區別外聯接full outer join 左+右+內cross join 乘積left join 以left join前面的表為主表,把left join后面的表符合on條件的內容加到主表中,如果沒有符合on條件的內容,則顯示為NULLright join 以right join后面的表為主表,把right join前面的表符合on條件的內容加到主表中,如果沒有符合on條件的內容,則顯示為NULLinner join 就是返回兩個表中符合on條件的記錄,若不滿足條件則不返回4.UNION 和 UNION ALL 的區別union 有distinct 功能Union all 不包含所以如果要組合的表數據不重復,使用Union all 更快。5.批處理(包括存儲過程中),鎖機制是怎樣的(允許查詢及DML嗎)1.HOLDLOCK: 在該表上保持共享鎖,直到整個事務結束,而不是在語句執行完立即釋放所添加的鎖。?2.NOLOCK:不添加共享鎖和排它鎖,當這個選項生效后,可能讀到未提交讀的數據或“臟數據”,這個選項僅僅應用于SELECT語句。?3. PAGLOCK:指定添加頁面鎖(否則通常可能添加表鎖)。?4.READCOMMITTED:設置事務為讀提交隔離性級別。?5.READPAST: 跳過已經加鎖的數據行,這個選項將使事務讀取數據時跳過那些已經被其他事務鎖定的數據行,而不是阻塞直到其他事務釋放鎖,READPAST僅僅應用于READ COMMITTED隔離性級別下事務操作中的SELECT語句操作。?6.READUNCOMMITTED:等同于NOLOCK。?7.REPEATABLEREAD:設置事務為可重復讀隔離性級別。?8.ROWLOCK:指定使用行級鎖。?9.SERIALIZABLE:設置事務為可串行的隔離性級別。?10.TABLOCK:指定使用表級鎖,而不是使用行級或頁面級的鎖,SQL Server在該語句執行完后釋放這個鎖,而如果同時指定了HOLDLOCK,該鎖一直保持到這個事務結束。?11.TABLOCKX:指定在表上使用排它鎖,這個鎖可以阻止其他事務讀或更新這個表的數據,直到這個語句或整個事務結束。?12. UPDLOCK :指定在讀表中數據時設置修改鎖(update lock)而不是設置共享鎖,該鎖一直保持到這個語句或整個事務結束,使用UPDLOCK的作用是允許用戶先讀取數據(而且不阻塞其他用戶讀數據),并且保證在后來再更新數據時,這一段時間內這些數據沒有被其他用戶修改。?還有一些函數題的,和問了一些進存銷的東西。
轉載于:https://www.cnblogs.com/lishenglyx/archive/2008/09/07/1286338.html
總結
以上是生活随笔為你收集整理的Asp.net(C#)面试100+题陆续添加中……的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 改变TabNavigator控件第一个t
- 下一篇: 献给老师,我的编程之路