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