.NET 面试题(2)
61、Application 、Cookie和 Session 兩種會話有什么不同?
1.Application 儲存在服務(wù)端,沒有時間限制,服務(wù)器關(guān)閉即銷毀(前提是自己沒寫銷毀方法)
2.Session 儲存在服務(wù)端,客戶端(瀏覽器)關(guān)閉即銷毀(若長時間不使用 且 瀏覽器未關(guān)閉的情況下, 默認(rèn)自動銷毀時間為20分鐘)
3.Cookie 儲存在客戶端,由用戶自己銷毀
?
62、ref與out的區(qū)別??
1、使用ref型參數(shù)時,傳入的參數(shù)必須先被初始化。對out而言,必須在方法中對其完成初始化。
//ref
public void RefValue(ref int refInt) 參數(shù)可以有多個ref
{
? ? ?refInt += 100;//ref引用不需要初始化
}?
//out
public void outValue(out int outInt, int i) 參數(shù)可以有多個out
{
? ? ? outInt = i + 100;//out引用必須初始化
}?
2、使用ref和out時,在方法的參數(shù)和執(zhí)行方法時,都要加Ref或Out關(guān)鍵字。以滿足匹配。?
3、out適合用在需要retrun多個返回值的地方,而ref則用在需要被調(diào)用的方法修改調(diào)用者的引用的時候。
?
63、C#中索引器是否只能根據(jù)數(shù)字進(jìn)行索引?是否允許多個索引器參數(shù)??
參數(shù)的個數(shù)和類型都是任意的
索引器的內(nèi)部本質(zhì)上就是set_item、get_item方法。
?
64、是否可以繼承String類??
String類是sealed類故不可以繼承?
[Serializable]
public sealed class String : IComparable, ICloneable,IConvertible, IEnumerable
關(guān)鍵字sealed表示該類型是密封的,不能繼承此類。?
?
65、int、DateTime、string是否可以為null??
int、DateTime不能,因為其為Struct類型,而結(jié)構(gòu)屬于值類型,值類型不能為null, 只有引用類型才能被賦值null。string可以為null。
但現(xiàn)在有 int ? i=null; 并不會報錯 ,這是個可空類型 T ?
?
66、public static const int ?A = 1;這段代碼有錯誤么??
const不能被修飾為static ;因為定義為常量 (const )后就是靜態(tài)的(static )。?
?
67、面向?qū)ο蟮恼Z言具有________性、_________性、________性 ?
?繼承 ,多態(tài),封裝
?
68、在.Net中所有可序列化的類都被標(biāo)記為_____??
??[serializable]??
?
69、接口是一種引用類型,在接口中可以聲明( ?A ?),但不可以聲明公有的域或私有的成員變量。??
a) 方法、屬性、索引器和事件; ? ? ? /*接口中不能申明字段*/?
? b) 索引器和字段; ? ?
? c) 事件和字段; ??
?
?
70、在ADO.NET中,對于Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是(? C ??)。 ??
? a) insert、update、delete等操作的Sql語句主要用ExecuteNonQuery()方法來執(zhí)行; ?
? b) ExecuteNonQuery()方法返回執(zhí)行Sql語句所影響的行數(shù)。 ?
? c) Select操作的Sql語句只能由ExecuteReader()方法來執(zhí)行; ? ? /*ExecuteScalar ,Fill?也可以來執(zhí)行? */
? d) ExecuteReader()方法返回一個DataReader對象;
?
71、下列關(guān)于C#中索引器理解正確的是( ?C )?
a) 索引器的參數(shù)必須是兩個或兩個以上 ? ?b) 索引器的參數(shù)類型必須是整數(shù)型 ?
c) 索引器沒有名字 ? ? ??d) 以上皆非 ? ? ? ? ?/* 索引器參數(shù)的類型和個數(shù)可以多個,但沒有名字*/?
?
72、聲明一個委托public??delegate??int??myCallBack(int??x); ? 則用該委托產(chǎn)生的回調(diào)方法的原型應(yīng)該是( B??)。 ?
a) void ? myCallBack(int ? x) ? ; ?
b) int ? receive(int ? num) ? ; ? ? ? ? ?返回類型,參數(shù)的類型必須一樣 ?所以選B
c) string ? receive(int ? x) ? ; ?
d) 不確定的; ???
?
73、簡述什么是XML?
xml是一種語言。這種語言編寫的文件一般也是以xml結(jié)尾。你可以用記事本打開查看源碼,或者用瀏覽器打開查看。它的內(nèi)容都是由標(biāo)簽組成的,非常有規(guī)律。因為這種規(guī)律,才能快速的存取。一般用來存儲配置信息,也有當(dāng)數(shù)據(jù)庫來用的。
?
74、簡述Jquery如何設(shè)置一個a標(biāo)簽點擊跳轉(zhuǎn)到指定頁面??
添加標(biāo)簽 <a href=”#” id=”gt”>跳轉(zhuǎn)</a>
修改屬性 $(“#gt”).attr(“href”,”Default.aspx”); //找到這個a標(biāo)簽設(shè)置href屬性就行
?
75、下列哪個名詞和WebService不直接相關(guān)(自己查詢下列縮寫的解釋,并熟記)?
A、UDDI
B、GUID
C、WSDL
D、SOAP
B
UDDI 是一種目錄服務(wù),企業(yè)可以使用它對 Web services 進(jìn)行注冊和搜索。
UDDI,英文為 "Universal Description, Discovery and Integration",可譯為“通用描述、發(fā)現(xiàn)與集成服務(wù)”。
WSDL 網(wǎng)絡(luò)服務(wù)描述語言是Web Service的描述語言,它包含一系列描述某個web service的定義。
Web Services Description Language
SOAP 簡單對象訪問協(xié)議是交換數(shù)據(jù)的一種協(xié)議規(guī)范,是一種輕量的、簡單的、基于XML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個子集)的協(xié)議,它被設(shè)計成在WEB上交換結(jié)構(gòu)化的和固化的信息。
Simple Object Access Protocol
全局唯一標(biāo)識符(GUID,Globally Unique Identifier)是一種由算法生成的二進(jìn)制長度為128位的數(shù)字標(biāo)識符。
GUID主要用于在擁有多個節(jié)點、多臺計算機(jī)的網(wǎng)絡(luò)或系統(tǒng)中。
?
76、以下敘述正確的是?(多選) ? ( B,C?) ?
A. 接口中可以有虛方法。B. 一個類可以實現(xiàn)多個接口。?C. 接口不能被實例化。 D. 接口中可以包含已實現(xiàn)的方法。??
?
77、從數(shù)據(jù)庫讀取記錄,你可能用到的方法有?(多選) ? ( B,C,D) ? ??
????? A. ExecuteNonQuery??????????? B. ExecuteScalar???????? C. Fill????????D. ExecuteReader
/* ExecuteNonQuery 增改刪 .ExecuteScalar 查刪改 ExecuteReade 查 fill 填充數(shù)據(jù)集 */78、對于一個實現(xiàn)了IDisposable接口的類,以下哪些項可以執(zhí)行與釋放或重置非托管資源相關(guān)的應(yīng)用程序定義的任務(wù)?(多選) ? (A、B、C??) ?
? A.Close B.Dispose C.Finalize ?? D.using ?E.Quit ??
?79、以下關(guān)于ref和out的描述哪些項是正確的?(多選) ? (A,C,D ?) ?
? A.使用ref參數(shù),傳遞到ref參數(shù)的參數(shù)必須最先初始化。 ?
? B.使用out參數(shù),傳遞到out參數(shù)的參數(shù)必須最先初始化。 ?
? C.使用ref參數(shù),必須將參數(shù)作為ref參數(shù)顯式傳遞到方法。 ?
? D.使用out參數(shù),必須將參數(shù)作為out參數(shù)顯式傳遞到方法。??
?
80、關(guān)于ASP.NET中的代碼隱藏文件的描述正確的是(C)?
a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的創(chuàng)建用于與窗體交互。編程邏輯唯一與用戶界面不同的文件中。該文件稱作為“代碼隱藏”文件,如果用C#創(chuàng)建,該文件將具有“.ascx.cs”擴(kuò)展名。 ? aspx.cs?
b)項目中所有Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。?
c)項目中所有的Web窗體頁的代碼隱藏文件都被編譯成項目動態(tài)鏈接庫(.dll)文件。?
d)以上都不正確。?
?
81、下列描述錯誤的是(D)?
a)類不可以多重繼承而接口可以;?
b)抽象類自身可以定義成員而接口不可以;?
c)抽象類和接口都不能被實例化; ?
d)一個類可以有多個基類和多個基接口; ? //一個類只能有一個基類
?
?
82、寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增長的ID作為主鍵,注意:ID可能不是連續(xù)的。?
?1, select top 10* from Products where ProductID not in(select top 30 ProductID from Products)
?
83、橫表、縱表轉(zhuǎn)換(常考!!!)
縱表結(jié)構(gòu) TableA?
| Name | Course | Grade |
| 張三 | 語文 | 75 |
| 張三 | 數(shù)學(xué) | 80 |
| 張三 | 英語 | 90 |
| 李四 | 語文 | 95 |
| 李四 | 數(shù)學(xué) | 55 |
橫表結(jié)構(gòu) TableB
| Name | 語文 | 數(shù)學(xué) | 英語 |
| 張三 | 75 | 80 | 90 |
| 李四 | 95 | 55 | 0 |
?
?
縱表轉(zhuǎn)橫表
select Name,sum(case km when '語文' then fen end) as 語文,
sum(case km when '數(shù)學(xué)' then fen end) as 數(shù)學(xué),
sum(case km when '英語' then fen end) as 英語
from Test group by Name?
--------------------------------------------------------------------------------------------------
橫表轉(zhuǎn)縱表
SELECT 姓名,’語文’ AS 科目,語文 AS 成績 FROM TEST_H2Z UNION ALL
SELECT 姓名,’數(shù)學(xué)’ AS 科目,數(shù)學(xué) AS 成績 FROM TEST_H2Z UNION ALL
SELECT 姓名,’英語’ AS 科目,英語 AS 成績 FROM TEST_H2Z
ORDER BY 姓名,科目 DESC;?
模擬數(shù)據(jù):
Id ?name ?age ?salary
1 ??yzk ???80 ?1000
2 ??yzk ???80 ?2000
3 ??tom ???20 ?20000
4 ??tom ???20 ?20000
5 ??im ????20 ?20000
84、刪除姓名、年齡重復(fù)的記錄(只保留Id最大的一條)
select * from A where id in (select max(id) from A group by name,age)
注意:此處group by name,age的功能和distinct name,age一樣.?
85、根據(jù)姓名、年齡分組,取出每組的Id最大值,然后將Id最大值之外的排除?
delete * from A where id not in (select max(id) from A gruop by name,age)?
?
86、一個文本文件含有如下內(nèi)容:
4580616022644994|3000|趙濤
4580616022645017|6000|張屹
4580616022645090|3200|鄭欣夏
上述文件每行為一個轉(zhuǎn)賬記錄,第一列表示帳號,第二列表示金額,第三列表示開戶人姓名。創(chuàng)建一張數(shù)據(jù)庫表(MS SQLServer數(shù)據(jù)庫,表名和字段名自擬),請將上述文件逐條插入此表中。?
string[] lines = File.ReadAllLines(@"E:\轉(zhuǎn)賬記錄.txt", Encoding.Default); //三條記錄for (int i = 0; i < lines.Length; i++){string[] str = lines[i].Split('|'); //切割每條數(shù)據(jù)using (SqlConnection conn = new SqlConnection(@"server=sealee\sealee;uid=sa;pwd=123;database=Temp")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = "insert into TT(CardNum,Money,Name) values(@num,@money,@name)";cmd.Parameters.AddWithValue("@num", str[0]);cmd.Parameters.AddWithValue("@money", str[1]);cmd.Parameters.AddWithValue("@name", str[2]);cmd.ExecuteNonQuery();}}}Console.Write("數(shù)據(jù)導(dǎo)入成功");?
87、數(shù)據(jù)庫三范式是什么?(熟練理解,在后期項目數(shù)據(jù)庫設(shè)計中會用到)?
第一范式: 1NF即屬性的原子約束性,屬性具有原子性,怎么理解了?我們知道原子是不能再分的,即屬性不能往下分了。比如說人作為一個實體,姓名作為人的一個屬性,如果系統(tǒng)需要把人的姓和名分開記錄。那么就必須把姓作為人的一個屬性,名作為人的一個屬性。
第二范式:2NF就是記錄唯一性約束,要求記錄有唯一標(biāo)示,其實就是數(shù)據(jù)庫表中的記錄不能重復(fù),至少得設(shè)一個標(biāo)示字段作為主鍵
第三范式:3NF就是數(shù)據(jù)不能冗余,即字段不能是其他任何字段派生出來。其實就是數(shù)據(jù)不重復(fù)保存。
高級冗余一般是字段可以別的字段衍生過來,比如金額,可以是單價和數(shù)量相乘得出來的,但是我們知道如果在查詢過程中再進(jìn)行計算效率就會很低,所以系統(tǒng)就可以用空間來換取時間,加一個金額字段,這樣查詢速度就提高了,這樣的冗余是應(yīng)該的,也是合理的。
低級冗余一般是指在一個表中保存的數(shù)據(jù),在別的表也有保存,比如姓名,在人員表中有人員姓名,在訂單同樣保存了人員姓名,那就是低級冗余了。低級冗余也不是洪水猛獸,在某些特殊的地方這個也是可以有的。
?
88、一個文本文件含有如下內(nèi)容,分別表示姓名和成績:
張三 90
李四 96
王五 78
趙六 82
提供用戶一個控制臺界面,允許用戶輸入要查詢的姓名,輸入姓名并且按回車以后,打印出此人的成績,如果不輸入姓名直接按回車則顯示所有人的姓名以及成績。(注意:不能使用數(shù)據(jù)庫)
Dictionary<string, int> cj = new Dictionary<string, int>(); //聲明字典類來保存成績string[] lines = File.ReadAllLines(@"E:\成績.txt", Encoding.Default);for (int i = 0; i < lines.Length; i++){string[] str = lines[i].Split(' ');cj.Add(str[0], int.Parse(str[1]));}aa: Console.WriteLine("輸入你要查詢的姓名:");string name = Console.ReadLine();if (name == "") //直接回車{for (int i = 0; i < lines.Length; i++){string[] st = lines[i].Split(' ');Console.WriteLine(st[0] + " " + st[1]);}}else{if (!cj.ContainsKey(name)) {Console.WriteLine("沒有此人的信息,請重新輸入:");goto aa;}elseConsole.WriteLine(cj[name]); }?
89、說一下SQLServer中索引的兩種類型(常考!!!)?
參考:聚簇(或者叫做聚集,cluster)索引和非聚簇索引。 → 字典的拼音目錄就是聚簇(cluster)索引,筆畫目錄就是非聚簇索引。這樣查詢“G到M的漢字”就非常快,而查詢 :6劃到8劃的字”則慢。?
聚集索引對于那些經(jīng)常要搜索范圍值的列特別有效。使用聚集索引找到包含第一個值的行后,便可以確保包含后續(xù)索引值的行在物理相鄰。例如,如果應(yīng)用程序執(zhí)行的一個查詢經(jīng)常檢索某一日期范圍內(nèi)的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然后檢索表中所有相鄰的行,直到到達(dá)結(jié)束日期。這樣有助于提高此類查詢的性能。同樣,如果
對從表中檢索的數(shù)據(jù)進(jìn)行排序時經(jīng)常要用到某一列,則可以將該表在該列上聚集(物理排序),避免每次查詢該列時都進(jìn)行排序,從而節(jié)省成本。
非聚集索引與課本中的索引類似。數(shù)據(jù)存儲在一個地方,索引存儲在另一個地方,索引帶有指針指向數(shù)據(jù)的存儲位置。索引中的項目按索引鍵值的順序存儲,而表中的信息按另一種順序存儲(這可以由聚集索引規(guī)定)。如果在表中未創(chuàng)建聚集索引,則無法保證這些行具有任何特定的順序。
也就是說:聚集是物理排序。而非聚集是不用將表和視圖進(jìn)行物理排序。
?
90、你覺得如何才能提高代碼的效率和性能?(可以列舉多種思路,越多越好)
1,用屬性代替可訪問的字段
2,優(yōu)先使用foreach循環(huán)語句
3,默認(rèn)字段的初始化優(yōu)于賦值語句
4,使用靜態(tài)構(gòu)造器初始化靜態(tài)成員
5,利用using和try/finally語句來清理資源
6,盡量減少裝箱和拆箱
7,定義并實現(xiàn)接口優(yōu)于繼承類型
8,重寫優(yōu)于事件處理器
?
91、在程序編碼的時候,你會對Sql注入漏洞的防范采取什么樣的措施?
盡量不要拼SQL語句!使用參數(shù)化查詢或存儲過程可以防止SQL注入攻擊!在必須用SQL拼接的地方對用戶輸入的
內(nèi)容進(jìn)行檢查、過濾。
?
92、有這樣一個功能需求,用戶新注冊的時候需要給他推薦3個好友,說說你的推薦編碼思路?
比如說類似豆瓣網(wǎng)我們可以根據(jù)用戶興趣來匹配,類似于人人網(wǎng)那些地區(qū)性比較比較強(qiáng)的網(wǎng)站我們可以根據(jù)用戶的地區(qū)
來匹配。
?
93、果給學(xué)英語的用戶設(shè)如計一個在線應(yīng)用,你會選擇什么作為切入點,簡述你的想法和理由。(列出你覺得有用需求或功能)
英語學(xué)習(xí)資料的下載、在線答疑、用戶交流作為切入點。
?
94、在SQLServer中求當(dāng)前時間與2012-01-01 0:0:0相差的秒數(shù)?
?
select?abs(datediff(ss,getdate(),?'2012-01-01 00:00:00')) ? ? ?-------------Abs 求絕對值函數(shù)
?
?
表一:student_info
| 學(xué)號 | 姓名 | 性別 | 出生年月 | 家庭住址 | 備注 |
| 0001 | 張三 | 男 | 1981-8-9 | 北京 | NULL |
| ? | ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? | ? |
?
表二:curriculum
| 課程編號 | 課程名稱 | 學(xué)分 |
| 0001 | 計算機(jī)基礎(chǔ) | 2 |
| 0002 | C語言 | 2 |
?
表三:grade
| 學(xué)號 | 課程編號 | 分?jǐn)?shù) |
| 0001 | 0001 | 80 |
| 0001 | 0002 | 90 |
?
95、題目:
條件查詢:
? ? ? ? ? ? ? ? ?Select 學(xué)號,分?jǐn)?shù)?from grade where fen between 80 and 90
? ? ? 2.在GRADE 表中查找課程編號為003學(xué)生的平均分
? ? ? ? ? ? ? ? ? ?Select AVG(分?jǐn)?shù)) from grade where CID=’003’
? ? ?3.在GRADE 表中查詢學(xué)習(xí)各門課程的人數(shù)
????????Select 課程編號,Count(學(xué)號) from grade group by CID
? ? 4.查詢所有姓張的學(xué)生的學(xué)號和姓名
? ? ? ? ? Select 學(xué)號,姓名 from student_info where 姓名 like ‘張%’
嵌套查詢:
1、?查詢和學(xué)號’0001’的這位同學(xué)性別相同的所有同學(xué)的姓名和出生年月
??????Select 姓名,生日 from student_info?where 性別 in(select 性別 from ?student_info?where 學(xué)號=’0001’)
2、?查詢所有選修課程編號為0002 和0003的學(xué)生的學(xué)號、姓名和性別
Select 學(xué)號,姓名,性別 from student_info?where 學(xué)號 in?(select 學(xué)號 from grade where 課程編號 in(0002,0003) )
3、?查詢出學(xué)號為0001的學(xué)生的分?jǐn)?shù)比0002號學(xué)生最低分高的課程編號的課程編號和分?jǐn)?shù)
??????Select CID,Fen from grade where SID=’0001’?and Fen >(Select min(Fen) from grade where SID=’0002’)?
多表查詢
1、?查詢分?jǐn)?shù)在80-90分的學(xué)生的學(xué)號、姓名、分?jǐn)?shù)
Selec s.學(xué)號,s.姓名,g.分?jǐn)?shù) from grade as g join ?student_info?as s? On g.學(xué)號=s.學(xué)號 where g.分?jǐn)?shù) between 80 and 90
2、?查詢學(xué)習(xí)了’C語言’課程的學(xué)生學(xué)號、姓名和分?jǐn)?shù)
??????Select s.學(xué)號,s.姓名,g.分?jǐn)?shù) from student_info?as s join grade as g? On s.學(xué)號=g.學(xué)號 join curriculum?as c on c.課程編號=g.課程編號 where ??c.課程名稱=’C語言’
3、?查詢所有學(xué)生的總成績,要求列出學(xué)號、姓名、總成績,沒有選課的學(xué)生總成績?yōu)榭铡?/p>
?Select g.學(xué)號,姓名,SUM(分?jǐn)?shù)) from student_info?as s join grade as g on g.學(xué)號=S.學(xué)號 group by g.學(xué)號,姓名
?
轉(zhuǎn)載于:https://www.cnblogs.com/Sea1ee/p/5979165.html
總結(jié)
以上是生活随笔為你收集整理的.NET 面试题(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 实现 常见排序算法(一) 冒泡
- 下一篇: ASP.NET Zero--5.配置权限