- 相關(guān)推薦
公司招聘面試試題
1、iBatis相比JDBC優(yōu)勢(shì)的優(yōu)勢(shì)有哪些?
答:簡(jiǎn)單易上手、開(kāi)發(fā)速度快、面向?qū)ο螅瑪?shù)據(jù)庫(kù)可移植。
(此處應(yīng)該將優(yōu)缺點(diǎn)一起分析,才是滿(mǎn)意得到回答)
延伸學(xué)習(xí):
MyBatis和iBatis的區(qū)別:
ibatis本是apache的一個(gè)開(kāi)源項(xiàng)目,2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為mybatis
(1)Mybatis實(shí)現(xiàn)了接口綁定,使用更加方便:
在ibatis2.x中我們需要在DAO的實(shí)現(xiàn)類(lèi)中指定具體對(duì)應(yīng)哪個(gè)xml映射文件,而Mybatis實(shí)現(xiàn)了DAO接口與xml映射文件的綁定,
(2)對(duì)象關(guān)系映射的改進(jìn),效率更高
iBatis:
優(yōu)點(diǎn) : 代碼量減少、簡(jiǎn)單易上手、SQL語(yǔ)句和代碼分離(便于修改)、數(shù)據(jù)庫(kù)可移植
缺點(diǎn):SQL語(yǔ)句需要自己寫(xiě)、參數(shù)只能有一個(gè)
Hibernate:
優(yōu)點(diǎn):對(duì)象關(guān)系數(shù)據(jù)庫(kù)映射、完全面向?qū)ο蟆⑻峁┚彺鏅C(jī)制、HQL編程
缺點(diǎn):不能靈活使用原生SQL、 無(wú)法對(duì)SQL優(yōu)化、全表映射效率低下、N+1的問(wèn)題
JDBC、iBatis、Hibernate明顯對(duì)比:
JDBC更為靈活,更加有效率,系統(tǒng)運(yùn)行速度快。但是代碼繁瑣復(fù)雜,有的時(shí)候用了存儲(chǔ)過(guò)程就不方便數(shù)據(jù)庫(kù)移植了。
hibernate,iBatis 關(guān)系數(shù)據(jù)庫(kù)框架,開(kāi)發(fā)速度快,更加面向?qū)ο螅梢砸浦哺鼡Q數(shù)據(jù)庫(kù),但影響系統(tǒng)性能。
JDBC:手動(dòng)
手動(dòng)寫(xiě)sql,不能直接傳入一個(gè)對(duì)象、不能直接返回一個(gè)對(duì)象。
iBatis的特點(diǎn):半自動(dòng)化
手動(dòng)寫(xiě)sql,能直接傳入一個(gè)對(duì)象、能直接返回一個(gè)對(duì)象。
Hibernate:全自動(dòng)
不寫(xiě)sql,自動(dòng)封裝,能直接傳入一個(gè)對(duì)象、能直接返回一個(gè)對(duì)象。
2、PrepareStatement相比statement,有哪些優(yōu)點(diǎn)?
答:(1)直接使用Statement,驅(qū)動(dòng)程序一般不會(huì)對(duì)sql語(yǔ)句作處理而直接交給數(shù)據(jù)庫(kù);
使用PreparedStament,形成預(yù)編譯的過(guò)程,并且會(huì)對(duì)語(yǔ)句作字符集的轉(zhuǎn)換(至少在sql server)中如此。
如此,有兩個(gè)好處:對(duì)于多次重復(fù)執(zhí)行的語(yǔ)句,使用PreparedStament效率會(huì)更高一點(diǎn),并且在這種情況下也比較適合使用batch;另外,可以比較好地解決系統(tǒng)的本地化問(wèn)題。
(2)PreparedStatement還能有效的防止危險(xiǎn)字符的注入,也就是sql注入的問(wèn)題。(但是必須使用“對(duì)?賦值的方法”才管用)
3、TCP/IP對(duì)應(yīng)于OSI七層模型的哪些層?
答:OSI七層模型分別是:應(yīng)用層、表示層、會(huì)話(huà)層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。
TCP/IP協(xié)議不是TCP和IP協(xié)議的合稱(chēng),而是指因特網(wǎng)整個(gè)TCP/IP協(xié)議族。從協(xié)議分層模型方面來(lái)看,TCP/IP由四個(gè)層次組成:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
4、為什么3次握手,4次揮手?
3次握手建立連接:
第一次握手:建立連接時(shí),客戶(hù)端發(fā)送SYN包(syn=j)到服務(wù)器,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn);SYN:同步序列編號(hào)(Synchronize Sequence Numbers)即握手信號(hào)。
第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶(hù)的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:客戶(hù)端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶(hù)端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手。
4次揮手?jǐn)嚅_(kāi)連接:
對(duì)于一個(gè)已經(jīng)建立的連接,TCP使用改進(jìn)的4次揮手來(lái)釋放連接(使用一個(gè)帶有FIN附加標(biāo)記的報(bào)文段)。TCP關(guān)閉連接的步驟如下:
第一步,當(dāng)主機(jī)A的應(yīng)用程序通知TCP數(shù)據(jù)已經(jīng)發(fā)送完畢時(shí),TCP向主機(jī)B發(fā)送一個(gè)帶有FIN附加標(biāo)記的報(bào)文段(FIN表示英文finish)。
第二步,主機(jī)B收到這個(gè)FIN報(bào)文段之后,并不立即用FIN報(bào)文段回復(fù)主機(jī)A,而是先向主機(jī)A發(fā)送一個(gè)確認(rèn)序號(hào)ACK,同時(shí)通知自己相應(yīng)的應(yīng)用程序:對(duì)方要求關(guān)閉連接(先發(fā)送ACK的目的是為了防止在這段時(shí)間內(nèi),對(duì)方重傳FIN報(bào)文段)。
第三步,主機(jī)B的應(yīng)用程序告訴TCP:我要徹底的關(guān)閉連接,TCP向主機(jī)A送一個(gè)FIN報(bào)文段。
第四步,主機(jī)A收到這個(gè)FIN報(bào)文段后,向主機(jī)B發(fā)送一個(gè)ACK表示連接徹底釋放。
5、進(jìn)程和線(xiàn)程區(qū)別是什么?
答:進(jìn)程是一個(gè)具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。它可以申請(qǐng)和擁有系統(tǒng)資源,是一個(gè)動(dòng)態(tài)的概念,是一個(gè)活動(dòng)的實(shí)體。
進(jìn)程是一個(gè)“執(zhí)行中的程序”。程序是一個(gè)沒(méi)有生命的實(shí)體,只有處理器賦予程序生命時(shí),它才能成為一個(gè)活動(dòng)的實(shí)體,我們稱(chēng)其為進(jìn)程。
一個(gè)進(jìn)程中可以包含若干個(gè)線(xiàn)程,它們可以利用進(jìn)程所擁有的資源。在引入線(xiàn)程的操作系統(tǒng)中,通常都是把進(jìn)程作為分配資源的基本單位,而把線(xiàn)程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位。
線(xiàn)程與進(jìn)程的區(qū)別歸納:
地址空間和其它資源:進(jìn)程間相互獨(dú)立,同一進(jìn)程的各線(xiàn)程間共享。某進(jìn)程內(nèi)的線(xiàn)程在其它進(jìn)程不可見(jiàn)。
通信:進(jìn)程間通信IPC,線(xiàn)程間可以直接讀寫(xiě)進(jìn)程數(shù)據(jù)段(如全局變量)來(lái)進(jìn)行通信——需要進(jìn)程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性。
調(diào)度和切換:線(xiàn)程上下文切換比進(jìn)程上下文切換要快得多。
【公司招聘面試試題】相關(guān)文章:
招聘創(chuàng)新人才的14個(gè)面試試題09-25
蘋(píng)果公司面試趣味試題09-25
德國(guó)公司經(jīng)典面試題11-10
NOKIA招聘筆試題09-26
公司招聘面試自我介紹05-25
2017搜狗招聘筆試題09-25
重慶煙草公司公考面試試題09-25
科技有限公司面試題目09-26
航空公司機(jī)務(wù)面試題09-29
2017幼教招聘筆試試題09-26