日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.Net程序员面试题分享(EF/Sql篇)

發布時間:2023/12/20 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net程序员面试题分享(EF/Sql篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、列舉出你知道的ORM框架?

答:dapper EntityFramework、 EJB、Hibernate、IBATIS、TopLink、OJB。

2、描述EF的幾種開發模式。

答: 共三種,但是CodeFirst有一種特殊的;
CodeFirstFromDB,代碼先行,但是實體來時來自于數據庫!
CodeFirst 領域設計時先定義實體類,用實體類生成數據庫
DbFirst 從數據庫生成實體類
Model First 使用Visual Studio實體設計器,設計ER,同時生成Entity類DB

3、如何如何獲取EF生成的Sql腳本?

答:1.可以調試起來通過SqlServerProfiler 來獲取Sql
2.EF Dbcontext 注冊日志事件輸出日志查看Sql

4、請說明在哪些類型額項目中你會選擇EF? 為什么?

答:這個要結合EF的特點來說:EF主要是以面向對象的思想來做數據庫數據操作,對Sql語句能力沒什么要求,開發使用效率高!便于上手,一般來說,使用EF框架,肯定會比直接使用ADO.NET,消耗的時間多一些。 所以在一般企業級開發,管理型系統,對數據性能要求不是特別高的情況下,優先選擇EF,這樣可以大大的推進開發效率!如果像一些互聯網項目中,對性能要求精度很高!可以另外做技術選型,選擇原生ADO.Net;

5、如何讓EF支持事務?
答: EF中操作SaveChange本就是帶事務的,一般在做增刪改查的時候,只有在SaveChange以后才能提交到數據庫中去的!同時也可以使用Windows系統提供的事務!可以實現一個跨數據的事務的!

5、請說明EF中映射實體對象的幾種狀態?

答: Detached:該實體未由上下文跟蹤。剛使用新運算符或某個 System.Data.Entity.DbSet Create 方法創建實體后,實體就處于此狀態。
Unchanged:實體將由上下文跟蹤并存在于數據庫中,其屬性值與數據庫中的值相同。
Added:實體將由上下文跟蹤,但是在數據庫中還不存在。
Deleted:實體將由上下文跟蹤并存在于數據庫中,但是已被標記為在下次調用 SaveChanges 時從數據庫中刪除。
Modified:實體將由上下文跟蹤并存在于數據庫中,已修改其中的一些或所有屬性值。

6、請說明在EF中生成的映射實體中有哪些驗證特性?

答:Required:不能為空
StringLength 長度

7、如果實體名稱和數據庫表名不一致,該如何處理?

答:實體名稱和數據庫表名稱不一致:可以通過使用TableAttribute 特性;

8、請說明使用EF如何實現級聯刪除?
答:級聯刪除需要數據庫的配合,在映射實體中配置主外鍵關系,然后在數據庫中設置操作為級聯刪除即可!

9、什么叫做SQL注入,如何防止?請舉例說明。
答:利用sql關鍵字對網站進行攻擊。過濾關鍵字’等

10、 淺談EF的延遲加載。
答:即當我們需要用到的時候才進行加載(讀取)。當我們希望瀏覽某條訂單信息的時候,才顯示其對應的訂單詳細記錄時,我們希望使用延遲加載來實現,這樣不僅加快的了 讀取的效率,同時也避免加載不需要的數據。延遲加載通常用于foreach循環讀取數據時。那么我們在定義Model的時候,需要在屬性前面添加virtual關鍵字。
如果我們想要禁止使用延遲加載,那么最好的方法是在DbContext類的構造方法中聲明。

選擇題:

1.在SQL Server中,( )語句是用來創建表的。 (選擇一項)
A:CREATE TABLE 表名
B:DROP TABLE 表名
C:ALTER TABLE 表名
D:DELETE TABLE 表名

2.在SQL Server中,以下用于更改數據庫名稱的存儲過程是( )。(選擇一項)
A:sp_renamedatabase
B:sp_alterdb
C:sp_renamedb
D:sp_helpdb

3.在SQL Server中,關于視圖的說法不正確的是( )。 (選擇一項)
A:視圖是一種虛擬表,通常是作為執行查詢的結果而創建的
B:使用CREATE VIEW語句創建視圖
C:使用SELECT語句查看視圖的查詢結果
D:定義視圖的查詢可以基于一個或多個表,但不可以基于其他視圖

4.在SQL Server中,下面( )語句用于提交事務。 (選擇一項)
A:COMMIT TRANSACTION
B:BEGIN TRANSACTION
C:ROLLBACK TRANSACTION
D:SAVE TRANSACTION

5.在SQL Server中,關于存儲過程的說法不正確的是( )。(選擇一項)
A:存儲過程一般分為系統存儲過程、擴展存儲過程和用戶自定義存儲過程
B:存儲過程是在數據庫管理系統中保存的、預先編譯的并能實現某種功能的SQL程序
C:存儲過程幫助實現了模塊化編程
D:用戶在創建自定義存儲過程后不能再被修改

6.在SQL Server中,使用if…else語句時,( )可以作為條件表達式。(選擇一項)
A:true
B:false
C:1>0
D:1==1

7.關于SQL Server中的視圖,以下說法錯誤的是( )。 (選擇一項)
A:視圖是一種虛擬的表,通常是作為執行查詢的結果而創建的
B:視圖充當著對查詢中指定的表的篩選器
C:更改視圖中的數據,原始表中的數據不會隨之更改
D:視圖的結構和數據是建立在對表的查詢基礎上的

8.如下圖所示,查詢參加考試學員的姓名、學號、家庭地址,其中錯誤的T-SQL語句為( )。 (選擇一項)

A:select stuname as 姓名,stuInfo.stuId as 學號,stuaddress as 家庭地址from stuInfo inner join stuMarks on stuInfo.stuId=stuMarks.stuId

B:select stuname as 姓名,stuMarks.stuId as 學號,stuaddress as 家庭地址from stuMarks left join stuInfo on stuMarks.stuId=stuInfo.stuId

C:select stuname as 姓名,stuid as 學號,stuaddress as 家庭地址from stuInfo where stuid in (select * from stuMarks)

D:select stuname as 姓名,stuMarks.stuId as 學號,stuaddress as 家庭地址from stuInfo right join stuMarks on stuMarks.stuId=stuInfo.stuId

9.SQL SERVER中,在繪制E-R圖時,菱形和橢圓分別表示( )。 (選擇一項)
A:屬性、實體
B:實體、關系集
C:關系集、屬性
D:實體、屬性

10.在T-SQL中給變量賦值可以用( )。 (選擇一項)
A:給局部變量賦值用set,給全局變量賦值用select
B:給局部變量賦值用set或select,不能給全局變量賦值
C:給局部變量賦值用select,給全局變量賦值用set
D:給局部變量賦值用set或select,給全局變量賦值用系統存儲過程sp_setvalue

11.在SQL Server中,下列關于索引的描述錯誤的是( )。(選擇一項)
A:一張表中主鍵索引最多只能有一個
B:一張表中可以有多個非聚集索引
C:應該在字節數大的列上建立索引
D:索引應該創建在經常用作查詢的列
?
12.在SQL Server中,索引是在基本表的列上建立的一種數據庫對象,它同基本表分開存儲,使用它能夠加快數據的( )速度。 (選擇一項)
A:插入
B:修改
C:查詢
D:刪除

13.下面所示的T-SQL語句使用內連接實現多表查詢,查詢返回多行數據: SELECT SName FORM Students INNER JOIN Score on Students.SCode = Score.StudentID WHERE Score>=60 選項中可以替換上述語句實現該查詢的語句是( )。 (選擇一項)

A:SELECT SName from Students WHERE SCode = (SELECT StudentID from Score WHERE Score>=60)

B:SELECT SName from Students WHERE SCode IN (SELECT StudentID from Score WHERE Score>=60)

C:SELECT SName from Students WHERE SCode NOT IN (SELECT StudentID from Score WHERE Score<60)

D:SELECT SName from Students WHERE SCode != (SELECT StudentID from Score WHERE Score<60)

14.在SQL Server中,執行下面存儲過程,語句正確的是( )。 create proc proc_score ( @stuId char(10), @score int output ) as select @score=score from score where stuId=@stuId go (選擇一項)
A:exec proc_score ‘2011001’,output

B:declare @score int exec proc_score ‘2011001’,@score
?
C:declare @score int exec proc_score ‘2011001’,@score output

D:declare @score int exec proc_score @score output ,‘2011001’
?
15.SQL Server中,在繪制E-R圖時,( )表示關系。 (選擇一項)
A:橢圓
B:矩形
C:菱形
D:多邊形

16.在SQL Server 數據庫,數據庫系統中的編程語言是T-SQL,T-SQL語言中用于顯示處理的數據結果的輸出語句有兩種,它們的語法分別是( )。 (選擇二項)
A:put 局部變量或字符串
B:print 局部變量或字符串
C:SELECT 局部變量 AS 自定義列名
D:SELECT 局部變量 FOR 自定義列名

17.在SQL Server中,以下關于數據庫設計范式的描述中,錯誤的是( )。 (選擇一項)
A:第一范式的目標是確保每列的原子性
B:數據庫如果滿足第三范式,則肯定滿足第二范式
C:三大范式是用來幫助數據庫設計者設計結構良好的數據庫
D:設計數據庫時,滿足的范式級別越高,系統性能越好

18.在SQL Server 數據庫中,對存儲過程的描述錯誤的是( )。 (選擇一項)
A:存儲過程可以重復調用
B:存儲過程是自動執行的
C:存儲過程是SQL語句的預編譯集合
D:存儲過程比一般SQL語句執行速度更快

20.在SQL Server中有一個存儲圖書基本信息的表book,其中有書名bookName、價格price、作者author等字段,下面代碼是查詢出價格比圖書 “Flash開發”高的圖書信息,橫線處應填寫的代碼是( )。(選擇一項)
declare @avgPrice numeric ________________________________________________ select * from book where price>@avgPrice go (選擇一項)

A:select @avgPrice =avg(price) from book
B:select @avgPrice=price from book where bookName like ‘%FLash開發%’
C:select @avgPrice=price from book where bookName=‘FLash開發’
D:select @avgPrice as price from book where bookName like ‘%FLash開發%’
?

20.在SQL Server中,有關下列語句的實際功能,描述正確的是( )。(選擇兩項)
WHILE EXISTS(SELECT examResult FROM Result WHERE examResult <60) BEGIN UPDATE Result SET examResult = examResult +5 IF (SELECT MAX(examResult) FROM Result)>=90 BREAK ELSE CONTINUE END (選擇二項)

A:當有考試成績不到60分時,循環加分
B:當成績平均分不到60分時,循環加分
C:當最高分大于等于90時,停止加分
D:以上都是錯的

21.在SQL Server中,關于子查詢描述錯誤的是( )。 (選擇一項)
A:相對于表連接,子查詢更適合于作為查詢的篩選條件
B:使用EXISTS關鍵字引入一個子查詢,子查詢產生查詢結果集
C:使用IN子查詢返回的查詢結果是一列零值或更多值。子查詢返回結果后,外部查詢可以使用這些查詢結果
D:子查詢可由一個比較運算符引入。比較運算符可以是=、<>、>、<、>=、<=等

22.在SQL Server中,給定如下SQL代碼,執行結果為( )。 INSERT INTO student (StudentID,StudentName,Age,ClassID) VALUES(227,‘馬達’,23,3) DECLARE @age INT DECLARE @cid INT WHILE(1=1) BEGIN SELECT @age=Age,@cid=ClassID FROM student WHERE StudentName=‘馬達’ IF(@age<24 and @cid<>2) BEGIN UPDATE student SET ClassID=2 WHERE StudentName=‘馬達’ SELECT @cid=ClassID FROM student WHERE StudentName=‘馬達’ END ELSE BREAK END PRINT ‘姓名:馬達 年齡:’+LTRIM(STR(@age))+’ 班級:’+LITRIM(STR(@cid)) (選擇一項)
A:姓名:馬達 年齡:23 班級:3
B:姓名:馬達 年齡:23 班級:2
C:姓名:馬達 年齡:3 班級:2
D:姓名:馬達 年齡:2 班級:3

23.在SQL Server中,( )包含了一組數據庫操作命令,并且所有的命令作為一個整體一起向系統提交或撤銷操作請求。 (選擇一項)
A:事務
B:視圖
C:索引
D:子查詢

24.在SQL Server中,變量@avg為一個整型變量,其中下列數據類型轉換錯誤的是( )。 (選擇一項)
A:Convert(varchar(20),@avg)
B:Cast(@avg as varchar(20))
C:Convert(nvarchar(20),@avg,100)
D:Cast(varchar(20) as @avg,100)

25.在SQL SERVER中,關于聚集索引和非聚集索引的區別有( )。(選擇二項)
A:一個表可以有多個非聚集索引,但只能有一個聚集索引
B:聚集索引的查詢速度要比非聚集索引速度快
C:在建立聚集索引的列上不允許有重復的值
D:非聚集索引的查詢速度要比聚集索引速度快

26.在進行數據庫設計時,設計者應當按照數據庫的設計范式進行數據庫設計。以下關于三大范式說法錯誤的是( )。 (選擇一項)
A:第一范式的目標是確保每列的原子性
B:第三范式在第二范式的基礎上,確保表中的每行都和主鍵相關
C:第二范式在第一范式的基礎上,確保表中的每列都和主鍵相關
D:第三范式在第二范式的基礎上,確保表中的每列都和主鍵直接相關,而不是間接相關

27.在SQL Server中,執行以下存儲過程,語句正確的是( )。 CREATE PROC proc_student (@stuID INT,@sex BIT OUTPUT) AS SELECT @sex=sex FROM student WHERE stuID=@stuID (選擇一項)

A:DECLARE @sex BIT EXEC proc_student OUTPUT @sex,1
B:DECLARE @sex BIT EXEC proc_student @sex OUTPUT,1
C:DECLARE @sex BIT EXEC proc_student 1,OUTPUT @sex
D:DECLARE @sex BIT EXEC proc_student 1,@sex OUTPUT

28.SQL SERVER數據庫中,運行如下代碼,輸出結果為( )。 CREATE PROCEDURE test @m VARCHAR(20)=null AS if @m = null BEGIN print ‘A’ return END if @m is null BEGIN print ‘B’ END select * from sysobjects where name=@m GO EXEC test (選擇一項)
?
A:A
B:B并顯示空的表sysobject的記錄集
C:A并顯示空的表sysobject的記錄集
D:B

29.以下T-SQL代碼,說法不正確的是( )。 SELECT 學號 = StudentNo, 成績 = CASE WHEN StudentResult < 60 THEN ‘E’ WHEN StudentResult BETWEEN 60 AND 69 THEN ‘D’ WHEN StudentResult BETWEEN 70 AND 79 THEN ‘C’ WHEN StudentResult BETWEEN 80 AND 89 THEN ‘B’ WHEN ELSE ‘A’ FROM Result (選擇二項)
A:ELSE前面不用寫WHEN
B:缺少END關鍵字
C:在每一個WHEN的條件表達式后面缺少逗號
D:缺少break關鍵字
30.在SQL Server中,下列關于索引的描述錯誤的是( )。 (選擇一項)
A:一張表中主鍵索引最多只能有一個
B:一張表中可以有多個非聚集索引
C:聚集索引和主鍵索引必須同時存在
D:一般會給經常用作查詢的列建立索引

31.在SQL Server中,當查詢某種型號的手機的詳細信息時,下劃線處應填寫( )。 SELECT * FROM mobilePhone WHERE phoneNo ___ (此處為返回多個phoneNo的SQL語句)(選擇一項)

A:IN
B:LIKE
C:=
D:>=

32.關于SQL Server中的事務,以下說法錯誤的是( )。(選擇一項)
A:事務中的所有元素必須作為一個整體提交或回滾
B:對數據進行修改的所有并發事務是彼此隔離的,這表明事務必須是獨立的,它不應以任何方式依賴于或影響其他事務
C:SQL Server中不能使用事務日志保存受到故障影響的事務
D:當事務成功完成時,數據必須再次回到已知的一致狀態

33.在SQL Server中,下面的( )語句是正確的。(選擇一項)
A:CREATE VIEW view1 AS SELECT * INTO #S1 FROM DEPT GO

B:CREATE VIEW view1 AS SELECT * FROM DEPT ORDER BY DEPTID GO

C:CREATE VIEW view1 AS SELECT TOP 5 * FROM DEPT ORDER BY DEPTID GO

D:CREATE VIEW view1 AS DECLARE did int SET @did=10 SELECT * FROM DEPT WHERE DEPTID =@did GO

34.在SQL Server中,以下關于視圖描述錯誤的是( )。(選擇兩項)
A:定義視圖的查詢可以基于一個或多個表
B:定義視圖的查詢不可以基于其它視圖
C:視圖通常在查詢數據時使用
D:視圖一旦被刪除,視圖中的數據也同時被刪除。

35.在SQL Server中,關于變量描述,不正確的是( )。(選擇一項)
A:變量可分為全局變量和局部變量兩大類
B:全局變量是由系統提供且預先聲明,通過在名稱前加兩個“@”符號區別于局部變量
C:不能使用SELECT語句給變量賦值
D:可使用DECLARE語句聲明局部變量

36.在SQL Server中,下面選項可以正確實現對變量賦值的是( )。(選擇兩項)
A:declare @name char(10) set @name=‘小強’

B:declare @age int(4)
select @age=18

C:declare @sex bit set @sex=0

D:declare @money money(4) set @money=4

37.在SQL SERVER中,關于用戶定義的存儲過程說法正確的是( )。(選擇一項)
A:使用create procedure語句來創建存儲過程
B:存儲過程必須帶參數
C:存儲過程如果有輸入參數,則輸入參數不能設置默認值
D:存儲過程可以沒有輸出參數,但是必須有輸入參數

38.在SQL SERVER中,圖書信息表Book中有圖書編號id、書名BookName、價格BookPrice、出版日期Tdate等字段,關于下面的代碼說法正確的是( )。(選擇一項)
declare @avgPrice float select @avgPrice=AVG(BookPrice) from Book if(@avgPrice>80) begin select top 10 * from Book order by BookPrice desc end else begin select top 10 * from Book order by BookPrice asc end
A:如果圖書的平均價格高于80,則查出價格最高的10本圖書信息
B:如果圖書的平均價格高于80,則查出價格最低的10本圖書信息
C:如果圖書的最高價格高于80,則查出價格最高的10本圖書信息
D:如果圖書的最高價格高于80,則查出價格最低的10本圖書信息

39.在SQL Server中,運行以下T-SQL語句,輸出的結果是( )。(選擇一項)
CREATE PROC usp_selectStu @stuNo varchar(8)=NULL AS IF @stuNo IS NULL Begin Print ‘請輸入學號’ RETURN End SELECT * FROM stuInfo WHERE stuNo=@stuNo GO EXEC usp_selectStu

A:編譯錯誤
B:調用存儲過程usp_ selectStu出錯
C:顯示空的學員信息記錄集
D:顯示“請輸入學號”

40.在SQL Server中,以下關于常用的系統存儲過程的說法正確的是( )。(選擇一項)
A:sp_databases用于列出數據庫服務器中的所有數據庫信息
B:sp_helpconstraint用于查看某個表的索引
C:sp_procedures用于顯示存儲過程的列表
D:sp_tables用于查看系統中存在的表的個數

總結

以上是生活随笔為你收集整理的.Net程序员面试题分享(EF/Sql篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。