c#面試題記錄

守望陽光01發表於2017-07-13

SQL SERVER 題

某商品價格表如下,ID是自增長列

表名是JGTable,上面是表的結構

題目是:請查出當前時間800001商品的價格,設當前時間是curdate=2017-01-02

答案:select Price 價格 from JGTable  where Date1 <‘2017-01-02’ and date2 >'2017-01-02'

請安排2017年五一假期(2017-05-01到2017-05-03)的促銷價格為79.90

答案是:insert into JGTable (ID,NO,Price,Date1,date2,bk) values (15,800001,79.90,‘2017-05-01’,‘2017-05-03’,‘五一促銷’)

c#

1.用迴圈求出自然數1到n的和。

答案是:

 1 public static int Mangg(int n)
 2         {
 3 
 4             int w = 0;
 5             for (int i = 0; i < n + 1; i++)
 6             {
 7                 w += i;
 8             }
 9             return w;
10         }
View Code

2.用遞迴求出自然數1到n的積

答案是:

1  public static int MIK(int n)
2         {
3             if (n == 1)
4                 return 1;
5             else
6                 return n * MIK(n - 1);
7         }
View Code

 現有學生表 students,欄位有id,name,有成績表 scores,欄位有id,class_id(課程 id), student_id(對應學生表的 id),score(分數),[student].[name]是varchar(255),其他欄位都是int型別。

1.寫出sql,查出所有學生姓名和該學生的平均分。

select a.name,AVG(b.score) from students a , scores b where a.id=b.student_id  group by a.name

 

2.利用上題的資料,輸出所有科目成績高於該學生平均分的學生姓名,課程ID和該課程的分數

select b.class_id,a.name,b.score  from students  a join scores b on a.id=b.student_id  where score>80

 

1.以下名稱空間表述不正確的是(B)

A.名稱空間引用一定要區分大小寫

B.名稱空間是不可以巢狀定義

C.可以為名稱空間指定別名

D.名稱空間分為使用者定義的名稱空間和系統定義的名稱空間

 

2.下面給出的變數名(c#)不正確的是(A C)

A.bool checked   B.public readonly int MAX_VALUE=10

C.string  ?total   D.char  @using

3.在c#中,選出不可以用來修飾方法引數的關鍵詞(B)

A.Out        B.In       C.Ref            D.Param

4.選出不能獲取Get或Post引數值的方法(A)

A.request.Param          B.Request.Form

C.Request.Querystring         D.Request.GetAttrible

5.下面對final,finally,finalize描述不正確的是(B)

A.final用於申明屬性,方法和類,表示屬性不可變方法不可以被覆蓋類不可以被繼承

B.finally 是異常處理語句結構中的執行部分。但return能阻止finally 語句塊的執行

C.finallize表示是object類一個方法,在垃圾回收機制中執行的時候會被呼叫被回收物件

D.上述ABC中其中二項是正確的

6.以下不屬於DHTML的組成部分是(A)

A.XML技術       B.CSS技術        C.DOM技術         D.指令碼語言

7.如果需要確保使用者輸入大於30的值,應該使用的驗證控制元件是(B)

A.RequiredFieldValidator         B.CompareValidator      

C.RangeValidator                     D.RegularExpressionValidator

8.不屬於XML支援元件模組的標準是()

A.xmlhtml         B.db2xml           C.xml    repository        D.odbc2xml

9.GridView.DataSource不可以連線的資料來源是()

A.dataset             B.xml               C.dataview            D.IList

10.使用以下不可以進行模糊查詢的是(D)

A.OR                B.Not  between              C.Not  In             D.Like

11.在Products資料庫中建立一個新表Authors,表中應該包含nam列和每個作者的ID列,下面語法正確的是(B)

A.CREATE  TABLE  AUTHORS   ON   Prpducts(name  varchar(50),ID  smallint)

B.ALTER   DATABASE   products  ADD    TABLE  Authors(name  varchar(50),ID  smallint)

C.CREATE  TABLE  products     Authors(name  varchar(50),ID  smallint)

D.CREATE  TABLE     products   Authors(name,ID)

12.網站增加一個獎勵措施:購書滿100元,打七折,相關程式碼編寫在(B)中?

A.表示層        B.業務邏輯層       C.資料訪問層         D.模型層

13.IIS不具有的功能是()

A.可組建LDAP伺服器          B.可組建SMTP伺服器

C.可組建FTP伺服器             D.可組建NNTP伺服器

14.有關Web.config和Global.aspx檔案說法錯誤的是()

A.遠端客戶端可以瀏覽這兩個檔案的內容

B.Global.aspx必須儲存在站點的主目錄

C.Global.aspx用於編寫 Application和Session 物件事件函式

D.Web.config實際上是一個XML檔案,用於儲存計算機,站點,目錄的配置資訊

15.在ASP.net內建物件中,必須要有lock和unlock方法以確保多個使用者無法同時改變某一變數的物件是(B)

A.Session          B.Application           C.Cache                D.Request

16.下列關於檢視與基本表的對比正確的是(A)

A.檢視的定義功能強於基本表

B.檢視的操作功能強於基本表

C.檢視的資料控制功能弱於基本表

D.上面提到的三種功能二者均相當

17.在資料庫中,產生資料不一致的根本原因是(D)

A.資料儲存量太大         B.沒有嚴格保護資料

C.未對資料進行完整性控制         D.資料冗餘

18.在下列型別中,(B)是引用型別

A.enum型別           B.string型別             C.int型別              D.struct型別

19.下列描述錯誤的是(C)

A.類不可以多重繼承而介面可以         B.抽象類自身可以定義成員而介面不可以

C.抽象類和介面都不能被例項化         D.一個類可以有多個基類和多個基介面

20.開發一個新的銷量分析程式能夠重複使用已經存在的資料訪問元件。其中的一個元件返回一個DataSet物件,這個物件裡包含了上一年中所有的使用者訂單的資料,希望這個程式能夠按照單個產品號碼來顯示訂單。使用者將在執行時候輸入合適的產品程式碼。()

A.使用DataSet.Reset方法

B.使用一個過濾器表示式來設定DataSet物件的RowFilter屬性

C.建立一個DataView物件,並使用一個過濾器表示式來設定RowFilter屬性

D.建立一個DataView物件,並使用一個過濾器表示式來設定RowStateFilter屬性

填空題

1、要在控制檯程式執行時輸入資訊,可使用Console類的___ReadLine_____方法

2、在c#中,進行註釋有兩種方法,分別是_//____和___/*__*/__

3、.net通常可以使用三種開發語言___c++____   ___VB.NET_____  ___c#____

4、滾動條TrckBar、ProgressBar 等控制元件的當前位置值均可以通過_____,屬性來得到

5、在WinForm的執行緒中,使用的名稱空間是________,DataSet封裝在名稱空間_System.Data.DataSet ______中

6、在圖形程式設計中,GDI的英文全稱是__Graphics Device Interface_

7、在SQL中,用於升序,降序的語句分別是__asc___,_desc____能Group by配合使用的聚合函式有_agv_______,____cont______,___sum_______

8、String   strTmp=“promise深圳市”(注:中間無空格)

int i=System.Text.Encoding.Default.getbytes(strTmp).length;

int  j=strTmp.Length;i=_______;j=_________

9、float f =-123.56789F;int  i=(int)f;i=______;

10、int  i=1;int  j;j=i++;i=____;j=_____

11、在c#中,main()方法返回型別是______,啟動執行緒方法是__________

12、在c#語言中,實現迴圈語句主要有_____,_____和_______及________

13、正規表示式:。“^\d{m,n}$”表示的意思是:___________

14、int[]  a={1,2,3,4,5};a[4]=a[a[2]];a[4]=_4____

15、描述x是奇數的c#表示式__x%2==1_____,"-10<=x<=10"的c#表示式___________

 

1.某學校需要一個公開選課系統,學生可以任意選擇最多3門選修課,請設計相關資料庫表,滿足以上開發需求,並編寫一條SQL語句,實現查詢未選滿3門課程的學生名單

 

 

 

2.伺服器A中的資料庫dbMJss要遷移到伺服器B,有幾種遷移方法,分別有什麼步驟

 

1.通過工具"DTS"的設計器進行匯入或者匯出

DTS的設計器功能強大,支援多工,也是視覺化介面,容易操作,但知道的人一般不 多,如果只是進行SQL Server資料庫中部分表的移動,用這種方法最好,當然,也可以進行全部表的移動。在SQL Server Enterprise Manager中,展開伺服器左邊的+,選擇資料庫,右擊,選擇All tasks/Import Data...(或All tasks/Export Data...),進入嚮導模式,按提示一步一步走就行了,裡面分得很細,可以靈活的在不同資料來源之間複製資料,很方便的。而且可以另存成DTS包,如果 以後還有相同的複製任務,直接執行DTS包就行,省時省力。也可以直接開啟DTS設計器,方法是展開伺服器名稱下面的Data Transformation Services,選Local Packages,在右邊的視窗中右擊,選New Package,就開啟了DTS設計器。值得注意的是:如果源資料庫要拷貝的表有外來鍵,注意移動的順序,有時要分批移動,否則外來鍵主鍵,索引可能丟失,移 動的時候選項旁邊的提示說的很明白,或者一次性的複製到目標資料庫中,再重新建立外來鍵,主鍵,索引。

註釋:在建立資料庫時,建立外來鍵,主鍵,索引的檔案應該和建表檔案分開,而且用的資料檔案也分開,並分別放在不同的驅動器上,有利於資料庫的優化。

2.利用"Bcp"工具

雖然這種工具雖然在SQL Server7的版本中不推薦使用,但許多資料庫管理員仍很喜歡用它,尤其是用過SQL Server早期版本的人。Bcp有侷限性,首先它的介面不是圖形化的,其次它只是在SQL Server的表(檢視)與文字檔案之間進行復制,但它的優點是效能好,開銷小,佔用記憶體少,速度快。有興趣的朋友可以查參考手冊。

 

3.直接利用備份和恢復

首先需要對源資料庫進行完全備份,備份到一個裝置(device)上,然後把備份文 件複製到目的伺服器上(恢復的速度快),進行資料庫的恢復操作,在恢復的資料庫名中填上源資料庫的名字(名字必須相同),選擇強制型恢復(可以覆蓋以前數 據庫的選項),在選擇從裝置中進行恢復,瀏覽時選中備份的檔案就行了。這種方法可以完全恢復資料庫,包括外來鍵,主鍵,索引。

 

4.直接拷貝資料檔案

把資料庫的資料檔案(*.mdf)和日誌檔案(*.ldf)都拷貝到目的伺服器,在SQL   Server   Query   Analyzer中用語句進行恢復:

程式碼如下:

EXEC   sp_attach_db   @dbname   =   'test',   
@filename1   =   'd:mssql7data   est_data.mdf',   
@filename2   =   'd:mssql7data   est_log.ldf'

  這樣就把test資料庫附加到SQL   Server中,可以照常使用。如果不想用原來的日誌檔案,可以用如下的命令:

程式碼如下:

EXEC   sp_detach_db   @dbname   =   'test'   
EXEC   sp_attach_single_file_db   @dbname   =   'test',   
@physname   =   'd:mssql7data   est_data.mdf'

  這個語句的作用是僅僅載入資料檔案,日誌檔案可以由SQL   Server資料庫自動新增,但是原來的日誌檔案中記錄的資料就丟失了。

5.在應用程式中定製

可以在應用程式(PB、VB)中執行自己編寫的程式,也可以在Query Analyzer中執行,這種方法比較靈活,其實是利用一個平臺連線到資料庫,在平臺中用的主要時SQL語句,這種方法對資料庫的影響小,但是如果用到遠 程連結伺服器,要求網路之間的傳輸效能好,一般有兩種語句:

程式碼如下:

1>select   ...   into   new_tablename   where   ...   
2>insert   (into)   old_tablename   select   ...   from   ...   where   ...

  區別是前者把資料插入一個新表(先建立表,再插入資料),後者是把資料插入已經存在的一個表中,我個人喜歡後者,因為在程式設計的結構上,應用的範圍上,第二條語句強於前者。

6.SQL Server的複製功能

SQL Server提供了強大的資料複製功能,也是最不易掌握的,具體應用請參考相關資料,值得注意的是要想成功進行資料的複製工作,有些條件是必不可少的:

(1)SQL   Server   Agent必須啟動,MSDTC必須啟動。

(2)所有要複製的表必須有主鍵。

(3)如果表中有text或image資料型別,必須使用with   log選項,不能使用with   no_log選項。

另外max   text   repl   size選項控制可以複製的文字和影象資料的最大規模,超過這個限制的操作將失敗。

(4)在要進行復制的計算機上,應該至少是隱含共享,即共享名是C$或D$…。

(5)為SQL   Server代理使用的Windows   NT帳號不能是一個本地的系統帳號,因為本地的系統帳號不允許網路存取。

(6)如果參與複製的伺服器在另外的計算機域中,則需要在這些域之間建立信任關係。

 

 

 

3.網頁中的HTML程式碼:

<div class=container><input type=text  id="txtName"    /><input  type =submit  name="submit"

value="提交" /<div>,請編寫一段jQuery程式碼,當點選提交時,判斷txtName裡是否有值,如果為空,要求輸入內容,頁面不提交。

 

 

 

 

 

4.什麼叫SQL隱碼攻擊,如何防止?請舉例說明。

答:SQL隱碼攻擊是常見的利用程式漏洞進行攻擊的方法。導致sql注入攻擊並非系統造成的,主要是程式中忽略了安全因素,利用sql語言漏洞獲得合法身份登陸系統 

例如:

"Select * from users where name='"+uName+"' and pwd='"+uPwd+"' " 

如使用者在t_name中輸入tom’ or 1=‘1 就可以進入系統了。

生成語句:

Select * from users where name = ‘tom’ or 1=‘1’ and pwd=‘123’

防止sql注入的方法有如下幾點:

使用引數化過濾語句

在web應用程式的開發過程中所有階段實施程式碼安全檢察

使用儲存過程

 

 

5.現有兩個已賦值int變數a和b,在不使用其他變數的情況下,如何交換兩者的值。

 

 

 

6.mvc架構中,預設有如下路由,

routes.MapRoute(

                     "Default",

                     "{controller}  /{action}/{po}",

                      new  {  controller="Home",action="Login",po=UrlParameter.Optional}

);

新增一個路由規則,實現對於以ComAdd開頭的路徑,如“/ComAdd/UserList”,系統將會訪問Template控制器下的相關方法。

 

 

 

 

7.比較說明簡單工廠和抽象工廠的區別

 

簡單工廠 : 用來生產同一等級結構中的任意產品。(不支援擴充增加產品)

  

抽象工廠 :用來生產不同產品族的全部產品。(不支援擴充增加產品;支援增加產品族)  

相關文章