計算機復(fù)試問題總結(jié)(一)

1.指令和數(shù)據(jù)放在一起存儲的,計算機是如何區(qū)分指令和數(shù)據(jù)的?

方式一:通過不同時間段來區(qū)分指令和數(shù)據(jù),即在取指令階段(或取值微指令)取出的為指令,

在執(zhí)行指令階段(或相應(yīng)微程序)取出的即為數(shù)據(jù)。

方式二:通過地址來源區(qū)分,由PC提供存儲單元地址的取出的是指令,由指令地址碼部分提供

存儲單元地址的取出的是操作數(shù)

2.介紹自主控制機制和強制存儲機制的區(qū)別

自主存取控制方法:知定義各個用戶對不同數(shù)據(jù)對象的存取對象。當(dāng)用戶對數(shù)據(jù)庫訪問時首先檢查用戶的存取權(quán)限。防止不合法用戶對數(shù)據(jù)庫的存取。

強制存取控制方法:每一個數(shù)據(jù)對象被(強制地)標(biāo)以一定的密集,每一個用戶也被(強制地)授予某一個級別的許可,系統(tǒng)規(guī)定只有具有謀一許可證級別的用戶才能存取某一個密級的數(shù)道據(jù)對象。

3.orm是什么

ORM的全稱是:Object Relational Mapping (對象 關(guān)系 映射) 簡單的說,orm是通過使用描述對象和數(shù)據(jù)之間映射的元數(shù)據(jù),將程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中。

ORM需要解決的問題是,能否把對象的數(shù)據(jù)直接保存到數(shù)據(jù)庫中,又能否直接從數(shù)據(jù)庫中拿到一個對象?要想做到上面兩點,則必須要有映射關(guān)系。

ORM的優(yōu)缺點 優(yōu)點: orm的技術(shù)特點,提高了開發(fā)效率??梢宰詣訉嶓wEntity對象與數(shù)據(jù)庫中的Table進(jìn)行字段與屬性的映射;不用直接SQL編碼,能夠像操作對象一樣從數(shù)據(jù)庫中獲取數(shù)據(jù) 缺點: orm會犧牲程序的執(zhí)行效率和會固定思維模式,在從系統(tǒng)結(jié)構(gòu)上來看,采用orm的系統(tǒng)多是多層系統(tǒng)的,系統(tǒng)的層次太多,效率就會降低,orm是一種完全面向?qū)ο蟮淖龇?,所以面向?qū)ο蟮淖龇ㄒ矔π阅墚a(chǎn)生一定的影響。 總結(jié): ORM只是一種幫助我們解決一些重復(fù)的、簡單的勞動,我們不能一勞永逸的靠工具來解決問題,有些特殊問題還是需要進(jìn)行特殊處理的。

4.什么是α測試什么是β測試?

α測試:Alpha測試(α測試)是由一個用戶在開關(guān)環(huán)境下進(jìn)行的測試,也可以是公司內(nèi)部的用戶在模擬實際操作環(huán)境下進(jìn)行的受控測試,Alpha測試不能由測試員完成。Alpha測試發(fā)現(xiàn)的錯誤,可以在測試現(xiàn)場立即發(fā)聵給開發(fā)人員,由開發(fā)人員及時分析和處理。目的是評價軟件產(chǎn)品的功能,可使用性、可靠性、性能和支持。尤其注重產(chǎn)品的界面和特色。Aplha測試可以從軟件產(chǎn)品編碼結(jié)束之后開始,或在模塊(子系統(tǒng))測試完成后開始。有關(guān)的手冊(草稿)等應(yīng)該在Alpha測試前準(zhǔn)備好。

β測試:Beta測試(β測試)是軟件的多個用戶的實際使用環(huán)境下進(jìn)行的測試。開發(fā)者通常不在測試現(xiàn)場,Beta測試不能由程序員或測試員完成。因而,Beta測試是在開發(fā)者無法控制的環(huán)境下進(jìn)行的軟件現(xiàn)場應(yīng)用。在Beta測試中,由用戶記下遇到的所有問題,包括真實的以及主管認(rèn)定的,定期向開發(fā)者報告,開發(fā)者在綜合用戶的報告后,做出修改,最后將軟件產(chǎn)品交付給全體用戶使用。Beta測試著重于產(chǎn)品的支持性,包括文檔、客戶培訓(xùn)和支持產(chǎn)品的生產(chǎn)能力。只有當(dāng)Alpha測試達(dá)到一定可靠程度后,才開始Beta測試。由于Beta測試的主要目標(biāo)是測試可支持性,所以Beta測試應(yīng)該盡可能由主持產(chǎn)品發(fā)行的人員來管理。

5.介紹瀑布模型和螺旋模型

瀑布模型(Waterfall Model) 是一個項目開發(fā)架構(gòu),開發(fā)過程是通過設(shè)計一系列階段順序展開的,從系統(tǒng)需求分析開始直到產(chǎn)品發(fā)布和維護(hù),每個階段都會產(chǎn)生循環(huán)反饋,因此,如果有信息未被覆蓋或者發(fā)現(xiàn)了問題,那么最好 “返回”上一個階段并進(jìn)行適當(dāng)?shù)男薷?,項目開發(fā)進(jìn)程從一個階段“流動”到下一個階段,這也是瀑布模型名稱的由來。包括軟件工程開發(fā)、企業(yè)項目開發(fā)、產(chǎn)品生產(chǎn)以及市場銷售等構(gòu)造瀑布模型。

螺旋模型是一種演化軟件開發(fā)過程模型,它兼顧了快速原型迭代的特征以及瀑布模型的系統(tǒng)化與嚴(yán)格監(jiān)控。螺旋模型最大的特點在于引入了其他模型不具備的風(fēng)險分析,使軟件在無法排除重大風(fēng)險時有機會停止,以減小損失。同時,在每個迭代階段構(gòu)建原型是螺旋模型用以減小風(fēng)險的途徑。螺旋模型更適合大型的昂貴的系統(tǒng)級的軟件應(yīng)用。

6.數(shù)據(jù)庫系統(tǒng)和文件系統(tǒng)相比的優(yōu)點

1.安全性高,可靠性高 2.查詢檢索速度快 3.可以保證數(shù)據(jù)的有效性完整性和約束檢查 4.有效的解決并發(fā)操作的問題 5.編程簡單,操作方便。

7.IP層的協(xié)議有哪些

IP協(xié)議

ICMP協(xié)議:ICMP協(xié)議是指英文全稱(Internet Control Message Protocol),就是網(wǎng)際控制信息協(xié)議。主要是用于補充IP傳輸數(shù)據(jù)報的過程中,發(fā)送主機無法確定數(shù)據(jù)報是否到達(dá)目標(biāo)主機。ICMP報文分為出錯報告報文和查詢報文兩種。若數(shù)據(jù)報不能到達(dá)目標(biāo)主機,ICMP出錯報告報文可以以回送信息的方式,向源主機發(fā)去信息,并不能糾抄正數(shù)據(jù)報中的任何出錯。除了出錯報告,ICMP還可以診斷出某些網(wǎng)絡(luò)問題,這就是ICMP的查詢報文。

IGMP協(xié)議:IGMP協(xié)議是指英文全稱(Internet Group Management Protocol),網(wǎng)絡(luò)組管理協(xié)議。主要用于建立和管理多播組,對IP分組廣播進(jìn)行控制

8.簡述網(wǎng)卡的功能

1、網(wǎng)卡要進(jìn)行串行/并行轉(zhuǎn)換:

網(wǎng)卡和局域網(wǎng)之間的通信是通過電纜或雙絞線以串行傳輸方式進(jìn)行的。而網(wǎng)卡和計算機之間的通信則是通過計算機主板上的I/O總線以并行傳輸方式進(jìn)行。因此,網(wǎng)卡的一個重要功能就是要進(jìn)行串行/并行轉(zhuǎn)換。由于網(wǎng)絡(luò)上的數(shù)據(jù)率和計算機總線上的數(shù)據(jù)率并不相同,因此在網(wǎng)卡中必須裝有對數(shù)據(jù)進(jìn)行緩存的存儲芯片。

2、網(wǎng)卡能實現(xiàn)以太網(wǎng)協(xié)議:

在安裝網(wǎng)卡時必須將管理網(wǎng)卡的設(shè)備驅(qū)動程序安裝在計算機的操作系統(tǒng)中。這個驅(qū)動程序以后就會告訴網(wǎng)卡,應(yīng)當(dāng)從存儲器的什么位置上將局域網(wǎng)傳送過來的數(shù)據(jù)塊存儲下來。

3、網(wǎng)卡能處理正確的幀:

當(dāng)網(wǎng)卡收到一個有差錯的幀時,它就將這個幀丟棄而不必通知它所插入的計算機。當(dāng)網(wǎng)卡收到一個正確的幀時,它就使用中斷來通知該計算機并交付給協(xié)議棧中的網(wǎng)絡(luò)層。當(dāng)計算機要發(fā)送一個IP數(shù)據(jù)包時,它就由協(xié)議棧向下交給網(wǎng)卡組裝成幀后發(fā)送到局域網(wǎng)。

9.完全測試是可能的嗎?

完全測試是不可能 ,主要原因是:

  1. 完全測試比較耗時,時間上不允許。

  2. 完全測試通常意味著較多資源投入,這在現(xiàn)實中往往是行不通的。

  3. 輸入量太大,不能一一進(jìn)行測試;

  4. 輸出結(jié)果太多,只能分類進(jìn)行驗證;

  5. 軟件實現(xiàn)途徑太多;

  6. 軟件產(chǎn)品說明書沒有客觀標(biāo)準(zhǔn),從不同角度看,軟件缺陷的標(biāo)準(zhǔn)不同。

10.進(jìn)程和線程的區(qū)別

根本區(qū)別:進(jìn)程是資源分配最小單位,線程是程序執(zhí)行的最小單位。 計算機在執(zhí)行程序時,會為程序創(chuàng)建相應(yīng)的進(jìn)程,進(jìn)行資源分配時,是以進(jìn)程為單位進(jìn)行相應(yīng)的分配。每個進(jìn)程都有相應(yīng)的線程,在執(zhí)行程序時,實際上是執(zhí)行相應(yīng)的一系列線程。

地址空間:進(jìn)程有自己獨立的地址空間,每啟動一個進(jìn)程,系統(tǒng)都會為其分配地址空間,建立數(shù)據(jù)表來維護(hù)代碼段、堆棧段和數(shù)據(jù)段;線程沒有獨立的地址空間,同一進(jìn)程的線程共享本進(jìn)程的地址空間。

資源擁有:進(jìn)程之間的資源是獨立的;同一進(jìn)程內(nèi)的線程共享本進(jìn)程的資源。

執(zhí)行過程:每個獨立的進(jìn)程程有一個程序運行的入口、順序執(zhí)行序列和程序入口。但是線程不能獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。

線程是處理機調(diào)度的基本單位,但是進(jìn)程不是。由于程序執(zhí)行的過程其實是執(zhí)行具體的線程,那么處理機處理的也是程序相應(yīng)的線程,所以處理機調(diào)度的基本單位是線程。

系統(tǒng)開銷:進(jìn)程執(zhí)行開銷大,線程執(zhí)行開銷小。

11.什么是UML?

UML-Unified Modeling Language 統(tǒng)一建模語言,又稱標(biāo)準(zhǔn)建模語言。是用來對軟件密集系統(tǒng)進(jìn)行可視化建模的一種語言。UML的定義包括UML語義和UML表示法兩個元素。

UML是在開發(fā)階段,說明、可視化、構(gòu)建和書寫一個面向?qū)ο?/a>軟件密集系統(tǒng)的制品的開放方法。最佳的應(yīng)用是工程實踐,對大規(guī)模,復(fù)雜系統(tǒng)進(jìn)行建模方面,特別是在軟件架構(gòu)層次,已經(jīng)被驗證有效。統(tǒng)一建模語言(UML)是一種模型化語言。模型大多以圖表的方式表現(xiàn)出來。一份典型的建模圖表通常包含幾個塊或框,連接線和作為模型附加信息之用的文本。這些雖簡單卻非常重要,在UML規(guī)則中相互聯(lián)系和擴(kuò)展。

12.系統(tǒng)測試和集成測試的區(qū)別?

1.測試對象不同: 系統(tǒng)測試對象是整個系統(tǒng),包括系統(tǒng)中的硬件等;集成測試對象是模塊之間的集成和調(diào)用關(guān)系。

2.測試方法不同: 系統(tǒng)測試一般由獨立測試小組采用黑盒方式來測試;集成測試一般由開發(fā)小組采用白盒加黑盒的方式來測試。

3.測試依據(jù)不同: 系統(tǒng)測試依據(jù)是系統(tǒng)結(jié)構(gòu)設(shè)計,目標(biāo)說明書,需求說明書等;集成測試依據(jù)是程序結(jié)構(gòu)設(shè)計。

13.事務(wù)的四大特性

? 原子性(Atomicity):事務(wù)中所有操作是不可再分割的原子單位。事務(wù)中所有操作要么全部執(zhí)行成功,要么全部執(zhí)行失敗。 ? 一致性(Consistency):事務(wù)執(zhí)行后,數(shù)據(jù)庫狀態(tài)與其它業(yè)務(wù)規(guī)則保持一致。如轉(zhuǎn)賬業(yè)務(wù),無論事務(wù)執(zhí)行成功與否,參與轉(zhuǎn)賬的兩個賬號余額之和應(yīng)該是不變的。 ? 隔離性(Isolation):隔離性是指在并發(fā)操作中,不同事務(wù)之間應(yīng)該隔離開來,使每個并發(fā)中的事務(wù)不會相互干擾。 ? 持久性(Durability):一旦事務(wù)提交成功,事務(wù)中所有的數(shù)據(jù)操作都必須被持久化到數(shù)據(jù)庫中,即使提交事務(wù)后,數(shù)據(jù)庫馬上崩潰,在數(shù)據(jù)庫重啟時,也必須能保證通過某種機制恢復(fù)數(shù)據(jù)。

14.大數(shù)據(jù),物聯(lián)網(wǎng)和云計算的關(guān)系

身處信息快速發(fā)展的今天,物聯(lián)網(wǎng)、大數(shù)據(jù)、云計算這些名詞在我們的生活中出現(xiàn)的越來越頻繁,看似高大上的三者其實卻和我們的生活息息相關(guān)。帶你來認(rèn)識下三者之間的關(guān)系吧!

大數(shù)據(jù)

大數(shù)據(jù)(bigdata),就是指種類多、流量大、容量大、價值高、處理和分析速度快的真實數(shù)據(jù)匯聚的產(chǎn)物。大數(shù)據(jù)或稱巨量資料或海量數(shù)據(jù)資源,指的是所涉及的資料量規(guī)模巨大到無法透過目前主流軟件工具,在合理時間內(nèi)達(dá)到擷取、管理、處理、并整理成為幫助企業(yè)經(jīng)營決策更積好目的的資訊。

大數(shù)據(jù)的4V特點:Volume、Velocity、Variety、Veracity。

即:數(shù)量Volume、多樣性Variety、速度Velocity、和真實性Veracity。

經(jīng)典應(yīng)用案例:尿不濕和啤酒

在美國,到超市去買嬰兒尿不濕是些年輕的父親下班后的日常工作,而他們中有30%~40%的人同時也會為自己買些啤酒。產(chǎn)生這現(xiàn)象的原因是:美國的太太們常叮囑她們的丈夫不要忘了下班后為小孩買尿不濕,而丈夫們在買尿不濕后又隨手帶回了他們喜歡的啤酒。另種情況是丈夫們在買啤酒時突然記起他們的責(zé)任,又去買了尿不濕。既然尿不濕與啤酒起被購買的機會很多,那么沃爾瑪就在他們所有的門店里將尿不濕與啤酒并排擺放在起,結(jié)果是得到了尿不濕與啤酒的銷售量雙雙增長。按常規(guī)思維,尿不濕與啤酒風(fēng)馬牛不相及,若不是借助數(shù)據(jù)挖掘技術(shù)對大量交易數(shù)據(jù)進(jìn)行挖掘分析,沃爾瑪是不可能發(fā)現(xiàn)數(shù)據(jù)內(nèi)這有價值的規(guī)律的。

云計算

般來講云計算,云端即是網(wǎng)絡(luò)資源,從云端來按需獲取所需要的服務(wù)內(nèi)容就是云計算。云計算是指IT基礎(chǔ)設(shè)施的交付和使用模式,指通過網(wǎng)絡(luò)以按需、易擴(kuò)展的方式獲得所需的資源(硬件、平臺、軟件)。提供資源的網(wǎng)絡(luò)被稱為“云”?!霸啤敝械馁Y源在使用者看來是可以無限擴(kuò)展的,并且可以隨時獲取,按需使用,隨時擴(kuò)展,按使用付費。這種特性經(jīng)常被稱為像水電樣使用IT基礎(chǔ)設(shè)施。廣義的云計算是指服務(wù)的交付和使用模式,指通過網(wǎng)絡(luò)以按需、易擴(kuò)展的方式獲得所需的服務(wù)。這種服務(wù)可以是IT和軟件、互聯(lián)網(wǎng)相關(guān)的,也可以是任意其他的服務(wù)。

經(jīng)典應(yīng)用案例:蘋果icloud

蘋果icloud不僅是個云端硬盤,它可讓你輕松訪問你所有蘋果設(shè)備上的切內(nèi)容,并自動同步所有設(shè)備中的文件、圖片、音樂、日程表、郵件、聯(lián)系人目錄,更貼心的是,在你修改文件后還能自動將修改同步到所有蘋果設(shè)備并對舊文件備份。你可以選擇免費的5G存儲空間,也可以每年花費24.99美元購買iTunesMatch服務(wù),這樣來,你可以通過任何蘋果設(shè)備收聽存放在蘋果云服務(wù)器中的音樂。

物聯(lián)網(wǎng)

簡單理解:物物相連的互聯(lián)網(wǎng),即物聯(lián)網(wǎng)。物聯(lián)網(wǎng)在國際上又稱為傳感網(wǎng),這是繼計算機、互聯(lián)網(wǎng)與移動通信網(wǎng)之后的又次信息產(chǎn)業(yè)浪潮。上的萬事萬物,小到手表、鑰匙,大到汽車、樓房,只要嵌入個微型感應(yīng)芯片,把它變得智能化,這個物體就可以“自動開口說話”。再借助無線網(wǎng)絡(luò)技術(shù),人們就可以和物體“對話”,物體和物體之間也能“交流”,這就是物聯(lián)網(wǎng)。隨著信息技術(shù)的發(fā)展,物聯(lián)網(wǎng)行業(yè)應(yīng)用版圖不斷增長。如:智能交通、環(huán)境保護(hù)、政府工作、公共安全、平安家居、智能消防、工業(yè)監(jiān)測、老人護(hù)理、個人健康、花卉栽培、水系監(jiān)測、食品溯源等。大的理想就是智慧地球,目前實際生活中存在并在建設(shè)的智慧城市都是物聯(lián)網(wǎng)的概念。

經(jīng)典應(yīng)用案例:“翼機通+”

“翼機通+”雖然是款移動辦公app,但它能夠借助手機來刷考勤、刷門禁、刷消費、刷NFC標(biāo)簽巡檢。而且“翼機通+”的受理版能夠借助NFC手環(huán)等穿戴設(shè)備實現(xiàn)這些功能。

“翼機通+”機多用的理念正符合物聯(lián)網(wǎng)的概念,用戶只需使用手機或者受理版的穿戴設(shè)備就能代替原來的多卡時代。想象下,當(dāng)你上班的時候可以用手機刷門禁、刷考勤;當(dāng)你去食堂吃飯的時候不用花現(xiàn)金,也不用劃飯卡,只要拿出手機“碰”下;當(dāng)你坐地鐵坐公交的時候,你可以將手機當(dāng)成公交卡用;當(dāng)你需要辦公的時候不用打開電腦,在app中就可以完成工作內(nèi)容;當(dāng)你在巡檢時只用帶部手機就可以標(biāo)記自己的路線。

大數(shù)據(jù)、云計算和物聯(lián)網(wǎng)的關(guān)系

物聯(lián)網(wǎng)對應(yīng)了互聯(lián)網(wǎng)的感覺和運動神經(jīng)系統(tǒng)。云計算是互聯(lián)網(wǎng)的核心硬件層和核心軟件層的集合,也是互聯(lián)網(wǎng)神經(jīng)系統(tǒng)萌芽。大數(shù)據(jù)代表了互聯(lián)網(wǎng)的信息層(數(shù)據(jù)海洋),是互聯(lián)網(wǎng)智慧和意識產(chǎn)生的基礎(chǔ)。包括物聯(lián)網(wǎng),傳統(tǒng)互聯(lián)網(wǎng),移動互聯(lián)網(wǎng)在源源不斷的向互聯(lián)網(wǎng)大數(shù)據(jù)層匯聚數(shù)據(jù)和接受數(shù)據(jù)。云計算與物聯(lián)網(wǎng)則推動了大數(shù)據(jù)的發(fā)展。 原文鏈接:https://blog.csdn.net/duozhishidai/article/details/86538424

15.計算機網(wǎng)絡(luò)紅藍(lán)軍打仗問題可以實現(xiàn)嗎?

假設(shè)一支藍(lán)軍指揮官發(fā)出消息:“我建議在明天佛曉發(fā)起進(jìn)攻,請確認(rèn)?!比绻⒌竭_(dá)了另一支藍(lán)軍,其指揮官同意這一建議,并且他的回信也安全的送到,那么能否進(jìn)攻呢?不能。這是一個兩步握手協(xié)議,因為該指揮官無法知道他的回信是否安全送到了,所以,他不能發(fā)起進(jìn)攻,改進(jìn)協(xié)議,將兩步握手協(xié)議改為三步握手協(xié)議,這樣,最初提出建議的指揮官必須確認(rèn)對該建議的應(yīng)答信息。假如信息沒有丟失,并收到確認(rèn)消息,則他必須將收到的確認(rèn)信息告訴對方,從而完成三步握手協(xié)議。然而,這樣他就無法知道消息是否被對方收到,因此,他不能發(fā)起進(jìn)攻。那么現(xiàn)在采用四步握手協(xié)議會如何呢?結(jié)果仍是于事無補。

結(jié)論是:不存在使藍(lán)軍必勝的通信約定(協(xié)議)。

該結(jié)論可以用反證法證明,證明如下:假如存在某種協(xié)議,那么協(xié)議中最后一條信息要么是必要的,要么不是。如果不是,可以刪除它,知道剩下的每條信息都是至關(guān)重要的。若最后一條消息沒有安全到達(dá)目的地,則會怎樣呢?剛才說過每條信息都是必要的,因此,若它丟了,則進(jìn)攻不會如期進(jìn)行。由于最后發(fā)出信息的指揮官永遠(yuǎn)無法確定該信息是否安全到達(dá),所以他不會冒險發(fā)動攻擊。同樣,另一只藍(lán)軍也明白這個道理,所以也不會發(fā)動進(jìn)攻。

Andrew使用上述問題來闡述網(wǎng)絡(luò)傳輸成中“釋放連接”問題的要點。而在實際中,當(dāng)兩臺通過網(wǎng)絡(luò)互聯(lián)的計算機釋放連接(對應(yīng)兩軍問題的發(fā)起進(jìn)攻),通常乙方收到對方確認(rèn)的應(yīng)答消息后不在回復(fù)就連接釋放(用的是一個三步握手協(xié)議)。這樣處理,協(xié)議并非完全沒有錯,但通常情況下以及足夠了。)

就像andrew給出的結(jié)論那樣,現(xiàn)在你應(yīng)該很清楚,釋放一個可能有數(shù)據(jù)丟失的網(wǎng)絡(luò)連接并不像人們看起來那樣簡單。

16.簡述鏈表和數(shù)組的優(yōu)缺點

數(shù)組的優(yōu)點

  • 隨機訪問性強

  • 查找速度快

數(shù)組的缺點

  • 插入和刪除效率低

  • 可能浪費內(nèi)存

  • 內(nèi)存空間要求高,必須有足夠的連續(xù)內(nèi)存空間。

  • 數(shù)組大小固定,不能動態(tài)拓展

鏈表的優(yōu)點

  • 插入刪除速度快

  • 內(nèi)存利用率高,不會浪費內(nèi)存

  • 大小沒有固定,拓展很靈活。

鏈表的缺點

  • 不能隨機查找,必須從第一個開始遍歷,查找效率低

17.重載和重寫的區(qū)別

答:方法的重載和重寫都是實現(xiàn)多態(tài)的方式,區(qū)別在于前者實現(xiàn)的是編譯時的多態(tài)性,而后者實現(xiàn)的是運行時的多態(tài)性。重載發(fā)生在一個類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同、參數(shù)個數(shù)不同或者二者都不同)則視為重載;重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數(shù)列表,有兼容的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(里氏代換原則)。重載對返回類型沒有特殊的要求,不能根據(jù)返回類型進(jìn)行區(qū)分。

18.面向?qū)ο蟮膶ο笫鞘裁?,對象之間是怎么作用的

在面向?qū)ο蟪绦蛟O(shè)計中,對象所指的是計算機系統(tǒng)中的某一個成分。在面向?qū)ο蟪绦蛟O(shè)計中,對象包含兩個含義,其中一個是數(shù)據(jù),另外一個是動作。對象則是數(shù)據(jù)和動作的結(jié)合體。對象不僅能夠進(jìn)行操作,同時還能夠及時記錄下操作結(jié)果。

19.數(shù)據(jù)庫設(shè)計的過程

需求分析

調(diào)查和分析用戶的業(yè)務(wù)活動和數(shù)據(jù)的使用情況,弄清所用數(shù)據(jù)的種類、范圍、數(shù)量以及它們在業(yè)務(wù)活動中交流的情況,確定用戶對數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件等,形成用戶需求規(guī)約。

需求分析是在用戶調(diào)查的基礎(chǔ)上,通過分析,逐步明確用戶對系統(tǒng)的需求,包括數(shù)據(jù)需求和圍繞這些數(shù)據(jù)的業(yè)務(wù)處理需求。在需求分析中,通過自頂向下,逐步分解的方法分析系統(tǒng),分析的結(jié)果采用數(shù)據(jù)流程圖(DFD)進(jìn)行圖形化的描述。

概念設(shè)計

對用戶要求描述的現(xiàn)實世界(可能是一個工廠、一個商場或者一個學(xué)校等),通過對其中諸處的分類、聚集和概括,建立抽象的概念數(shù)據(jù)模型。這個概念模型應(yīng)反映現(xiàn)實世界各部門的信息結(jié)構(gòu)、信息流動情況、信息間的互相制約關(guān)系以及各部門對信息儲存、查詢和加工的要求等。所建立的模型應(yīng)避開數(shù)據(jù)庫在計算機上的具體實現(xiàn)細(xì)節(jié),用一種抽象的形式表示出來。以擴(kuò)充的實體—(E-R模型)聯(lián)系模型方法為例,第一步先明確現(xiàn)實世界各部門所含的各種實體及其屬性、實體間的聯(lián)系以及對信息的制約條件等,從而給出各部門內(nèi)所用信息的局部描述(在數(shù)據(jù)庫中稱為用戶的局部視圖)。第二步再將前面得到的多個用戶的局部視圖集成為一個全局視圖,即用戶要描述的現(xiàn)實世界的概念數(shù)據(jù)模型

邏輯設(shè)計

主要工作是將現(xiàn)實世界的概念數(shù)據(jù)模型設(shè)計成數(shù)據(jù)庫的一種邏輯模式,即適應(yīng)于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時,可能還需為各種數(shù)據(jù)處理應(yīng)用領(lǐng)域產(chǎn)生相應(yīng)的邏輯子模式。這一步設(shè)計的結(jié)果就是所謂“邏輯數(shù)據(jù)庫”。

物理設(shè)計

根據(jù)特定數(shù)據(jù)庫管理系統(tǒng)所提供的多種存儲結(jié)構(gòu)和存取方法等依賴于具體計算機結(jié)構(gòu)的各項物理設(shè)計措施,對具體的應(yīng)用任務(wù)選定最合適的物理存儲結(jié)構(gòu)(包括文件類型、索引結(jié)構(gòu)和數(shù)據(jù)的存放次序與位邏輯等)、存取方法和存取路徑等。這一步設(shè)計的結(jié)果就是所謂“物理數(shù)據(jù)庫”。

驗證設(shè)計

在上述設(shè)計的基礎(chǔ)上,收集數(shù)據(jù)并具體建立一個數(shù)據(jù)庫,運行一些典型的應(yīng)用任務(wù)來驗證數(shù)據(jù)庫設(shè)計的正確性和合理性。一般,一個大型數(shù)據(jù)庫的設(shè)計過程往往需要經(jīng)過多次循環(huán)反復(fù)。當(dāng)設(shè)計的某步發(fā)現(xiàn)問題時,可能就需要返回到前面去進(jìn)行修改。因此,在做上述數(shù)據(jù)庫設(shè)計時就應(yīng)考慮到今后修改設(shè)計的可能性和方便性。

運行與維護(hù)設(shè)計

數(shù)據(jù)庫系統(tǒng)正式投入運行的過程中,必須不斷地對其進(jìn)行調(diào)整與修改。

至今,數(shù)據(jù)庫設(shè)計的很多工作仍需要人工來做,除了關(guān)系型數(shù)據(jù)庫已有一套較完整的數(shù)據(jù)范式理論可用來部分地指導(dǎo)數(shù)據(jù)庫設(shè)計之外,尚缺乏一套完善的數(shù)據(jù)庫設(shè)計理論、方法和工具,以實現(xiàn)數(shù)據(jù)庫設(shè)計的自動化或交互式的半自動化設(shè)計。所以數(shù)據(jù)庫設(shè)計今后的研究發(fā)展方向是研究數(shù)據(jù)庫設(shè)計理論,尋求能夠更有效地表達(dá)語義關(guān)系的數(shù)據(jù)模型,為各階段的設(shè)計提供自動或半自動的設(shè)計工具和集成化開發(fā)環(huán)境,使數(shù)據(jù)庫的設(shè)計更加工程化、更加規(guī)范化和更加方便易行,使得在數(shù)據(jù)庫的設(shè)計中充分體現(xiàn)軟件工程的先進(jìn)思想和方法。

20.簡述全局變量,局部變量,靜態(tài)全局變量,靜態(tài)局部變量的區(qū)別

按存儲區(qū)域分:全局變量、靜態(tài)全局變量和靜態(tài)局部變量都存放在內(nèi)存的全局?jǐn)?shù)據(jù)區(qū),局部變量存放在內(nèi)存的棧區(qū)

按作用域分:

1、全局變量在整個工程文件內(nèi)都有效;

2、靜態(tài)全局變量只在定義它的文件內(nèi)有效;

3、靜態(tài)局部變量只在定義它的函數(shù)內(nèi)有效,且程序僅分配一次內(nèi)存,函數(shù)返回后,該變量不會消失;局部變量在定義它的函數(shù)內(nèi)有效,但是函數(shù)返回后失效。 4、全局變量和靜態(tài)變量如果沒有手工初始化,則由編譯器初始化為0。局部變量的值不可知。

5、靜態(tài)局部變量與全局變量共享全局?jǐn)?shù)據(jù)區(qū),但靜態(tài)局部變量只在定義它的函數(shù)中可見。靜態(tài)局部變量與局部變量在存儲位置上不同,使得其存在的時限也不同,導(dǎo)致對這兩者操作 的運行結(jié)果也不同。

21.簡述進(jìn)程間通信的方式

1. 管道,通常指無名管道,是 UNIX 系統(tǒng)IPC最古老的形式。

特點:

  1. 它是半雙工的(即數(shù)據(jù)只能在一個方向上流動),具有固定的讀端和寫端。

  2. 它只能用于具有親緣關(guān)系的進(jìn)程之間的通信(也是父子進(jìn)程或者兄弟進(jìn)程之間)。

  3. 它可以看成是一種特殊的文件,對于它的讀寫也可以使用普通的read、write 等函數(shù)。但是它不是普通的文件,并不屬于其他任何文件系統(tǒng),并且只存在于內(nèi)存中。

2. FIFO,也稱為命名管道,它是一種文件類型。

特點:

  1. FIFO可以在無關(guān)的進(jìn)程之間交換數(shù)據(jù),與無名管道不同。

  2. FIFO有路徑名與之相關(guān)聯(lián),它以一種特殊設(shè)備文件形式存在于文件系統(tǒng)中。

3. 消息隊列,是消息的鏈接表,存放在內(nèi)核中。一個消息隊列由一個標(biāo)識符(即隊列ID)來標(biāo)識。

特點:

  1. 消息隊列是面向記錄的,其中的消息具有特定的格式以及特定的優(yōu)先級。

  2. 消息隊列獨立于發(fā)送與接收進(jìn)程。進(jìn)程終止時,消息隊列及其內(nèi)容并不會被刪除。

  3. 消息隊列可以實現(xiàn)消息的隨機查詢,消息不一定要以先進(jìn)先出的次序讀取,也可以按消息的類型讀取。

4. 信號量(semaphore)與已經(jīng)介紹過的 IPC 結(jié)構(gòu)不同,它是一個計數(shù)器。信號量用于實現(xiàn)進(jìn)程間的互斥與同步,而不是用于存儲進(jìn)程間通信數(shù)據(jù)。

特點:

  1. 信號量用于進(jìn)程間同步,若要在進(jìn)程間傳遞數(shù)據(jù)需要結(jié)合共享內(nèi)存。

  2. 信號量基于操作系統(tǒng)的 PV 操作,程序?qū)π盘柫康牟僮鞫际窃硬僮鳌?/p>

  3. 每次對信號量的 PV 操作不僅限于對信號量值加 1 或減 1,而且可以加減任意正整數(shù)。

  4. 支持信號量組

5. 共享內(nèi)存(Shared Memory),指兩個或多個進(jìn)程共享一個給定的存儲區(qū)。

特點:

  1. 共享內(nèi)存是最快的一種 IPC,因為進(jìn)程是直接對內(nèi)存進(jìn)行存取。

  2. 因為多個進(jìn)程可以同時操作,所以需要進(jìn)行同步。

  3. 信號量+共享內(nèi)存通常結(jié)合在一起使用,信號量用來同步對共享內(nèi)存的訪問。

22.簡述C和JAVA編譯的不同之處

1、Java編譯過程與c/c++編譯過程不同

Java編譯程序?qū)ava源程序編譯成jvm可執(zhí)行代碼--java字節(jié)碼.

c/c++編譯過程:

當(dāng)C編譯器編譯生成一個對象的代碼時,該代碼是為在某一特定硬件平臺運行而生成的。因此在編譯過程中,編譯程序通過查表將所有對符號的引用轉(zhuǎn)換為特定的內(nèi)存偏移量,以保證程序運行。

Java編譯過程:

Java編譯器卻不將對變量和方法的引用編譯為數(shù)值引用,也不確定程序執(zhí)行過程中的內(nèi)存布局,而是將些符號引用信息保留在字節(jié)碼中,由解釋器在運行過程中創(chuàng)立內(nèi)存布局,然后再通過查表來確定一個方法所在的地址,這樣就有效地保證了java的可移植性和安全性。

2、jvm工作原理

運行jvm字符碼的工作是由解釋器來完成的。解釋執(zhí)行過程分三步進(jìn)行:代碼的裝入、代碼的校驗、和代碼的執(zhí)行。

裝入代碼的工作由“類裝載器classloader”完成。類裝載器負(fù)責(zé)裝入運行一個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被調(diào)用的類。當(dāng)類裝載器裝入一個類時,該類被放在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他類。在本臺計算機的所有類都在同一地址空間中,而所有從外部引進(jìn)的類,都有一個自己獨立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進(jìn)的類不會相互影響。

當(dāng)裝入了運行程序需要的所有類后,解釋器便可確定整個可執(zhí)行程序的內(nèi)存布局。解釋器為符號引用與特定的地址空間建立對應(yīng)關(guān)系及查詢表。通過在這一階段確定代碼的內(nèi)布局,java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼的非法訪問。

隨后,被裝入的代碼由字節(jié)碼校驗器進(jìn)行檢查。校驗器可以發(fā)現(xiàn)操作數(shù)棧益處、非法數(shù)據(jù)類型轉(zhuǎn)化等多種錯誤。通過校驗后,代碼便開始執(zhí)行了。

java字節(jié)碼的執(zhí)行有兩種方式:

1)即時編譯方式:解釋器先將字節(jié)編譯成機器碼,然后再執(zhí)行該機器碼。

2)解釋執(zhí)行方式:解釋器通過每次解釋并執(zhí)行一小段代碼來完成java字節(jié)碼程序的所有操作。

23.網(wǎng)絡(luò)的三網(wǎng)指哪些?

電信網(wǎng)絡(luò),有線電視網(wǎng)絡(luò),計算機網(wǎng)絡(luò)

24.Heap和Stack的概念及區(qū)別

一、堆??臻g分配區(qū)別:   1、棧(操作系統(tǒng)):由操作系統(tǒng)自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧;   2、堆(操作系統(tǒng)): 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時可能由OS回收,分配方式倒是類似于鏈表。

二、堆棧緩存方式區(qū)別:   1、棧使用的是一級緩存, 他們通常都是被調(diào)用時處于存儲空間中,調(diào)用完畢立即釋放;   2、堆是存放在二級緩存中,生命周期由虛擬機的垃圾回收算法來決定(并不是一旦成為孤兒對象就能被回收)。所以調(diào)用這些對象的速度要相對來得低一些。

三、堆棧數(shù)據(jù)結(jié)構(gòu)區(qū)別:   堆(數(shù)據(jù)結(jié)構(gòu)):堆可以被看成是一棵樹,如:堆排序;   棧(數(shù)據(jù)結(jié)構(gòu)):一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)。

四、Java中棧和堆的區(qū)別:   棧(stack)與堆(heap)都是Java用來在Ram中存放數(shù)據(jù)的地方。與C++不同,Java自動管理棧和堆,程序員不能直接地設(shè)置?;蚨选?   在函數(shù)中定義的一些基本類型的變量和對象的引用變量都在函數(shù)的棧內(nèi)存中分配。當(dāng)在一段代碼塊定義一個變量時,Java就在棧中為這個變量分配內(nèi)存空間,當(dāng)超過變量的作用域后,Java會自動釋放掉為該變量所分配的內(nèi)存空間,該內(nèi)存空間可以立即被另作他用。   堆內(nèi)存用來存放由new創(chuàng)建的對象和數(shù)組,在堆中分配的內(nèi)存,由Java虛擬機的自動垃圾回收器來管理。在堆中產(chǎn)生了一個數(shù)組或?qū)ο蠛?,還可以在棧中定義一個特殊的變量,讓棧中這個變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,棧中的這個變量就成了數(shù)組或?qū)ο蟮囊米兞?。引用變量就相?dāng)于是為數(shù)組或?qū)ο笃鸬囊粋€名稱,以后就可以在程序中使用棧中的引用變量來訪問堆中的數(shù)組或?qū)ο蟆? 五、Java中變量在內(nèi)存中的分配:   1、類變量(static修飾的變量):在程序加載時系統(tǒng)就為它在堆中開辟了內(nèi)存,堆中的內(nèi)存地址存放于棧以便于高速訪問。靜態(tài)變量的生命周期–一直持續(xù)到整個”系統(tǒng)”關(guān)閉。   2、實例變量:當(dāng)你使用java關(guān)鍵字new的時候,系統(tǒng)在堆中開辟并不一定是連續(xù)的空間分配給變量(比如說類實例),然后根據(jù)零散的堆內(nèi)存地址,通過哈希算法換算為一長串?dāng)?shù)字以表征這個變量在堆中的”物理位置”。 實例變量的生命周期–當(dāng)實例變量的引用丟失后,將被GC(垃圾回收器)列入可回收“名單”中,但并不是馬上就釋放堆中內(nèi)存。   3、局部變量:局部變量,由聲明在某方法,或某代碼段里(比如for循環(huán)),執(zhí)行到它的時候在棧中開辟內(nèi)存,當(dāng)局部變量一但脫離作用域,內(nèi)存立即釋放。

25.交互式程序設(shè)計中,非剝奪是不是一個好的策略

非剝奪方式:分派程序一旦把處理機分配給某進(jìn)程后,便讓他一直運行下去,直到進(jìn)程完成或發(fā)生某事件而阻塞時,才把處理機分配給另一個進(jìn)程。

剝奪方式:當(dāng)一個進(jìn)程正在運行時,系統(tǒng)可以基于某種原則,剝奪已分配給它的處理機,將之分配給其他進(jìn)程。

剝奪原則有:優(yōu)先權(quán)原則,短進(jìn)程優(yōu)先原則,時間片原則等

在分時系統(tǒng)中,不剝奪不是一個好的策略,因為在分時系統(tǒng)中,除了交互性以外,及時性是很重要的性能因素。當(dāng)一個作業(yè)被阻塞后,cpu就完全空閑了,別的用戶的及時性就無法保證了,而完全可以把這些時間分配給別的作業(yè)運行,以提高系統(tǒng)吞吐量。

26.網(wǎng)絡(luò)協(xié)議的三個核心要素

語法,定義了數(shù)據(jù)與控制信息 的格式;

語義,定義了需要發(fā)出何種控制信息,完成何種響應(yīng)動作,以及作出何種響應(yīng);

同步,定義了事件實現(xiàn)順序的詳細(xì)說明。

27.關(guān)系數(shù)據(jù)庫有哪些操作,特點是什么?

查詢:選擇、投影、連接、除、并、交、差

數(shù)據(jù)更新:插入、刪除、修改

關(guān)系操作的特點:集合操作方式,即操作的對象和結(jié)果都是集合。

28.為了實現(xiàn)重定位需要哪些硬件?

最簡單的方式是在系統(tǒng)中增設(shè)一個重定位寄存器,用來存放正在執(zhí)行作業(yè)的內(nèi)存地址,每次訪問數(shù)據(jù)時,由硬件自動將相對地址和重定位寄存器中的起始地址相加,形成實際的物理地址。當(dāng)然在分頁式與分段式系統(tǒng)中,還有地址變換機構(gòu),以及塊表等方式

29.數(shù)據(jù)庫保護(hù)(訪問)的內(nèi)容有哪些?

數(shù)據(jù)庫保護(hù)又叫做數(shù)據(jù)庫控制,是通過四方面實現(xiàn)的,即安全性控制,完整性控制,并發(fā)性控制和數(shù)據(jù)恢復(fù)。

數(shù)據(jù)庫的安全性是保護(hù)數(shù)據(jù)庫,以防止因非法使用數(shù)據(jù)庫,造成的數(shù)據(jù)泄漏,更改或破壞。

數(shù)據(jù)庫的完整性是保護(hù)數(shù)據(jù)庫中的數(shù)據(jù)正確性,有效性,相容性。

并發(fā)控制是為了防止多個用戶同時存取同一數(shù)據(jù),造成的數(shù)據(jù)不一致。

數(shù)據(jù)庫恢復(fù)是指將數(shù)據(jù)庫從錯誤的狀態(tài)恢復(fù)到某一已知的正確的狀態(tài)。

30.系統(tǒng)調(diào)用的定義?

系統(tǒng)調(diào)用是OS與應(yīng)用程序之間的接口,它是用戶程序取得OS服務(wù)的唯一途徑。

它與一般的過程調(diào)用的區(qū)別:運行在不同的系統(tǒng)狀態(tài),調(diào)用程序運行在用戶態(tài),而被調(diào)用的程序運行在系統(tǒng)態(tài),通過軟中斷機制,先由用戶態(tài)轉(zhuǎn)為系統(tǒng)態(tài),經(jīng)核心分析后,才轉(zhuǎn)向相應(yīng)的系統(tǒng)調(diào)用處理子程序;一般的過程調(diào)用返回后繼續(xù)執(zhí)行,但對系統(tǒng)調(diào)用,當(dāng)調(diào)用進(jìn)程仍具有最高優(yōu)先權(quán)時,才返回到調(diào)用進(jìn)程繼續(xù)處理,否則只能等被重新調(diào)度。

31.解釋一下管程

管程是由一組局部變量、對局部變量進(jìn)行操作的一組過程和對局部變量進(jìn)行初始化的語句序列組成。引入它的目的是因為Wait/Singal操作太過分散,對它的維護(hù)很麻煩且容易造成死鎖。管程的特點是:管程的過程只能訪問管程的局部變量,管程的局部變量只能由其過程來訪問;任何時刻只能有一個進(jìn)程進(jìn)入管程執(zhí)行;進(jìn)程只能通管程提供的過程入口進(jìn)入管程。

32.在可變分區(qū)管理中,需要哪些硬件機制?

采用可變分區(qū)方式管理時,一般均采用動態(tài)重定位方式裝入作業(yè)。地址變換要靠硬件支持,主要是兩個寄存器:基址寄存器和限長寄存器,限長寄存器存放作業(yè)所占分區(qū)的長度,基址寄存器則存放作業(yè)所占分區(qū)的起始地址,這兩個值確定了一個分區(qū)的位置和大小。? 轉(zhuǎn)換時根據(jù)邏輯地址與限長值比較,如果不有超過這個值,表示訪問地址合法,再加上基址寄存器中的值就得到了絕對地址了,否則形成“地址越界”中斷。

33.中斷和陷入有什么異同

外中斷時指來自處理機和內(nèi)存外部的中斷,如I/O中斷、定時器中斷、外部信號中斷等。狹義上也叫中斷;? 內(nèi)中斷主要指在處理機和內(nèi)存內(nèi)部產(chǎn)生的中斷,也稱陷入,如校驗錯、頁面失效、溢出、除數(shù)為零等。

中斷和陷阱的主要區(qū)別:? (1) 陷入通常由處理機正在執(zhí)行的現(xiàn)行指令引起,而中斷則是由與現(xiàn)行指令無關(guān)的中斷源引起的。

(2)?陷阱處理程序提供的服務(wù)為當(dāng)前進(jìn)程所用,而中斷處理程序提供的服務(wù)則不是為了當(dāng)前進(jìn)程的。

(3)?CPU在執(zhí)行完一條指令之后,下一條指令開始之前響應(yīng)中斷,而在一條指令執(zhí)行中也可以響應(yīng)陷阱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容