初中级程序员面试题
自己整理的,也有摘自網絡上的,如有侵權,請聯系,我及時刪除。
1、簡述javascript中的“=、==、===”的區別?
=賦值
==比較是否一般相等 ? "3"==3 //會做類型的隱式轉換,true
===比較是否嚴格相等 "3"===3 //先比較類型,再進行值比較,false?
?
2、看下列代碼輸出為何?解釋原因 var a = null; alert(typeof a);? var b; alert(typeof b); alert(c);
a為null,也是一個對象,所以typeof(a)為object.
b只有聲明沒有初始化,因此typeof(b)為undefined.
c沒有定義,因此alert(c)會出現error.
3、編寫javascript代碼實現把兩個數組合并,并刪除第二個元素。
合并js數組用concat方法,array1.concat(array2)。
刪除元素用splice方法,splice(1,1),函數原型splice(index,count),指從數組索引1處開始刪除1個元素,即刪除第二個元素。
4、簡述javascript的作用域和閉包
js變量的作用域是指:函數內定義的局部變量只在此函數內有效,而全局變量可以全局有效。
閉包的作用就在于能夠改變局部變量的作用域,將值保存下來,但是如果使用不當會造成無法回收變量,引起性能問題,甚至崩潰。
http://www.cnblogs.com/shinhwazt/p/6013045.html
var data = []; ? function demo(){ ????? var data = []; ????? return{ ????????? add:function(a){ ????????????? data.push(a); ????????? }, ????????? print:function(){ ????????????? console.log(data); ????????? } ????? } ? } ? var tool = demo(); ? tool.add(1); ? tool.add(2); ? tool.add(3); ? tool.print();//[1, 2, 3] ?閉包也可以幫我們解決一些小問題:
? for(var i=0;i<4;i++){
????? setTimeout(function(){
????????? console.log(i);
????? });
? }
我們預期的結果是打印當前循環的i值結果輸出全是4。先解釋一下出現這么情況的原因:JS是一種單線程的語言,而setTimeout是異步的,只有當我們的代碼執行完成以后setTimeout的處理函數才會執行,而執行的時候i的值已經是4了所以最終的輸出全是4。
我們可以通過閉包來解決這一問題:
? for(var i=0;i<4;i++){
????? (function(i){
????????? setTimeout(function(){
????????????? console.log(i)
????????? })
????? }(i))
? }
閉包可以形成一個獨立的作用域這樣每次循環都會有一個獨立的函數作用域,循環完成后雖然i的值仍然是4但是setTimeout的處理函數在尋找i的時候會優先找到作為參數的i,而每一個參數i都表示當次循環的i,利用閉包我們可以完美的解決這種問題。
在我們實際開發的過程中,遇到這種情況我們就可以通過閉包來解決,我們所說的"這種情況"通常有三個特點:
1.首先有一個循環
2.循環里面會創建函數,并且函數是延后執行的
3.這些延后執行的函數會使用一個共同的變量,并且這個共同的變量和當前的循環值有關系
我們按照這個規律套一下上面的代碼:
循環有了,每次循環也會生成一個函數,這些函數也都是在循環完成后才能執行,而且每一個函數都使用共同的i,而i就是當前的循環值,正好符合我們的三個特點。我們通過(function(){}())這種方式(匿名函數自執行)來形成一個閉包達到我們預期的目的。
?
5、列舉你用過的javascript框架,并簡述它們的優缺點
js框架:jQuery EasyUI、ExtJS、Bootstrap、AngularJS等等。
jQuery EasyUI:輕量級web前端ui開發框架,尤其適合MIS系統的界面開發,能夠重用jquery插件。
ExtJS:統一的前端UI開發框架,學習難度中等。尤其適合MIS系統的界面開發,開發文檔和例子代碼都比較完整。缺點是大量的js腳本,降低了運行速度。
Bootstrap:響應式網站開發框架,優點是降低了后端開發人員開發前端頁面的難度,統一了界面風格,缺點是界面風格比較單一。
AngularJS:將java后端的優秀特性引入到了js前端,大而全的框架。缺點是學習曲線高,Angular2幾乎重寫。
6、簡述a.Equals(b)和a==b的區別?
Equals方法比較內容(值是否相等),==比較引用地址(是否指向同一個對象)。
7、ASP.NET的Application、Session、Cookie、ViewState和Cache等變量的區別是什么?
Application 應用程序級別
Session 會話級別用戶跟蹤
Cookie 客戶端存儲少量信息
ViewState 保持ASP.NET控件狀態的機制
Cache 緩存
8、列舉ASP.NET MVCActionResult的返回值有幾種類型?
主要有View(視圖)、PartialView(部分視圖)、Content(內容)、Json(Json字符串)、Javascript(js腳本)、File(文件)等幾種類型。
9、簡述ASP.NET WebApi相對于ASP.NET MVC的優點?
WebApi消息處理管道獨立于ASP.NET平臺,支持多種寄宿方式。
?
10、簡述ASP.NET請求的生命周期?
用戶從 Web 服務器請求應用程序資源->ASP.NET 接收對應用程序的第一個請求->為每個請求創建 ASP.NET 核心對象->將HttpApplication對象分配給請求->由HttpApplication?管線處理請求
refer:https://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.100).aspx
11、ORM中的延遲加載與直接加載有什么異同?
延遲加載(Lazy Loading)只在真正需要進行數據操作的時候再進行加載數據,可以減少不必要的開銷。
12、簡述Func<T>與Action<T>的區別?
Func<T>是有返回值的委托,Action<T>是沒有返回值的委托。
13、開啟一個異步線程的幾種方式?多線程編程時的注意事項?
APM(Asynchrocous Programming Model,比如:BeginXXX、IAsyncResult)、EAP(Event-Based Asynchronous Pattern,比如:DownloadContentAsync)、TPL(Task Parallel Library,比如:Task.Factory.StartNew)、async/await。
線程餓死、線程死鎖、線程同步、線程安全。
14、簡述Linq是什么,以及Linq的原理?并編寫一個Linq to Object的示例代碼
Linq(Language Integrated Query),其中Linq to Object是對Enumberable擴展方法的調用,在執行時會轉化為Lambda然后執行。
示例代碼:Linq分組統計
var result = from p in list.AsEnumerable()
???????????? group p by p.Province into g
???????????? selectnew
????? ???????{
???????????????? g.Key,
???????????????? SumValue = g.Sum(p =>p.Value)
???????????? };
result.ToList().ForEach((i)=>
{
??? Console.WriteLine(i.Key + ":" + i.SumValue);
});
?
?
15、簡述面向對象的特性有哪些?你是如何理解的?
繼承(inheritance)、封裝(encapsulation)、多態(polymorphism)。
16、列舉你所知道的設計模式?你在真實項目中使用過的有哪些?有什么心得?
單例模式、模板方法、工廠模式、外觀模式、策略模式等。
17、編寫SQL從A表中查出Name字段重復三條以上的記錄,并編寫SQL刪除這些重復記錄
查詢Name字段記錄重復三條以上的記錄
select name from A groupby name havingcount(name)>3
?刪除重復記錄
ifexists(select*from sysobjects where name ='tempA')
? droptable tempA
select ROW_NUMBER() over (orderby name ) as rowid, name into tempA from A
?
select*from tempA
?
--刪除重復記錄,只保留rowid最小的那一行
deletefrom tempA where name in
(select name from tempA groupby name havingcount(name)>3)
and rowid notin (selectmin(rowid) from tempA group by name having count(name)>3)
?
select*from tempA
?
?
?
18.Net和C#有什么區別
?答:.Net一般指 .net FrameWork框架,是一種平臺,一種技術。
? C# 是一種編程語言,可以基于.Net 平臺的應用。
19.?簡述 private、 protected、 public、 internal 修飾符的訪問權限。
答 . private : 私有成員, 在類的內部才可以訪問。
protected : 保護成員,該類內部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內可以訪問。
20 .列舉ASP.NET?頁面之間傳遞值的幾種方式。
答. 1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session變量
3.使用Server.Transfer
4.使用Application
5.使用Cache
6使用HttpContext的Item屬性
7.使用文件
8.使用數據庫
9.使用Cookie
21. 一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第30位數是多少,用遞歸算法實現。
答:public class MainClass
{
public staticvoid Main()
{
Console.WriteLine(Foo(30));
}
public staticint Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0&& i <= 2)
return 1;
else returnFoo(i -1) + Foo(i - 2);
}
}
22.C#中的委托是什么?事件是不是一種委托?
答:
委托可以把一個方法作為參數代入另一個方法。
委托可以理解為指向一個函數的引用。
是,是一種特殊的委托
23.override與重載的區別
答:
override 與重載的區別。重載是方法的名稱相同。參數或參數類型不同,進行多次重載以適應不同的需要
Override 是進行基類中函數的重寫。實現多態。
24.如果在一個B/S結構的系統中需要傳遞變量值,但是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
答:
同第2題
25.請編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty?
答:
foreach(System.Windows.Forms.Control control in this.Controls)
{
if (control isSystem.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBoxtb = (System.Windows.Forms.TextBox)control ;
tb.Text =String.Empty ;
}
}
26.請編程實現一個冒泡排序算法?
答:
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;
}
}
}
27.描述一下C#中索引器的實現過程,是否只能根據數字進行索引?(索引器是對屬性的封裝,具體查看msdn)
答:不是。可以用任意類型。
28.求以下表達式的值,寫出您想到的一種或幾種實現方法: 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();
29.用.net做B/S結構的系統,您是用幾層結構來開發,每一層之間的關系以及為什么要這樣分層?
答:使用MVC模式分層
一般為3層
數據訪問層,業務層,表示層。
數據訪問層對數據庫進行增刪查改。
業務層一般分為二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。
表示層為了與用戶交互例如用戶添加表單。
優點:分工明確,條理清晰,易于調試,而且具有可擴展性。
缺點:增加成本。
30.在下面的例子里
using System;
class A
{
public A()
{
PrintFields();
}
public virtualvoid PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B()
{
y=-1;
}
public overridevoid PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
當使用new B()創建B的實例時,產生什么輸出?
答:new B()
只會輸出:x=1,y=0
但是當 B b= new B(); b.PrintFields();
此時的輸出是
x=1,y=0
x=1,y=-1
但是當 A b= new B(); b.PrintFields();
此時的輸出是
x=1,y=0
x=1,y=-1
但是當 A b= new A(); b.PrintFields();
此時什么也不輸出的
31.什么叫應用程序域?
https://blog.csdn.net/figerdeng/article/details/11992511
答:應用程序域可以理解為一種輕量級進程。起到安全的作用。占用資源小。
32.CTS、CLS、CLR分別作何解釋?
答:CTS:通用語言系統。CLS:通用語言規范。CLR:公共語言運行庫。
33.什么是裝箱和拆箱?
答:從值類型接口轉換到引用類型裝箱。從引用類型轉換到值類型拆箱。
34.什么是受管制(托管)的代碼?
答:
托管代碼是運行.NET 公共語言運行時CLR的代碼
unsafe:非托管代碼。不經過CLR運行。程序員自行分配和釋放內存空間
35.什么是強命名程序集?
答:程序集需要經過加密簽名,強命名程序集可以部署到全局程序集緩存中,成為公共程序集
36.Net中讀寫數據庫需要用到那些類?他們的作用?
答:DataSet:數據集。
DataCommand:執行語句命令。
DataAdapter:數據的集合,用語填充。
DataReader:數據只讀器
37.ASP.net的身份驗證方式有哪些?分別是什么原理?
答:
Windwos(默認)用IIS控制
From(窗體)用帳戶
Passport(密鑰)
38.什么是Code-Behind技術?
答:代碼后置。
39.在.net中,配件的意思是?
答:程序集。(中間語言,源數據,資源,裝配清單)
40.常用的調用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜單選項
41..net Remoting的工作原理是什么?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以確定對象的位置。
42.在C#中,string str =null 與 string str = “” 請盡量使用文字或圖象說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度為空字符串的內存空間。
43.請詳述在dotnet中類(class)與結構(struct)的異同?
答:class可以被實例化,屬于引用類型,class可以實現接口和單繼承其他類,還可以作為基類型,是分配在內存的堆上的
struct屬于值類型,不能作為基類型,但是可以實現接口,是分配在內存的棧上的.
44.根據委托(delegate)的知識,請完成以下用戶控件中代碼片段的填寫:
namespace test
{
public delegatevoid OnDBOperate();
public classUserControlBase : System.Windows.Forms.UserControl
{
public eventOnDBOperate OnNew
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse)
{
if(e.Button.Equals(BtnNew))
{
//請在以下補齊代碼用來調用OnDBOperate委托簽名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e);
45.分析以下代碼,完成填空
string strTmp ="abcdefg某某某";
int i=System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j=strTmp.Length;
以上代碼執行完后,i= j=
答:i=13,j=10
46.SQLSERVER服務器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句獲得最后更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (SelectMAX(LastUpdateDate) FROM table1)
47.根據線程安全的相關知識,分析以下代碼,當調用test方法時i>10時是否會引起死鎖?并簡要說明理由。
public voidtest(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現死鎖。但如果把int換做一個object,那么死鎖會發生)
48.簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。
答:webservice主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進制傳送提高效率。
49.公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到以下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如DataGrid相似)。根據您的知識,請簡要談一下您的思路
答:根據點擊的列頭,包該列的ID取出,按照該ID排序后,在給綁定到ListView中。
50.給定以下XML文件,完成算法流程圖。
<FileSystem>
< DriverC>
<DirDirName=”MSDOS622”>
<FileFileName =” Command.com” ></File>
</Dir>
<FileFileName =”MSDOS.SYS” ></File>
<FileFileName =” IO.SYS” ></File>
</DriverC>
</FileSystem>
請畫出遍歷所有文件名(FileName)的流程圖(請使用遞歸算法)。
答:
void FindFile(Directory d )
{
FileOrFolders =d.GetFileOrFolders();
foreach(FileOrFolder fof in FileOrFolders )
{
if( fof is File)
You Found afile;
else if ( fof isDirectory )
FindFile( fof );
}
}
51.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增長的ID作為主鍵,注意:ID可能不是連續的。
答:解1: select top 10 * from A where id not in (select top 30id from A)
解2: select top 10 * from A where id > (select max(id)from (select top 30 id from A )as A)
52.面向對象的語言具有________性、_________性、________性
答:封裝、繼承、多態。
53.能用foreach遍歷訪問的對象需要實現________________接口或聲明________________方法的類型。
答:IEnumerable 、 GetEnumerator。
54.GC是什么? 為什么要有GC?
答:GC是垃圾收集器。程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
55.String s =new String("xyz");創建了幾個String Object?
答:兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象s。
56.abstractclass和interface有什么區別?
答:
聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對象上調用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口。
57.啟動一個線程是用run()還是start()?
答:啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處于可運行狀態,這意味著它可以由JVM調度并執行。這并不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。
58.接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concreteclass)?
答:接口可以繼承接口。
抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
59.構造器(構造函數)Constructor是否可被override?
答:構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
60.是否可以繼承String類?
答:String類是密封類故不可以繼承。
61.try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?
答:會執行,在return前執行。
62.兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
答:不對,有相同的hash code。
63.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
64.當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
65.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
答:都不能。
66.List, Set,Map是否繼承自Collection接口?
答:List,Set是Map不是
67.Set里的元素是不能重復的,那么用什么方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
答:Set里的元素是不能重復的,那么用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。
68.數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String沒有length()這個方法,有length屬性。
69.sleep() 和 wait() 有什么區別?
答:sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿后,線程不一定立即恢復執行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)“醒來”的線程具有更高的優先級
(b)正在運行的線程因為其它原因而阻塞。
wait()是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
70.short s1 = 1;s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
答:short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型。可修改為s1 =(short)(s1 +1) 。short s1 = 1; s1 += 1正確。
71.談談final, finally, finalize的區別。
答:
final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為 final的方法也同樣只能使用,不能重載
finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執行,然后控制就會進入 finally 塊(如果有的話)。
finalize—方法名。Java?技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
72.如何處理幾十萬條并發數據?
答:用存儲過程或事務。取得最大標識的時候同時更新..注意主鍵不是自增量方式這種方法并發的時候是不會有重復主鍵的..取得最大標識要有一個存儲過程來獲取.
73.Session有什么重大BUG,微軟提出了什么方法加以解決?
答:是iis中由于有進程回收機制,系統繁忙的話Session會丟失,可以用Sate server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,而且無法捕獲Session的END事件。
74.進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程可以有多個線程,這些線程共享這個進程的資源。
75.堆和棧的區別?
答:
棧:由編譯器自動分配、釋放。在函數體中定義的變量通常在棧上。
堆:一般由程序員分配釋放。用new、malloc等分配內存函數分配得到的就是在堆上。
76.成員變量和成員函數前加static的作用?
答:它們被稱為常成員變量和常成員函數,又稱為類成員變量和類成員函數。分別用來反映類的狀態。比如類成員變量可以用來統計類實例的數量,類成員函數負責這種統計的動作。
77.ASP。NET與ASP相比,主要有哪些進步?
答:asp解釋形,aspx編譯型,性能提高,有利于保護源碼。
78.產生一個int數組,長度為100,并向其中隨機插入1-100,并且不能重復。
int[] intArr=newint[100];
ArrayListmyList=new ArrayList();
Random rnd=newRandom();
while(myList.Count<100)
{
intnum=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(inti=0;i<100;i++)
intArr[i]=(int)myList[i];
79.請說明在.net中常用的幾種頁面間傳遞參數的方法,并說出他們的優缺點。
答:session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被偽造
inputttype="hidden" 簡單,可能被偽造
url參數簡單,顯示于地址欄,長度有限
數據庫穩定,安全,但性能相對弱
80.請指出GAC的含義?
答:全局程序集緩存。
81.向服務器發送請求有幾種方式?
答:get,post。get一般為鏈接方式,post一般為按鈕方式。
82.DataReader與Dataset有什么區別?
答:一個是只能向前的只讀游標,一個是內存中的表。
82.軟件開發過程一般有幾個階段?每個階段的作用?
答:可行性分析(風險控制),需求分析,架構設計,代碼編寫,測試,部署,維護
83.在c#中using和new這兩個關鍵字有什么意義,請寫出你所知道的意義?using 指令和語句 new 創建實例 new 隱藏基類中方法。
答:using 引入名稱空間或者使用非托管資源,使用完對象后自動執行實現了IDisposable接口的類的Dispose方法
new 新建實例或者隱藏父類方法
84.需要實現對一個字符串的處理,首先將該字符串首尾的空格去掉,如果字符串中間還有連續空格的話,僅保留一個空格,即允許字符串中間有多個空格,但連續的空格數不可超過一個.
答:string inputStr=" xx xx ";
inputStr=Regex.Replace(inputStr.Trim(),"*"," ");
85.下面這段代碼輸出什么?為什么?
int i=5;
int j=5;
if(Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("NotEqual");
答:不相等,因為比較的是對象
86.什么叫做SQL注入,如何防止?請舉例說明。
答:利用sql關鍵字對網站進行攻擊。過濾關鍵字'等
87.什么是反射?
答:動態獲取程序集信息
88.用Singleton如何寫設計模式
答:static屬性里面new ,構造函數private
89.什么是Application Pool?
答:Web應用,類似Thread Pool,提高并發性能。
90.什么是虛函數?什么是抽象函數?
答:虛函數:沒有實現的,可由子類繼承并重寫的函數。抽象函數:規定其非虛子類必須實現的函數,必須被重寫。
91.什么是XML?
答:XML即可擴展標記語言。eXtensibleMarkup Language.標記是指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種信息的文章等。如何定義這些標記,即可以選擇國際通用的標記語言,比如HTML,也可以使用象XML這樣由相關人士自由決定的標記語言,這就是語言的可擴展性。XML是從SGML中簡化修改出來的。它主要用到的有XML、XSL和XPath等。
92.什么是Web Service?UDDI?
答:Web Service便是基于網絡的、分布式的模塊化組件,它執行特定的任務,遵守具體的技術規范,這些規范使得Web Service能與其他兼容的組件進行互操作。
UDDI 的目的是為電子商務建立標準;UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊中心的實現標準規范,同時也包含一組使企業能將自身提供的Web Service注冊,以使別的企業能夠發現的訪問協議的實現標準。
93.什么是ASP.net中的用戶控件?
答:用戶控件一般用在內容多為靜態,或者少許會改變的情況下..用的比較大..類似ASP中的include..但是功能要強大的多。
94.列舉一下你所了解的XML技術及其應用
答:xml用于配置,用于保存靜態數據類型.接觸XML最多的是web Services..和config,存儲經常使用但是不經常修改的數據
95.ADO.net中常用的對象有哪些?分別描述一下。
答:Connection 數據庫連接對象
Command 數據庫命令
DataReader 數據讀取器
DataSet 數據集
DataAdaprer數據適配器
96.什么是code-Behind技術。
答:ASPX,RESX和CS三個后綴的文件,這個就是代碼分離.實現了HTML代碼和服務器代碼分離.方便代碼編寫和整理.
97.什么是SOAP,有哪些應用。
答:simple object access protocal,簡單對象接受協議.以xml為基本編碼結構,建立在已有通信協議上(如http,不過據說ms在搞最底層的架構在tcp/ip上的soap)的一種規范Web Service使用的協議..
98.C#中 property 與 attribute的區別,他們各有什么用處,這種機制的好處在哪里?
答:一個是屬性,用于存取類的字段,一個是特性,用來標識類,方法等的附加性質
99.XML 與 HTML 的主要區別
答:1. XML是區分大小寫字母的,HTML不區分。
2. 在HTML中,如果上下文清楚地顯示出段落或者列表鍵在何處結尾,那么你可以省略</p>或者</li>之類的結束標記。在XML中,絕對不能省略掉結束標記。
3. 在XML中,擁有單個標記而沒有匹配的結束標記的元素必須用一個 / 字符作為結尾。這樣分析器就知道不用查找結束標記了。
4. 在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。
5. 在HTML中,可以擁有不帶值的屬性名。在XML中,所有的屬性都必須帶有相應的值。
100.c#中的三元運算符是?
答:?:。
101.當整數a賦值給一個object對象時,整數a將會被?
答:裝箱。
102.類成員有_____種可訪問形式?
答:this.;new Class().Method;
103.public staticconst int A=1;這段代碼有錯誤么?是什么?
答:const不能用static修飾。
104.floatf=-123.567F; int i=(int)f;i的值現在是_____?
答:-123。
105.委托聲明的關鍵字是______?
答:delegate.
106.用sealed修飾的類有什么特點?
答:密封,不能繼承。
107.在Asp.net中所有的自定義用戶控件都必須繼承自________?
答:Control。
108.在.Net中所有可序列化的類都被標記為_____?
答:[serializable]
109.在.Net托管代碼中我們不用擔心內存漏洞,這是因為有了______?
答:GC。
110.下面的代碼中有什么錯誤嗎?_______
using System;
class A
{
public virtualvoid F(){
Console.WriteLine("A.F");
}
}
abstract classB:A
{
public abstractoverride void F(); 答:abstract override 是不可以一起修飾.
} // new publicabstract void F();
111.當類T只聲明了私有實例構造函數時,則在T的程序文本外部,___可以___(可以 or 不可以)從T派生出新的類,不可以____(可以 or 不可以)直接創建T的任何實例。
答:不可以,不可以。
112.下面這段代碼有錯誤么?
switch (i){
case(): 答://case()條件不能為空
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault; 答://wrong,格式不正確
CaseTwo();
break;
}
113.在.Net中,類System.Web.UI.Page可以被繼承么?
答:可以。
115..net的錯誤處理機制是什么?
答:.net錯誤處理機制采用try->catch->finally結構,發生錯誤時,層層上拋,直到找到匹配的Catch為止。
115.利用operator聲明且僅聲明了==,有什么錯誤么?
答:要同時修改Equale和GetHash() ? 重載了"==" 就必須重載 "!="
116.在.net(C# or vb.net)中如何用戶自定義消息,并在窗體中處理這些消息。
答:在form中重載DefWndProc函數來處理消息:
protectedoverride 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;
}
}
117.在.net(C# or vb.net)中如何取消一個窗體的關閉。
答:private void Form1_Closing(object sender,System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
118.在.net(C# or vb.net)中,Appplication.Exit 還是 Form.Close有什么不同?(winform題目非asp.net題目)
答:一個是退出整個應用程序,一個是關閉其中一個form。
119.在C#中有一個double型的變量,比如10321.5,比如122235401.21644,作為貨幣的值如何按各個不同國家的習慣來輸出。比如美國用$10,321.50和$122,235,401.22而在英國則為£10 321.50和£122 235 401.22
答:System.Globalization.CultureInfo MyCulture = newSystem.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfoMyCulture = new System.Globalization.CultureInfo("en-GB");為英國貨幣類型
decimal y =9999999999999999999999999999m;
string str =String.Format(MyCulture,"My amount = {0:c}",y);
120.某一密碼僅使用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) LOMLC) MLLO D)NMKO
答案:C
8. 62-63=1 等式不成立,請移動一個數字(不可以移動減號和等于號),使得等式成立,如何移動?
答案:62移動成2的6次方
121.對于這樣的一個枚舉類型:
enum Color:byte
{
Red,
Green,
Blue,
Orange
}
答:string[] ss=Enum.GetNames(typeof(Color));
byte[]bb=Enum.GetValues(typeof(Color));
122. C#中 property 與 attribute的區別,他們各有什么用處,這種機制的好處在哪里?
答:attribute:自定義屬性的基類;property :類中的屬性
123.C#可否對內存進行直接的操作?
答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序員不過在C#中,不能直接實現Finalize方法,而是在析構函數中調用基類的Finalize()方法
124.ADO。NET相對于ADO等主要有什么改進?
答:1:ado.net不依賴于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持動態游標和服務器端游 4:,可以斷開connection而保留當前數據集可用 5:強類型轉換 6:xml支持
125.寫一個HTML頁面,實現以下功能,左鍵點擊頁面時顯示“您好”,右鍵點擊時顯示“禁止右鍵”。并在2分鐘后自動關閉頁面。
答:<script language=JavaScript>
setTimeout('window.close();',3000);
function show()
{
if(window.event.button == 1)
{
alert("左");
}
else if(window.event.button == 2)
{
alert("右");
}
}
</script>
126.大概描述一下ASP。NET服務器控件的生命周期
答:初始化加載視圖狀態處理回發數據加載發送回發更改通知處理回發事件預呈現保存狀態呈現處置卸載
127.AnonymousInner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?
答:不能,可以實現接口
128.StaticNested Class 和 Inner Class的不同,說得越多越好
答:Static Nested Class是被聲明為靜態(static)的內部類,它可以不依賴于外部類實例被實例化。而通常的內部類需要在外部類實例化后才能實例化。
129.,&和&&的區別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and).
130.HashMap和Hashtable的區別。
答:HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable.
131.short s1 =1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
答:short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類型)
short s1 = 1; s1+= 1;(可以正確編譯)
131.Overloaded的方法是否可以改變返回值的類型?
答:Overloaded的方法是可以改變返回值的類型。
132.error和exception有什么區別?
答:error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。
exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。
133.<%# %>和 <% %> 有什么區別?
答:<%# %>表示綁定的數據源
<% %>是服務器端代碼塊
134.你覺得ASP.NET 2.0(VS2005)和你以前使用的開發工具(.Net 1.0或其他)有什么最大的區別?你在以前的平臺上使用的哪些開發思想(pattern /architecture)可以移植到ASP.NET 2.0上 (或者已經內嵌在ASP.NET 2.0中)
答:1 ASP.NET 2.0 把一些代碼進行了封裝打包,所以相比1.0相同功能減少了很多代碼.
2 同時支持代碼分離和頁面嵌入服務器端代碼兩種模式,以前1.0版本,.NET提示幫助只有在分離的代碼文件,無法在頁面嵌入服務器端代碼獲得幫助提示,
3 代碼和設計界面切換的時候,2.0支持光標定位.這個我比較喜歡
4 在綁定數據,做表的分頁.UPDATE,DELETE,等操作都可以可視化操作,方便了初學者
5 在ASP.NET中增加了40多個新的控件,減少了工作量
135.重載與覆蓋的區別?
答:1、方法的覆蓋是子類和父類之間的關系,是垂直關系;方法的重載是同一個類中方法之間的關系,是水平關系
2、覆蓋只能由一個方法,或只能由一對方法產生關系;方法的重載是多個方法之間的關系。
3、覆蓋要求參數列表相同;重載要求參數列表不同。
4、覆蓋關系中,調用那個方法體,是根據對象的類型(對象對應存儲空間類型)來決定;重載關系,是根據調用時的實參表與形參表來選擇方法體的。
136.描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
答:不是。可以用任意類型。
137.在C#中,string str =null 與 string str = " " 請盡量使用文字或圖象說明其中的區別。
答:null是沒有空間引用的;
" " 是空間為0的字符串;
138.分析以下代碼,完成填空
string strTmp ="abcdefg某某某";
int i=System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j=strTmp.Length;
以上代碼執行完后,i= j=
答:i=13.j=10
139.SQLSERVER服務器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句獲得最后更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (SelectMAX(LastUpdateDate) FROM table1)
140.分析以下代碼。
public staticvoid test(string ConnectString)
{
System.Data.OleDb.OleDbConnectionconn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString= ConnectString;
try
{
conn.Open();
…….
}
catch(ExceptionEx)
{
MessageBox.Show(Ex.ToString());
}
finally
{
if(!conn.State.Equals(ConnectionState.Closed))
conn.Close();
}
}
請問
1)以上代碼可以正確使用連接池嗎?
答:回答:如果傳入的connectionString是一模一樣的話,可以正確使用連接池。不過一模一樣的意思是,連字符的空格數,順序完全一致。
2)以上代碼所使用的異常處理方法,是否所有在test方法內的異常都可以被捕捉并顯示出來?
答:只可以捕捉數據庫連接中的異常吧. (finally中,catch中,如果有別的可能引發異常的操作,也應該用try,catch。所以理論上并非所有異常都會被捕捉。)
141.公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到以下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如DataGrid相似)。根據您的知識,請簡要談一下您的思路:
答:根據點擊的列頭,包該列的ID取出,按照該ID排序后,在給綁定到ListView中
142.什么是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包來提供最新的WEB服務安全保證,目前最新版本2.0。
143.在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtualvoid PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public overridevoid PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
當使用new B()創建B的實例時,產生什么輸出?
答:X=1,Y=0
144.下面的例子中
using System;
class A
{
public staticint X;
static A(){
X=B.Y+1;
}
}
class B
{
public staticint Y=A.X+1;
static B(){}
static voidMain(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
產生的輸出結果是什么?
答:x=1,y=2
145.abstractclass和interface有什么區別?
答:聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對象上調用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口。
這些是C#,ASP.NET,數據庫面試題,全部從網上收集而來,經整理而發表,希望給大家帶來幫助,有錯誤的地方還請各位高手指出,在下傾聽指教。
以下是08年3月新增面試題
146. asp.net中web應用程序獲取數據的流程:
A.Web PageB.Fill C.Sql05 D.Data Sourse E.DataGrid F.DataSetG.Select and Connect
Commands H.SqlData Adapter
答案:a,e,d,f,h,g,b,c
147. Asp.net執行模式中各組件填入到對應位置:
A.Output CacheB.Parser C.Assembly Cache D.IE E.Memory F.Compiler
WebPage被第一次請求時:
D->__->__->__->__->D
WebPage被第二次請求時:
D->__->__->D
WebPage的頁面輸出緩存被打開時:
D->__->D
答案:
WebPage被第一次請求時:
D->_b_->_f_->_a_->_e_->D
WebPage被第二次請求時:
D->_b_->_e_->D
WebPage的頁面輸出緩存被打開時:
D->_a_->D
148.兩個數組 [n] [m] n>m 第一個數組的數字無序排列第二個數組為空取出第一個數組的最小值放到第二個數組中第一個位置, 依次類推. 不能改變A數組,不能對之進行排序,也不可以倒到別的數組中。
int[] a = { -20,9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };
int[] b = newint[10];
int intTmp =a[0], intMaxNum;
for (int i = 0;i < a.Length; i++)
{
intTmp = a[i]> intTmp ? a[i] : intTmp;
}
intMaxNum =intTmp;
for (int j = 0;j < b.Length; j++)
{
for (int i = 0;i < a.Length; i++)
{
if (j == 0)
intTmp = a[i]< intTmp ? a[i] : intTmp;
else
{
if (a[i] >b[j - 1])
intTmp = a[i]< intTmp ? a[i] : intTmp;
}
}
b[j] = intTmp;
intTmp =intMaxNum;
}
foreach (int bbin b)
{
Console.WriteLine(bb);
}
Console.ReadLine();
149.請將字符串"I am a student"按單詞逆序輸出如"student aam I"
string S ="I am a student";
char[] C = newchar[] { ' '};
string[] n=S.Split(C);
int length =S.Length;
for (int i=length-1 ; i >=0; i--)
{
Console.Write(n[i]);
if (i != 0)
{
Console.Write("");
}
}
?
?
解決方案和思路類:
設計和策略:
1.有一個網站的中購買功能, 假設現在有很多用戶(假設10000人)在搶購一個物品,該物品的庫存只有10個,請問怎么設計一個系統支持這樣的場景
2.一個用戶中心,保存用戶名密碼和其他基本資料, 你會怎樣設計?(盡可能好,考慮安全,性能,擴展,高可用等等..)?
3.前端(HTML HTTP等..)優化策略
4.應用服務器(主要是Asp.net)性能優化策略
5.互聯網應用程序常見的安全風險和解決策略
6.設計模式(一般問最簡單的單件模式在C#中的實現)
7.如何保證你的軟件/產品的質量
問題排查:?
1.有一臺生產環境的Web服務器出現了w3wp.exe CPU100%的情況, 請問怎么排查?
2.有一個簡單的Asp.net開發的頁面(新聞列表),用戶反映打開這個頁面非常慢,怎么排查?
技術基礎類:
1.類型和基本概念
1.1 Attribute和Property
1.2 抽象類和接口
1.3 類繼承
1.4 什么是Delegate
1.5 LINQ或者Lambda表達式
2.String
1.1 String是什么類型 (接著問值類型和引用類型的主要差別是? 裝箱和拆箱)
1.2 “111″ == “222″ 內部是怎么實現的? (字符串比較)
1.3 .Net中的String 默認是什么編碼
1.4 .Net中的String的結構是怎樣的
3.lock和多線程
1.1 簡述lock (接著問你一般lock()什么對象,為什么)
1.2 多線程,線程池和并行庫
1.3 多線程同步的方式和優劣
1.4 性能問題和死鎖問題?
4.數據庫(SQL Server)
1.1 Inner Join 和 Left Join 的區別
1.2 SQL Server中的索引
1.3 SQL Server中的鎖
1.4 如何排查和提高SQL語句的性能
1.5 大數據量處理
5.前端
1.1 HTML中的 doctype是做什么用的
1.2 jQuery的幾個簡單方法和使用
1.3 HTTP狀態碼
1.4 Javascript(DOM)內存泄漏的問題
6.簡單算法(只有在面試者說他擅長這個的時候才問)
1.1 你了解或者知道的算法
1.2 排序你一般用什么算法為什么
1.3 具體的算法題目, 一般只要求說思路 (一般都很簡單,桶排序或者合并什么的)
7.一些技術和概念
1.1 Asp.net MVC 和傳統方式的比較
1.2 Entiry Framework 簡述,和傳統模式的比較
1.3 WCF 和傳統模式例如Remoting Service 和Web Service的比較
1.4 一些第三方類庫的使用情況
1.5 是否開發過組件或者是底層類庫
1.6 IIS6 和IIS7的區別
非技術類:
1.一個新項目交給你,但是你還不了解其中的技術,老板說下周就要搞定這個項目,你現在會怎么處理這個情況?
2.你負責的一個項目, 下周就要上線了,可是運營部門說下周沒法準備好服務器給你們用,你會怎么辦?
總結
- 上一篇: 双摄方案android,android5
- 下一篇: 雷军20年前作文曝光:我会当一辈子程序员