电竞比分网-中国电竞赛事及体育赛事平台

分享

轉載:SQL數(shù)據(jù)庫筆試題

 大漏勺 2011-10-01

1.寫出學生表 增刪查改的語句  (考基礎的)

2.有三張表  用not in not exists  left join 寫出獲獎圖書的作者信息,比較哪一種最優(yōu)

上面的是筆試題。

3道Linux的題目,一道是自己熟悉的os的性能數(shù)據(jù)的命令,統(tǒng)計文件中指定字符串個數(shù),linux的幾個內(nèi)核參數(shù)

數(shù)據(jù)庫的是大頭,考了執(zhí)行計劃的執(zhí)行順序和解釋,優(yōu)化SQL
寫了一個動態(tài)的批量提交的存儲過程
實例恢復的大概流程,redo,undo的作用什么的

生產(chǎn)環(huán)境壓力很大的時候,說說自己會怎么做,類似的問題,記不請了

大概就是這樣吧


總結:linux得深入學習學習了,復習基礎shell + 看實際程序 + 操作系統(tǒng)命令(尤其跟DB管理有關的)+ 有時間看看內(nèi)核方面的。以前看的shell,因為僅僅是理論,沒有實際運用經(jīng)驗,所以很快忘光光,真讓自己寫起來,覺得茫然無從下手。

一、Transact-SQL問題:
1 有訂單表SO_Table,單號字段RefNo VARCHAR(10),需要實現(xiàn)自動編號,格式為YYYYMMXXXX,其中XXXX為序號,如:2004050001,2004050002……2004059999等,采用Transact-SQL實現(xiàn)新訂單編號的思路。
2 有表T1,T2,現(xiàn)有一事務,在向表T1添加數(shù)據(jù)時,同時也必須向T2也添加數(shù)據(jù),如何確何數(shù)據(jù)的完整性。
3 如何求表中相鄰(按聚集索引相鄰)的兩條記錄的某字段的值之差,用Transact-SQL語句或存儲過程。
4 如何刪除表中的重復數(shù)據(jù),用Transact-SQL寫出代碼。
5 基于MS-SQLSERVER 2000,如何統(tǒng)計數(shù)據(jù)庫中所有用戶表的數(shù)據(jù),顯示格式如下:
表名        記錄數(shù)
   sales        23
6 人員情況表(employee)中字段包括,員工號(ID),姓名(name),年齡(age),文化程度(wh):包括四種情況(本科以上,大專,高中,初中以下),現(xiàn)在我要根據(jù)年齡字段查詢統(tǒng)計出:表中文化程度為本科以上,大專,高中,初中以下,各有多少人,占總人數(shù)多少。結果如下:
學歷       年齡      人數(shù)        百分比
本科以上   20        34           14
大專       20        33           13
高中       20        33           13
初中以下   20        100          40
本科以上   21        50           20
。。。。。。
Transact-SQL查詢語句如何寫?
7表一(AAA)
商品名稱mc   商品總量sl
   A          100
   B          120
表二(BBB)
商品名稱mc   出庫數(shù)量sl
    A          10
    A          20
    B          10
    B          20
    B          30

用一條Transact-SQL語句算出商品A,B目前還剩多少?
二、數(shù)據(jù)庫管理問題(DBMS為:MS-SQL Server 2000)(選作一道題)
1使用文件與文件組恢復的方式恢復數(shù)據(jù)庫
2 設計作業(yè)進行周期性的備份數(shù)據(jù)庫
3 一個B/S結構ERP系統(tǒng),出入庫單據(jù)超過100萬條,系統(tǒng)在單據(jù)調出、保存過程中速度比較慢,原因可能有哪些?有哪些辦法可以提高速度?
三、數(shù)據(jù)庫設計
有一個鋼鐵產(chǎn)品檢驗數(shù)據(jù)庫,包括產(chǎn)品的化學實驗結果和物理試驗結果,質檢部門會根據(jù)高爐號來對這批產(chǎn)品進行綜合判定,最后根據(jù)一個關鍵字段(比如說叫高爐號)將兩個表中的內(nèi)容取出來放到質量證明書中。鋼鐵產(chǎn)品有多種不同的規(guī)格,針對同一個規(guī)格的鋼材需要的物理性能檢驗包括力學性能、高倍指標、低倍指標、氣體含量四個大項,每個大項里邊包含的內(nèi)容也不一樣,力學性能大約有20個小項,高倍有60個小項,低倍有20個小項、氣體有8個小項,并且如果某一個大項中有不合格的,必須取雙倍的試樣重新進行檢驗,而另外的大項不重做復驗。
請給出物理試驗結果表的設計思路。
四、項目管理問題
請敘述你經(jīng)歷的你認為是最為成功的或典型的項目的項目運作(管理)體系、業(yè)務流程體系和軟件技術體系統(tǒng)。
五、請敘述你的職業(yè)理想。

本文是SQL Server面試題系列文章的最新篇,本文著重討論了如何使用CHECK約束來強制實現(xiàn)觸發(fā)器的唯一值,在SQL Server有多種方式來強制實現(xiàn)觸發(fā)器的唯一值,作為一名合格的SQL Server dba 來說,掌握這方面的知識是應該的。
關鍵詞:SqlServer面試題  數(shù)據(jù)庫面試題 
本文地址:http://www./post/2007102001.html
內(nèi)容正文:
使用CHECK約束來強制執(zhí)行觸發(fā)器的唯一值
Q. 我的SQL Server數(shù)據(jù)表中有一列允許為空(NULL)值。在該列有非空值的時候,我想讓該列的值為唯一值。通過編程實現(xiàn)這一目標的最佳做法是什么呢?如果我在該列中設置一個UNIQUE約束,我可以只在一個記錄中保有空值。我正在使用觸發(fā)器來強制執(zhí)行這個限制,但是你能推薦一種更簡單的方法來確保所有非空的值都是唯一的嗎?

A. SQL Server沒有內(nèi)置的機制可以禁止非空值產(chǎn)生重復,所以你需要使用一個自定義的CHECK約束來實現(xiàn)這個限制。例如,以下代碼就可以實現(xiàn)你所要的那種完整性。

USE tempdb
Create table t1 (c1 int NULL, c2 char(5) NULL)
Create trigger mytrigger on t1 for insert, update as
BEGIN
IF (select max(cnt) from (select count(i.c1)
as cnt from t1, inserted i where t1.c1=i.c1 group
by i.c1) x) > 1
ROLLBACK TRAN
END

在SQL Server 2000中,你還可以使用INSTEAD OF觸發(fā)器來執(zhí)行這個限制。同INSTEAD OF觸發(fā)器有關的更多信息,請參閱以下文章,要查看這些文章,請訪問SQL Server Magazine,在InstantDoc(快速文檔)框中輸入InstantDoc編號,然后點擊“Go”。文章包括:

INSTEAD OF觸發(fā)器的使用竅門;InstantDoc編號 15828
視圖中的INSTEAD OF觸發(fā)器;InstantDoc 編號 15791
INSTEAD OF觸發(fā)器;InstantDoc 編號 15524

 


SQL Server Profiler和參數(shù)化語句

問:自從升級到SQL Server 2000后,我在SQL事件查看器中遇到了一個問題:我無法捕獲帶有參數(shù)的Transact-SQL語句。我希望獲得查詢執(zhí)行過程中參數(shù)的實際取值,而并非諸如@p1這樣的參數(shù)形式。請問如何在不引用跟蹤過程中其它行的情況下對參數(shù)取值加以置換。

答:您必須獲取跟蹤過程的其它部分(如存儲過程StmtCompleted所返回的結果),并將這些部分收集在一起(語句放在最前面)以捕獲完整的查詢內(nèi)容。之所以會出現(xiàn)這樣的結果,其原因在于從SQL Server關系型引擎恢復數(shù)據(jù)的SQL事件查看器方法。這樣的問題在SQL Server 7.0中同樣存在。然而,由于當事件產(chǎn)生時,位于引擎內(nèi)部的參數(shù)取值是未知的,因此,我們無法在這一時刻做出修改。


將一個SQL Server系統(tǒng)用作一臺PDC

問:我的公司建立了一個災難恢復站點,并且計劃在一臺新配備的計算機上安裝SQL Server。Microsoft Windows NT管理員希望使用運行SQL Server的計算機作為主域控制器(PDC)。我聽說,由于PDC需要完整維護與復制網(wǎng)絡賬號數(shù)據(jù)庫所引發(fā)的資源密集型任務并且需要執(zhí)行網(wǎng)絡登陸驗證操作,因此,這種配置方案并非一種良好的方式。那么,請問運行SQL Server的計算機能夠轉而充當備份域控制器(BDC)呢?從技術上講,將SQL Server配置為PDC或BDC是否可能呢?

答:當您在PDC或BDC上安裝SQL Server時,它仍可保持良好的工作狀態(tài)。如需確定某種配置方案能否適應于您的站點,應當考慮您所擁有的資源。如果您擁有足夠的網(wǎng)絡帶寬、內(nèi)存空間與空閑處理器,那么,使用運行SQL Server的計算機作為域控制器便是一種合理的方案。然而,在這種情況下,根據(jù)域的實際規(guī)模,相應的計算機可能需要承擔大量工作負載。如果您認為SQL Server的任務將會非常繁重,那么,便請不要再讓其運行任何其它服務。


管理技巧

問:我嘗試將數(shù)據(jù)庫備份到網(wǎng)絡共享資源上的一個文件中,并將其恢復到另一臺服務器上。我試圖通過下列語句借助net use命令在目標服務器上創(chuàng)建共享資源:

NET USE * \PS5C /USER:ONEDEVdomain id
password /PERSISTENT:NO
然而,系統(tǒng)卻始終返回消息“無法獲得尚未分配的可用驅動器盤符”。此時,SQL Server企業(yè)管理器明明顯示出許多可用驅動器。請問我應如何解決這一問題?

答:您只需直接使用統(tǒng)一命名約定(UNC)路徑來備份您的數(shù)據(jù)庫。SQL Server并非按照與用戶相同的方式來看待映射驅動器盤符。您需要在您的共享資源\PS5C上為SQL Server服務賬號授予完整的訪問權限,創(chuàng)建一個新的共享資源,或使SQL Server服務賬號成為名為PS5的計算機上的管理員組成員。


將事務日志移動到不同的驅動器

問:如何將數(shù)據(jù)庫事務日志移動到不同的驅動器上?
答:您可以通過用于分離與附加數(shù)據(jù)庫的SQL Server存儲過程來移動事務日志。您需要對數(shù)據(jù)庫進行分離,移動日志文件,然后再將其重新附加到數(shù)據(jù)庫上。舉例來說,如果要將pubs數(shù)據(jù)庫從C驅動器移動到D驅動器,應首先使用以下格式的sp_detach_db命令分離數(shù)據(jù)庫:

EXEC sp_detach_db 'pubs'

接下來,將pubs.mdf與pubs_log.ldf文件拷貝到目標驅動器上。以下示例顯示了如何將這兩個文件拷貝到d:mssql7data目錄下:

copy c:mssql7datapubs.mdf d:mssql7datacopy c:mssql7datapubs_log.ldf d:mssql7data

最后,當您完成文件拷貝操作后,便可使用sp_ attach_db存儲過程將數(shù)據(jù)重新附件到SQL Server上:

EXEC sp_attach_db 'pubs', 'd:mssql7datapubs.mdf', 'd:mssql7datapubs_log.ldf'

內(nèi)容摘要:兩道很實用的SQL Server面試題,偏向于數(shù)據(jù)庫管理人員的面試題。講述以下兩問題:如何將數(shù)據(jù)庫擁有者(dbo)帳戶改變?yōu)橄到y(tǒng)管理員(sa),如何添加Oracle鏈接服務器
關鍵詞:SqlServer面試題  數(shù)據(jù)庫面試題  DBA面試題 
本文地址:http://www./post/2007102702.html
內(nèi)容正文:
將數(shù)據(jù)庫擁有者(dbo)帳戶改變?yōu)橄到y(tǒng)管理員(sa)


Q. 在我觀察Enterprise Manager,或者對某個特殊的數(shù)據(jù)庫運行“sp_helpdb ''”的時候,數(shù)據(jù)庫的擁有者(dbo)顯示為某個Microsoft Windows NT?的用戶,而且該用戶并沒有添加到SQL Server 7.0服務器的登錄當中。(該Windows NT用戶是Windows NT 本地管理員組的成員。)但是,在我運行以下Transact-SQL語句時:

USE
EXEC sp_helpuser

結果顯示:系統(tǒng)管理員(sa)帳戶映射到了這個用戶dbo上,對我來說,這意味著sa就是dbo。因此,執(zhí)行以下語句
EXEC sp_changedbowner 'sa'

將失敗,因為SQL Server認為dbo就是數(shù)據(jù)庫的擁有者。究竟誰是數(shù)據(jù)庫的擁有者——Windows NT用戶還是sa?如果Windows NT用戶是擁有者,我如何才能將dbo改變?yōu)閟a?
A. sa帳戶總是會被映射到dbo上,即使sa并不是數(shù)據(jù)庫的真正擁有者。dbo帳戶注冊于master數(shù)據(jù)庫的sysdatabases系統(tǒng)表中,這正如sp_helpdb系統(tǒng)存儲過程顯示的一樣。你可以將dbo從Windows NT改變?yōu)閟a。實現(xiàn)這一目的的最快辦法是首先分離(detach)該數(shù)據(jù)庫,然后以sa身份重新連接該數(shù)據(jù)庫。注意,這種方法會產(chǎn)生停機時間。

 

--------------------------------------------------------------------------
如何添加Oracle鏈接服務器

 

Q. 在我試圖將一個Oracle服務器作為一個鏈接服務器添加到安裝了SQL Server的本地計算機時,操作失敗了。以下是我的計算機的一些參數(shù)設置:

General
Server: \baocjf (\domaincomputer name)
Product name: oracle
Data source: msdaora
Provider: proview (alias)

Security
Local login:cjf (sa)
Remote login: internal/oracle

難道SQL Server不支持將鏈接服務器添加到本地計算機嗎?
A: 根據(jù)SQL Server Books Online(在線圖書),你可以使用Microsoft OLE DB Provider for oracle來查詢Oracle數(shù)據(jù)庫中的數(shù)據(jù)。SQL Server Books Online規(guī)定了該提供者工作所必須滿足的幾個條件。請仔細閱讀這些指南以確保您滿足這些條件。

例如,OLE DB Provider for oracle需要Oracle客戶端軟件支持文件版本為7.3.3.4.0或更高, oracle SQL*Net的版本為2.3.3.0.4。SQL Server在線圖書包括了與如何創(chuàng)建一個SQL*Net別名和創(chuàng)建從SQL Server登錄到Oracle登錄有關的信息。Books Online還為如何引用Oracle數(shù)據(jù)庫的實例和Oracle鏈接服務器中的數(shù)據(jù)表提供了一些指南。

根據(jù)這些指南,如想建立Oracle鏈接服務器,您應該運行以下命令:

exec sp_addlinkedserver 'localOracle', 'Oracle', 'MSDAORA', 'proview'
/* SQL Server調用服務器“localOracle”,SQL*NET將服務器引用為 proview. */

exec sp_addlinkedsrvlogin 'localOracle', false, 'sa', 'internal', 'oracle'
/* 以“sa”身份登錄到SQL Server,sa將映射到Oracle中的一個內(nèi)部帳戶。*/

然后,以sa用戶的身份登錄到SQL Server服務器上,然后運行一個如下所示的分布式查詢:

Select * FROM localOracle..Schema.Table

 

我有一次面試的時候,就遇到下列問題?
1.隱式游標、顯式游標的區(qū)別?

2.什么是同義詞?

3.解釋hint的使用

4.什么是數(shù)據(jù)倉庫?

4答:
數(shù)據(jù)倉庫基本工作流程
A. 數(shù)據(jù)抽取
此步驟從業(yè)務系統(tǒng)中提取數(shù)據(jù)到數(shù)據(jù)倉庫數(shù)據(jù)庫中,基本上不作轉換,但需要增量更新(即只提取最近修改和新增的數(shù)據(jù),一般是以天為單位),以提高效率。
B. 數(shù)據(jù)清理
將步驟A抽取過來的數(shù)據(jù)進行清理,統(tǒng)一格式,比如同一個字段的數(shù)據(jù)在多個業(yè)務系統(tǒng)中都存在,但類型或長度可能不一致,在數(shù)據(jù)倉庫中需要統(tǒng)一成一種類型,此工作一般在數(shù)據(jù)倉庫數(shù)據(jù)庫中用PL/SQL編寫程序執(zhí)行。
C. 數(shù)據(jù)集成
在此步驟中將步驟B中得到的數(shù)據(jù)根據(jù)需求按主題集成,此步驟是運算最復雜的環(huán)節(jié),一般用PL/SQL編寫程序實現(xiàn),由于算法復雜,對一個最終數(shù)據(jù)往往會編寫幾個程序,依次運算,中間運算結果會分多個邏輯層存放。
D. 數(shù)據(jù)展示
此步驟實現(xiàn)最終用戶看到的結果,即報表。一般需要借助第三方工具實現(xiàn)。以Business Object為例,完成此步工作還要分兩個步驟,首先完成Universe設計,定義好語義層,然后制作報表,報表通過語義層中的數(shù)據(jù)對象查詢數(shù)據(jù),完成數(shù)據(jù)展示。最終用戶可以通過web瀏覽器或特定客戶端軟件調閱報表。

由于以上A、B、C三步需要按定時順序執(zhí)行,且各個業(yè)務系統(tǒng)同數(shù)據(jù)倉庫數(shù)據(jù)庫之間往往是異構數(shù)據(jù)庫,因此常常需借助第三方工具,比如IBM公司的DataStage、CA公司的Advantage Data Transformer等,這些工具都可以完成數(shù)據(jù)源連接定義,異構數(shù)據(jù)庫數(shù)據(jù)的抽取,工作流定義等工作。


內(nèi)容摘要:SQL面試題:在SQL2000中怎么區(qū)分登入,用戶,角色,并用例子舉例說明.
關鍵詞:數(shù)據(jù)庫面試題  SqlServer面試題 
本文地址:http://www./post/2007071810.html
內(nèi)容正文:
面試題:請問在SQL2000中怎么區(qū)分登入,用戶,角色,并用例子舉例說明;
  再問:

      (1)登入ID是不是就是用戶名(當我創(chuàng)建了一個登入, 我在點擊登入所對應的數(shù)據(jù),實例中的用戶一欄看到登入ID與用戶名一致)

  (2)一個登入ID是不是只能對應一個用戶

  教科書答案:登錄 ID 僅能使您連接到 SQL Server 實例。特定數(shù)據(jù)庫內(nèi)的權限由用戶帳戶控制。數(shù)據(jù)庫管理員將您的登錄帳戶映射到您有權訪問的任何數(shù)據(jù)庫中的用戶帳戶

  用戶如:sa

  角色如:public/db_owner/db_datareader/db_datawriter等

  只有給用戶賦予角色,該用戶才有相應的操作數(shù)據(jù)庫的權限

  如將public/db_owner角色賦給sa,則該用戶有對數(shù)據(jù)庫進行一切操作的權限

  角色:完成特定的、與服務器相關的管理任務所需的權限,一個用戶可以屬于多個角色。

  登錄:僅能使您連接到 SQL Server 實例。

  命題官的理解:

  登錄是sql實例級的

  用戶是數(shù)據(jù)庫級的

  角色有實例級和數(shù)據(jù)庫級兩種

  登錄決定你是否能訪問sql實例

  用戶與登錄對應, 確實某個登錄后, 它對那些數(shù)據(jù)庫有那些權限.

  角色是為了方便管理一類登錄或者用戶所具有的權限, 當某一類登錄或者用戶具有相同的權限時, 可以簡單地給予他們對應的角色即可.

  做個形象的比喻:

  sql實例就相當于一個公司.

  如果你要在公司工作自然就要成為公司的員工, 因此公司的員工就相當于登錄

  公司有不同的部門, 這相當于數(shù)據(jù)庫, 你要在某個部門做事, 必須把你分配到某個部門, 也就是在部門的名單中要有你, 這個部門的名單就相當于用戶. 名單必須對應公司的某個員工.

  但你一個人是可以在多個部門工作的

  因此, 一個登錄可以對應多個數(shù)據(jù)庫的不同用戶.

  同樣, 一個員工在一個部門的名單中只可能出現(xiàn)一次

  因此, 一個登錄在同一數(shù)據(jù)庫中, 只可能對應一個用戶

  為了方便定義每個員工應該做些什么, 應該承擔什么職責, 公司會定義職位, 我個職位對應的, 在數(shù)據(jù)庫中就叫角色.

  因為有的職位是公司層面的, 比如懂事長, 他什么都可以管

  因此, 有sql實例級的角色

  也可以具體地為每個部位定義職位, 不同部門的同一名稱的職位它的具體內(nèi)容可以不同.

  因此,對應于sql而言, 它又有數(shù)據(jù)庫級的角色

  某個員工是某個職位, 則具有該職位對應的權限與責任

  因此, 對于sql而言, 某個登錄或者用戶被授予某個或者某些角色, 它就具有對應的權限.

  不同職位, 在不同時期, 可以由不人擔任, 換人只需要取消和授予對應人員的職位就可以了. 不用改職位定義.

  因此, 對于sql而言, 可以根據(jù)需要取消和授予某個登錄或者用戶的角色.

  (這是管理方便性需要, 你完全可以不理會角色, 自己為用戶或者登錄指定權限)


1. (1)truncate 是DDL操作,且刪除的數(shù)據(jù)信息不計入redo log,效率高; delete DML操作,刪除的信息寫入redo log,效率低
  (2)truncate 降低了HWM;delete不降低HWM

2.  disable外鍵約束,重建完成以后enable外鍵約束

3.  歸檔和不歸檔模式的比較:
    歸檔模式下數(shù)據(jù)庫是可以恢復到任意一個時間點的,而不歸檔的模式下數(shù)據(jù)庫不能恢復到任意一個時間點,由于歸檔需要寫歸檔日志,所以歸檔模式下數(shù)據(jù)庫性能比不歸檔模式下稍差一點。
   
4. ORACLE_HOME是Oracle數(shù)據(jù)庫的安裝目錄,ORACLE_BASE則是Oracle產(chǎn)品的安裝目錄

5.  package 是把一些互相之間有聯(lián)系,或者業(yè)務上存在相近或者實現(xiàn)同一個目的的function, procedure組合在一起,便于遷移吧 。function是需要返回一個值的,procedure是用來操作數(shù)據(jù)的,不需要返回值的,如果需要返回值的話,可以通過out參數(shù)來返回。

6.  關閉數(shù)據(jù)庫,修改initSID.ora文件,然后重新啟動數(shù)據(jù)庫

7.  alter tablespace temp add datafile '/mydatabase/mydb1/temp02.dbf' 100m;  不應該給temp表空間增加datafile,而是tempfile

8.  普通的B樹索引,但是不寫入日志

9.  nomount的時候就已經(jīng)分配了sga. 啥時候分配的pga不記得了,趕緊查查去

10.  數(shù)據(jù)庫服務器端的字符集 select * from nls_database_parameters 
      9i新引入的unicode字符集還真的確實不知道

嘩啦啦答了一圈,不知道對不,歡迎大家使勁拍磚


網(wǎng)易筆試不難,但是給了我一個教訓,所以記下來以留念。
  時間:11月3日8:00(后來改到10:00)。
  地點:西安交通大學教2南315教室
  趕到考場時,離考試開始時間只差2分鐘了,找了個座位坐下后沒有任何的等待筆試就開始了。網(wǎng)易的筆試題目很有趣:
證明題:給出n個互不相同的分數(shù)數(shù)列a1/b1, a2/b2… an/bn ,證明(a1 + a2 + … + an) / (b1 + b2 + … + bn) 的值在數(shù)列a1/b1, a2/b2… an/bn 數(shù)列的最大值和最小值之間。
證明題:在三角形中,假設等角對等邊,證明大角對大邊。
文學題:在以下的空白中填入相應的詞(藹、斷、淡、泰)并解釋其含義。
  自處超然,處事 然,無事澄言,處事 言,得意 然,失意 然。
問答題:為什么現(xiàn)在的計算機采用二進制?而不是八進制或十六進制?你認為以后的計算機會采用幾進制?
閱讀理解題(記不清楚是不是有這道題及具體是什么了)。
程序設計題:給出若干個單詞,組成字典,要求查找速度最快。
  不知為什么,那天心態(tài)特別放松,放松的結果就是思維很發(fā)散,寫字不是太工整,尤其是做到后面的題目時,寫字寫得很快,自己看上去都有些潦草??偣参覍懥巳摷垼ㄕ疵妫?,自己感覺還是做得不錯的。
  但是后來并沒有收到網(wǎng)易的面試通知,總結了一下,結論就是那天的字跡太潦草了。潦草給人的第一印象就是態(tài)度不認真,進一步就是你做事情的風格就這樣馬虎,或者說你對我們公司不感興趣,所以,不給我面試機會也是很正常的。
  這是一個教訓。在做這份題目的時候,就應該想到面對一份答案,閱卷人員會如何去看待,也就是說如何通過這份答案去影響閱卷人員對自己的看法。如果他面對的是一份潦草的答卷,即使答案是完全正確的甚至是有些創(chuàng)意的,他也許看都不看就直接放到一邊去了。
  態(tài)度是最重要的事情。要做,就要端正態(tài)度,做到最好,不然就不要去做了。
1.寫出對“知之者不如好之者,好之者不如樂之者”的理解。
2.用中文寫出盡可能多的中文語句,要求包含有“都”的意思(all、both之意),但不能有“都”字
3.new/delete和malloc/free的區(qū)別,并說說你在什么情況下會自另行建立自己的內(nèi)存分配機制。
4.求極限lim(x-[x]),x趨于-3。
5.比較兩個電路的可靠性。
6.編程題:輸入一個正整數(shù),若該數(shù)能用幾個連續(xù)正整數(shù)之和表示,則輸出所有可能的正整數(shù)序列。
7.有兩個字符串 str1和str2,寫一個函數(shù)實現(xiàn)在str1中查找str2的初始位置。要求不區(qū)分大小寫。
8.在字符串S中尋找最長的字符串x,條件是x存在于S中。即是如:abcabcdcd中的abc。
9.求Fibonacci數(shù)列中第k個與前面所有數(shù)互質的數(shù)(除前面兩個數(shù) 1,1 )。
10.有100個真幣和一個假幣,只知道真幣與假幣不等重,要求只稱兩次,得出是真幣重還是假幣重。
11.證明題:給出n個互不相同的分數(shù)數(shù)列a1/b1, a2/b2… an/bn ,證明(a1 + a2 + … + an) / (b1 + b2 + … + bn) 的值在數(shù)列a1/b1, a2/b2… an/bn 數(shù)列的最大值和最小值之間。
12. 證明題:在三角形中,假設等角對等邊,證明大角對大邊。
13. 文學題:在以下的空白中填入相應的詞(藹、斷、淡、泰)并解釋其含義。
  自處超然,處事 然,無事澄言,處事 言,得意 然,失意 然。
14. 問答題:為什么現(xiàn)在的計算機采用二進制?而不是八進制或十六進制?你認為以后的計算機會采用幾進制?
15.程序設計題:給出若干個單詞,組成字典,要求查找速度最快。
16.,有b1/a1,b2/a2,....,bn/an 共n個分數(shù),分母同號,證明:
 ?。╞1+b2+...+bn)/(a1+a2+...+an)的值在上面n個分數(shù)值最大制和最小值之間.

17.證明:三角形中大邊對大角,已知等邊對等角
18.為什么計算機中多用二進制,16進制也用在程序中.你認為有沒有可能回出現(xiàn)多進制的計算機,為什么
19.一個沒有拷貝構造函數(shù)和重載=運算符的String類,會出現(xiàn)什么問題,如何解決?
20.編程題.
有篇文章,找出文章中單詞在詞典中的序號,要求高效率.詞典沒排序.
21.
有一位警長,抓了三個逃犯。現(xiàn)警長決定給他們一次機會。他拿出3頂黑帽子,兩頂白帽子,然后往這三個逃犯頭上每人戴了一頂帽子,每個逃犯只能看到另外兩個逃犯帽子的顏色,不能看到自己帽子的顏色,而且不能進行通訊,不能進行討論,只能靠自己的推理推出來,如果猜出來了,放一條生路,否則處死。
警長先問第一逃犯,結果第一逃犯猜錯了,被殺掉了。
警長問第二個逃犯,結果還是猜錯了,同樣被殺掉了。
警長再問第三個逃犯,結果第三個逃犯猜對了。
說明一下,每個逃犯在回答問題時,其他逃犯是聽不到的。
為什么第三個一定能猜中,請你給出解釋。

1.磁盤柜上有14塊73G的磁盤, 數(shù)據(jù)庫為200G 大小包括日志文件,如何設置磁盤(要說明這14磁盤是怎么用的)?
2.有兩服務器群集,分別為node1和node2 現(xiàn)在要打win200系統(tǒng)補丁,打完后,要重新啟動,如何打補丁,不能影響用戶使用(要用群集的術語詳細說明)。
3.有一個A 數(shù)據(jù)庫,分別復制到B和C  B 要求 每次數(shù)據(jù)更新 也同時更新,C 每天更新一次就行,如何制定復制策略!
4.有一個order 表,有90個字段,20個索引,15個復合索引,其中有3個索引字段超過10個,如何進行優(yōu)化
5.有一個數(shù)據(jù)庫200G大小,每天增加50M 允許用戶隨時訪問,制定備份策略(詳細說明)。

參考答案:

1.磁盤柜上有14塊73G的磁盤, 數(shù)據(jù)庫為200G 大小包括日志文件,如何設置磁盤(要說明這14磁盤是怎么用的)?

這個問題應該是考察硬件知識和數(shù)據(jù)庫物理部署。

首先需要知道這些磁盤是否要用于存放數(shù)據(jù)庫備份文件和數(shù)據(jù)庫性能(讀/寫)要求。來決定raid的級別。
1)、如果偏重于性能考慮,而且不用存放數(shù)據(jù)庫備份文件的話,考慮使用raid0+1,這樣可使用的磁盤容量為:14*73*50%=511G。
2)、如果讀/寫性能要求不高,而且還比較摳門的話,可以考慮raid5,這樣可使用的磁盤容量為:13*73=949G。

至于如何使用應該是說數(shù)據(jù)庫物理文件的部署。注意說出將tempdb,data file,log file分開存放以減少I/O競爭即可。其實現(xiàn)在的條帶化磁盤一般都會自動將文件分存,人為的分布已經(jīng)越來越不重要了。

2.有兩服務器群集,分別為node1和node2 現(xiàn)在要打win200系統(tǒng)補丁,打完后,要重新啟動,如何打補丁,不能影響用戶使用(要用群集的術語詳細說明)。

這個具體操作有點忘了。大致是:首先看哪個節(jié)點正在使用,通過節(jié)點IP(私有)訪問另一個空閑節(jié)點,為其打上補丁,然后在群集管理器中停止該節(jié)點(也可以用命令行方式),重新啟動。等到啟動完畢,將切換使用節(jié)點,為另一個節(jié)點打補丁。然后重新啟動。

3.有一個A 數(shù)據(jù)庫,分別復制到B和C  B 要求 每次數(shù)據(jù)更新 也同時更新,C 每天更新一次就行,如何制定復制策略!

這個應該考察的是復制知識。

a->b
1)、如果使用SQL Server復制功能,那么讓a->b使用事務性復制方式(同步復制)。
2)、如果表不多,也可以自己寫觸發(fā)器,利用linkserver+distribute transaction。

a->c
1)、如果使用SQL Server復制功能,那么讓a->b使用快照復制方式,在某一時間點進行一次性復制。
2)、也可以自己寫bat,將a備份后,通過ftp傳輸備份介質,恢復c。(比較麻煩,不推薦)


4.有一個order 表,有90個字段,20個索引,15個復合索引,其中有3個索引字段超過10個,如何進行優(yōu)化

這個問題問的比較沒水平。你不詳細說明這個表的使用方式(讀寫類的,還是幾乎是靜態(tài)表),就問人家怎么優(yōu)化???!還不如問問索引的分布訪問原理更好。

看得出他就想讓你說:那三個索引超過10個,B樹遍例效率很低,適當減少字段數(shù)目。如果是SQL2005,可以將選擇性不好的字段放在“索引附加字段”中,以保證索引覆蓋。而且SQL Server由于有鎖升級的毛病,可以考慮拆開表。


5.有一個數(shù)據(jù)庫200G大小,每天增加50M 允許用戶隨時訪問,制定備份策略(詳細說明)。

這種情況可以采用增量備份方式。每周日做一次全備份,周一到周六作增量備份(由于數(shù)據(jù)量較少,可以考慮每30分鐘增量備份一次)。這樣可以盡量減少性能消耗,而且如果transaction log丟失的情況下,可以保證最多丟失30分鐘數(shù)據(jù)。

6.管理50臺數(shù)據(jù)庫,日常工作是檢查數(shù)據(jù)庫作業(yè)是否完成,你該如何完成這項檢查工作?
7.自定義函數(shù)和存儲過程的區(qū)別是什么,什么情況下只能用自定義函數(shù),什么情況下只能用存儲過程

參考答案:

 


6.管理50臺數(shù)據(jù)庫,日常工作是檢查數(shù)據(jù)庫作業(yè)是否完成,你該如何完成這項檢查工作?

這個比較簡單。在每臺機器上建立linkserver,然后在DBA管理服務器上做個分布式視圖,每次查詢該視圖,各個機器上的作業(yè)情況一目了然。分布式視圖寫法:

create view vw_job
as

select '機器一' as MName,* from linkserver1..sysjobactivity
union all
select '機器二' as MName,* from linkserver2..sysjobactivity
union all
select '機器三' as MName,* from linkserver3..sysjobactivity

7.自定義函數(shù)和存儲過程的區(qū)別是什么,什么情況下只能用自定義函數(shù),什么情況下只能用存儲過程

這個應該是考察存儲過程編寫經(jīng)驗。一般自定義函數(shù)主要用于其他sql中的調用,如:

select yourfunc(...) from table

這種情況下,一般只能通過函數(shù)實現(xiàn)。

存儲過程的功能要遠遠強于函數(shù),例如動態(tài)執(zhí)行sql(sp_executesql)的使用和一些特殊的功能,自定義函數(shù)中是不支持的,只能用存儲過程實現(xiàn)。

8.SQL 2005 的新特性是什么 ?  與oracle 有什么區(qū)別?
9.DBA 的品質應該有哪些,你有哪些, 有什么欠缺的?
10。如果想配置SQL Mail 應該在服務器安裝哪些軟件!
參考答案:

 


8.SQL 2005 的新特性是什么 ?  與oracle 有什么區(qū)別?

SQL 2005 的新特性一般都是和Oracle學的。

下面是當時被leimin逼著寫的,你可以做個參考:

一、數(shù)據(jù)庫設計方面
1、字段類型。
varchar(max) varchar(max)類型的引入大大的提高了編程的效率,可以使用字符串函數(shù)對CLOB類型進行操作,這是一個亮點。但是這就引發(fā)了對varchar和char效率討論的老問題。到底如何分配varchar的數(shù)據(jù),是否會出現(xiàn)大規(guī)模的碎片?是否碎片會引發(fā)效率問題?這都是需要進一步探討的東西。

varbinary(max)代替image也讓SQL Server的字段類型更加簡潔統(tǒng)一。

XML字段類型更好的解決了XML數(shù)據(jù)的操作。XQuery確實不錯,但是個人對其沒好感。(CSDN的開發(fā)者應該是相當?shù)氖炝耍。?/p>

2、外鍵的級聯(lián)更能擴展
可能大部分的同行在設計OLTP系統(tǒng)的時候都不愿意建立外鍵,都是通過程序來控制父子數(shù)據(jù)的完整性。但是再開發(fā)調試階段和OLAP環(huán)境中,外鍵是可以建立的。新版本中加入了SET NULL 和 SET DEFAULT 屬性,能夠提供能好的級聯(lián)設置。

3、索引附加字段
這是一個不錯的新特性。雖然索引的附加字段沒有索引鍵值效率高,但是相對映射到數(shù)據(jù)表中效率還是提高了很多。我做過試驗,在我的實驗環(huán)境中會比映射到表中提高30%左右的效率。

4、計算字段的持久化
原來的計算字段其實和虛擬字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了計算字段的持久化,這就提高了查詢的性能,但是會加重insert和update的負擔。OLTP慎用。OLAP可以大規(guī)模使用。

5、分區(qū)表
分區(qū)表是個亮點!從分區(qū)表也能看出微軟要做大作強SQL Server的信心。資料很多,這里不詳細說。但是重點了解的是:現(xiàn)在的SQL Server2005的表,都是默認為分區(qū)表的。因為它要支持滑動窗口的這個特性。這種特性對歷史數(shù)據(jù)和實時數(shù)據(jù)的處理是很有幫助的。
但是需要注意的一點,也是我使用過程中發(fā)現(xiàn)的一個問題。在建立function->schema->table后,如果在現(xiàn)有的分區(qū)表上建立沒有顯式聲明的聚集索引時,分區(qū)表會自動變?yōu)榉欠謪^(qū)表。這一點很讓我納悶。如果你覺得我的非分區(qū)索引無法對起子分區(qū),
你可以提醒我一下呀!沒有任何的提醒,直接就變成了非分區(qū)表。不知道這算不算一個bug。大家也可以試試。

分區(qū)表效率問題肯定是大家關心的問題。在我的試驗中,如果按照分區(qū)字段進行的查詢(過濾)效率會高于未分區(qū)表的相同語句。但是如果按照非分區(qū)字段進行查詢,效率會低于未分區(qū)表的相同語句。但是隨著數(shù)據(jù)量的增大,這種成本差距會逐漸減小,趨于相等。(500萬數(shù)量級只相差10%左右)

6、CLR類型

微軟對CLR作了大篇幅的宣傳,這是因為數(shù)據(jù)庫產(chǎn)品終于融入.net體系中。最開始我們也是狂喜,感覺對象數(shù)據(jù)庫的一些概念可以實現(xiàn)了。但是作了些試驗,發(fā)現(xiàn)使用CLR的存儲過程或函數(shù)在達到一定的閥值的時候,系統(tǒng)性能會呈指數(shù)級下滑!這是非常危險的!只使用幾個可能沒有問題,當一旦大規(guī)模使用會造成嚴重的系統(tǒng)性能問題!

其實可以做一下類比,Oracle等數(shù)據(jù)庫產(chǎn)品老早就支持了java編程,而且提供了java池參數(shù)作為用戶配置接口。但是現(xiàn)在有哪些系統(tǒng)大批使用了java存儲過程?!連Oracle自己的應用都不用為什么?!還不是性能有問題!否則面向對象的數(shù)據(jù)庫早就實現(xiàn)了!

建議使用CLR的地方一般是和應用的復雜程度或操作系統(tǒng)環(huán)境有很高的耦合度的場景。如你想構建復雜的算法,并且用到了大量的指針和高級數(shù)據(jù)模型?;蛘呤且筒僮飨到y(tǒng)進行Socket通訊的場景。否則建議慎重!

7、索引視圖

索引視圖2k就有。但是2005對其效率作了一些改進但是schema.viewname的作用域真是太限制了它的應用面。還有一大堆的環(huán)境參數(shù)和種種限制都讓人對它有點卻步。

8、語句和事務快照

語句級快照和事務級快照終于為SQL Server的并發(fā)性能帶來了突破。個人感覺語句級快照大家應該應用。事務級快照,如果是高并發(fā)系統(tǒng)還要慎用。如果一個用戶總是被提示修改不成功要求重試時,會殺人的!

9、數(shù)據(jù)庫快照

原理很簡單,對要求長時間計算某一時間點的報表生成和防用戶操作錯誤很有幫助。但是比起Oracle10g的閃回技術還是細粒度不夠??上В?/p>

10、Mirror
Mirror可以算是SQL Server的Data guard了。但是能不能被大伙用起來就不知道了。

二、開發(fā)方面

1、Ranking函數(shù)集
其中最有名的應該是row_number了。這個終于解決了用臨時表生成序列號的歷史,而且SQL Server2005的row_number比Oracle的更先進。因為它把Order by集成到了一起,不用像Oracle那樣還要用子查詢進行封裝。但是大家注意一點。如下面的例子:

select ROW_NUMBER() OVER (order by aa)
from tbl
order by bb

會先執(zhí)行aa的排序,然后再進行bb的排序。

可能有的朋友會抱怨集成的order by,其實如果使用ranking函數(shù),Order by是少不了的。如果擔心Order by會影響效率,可以為order by的字段建立聚集索引,查詢計劃會忽略order by 操作(因為本來就是排序的嘛)。

2、top
可以動態(tài)傳入?yún)?shù),省卻了動態(tài)SQL的拼寫。

3、Apply
對遞歸類的樹遍歷很有幫助。

4、CTE
個人感覺這個真是太棒了!閱讀清晰,非常有時代感。

5、try/catch
代替了原來VB式的錯誤判斷。比Oracle高級不少。

6、pivot/unpivot
個人感覺沒有case直觀。而且默認的第三字段(還可能更多)作為group by字段很容易造成新手的錯誤。

 

三、DBA管理方面

1、數(shù)據(jù)庫級觸發(fā)器
記得在最開始使用2k的時候就要用到這個功能,可惜2k沒有,現(xiàn)在有了作解決方案的朋友會很高興吧。

2、多加的系統(tǒng)視圖和實時系統(tǒng)信息

這些東西對DBA挑優(yōu)非常有幫助,但是感覺粒度還是不太細。

3、優(yōu)化器的改進
一直以來個人感覺SQL Server的優(yōu)化器要比Oracle的聰明。SQL2005的更是比2k聰明了不少。(有次作試驗發(fā)現(xiàn)有的語句在200萬級時還比50萬級的相同語句要快show_text的一些提示沒有找到解釋。一直在奇怪。)
論壇例子:
http://community.csdn.net/Expert/topic/4543/4543718.xml?temp=.405987

4、profiler的新事件觀察
這一點很好的加強了profiler的功能。但是提到profiler提醒大家注意一點。windows2003要安裝sp1補丁才能啟動profiler。否則點擊沒有反應。

5、sqlcmd

習慣敲命令行的朋友可能會爽一些。但是功能有限。適合機器跑不動SQL Server Management Studio的朋友使用。

四、遺憾

1、登陸的控制
始終遺憾SQL Server的登陸無法分配CPU/內(nèi)存占用等指標數(shù)。如果你的SQL Server給別人分配了一個只可以讀幾個表的權限,而這個家伙瘋狂的死循環(huán)進行連接查詢,會給你的系統(tǒng)帶來很大的負擔。而SQL Server如果能像Oracle一樣可以為登陸分配如:5%的cpu,10%的內(nèi)存。就可以解決這個漏洞。

2、數(shù)據(jù)庫物理框架沒有變動
undo和redo都放在數(shù)據(jù)庫得transaction中,個人感覺是個敗筆。如果說我們在設計數(shù)據(jù)庫的時候考慮分多個數(shù)據(jù)庫,可能能在一定程度上避免I/O效率問題。但是同樣會為索引視圖等應用帶來麻煩??纯葱屑壓褪聞占壍目煺諗?shù)據(jù)放在tempdb中,就能感覺到目前架構的尷尬。

3、還是沒有邏輯備份
備份方面可能還是一個老大難的問題。不能單獨備份幾個表總是感覺不爽。靈活備份的問題不知道什么時候才能解決。

4、SSIS(DTS)太復雜了

SQL Server的異構移植功能個人感覺最好了。(如果對比過SQL Server的鏈接服務器和Oracle的透明網(wǎng)關的朋友會發(fā)現(xiàn)SQL Server的sp_addlinkedserver(openquery)異構數(shù)據(jù)庫系列比Oracle真是強太多了。)
以前的DTS輕盈簡單。但是現(xiàn)在的SSIS雖然功能強大了很多,但是總是讓人感覺太麻煩??纯凑搲性儐朣SIS的貼子就知道。做的功能太強大了,往往會有很多用戶不會用了。


與oracle 有什么區(qū)別?

這個問題相當變態(tài)!不同點我能給他講一天!首先名字就不一樣嘛!! :)


9.DBA 的品質應該有哪些,你有哪些, 有什么欠缺的?

10。如果想配置SQL Mail 應該在服務器安裝哪些軟件!

需要哪些軟件?安個outlook express就可以了。sql server提供接口存儲過程,非常簡單

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多