2013 我遇到的面試題

2022-05-29 15:00:18 字數 4239 閱讀 3430

2013-我遇到的面試題

1. ado.net中的五個主要物件

connection:主要是開啟程式和資料庫之間的連線。沒有利用連線物件將資料庫開啟,是無法從資料庫中取得資料的。close和dispose的區別,close以後還可以open,dispose以後則不能再用。

command:主要可以用來對資料庫發出一些指令,例如可以對資料庫下達查詢、新增、修改、刪除資料等指令,以及呼叫存在資料庫中的儲存過程等。這個物件是架構在connection 物件上,也就是command: 物件是通過在connection物件連線到資料來源。

dataadapter:主要是在資料來源以及dataset 之間執行資料傳輸的工作,它可以透過command 物件下達命令後,並將取得的資料放入dataset 物件中。這個物件是架構在command物件上,並提供了許多配合dataset 使用的功能。

dataset:這個物件可以視為乙個暫存區(cache),可以把從資料庫中所查詢到的資料保留起來,甚至可以將整個資料庫顯示出來,dataset是放在記憶體中的。dataset 的能力不只是可以儲存多個table 而已,還可以透過dataadapter物件取得一些例如主鍵等的資料表結構,並可以記錄資料表間的關聯。dataset 物件可以說是ado.net 中重量級的物件,這個物件架構在dataadapter物件上,本身不具備和資料來源溝通的能力;也就是說我們是將dataadapter物件當做dataset 物件以及資料來源間傳輸資料的橋梁。dataset包含若干datatable、datatabletable包含若干datarow。

datareader:當我們只需要循序的讀取資料而不需要其它操作時,可以使用datareader 物件。datareader物件只是一次一次向下循序的讀取資料源中的資料,這些資料是存在資料庫伺服器中的,而不是一次性載入到程式的記憶體中的,只能(通過游標)讀取當前行的資料,而且這些資料是唯讀的,並不允許作其它的操作。因為datareader 在讀取資料的時候限制了每次只讀取一條,而且只能唯讀,所以使用起來不但節省資源而且效率很好。使用datareader 物件除了效率較好之外,因為不用把資料全部傳回,故可以降低網路的負載。

ado.net 使用connection 物件來連線資料庫,使用command 或dataadapter物件來執行sql語句,並將執行的結果返回給datareader 或 dataadapter ,然後再使用取得的datareader 或dataadapter 物件運算元據結果。

2.列舉asp.net 頁面之間傳遞值的幾種方式和優缺點

1.使用querystring, 如....?id=1; response. redirect():  傳遞的引數會顯示在url中,不安全並且不能傳遞陣列或物件。

2.使用session變數:簡單,但易丟失 作用於使用者個人,過量的儲存會導致伺服器記憶體資源的耗盡。

3.使用server.transfer:流程從當前頁面引導到另乙個頁面中,新的頁面使用前乙個頁面的應答流,資料庫穩定,安全,但效能相對弱。

4.cookie傳值:簡單,但可能不支援,可能被偽造 cookie是存放在客戶端的,而session是存放在伺服器端的。而且cookie的使用要配合asp.net內建物件request來使用

6.previospage:這個一般比較少用。

server.transfer和response.redirect的區別:server.transfer是伺服器內部的轉接,瀏覽器不知道;response.redirect是有瀏覽器參與的,所以在位址列中可以看到位址的變化。

3.try {}裡有乙個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行?

會執行,在return前執行。

4.什麼是反射?

程式集包含模組,而模組又包括型別,型別下有成員,反射就是管理程式集,模組,型別的物件,它能夠動態的建立型別的例項,設定現有物件的型別或者獲取現有物件的型別,能呼叫型別的方法和訪問型別的字段屬性。它是在執行時建立和使用型別例項。

5.string str = null 與 string str = 「」說明其中的區別。

string str = null 是不給他分配記憶體空間,而string str = "" 給它分配長度為空字串的記憶體空間。 string str = null沒有string物件,string str = 「」有乙個字串物件。

6.寫出一條sql語句:取出表a中第31到第40記錄(sqlserver,以自動增長的id作為主鍵,注意:id可能不是連續的。)

解1: select top 10 * from a where id not in (select top 30 id from a)

解2: select top 10 * from a where id > (select max(id) from (select top 30 id from a )as a)

解3:select * from  (select id,row_number() over (order by id) as rownum from a) as b where rownum between 31 and 40

7.什麼是sql注入?如何避免sql注入?

使用者根據系統的程式構造非法的引數從而導致程式執行不是程式設計師期望的惡意sql語句。使用引數化的sql就可以避免sql注入。使用引數化paramter

8.說出一些資料庫優化方面的經驗?

引內部原理:想象成dictionary,插入、刪除、更新的速度慢了,加上索引也多占用了空間,查詢的速度快了。加上索引以後速度提公升非常明顯。

(1)在經常檢索的字段上(select * from person where name=@name)使用索引提高查詢速度。

(2)select中只列出必要的字段,而不是*。

(3)避免隱式型別轉換造成的全表掃瞄,在索引上使用函式也會造成全表掃瞄(因為索引只是為字段建立的,一旦使用表示式或者函式,那麼索引就是失效了,當然也可以使用「函式索引」、「表示式索引」解決這個問題),使用索引不一定能提高查詢速度。

(4)避免在索引列上使用計算(where name+'a'=@myname)

9.一列數的規則如下: 1、1、2、3、5、8、13、21、34......  求第30位數是多少, 用遞迴演算法實現。

public class mainclass

public static int foo(int i) }

10.請程式設計遍歷頁面上所有textbox控制項並給它賦值為string.empty?

foreach (system.windows.forms.control control in this.controls)

}11.請程式設計實現乙個氣泡排序演算法?

int array = new int [*] ;

int temp = 0 ;

for (int i = 0 ; i < array.length - 1 ; i++)}}

12.用.net做b/s結構的系統,您是用幾層結構來開發,每一層之間的關係以及為什麼要這樣分層?

一般為3層

資料訪問層,業務層,表示層。

資料訪問層對資料庫進行增刪查改。

業務層一般分為二層,業務表觀層實現與表示層的溝通,業務規則層實現使用者密碼的安全等。

表示層為了與使用者互動例如使用者新增表單。

優點:  分工明確,條理清晰,易於除錯,而且具有可擴充套件性。

缺點:  增加成本。

13.簡要談一下您對微軟.net 構架下remoting和webservice兩項技術的理解以及實際中的應用。

ws主要是可利用http,穿透防火牆。而remoting可以利用tcp/ip,二進位制傳送提高效率。

14.short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型。可修改為s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。

15.如何處理幾十萬條併發資料?

用儲存過程或事務。取得最大標識的時候同時更新..注意主鍵不是自增量方式這種方法併發的時候是不會有重複主鍵的..取得最大標識要有乙個儲存過程來獲取.

16.session有什麼重大bug,微軟提出了什麼方法加以解決?

是iis中由於有程序**機制,系統繁忙的話session會丟失,可以用sate   server或sql   server資料庫的方式儲存session不過這種方式比較慢,而且無法捕獲session的end事件。

17.程序和執行緒的區別?

程序是系統進行資源分配和排程的單位;執行緒是cpu排程和分派的單位,乙個程序可以有多個執行緒,這些執行緒共享這個程序的資源。

我遇到的筆試面試題

1.分布式事務如何解決,分布式鎖如何實現 2.kafka持久化如何實現的 3.zookeeper選舉原理,如果是3臺,5臺,7臺是如何選舉的 4.memcached和redis等快取區別,使用那些資料結構,支援那些key 5.redis,kafka等是如何集群通訊的 6.redis的持久化如何實現 ...

我遇到過的面試題

1.c 類中,成員函式和成員變數加上static分別有什麼作用?2.在16位機器中,定義乙個陣列short a 100 則sizeof a 的值是。3.c 中的過載 覆蓋 隱藏的區別。4.在16位cpu的系統中,有如下c語言源 short a,b a b 1000 123 a long b 1000...

我遇到的面試題,供大家參考

1.hibernate和mybatis的區別 mybatis的優勢 mybatis可以更為細緻的進行sql優化,減少檢索的字段。mybatis更容易掌握,hibernate門檻更高。hibernate的優勢 hibernate的移植性好,mybatis更換資料庫相應的sql語句也要修改,侷限性較大。...