校園招聘筆試面試題及部分標(biāo)準(zhǔn)答案_第1頁
校園招聘筆試面試題及部分標(biāo)準(zhǔn)答案_第2頁
校園招聘筆試面試題及部分標(biāo)準(zhǔn)答案_第3頁
校園招聘筆試面試題及部分標(biāo)準(zhǔn)答案_第4頁
校園招聘筆試面試題及部分標(biāo)準(zhǔn)答案_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

84/84筆試面試題匯總筆試題給你一個(gè)二叉樹的前序序列和中序序列,求其后續(xù)序列?(淘寶)先看三個(gè)公式:PreOrder(T)=T的根節(jié)點(diǎn)+PreOrder(T的左子樹)+PreOrder(T的右子樹);InOrder(T)=InOrder(T的左子樹)+T的根節(jié)點(diǎn)+InOrder(T的右子樹);PostOrder(T)=PostOrder(T的左子樹)+PostOrder(T的右子樹)+T的根節(jié)點(diǎn)。依照以上的三給公式就能夠?qū)iT容易解決一下兩個(gè)問題:前序+中序后序;中序+后序前序。因此也可把樹畫出來,再求他的各種序列。Cache替換算法命中率最高是?(淘寶)那個(gè)組成原理就有講到了,能夠找組成原理的書看下,把各種替換算法在理解下,在書上的P98-P99講得專門詳細(xì)。給一個(gè)順序表,然后再給你一個(gè)碼值,求在二分查找改碼值的比較次數(shù)?(淘寶)自己去做二分的查找的過程,我們明白二分查找是log(n)的,一次比較次數(shù)大于log(n)確信是錯(cuò)的。具體能夠看下數(shù)據(jù)結(jié)構(gòu)的書,P17-P18講的專門詳細(xì)。編譯程序中安排中間代碼生成的目的是?(淘寶)把與機(jī)器相關(guān)的工作集中到目標(biāo)代碼生成時(shí)期,難度和工作量下降。便于移直和維護(hù)。利于優(yōu)化。假設(shè)在n進(jìn)制下,17*456=8206成立,n是多少?(淘寶)從上面的等式中能夠看到8,則進(jìn)制可定大于8,因此能夠從9進(jìn)制開始枚舉,直至滿足等式,就能夠了。(建議:先都轉(zhuǎn)換成十進(jìn)制,在實(shí)現(xiàn)乘法運(yùn)算)要從一億會(huì)員中抽出100萬會(huì)員,考慮到公平性、相對分散、相對隨機(jī),不能重復(fù),抽取速度要快。有一個(gè)random函數(shù),能產(chǎn)生0-9的隨機(jī)數(shù)。請寫出你能想到的抽取方法?并寫明步驟。(淘寶)用random函數(shù)產(chǎn)生兩個(gè)數(shù)x1、x2,那么會(huì)員號(hào)mod100等于x1x2的話,該會(huì)與就被選中。如此每個(gè)會(huì)員的中獎(jiǎng)概率是1/100。Malloc和new的區(qū)不?++、--、sizeof(字符串、結(jié)構(gòu)體)(融通)字符串函數(shù)的實(shí)現(xiàn)(strlen、strcpy等)(網(wǎng)龍、億聯(lián)網(wǎng)絡(luò))字符串以單詞逆序CSTRING類的一些差不多函數(shù)的實(shí)現(xiàn)DEBUG和RELESE兩種調(diào)試的區(qū)不CONST的用法我只要一聽到被面試者講:"const意味著常數(shù)",我就明白我正在和一個(gè)業(yè)余者打交道。去年DanSaks差不多在他的文章里完全概括了const的所有用法,因此ESP(譯者:EmbeddedSystemsProgramming)的每一位讀者應(yīng)該特不熟悉const能做什么和不能做什么.假如你從沒有讀到那篇文章,只要能講出const意味著"只讀"就能夠了。盡管那個(gè)答案不是完全的答案,但我同意它作為一個(gè)正確的答案。(假如你想明白更詳細(xì)的答案,認(rèn)真讀一下Saks的文章吧。)假如應(yīng)試者能正確回答那個(gè)問題,我將問他一個(gè)附加的問題:下面的聲明差不多上什么意思?constinta;

intconsta;

constint*a;

int*consta;

intconst*aconst;

前兩個(gè)的作用是一樣,a是一個(gè)常整型數(shù)。第三個(gè)意味著a是一個(gè)指向常整型數(shù)的指針(也確實(shí)是,整型數(shù)是不可修改的,但指針能夠)。第四個(gè)意思a是一個(gè)指向整型數(shù)的常指針(也確實(shí)是講,指針指向的整型數(shù)是能夠修改的,但指針是不可修改的)。最后一個(gè)意味著a是一個(gè)指向常整型數(shù)的常指針(也確實(shí)是講,指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的)。假如應(yīng)試者能正確回答這些問題,那么他就給我留下了一個(gè)好印象。順帶提一句,也許你可能會(huì)問,即使不用關(guān)鍵字const,也依舊能專門容易寫出功能正確的程序,那么我什么緣故還要如此看重關(guān)鍵字const呢?我也如下的幾下理由:1)關(guān)鍵字const的作用是為給讀你代碼的人傳達(dá)特不有用的信息,實(shí)際上,聲明一個(gè)參數(shù)為常量是為了告訴了用戶那個(gè)參數(shù)的應(yīng)用目的。假如你曾花專門多時(shí)刻清理其它人留下的垃圾,你就會(huì)專門快學(xué)會(huì)感謝這點(diǎn)多余的信息。(因此,明白得用const的程序員專門少會(huì)留下的垃圾讓不人來清理的。)2)通過給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。3)合理地使用關(guān)鍵字const能夠使編譯器專門自然地愛護(hù)那些不希望被改變的參數(shù),防止其被無意的代碼修改。簡而言之,如此能夠減少bug的出現(xiàn)。虛基類抽象基類的用法答:在派生類繼承基類時(shí),加上一個(gè)virtual關(guān)鍵詞則為虛擬基類繼承,如:classderive:virtualpublicbase{};虛基類要緊解決在多重繼承時(shí),基類可能被多次繼承,虛基類要緊提供一個(gè)基類給派生類,如:classB{};classD1:publicB{};classD2:publicB{};classC:publicD1,publicD2{};那個(gè)地點(diǎn)C在D1,D2上繼承,但有兩個(gè)基類,造成混亂。因而使用虛基類,即:classB{};classD1:virtualpublicB{};classD2:virtualpublicB{};classC:publicD1,publicD2Java線程中的sleep,yeild,notify的作用和區(qū)不sleep:讓線程睡眠yeild:暫停當(dāng)前正在執(zhí)行的線程對象,并執(zhí)行其他線程notify:喚醒線程面向?qū)ο蟮奶卣饔心男┓矫娣庋b、繼承、多態(tài)ServletConfig對象與ServletContext對象的作用和區(qū)不servletconfig對象能夠使用一個(gè)或多個(gè)<init-param>標(biāo)簽為servlet配置一些初始化參數(shù),servlet配置了初始化參數(shù)后,web容器在創(chuàng)建servlet實(shí)例對象時(shí),會(huì)自動(dòng)將這些初始化參數(shù)封裝到ServletConfig對象中,并在調(diào)用servlet的init方法時(shí),將ServletConfig對象傳遞給servlet。進(jìn)而,程序員通過ServletConfig對象就能夠得到當(dāng)前servlet的初始化參數(shù)信息。WEB容器在啟動(dòng)時(shí),它會(huì)為每個(gè)WEB應(yīng)用程序都創(chuàng)建一個(gè)對應(yīng)的ServletContext對象,它代表當(dāng)前web應(yīng)用。ServletConfig對象中維護(hù)了ServletContext對象的引用,開發(fā)人員在編寫servlet時(shí),能夠通過ServletConfig.getServletContext方法獲得ServletContext對象。編程:鏈表的反轉(zhuǎn)、兩個(gè)排好序鏈表結(jié)合成一個(gè)有序鏈表寫一個(gè)程序?qū)崿F(xiàn)字符串反轉(zhuǎn)。(新大陸)多態(tài)性意味著一個(gè)操作在不同的類中能夠有不同的實(shí)現(xiàn)方式。(淘寶)二分搜索算法具體能夠看下數(shù)據(jù)結(jié)構(gòu)的書,P17-P18講的專門詳細(xì)。樹:節(jié)點(diǎn)個(gè)數(shù)與樹高的計(jì)算那個(gè)能夠用深搜和廣搜實(shí)現(xiàn),節(jié)點(diǎn)個(gè)數(shù)沒遇到一個(gè)還沒標(biāo)記的節(jié)點(diǎn)就加1并標(biāo)記該節(jié)點(diǎn)。把根節(jié)點(diǎn)記為1,然后關(guān)于還沒標(biāo)記的節(jié)點(diǎn)就等于他父親的值+1,這過程中出現(xiàn)的最大值確實(shí)是樹高。關(guān)于樹的一些定義數(shù)據(jù)結(jié)構(gòu)書上有P138-P139。操作系統(tǒng):內(nèi)存的大小端,生產(chǎn)者、消費(fèi)者問題1-2.生產(chǎn)者消費(fèi)者問題:生產(chǎn)者與消費(fèi)者問題能夠被描述為:一個(gè)有限緩沖區(qū)和兩類線程,它們是生產(chǎn)者和消費(fèi)者,生產(chǎn)者把產(chǎn)品放入緩沖區(qū),相反消費(fèi)者便是從緩沖區(qū)中拿走產(chǎn)品。 生產(chǎn)者在緩沖區(qū)滿時(shí)必須等待,直到緩沖區(qū)有空間才接著生產(chǎn)。消費(fèi)者在緩沖區(qū)空時(shí)必須等待,直到緩沖區(qū)中有產(chǎn)品才能接著讀取。P,V操作來解決進(jìn)程同步與進(jìn)程通信的問題。信號(hào)量是最早出現(xiàn)的用來解決進(jìn)程同步與互斥問題的機(jī)制,包括一個(gè)稱為信號(hào)量的變量及對它進(jìn)行的兩個(gè)原語操作。信號(hào)量為一個(gè)整數(shù),我們設(shè)那個(gè)信號(hào)量為:sem。專門顯然,我們規(guī)定在sem大于等于零的時(shí)候代表可供并發(fā)進(jìn)程使用的資源實(shí)體數(shù),sem小于零的時(shí)候,表示正在等待使用臨界區(qū)的進(jìn)程的個(gè)數(shù)。依照那個(gè)原則,在給信號(hào)量附初值的時(shí)候,我們顯然就要設(shè)初值大于零。p操作和v操作是不可中斷的程序段,稱為原語。P,V原語中P是荷蘭語的Passeren,相當(dāng)于英文的pass,V是荷蘭語的Verhoog,相當(dāng)于英文中的incremnet。P原語操作的動(dòng)作是:(1)sem減1;(2)若sem減1后仍大于或等于零,則進(jìn)程接著執(zhí)行;(3)若sem減1后小于零,則該進(jìn)程被堵塞后進(jìn)入與該信號(hào)相對應(yīng)的隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)度。V原語操作的動(dòng)作是:(1)sem加1;(2)若相加結(jié)果大于零,則進(jìn)程接著執(zhí)行;(3)若相加結(jié)果小于或等于零,則從該信號(hào)的等待隊(duì)列中喚醒一等待進(jìn)程,然后再返回原進(jìn)程接著執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度。需要提醒大伙兒一點(diǎn)確實(shí)是P,V操作關(guān)于每一個(gè)進(jìn)程來講,都只能進(jìn)行一次。而且必須成對使用。且在P,V愿語執(zhí)行期間不同意有中斷的發(fā)生。軟件工程的類圖類圖(Classdiagram)是最常用的UML圖,顯示出類、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系;它用于描述系統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)。類(Class)一般包含3個(gè)組成部分。第一個(gè)是類名;第二個(gè)是屬性(attributes);第三個(gè)是該類提供的方法。類與類間關(guān)系常見的關(guān)系有:繼承(Generalization),關(guān)聯(lián)關(guān)系(Association),聚合關(guān)系(Aggregation),組合關(guān)系(Composition),依靠關(guān)系(Dependency)。其中,聚合關(guān)系(Aggregation),組合關(guān)系(Composition)屬于關(guān)聯(lián)關(guān)系(Association)。詳見軟件工程教材。C語言:c語言的關(guān)鍵字、運(yùn)算符的優(yōu)先級(jí)與結(jié)合性、宏、指針的理解、typedef等3-1.c語言的關(guān)鍵字關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。

c語言關(guān)鍵字共32個(gè):數(shù)據(jù)類型關(guān)鍵字(12個(gè)):

(1).char:聲明字符型變量或函數(shù)

(2).double:聲明雙精度變量或函數(shù)

(3).enum:聲明枚舉類型

(4).float:聲明浮點(diǎn)型變量或函數(shù)

(5).int:聲明整型變量或函數(shù)

(6).long:聲明長整型變量或函數(shù)

(7).short:聲明短整型變量或函數(shù)

(8).signed:聲明有符號(hào)類型變量或函數(shù)

(9).struct:聲明結(jié)構(gòu)體變量或函數(shù)

(10).union:聲明聯(lián)合數(shù)據(jù)類型

(11).unsigned:聲明無符號(hào)類型變量或函數(shù)

(12).void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針(差不多上就這三個(gè)作用)操縱語句關(guān)鍵字(12個(gè)):

A.循環(huán)語句

(1).for:一種循環(huán)語句(可意會(huì)不可言傳)

(2).do:循環(huán)語句的循環(huán)體

(3).while:循環(huán)語句的循環(huán)條件

(4).break:跳出當(dāng)前循環(huán)

(5).continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)

B.條件語句

(1).if:條件語句

(2).else:條件語句否定分支(與if連用)

(3).goto:無條件跳轉(zhuǎn)語句

C.開關(guān)語句

(1).switch:用于開關(guān)語句

(2).case:開關(guān)語句分支

(3).default:開關(guān)語句中的“其他”分支

D.

return:子程序返回語句(能夠帶參數(shù),也看不帶參數(shù))存儲(chǔ)類型關(guān)鍵字(4個(gè)):

(1).auto:聲明自動(dòng)變量一般不使用

(2).extern:聲明變量是在其他文件正聲明(也能夠看做是引用變量)

(3).register:聲明積存器變量

(4).static:聲明靜態(tài)變量其它關(guān)鍵字(4個(gè)):

(1).const:聲明只讀變量

(2).sizeof:計(jì)算數(shù)據(jù)類型長度

(3).typedef:用以給數(shù)據(jù)類型取不名(因此還有其他作用)

(4).volatile:講明變量在程序執(zhí)行中可被隱含地改變3-2.運(yùn)算符的優(yōu)先級(jí)與結(jié)合性、宏、指針的理解、typedef等注:譚浩強(qiáng)那本書附錄專門詳細(xì)。c語言運(yùn)算符1級(jí)優(yōu)先級(jí)左結(jié)合()圓括號(hào)[]下標(biāo)運(yùn)算符->指向結(jié)構(gòu)體成員運(yùn)算符.結(jié)構(gòu)體成員運(yùn)算符2級(jí)優(yōu)先級(jí)右結(jié)合!邏輯非運(yùn)算符~按位取反運(yùn)算符++前綴增量運(yùn)算符--前綴增量運(yùn)算符+正號(hào)運(yùn)算符-負(fù)號(hào)運(yùn)算符(類型)類型轉(zhuǎn)換運(yùn)算符*指針運(yùn)算符&地址與運(yùn)算符sizeof長度運(yùn)算符3級(jí)優(yōu)先級(jí)左結(jié)合*乘法運(yùn)算符/除法運(yùn)算符%取余運(yùn)算符4級(jí)優(yōu)先級(jí)左結(jié)合+加法運(yùn)算符-減法運(yùn)算符5級(jí)優(yōu)先級(jí)左結(jié)合<<左移運(yùn)算符>>右移運(yùn)算符6級(jí)優(yōu)先級(jí)左結(jié)合<、<=、>、>=關(guān)系運(yùn)算符7級(jí)優(yōu)先級(jí)左結(jié)合==等于運(yùn)算符!=不等于運(yùn)算符8級(jí)優(yōu)先級(jí)左結(jié)合&按位與運(yùn)算符9級(jí)優(yōu)先級(jí)左結(jié)合^按位異或運(yùn)算符10級(jí)優(yōu)先級(jí)左結(jié)合|按位或運(yùn)算符11級(jí)優(yōu)先級(jí)左結(jié)合&&邏輯與運(yùn)算符12級(jí)優(yōu)先級(jí)左結(jié)合||邏輯或運(yùn)算符13級(jí)優(yōu)先級(jí)右結(jié)合?:條件運(yùn)算符14級(jí)優(yōu)先級(jí)右結(jié)合=+=-=*=/=%=&=^=|=<<=>>=全為賦值運(yùn)算符15級(jí)優(yōu)先級(jí)左結(jié)合,逗號(hào)運(yùn)算符網(wǎng)絡(luò):就osi模型OSI七層模型介紹

OSI是一個(gè)開放性的通行系統(tǒng)互連參考模型,他是一個(gè)定義的特不行的協(xié)議規(guī)范。OSI模型有7層結(jié)構(gòu),每層都能夠有幾個(gè)子層。OSI的7層從上到下分不是

7應(yīng)用層

6表示層

5會(huì)話層

4傳輸層

3網(wǎng)絡(luò)層

2數(shù)據(jù)鏈路層

1物理層

其中高層,既7、6、5、4層定義了應(yīng)用程序的功能,下面3層,既3、2、1層要緊面向通過網(wǎng)絡(luò)的端到端的數(shù)據(jù)流。下面我給大伙兒介紹一下這7層的功能:

應(yīng)用層:與其他計(jì)算機(jī)進(jìn)行通訊的一個(gè)應(yīng)用,它是對應(yīng)應(yīng)用程序的通信服務(wù)的。例如,一個(gè)沒有通信功能的字處理程序就不能執(zhí)行通信的代碼,從事字處理工作的程序員也不關(guān)懷OSI的第7層。然而,假如添加了一個(gè)傳輸文件的選項(xiàng),那么字處理器的程序員就需要實(shí)現(xiàn)OSI的第7層。示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。

表示層:這一層的要緊功能是定義數(shù)據(jù)格式及加密。例如,F(xiàn)TP同意你選擇以二進(jìn)制或ASII格式傳輸。假如選擇二進(jìn)制,那么發(fā)送方和接收方不改變文件的內(nèi)容。假如選擇ASII格式,發(fā)送方將把文本從發(fā)送方的字符集轉(zhuǎn)換成標(biāo)準(zhǔn)的ASII后發(fā)送數(shù)據(jù)。在接收方將標(biāo)準(zhǔn)的ASII轉(zhuǎn)換成接收方計(jì)算機(jī)的字符集。示例:加密,ASII等。

會(huì)話層:他定義了如何開始、操縱和結(jié)束一個(gè)會(huì)話,包括對多個(gè)雙向小時(shí)的操縱和治理,以便在只完成連續(xù)消息的一部分時(shí)能夠通知應(yīng)用,從而使表示層看到的數(shù)據(jù)是連續(xù)的,在某些情況下,假如表示層收到了所有的數(shù)據(jù),則用數(shù)據(jù)代表表示層。示例:RPC,SQL等。傳輸層:這層的功能包括是否選擇差錯(cuò)恢復(fù)協(xié)議依舊無差錯(cuò)恢復(fù)協(xié)議,及在同一主機(jī)上對不同應(yīng)用的數(shù)據(jù)流的輸入進(jìn)行復(fù)用,還包括對收到的順序不對的數(shù)據(jù)包的重新排序功能。示例:TCP,UDP,SPX。網(wǎng)絡(luò)層:這層對端到端的包傳輸進(jìn)行定義,他定義了能夠標(biāo)識(shí)所有結(jié)點(diǎn)的邏輯地址,還定義了路由實(shí)現(xiàn)的方式和學(xué)習(xí)的方式。為了適應(yīng)最大傳輸單元長度小于包長度的傳輸介質(zhì),網(wǎng)絡(luò)層還定義了如何將一個(gè)包分解成更小的包的分段方法。示例:IP,IPX等。數(shù)據(jù)鏈路層:他定義了在單個(gè)鏈路上如何傳輸數(shù)據(jù)。這些協(xié)議與被討論的歌種介質(zhì)有關(guān)。示例:ATM,F(xiàn)DDI等。物理層:OSI的物理層規(guī)范是有關(guān)傳輸介質(zhì)的特性標(biāo)準(zhǔn),這些規(guī)范通常也參考了其他組織制定的標(biāo)準(zhǔn)。連接頭、針、針的使用、電流、電流、編碼及光調(diào)制等都屬于各種物理層規(guī)范中的內(nèi)容。物理層常用多個(gè)規(guī)范完成對所有細(xì)節(jié)的定義。示例:Rj45,802.3等。在一個(gè)工程中,假如一個(gè)文件向要引用其他文件中定義的一個(gè)變量或者函數(shù),請問需要添加什么關(guān)鍵字?答:extern。volatile:講明變量在程序執(zhí)行中可被隱含地改變voidfunc(void){staticinti=0;i++;printf("%d\n",i);}voidmain(){func();func();}請問輸出是:12(關(guān)鍵考察static關(guān)鍵字)指針的應(yīng)用方面,數(shù)組應(yīng)用,鏈表應(yīng)用。一些簡單的字符串處理函數(shù),排序函數(shù)(冒泡,快排等)。智力游戲:你面前有一對黑白棋,同色給你足夠多的黑白棋(以防不夠用)。你每次從這一堆黑(B)白(W)棋中隨機(jī)抽取出2顆棋子,假如同色(BB,WW),則向這一堆中放入一顆黑棋,否則(RW)放入一顆白棋。最后只剩下一顆。請問,最終狀態(tài)和初始狀態(tài)有和關(guān)系?解:由于當(dāng)抽取出RW時(shí),放入W,即W沒有減少,而抽取出WW時(shí),放入的是B,因此W只能成對減少。因此結(jié)果與W的奇偶有關(guān),W為奇,則剩下W;否則剩下B。500Mtxt搜a(bǔ)bcd串封裝,繼承,多態(tài),析構(gòu)函數(shù),解析函數(shù)相關(guān)的題目給你10萬個(gè)關(guān)鍵詞,然后再給你一些文章(這些文章的大小為k的數(shù)量級(jí)的),然后把文章中出現(xiàn)的關(guān)鍵詞過濾不確定的解答:先依照10萬個(gè)關(guān)鍵詞構(gòu)建AC自動(dòng)機(jī),然后對每一篇文章進(jìn)行一次AC自動(dòng)機(jī)處理,如此的空間復(fù)雜度是10萬個(gè)關(guān)鍵詞的字典樹的空間消耗。他的下一個(gè)問題是如何進(jìn)行空間優(yōu)化,當(dāng)事人表示不明白。編程題:String[]str={“test”,null,””,”中國”,”福富軟件”}設(shè)一全局變量*然后讓字符數(shù)組變成t*e*s*t中*國,福*富*軟*件并輸出答案:源碼(僅供參考):publicclassTest{publicstaticvoidmain(String[]args){String[]str={"","中國",null,"福富軟件","test"};for(inti=0;i<str.length;i++){StringBuffersb=newStringBuffer();sb.delete(0,sb.length());sb.append(str[i]);if("".equals(str[i])||str[i]==null) System.out.println("*");else{intn=1;intlen=str[i].length();while((len--)>1){sb.insert(n,"*");n=n+2;}//endwhileSystem.out.println(sb);}endelse}//endfor}//endmain}//endclass編程題:實(shí)現(xiàn)數(shù)據(jù)庫連接工具類,并實(shí)現(xiàn)增刪改查的功能。面試題(計(jì)算機(jī)1、3、4、7班提供)Linux的存儲(chǔ)治理?(融通)Linux采納請求調(diào)頁策略進(jìn)行存儲(chǔ)治理。請求調(diào)頁策略在內(nèi)外村之間來回傳遞的是存儲(chǔ)頁而不是整個(gè)進(jìn)程,從而使得進(jìn)程的地址映射具有了更大的靈活性,且同意進(jìn)程的大小比可用物理存儲(chǔ)空間大得多。Linux的常用命令?(如:ls及其參數(shù))(融通)數(shù)據(jù)庫索引:如何建立及其作用?(實(shí)達(dá)電腦)索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息,索引好比是一本書前面的目錄,用之能加快數(shù)據(jù)庫的查詢速度建立索引的一般格式:create[unique][cluster]index<索引名>on<表名>(<列名>【<次序>】[,<列名>[<次序>]]…);多進(jìn)程訪問共有資源如何解決沖突?(實(shí)達(dá)電腦)靠進(jìn)程間互斥來實(shí)現(xiàn)UML的各種圖?(如請講出幾種UML的圖)(融通)用例圖,類圖,對象圖,活動(dòng)圖,狀態(tài)圖,順序圖,協(xié)作圖,構(gòu)件圖,部署圖。最擅長的科目?接下來的問題:用一句話概括該科目?及關(guān)于該科目的一些問題在C語言里面用指針要注意哪些方面?(福富)內(nèi)存泄露,內(nèi)存碎片,數(shù)組越界.進(jìn)程間通信實(shí)現(xiàn)方式?(聯(lián)迪、實(shí)達(dá))信號(hào),信號(hào)量,消息隊(duì)列,共享內(nèi)存,命名管道Const、static、final、typed、define等的用法?(網(wǎng)龍、實(shí)達(dá))const是一個(gè)C語言的關(guān)鍵字,它限定一個(gè)變量不同意被改變。使用const在一定程度上能夠提高程序的安全性和可靠性;C++的static有兩種用法:面向過程程序設(shè)計(jì)中的static和面向?qū)ο蟪绦蛟O(shè)計(jì)中的static。前者應(yīng)用于一般變量和函數(shù),不涉及類;后者要緊講明static在類中的作用,面向過程程序設(shè)計(jì)中static用法要緊有:靜態(tài)全局變量,靜態(tài)局部變量,還有靜態(tài)函數(shù),定義靜態(tài)函數(shù)的好處:靜態(tài)函數(shù)不能被其它文件所用;其它文件中能夠定義相同名字的函數(shù),可不能發(fā)生沖突;面向?qū)ο笾械挠梅ㄓ校红o態(tài)數(shù)據(jù)成員,靜態(tài)成員函數(shù)之類的Final:Java關(guān)鍵字final有“這是無法改變的”或者“終態(tài)的”含義,它能夠修飾非抽象類、非抽象類成員方法和變量。能夠修飾的對象:final域final方法final類。final類不能被繼承,沒有子類,final類中的方法默認(rèn)是final的。final方法不能被子類的方法覆蓋,但能夠被繼承。final成員變量表示常量,只能被賦值一次,賦值后值不再改變。final不能用于修飾構(gòu)造方法。Typedef:為現(xiàn)有類型創(chuàng)建一個(gè)新的名字,是一種在計(jì)算機(jī)編程語言中用來聲明自定義數(shù)據(jù)類型,配合各種原有數(shù)據(jù)類型來達(dá)到簡化編程的目的的類型定義關(guān)鍵字。Define:簡單的define定義#defineMAXTIME1000define的“函數(shù)定義”#definemax(x,y)(x)>(y)?(x):(y)等等堆和棧的區(qū)不?(聯(lián)迪、實(shí)達(dá)、臺(tái)達(dá))棧區(qū)(stack)―由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。堆區(qū)(heap)―一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表。具體差不如下:(1)申請方式:stack:由系統(tǒng)自動(dòng)分配。例如,聲明在函數(shù)中一個(gè)局部變量intb;系統(tǒng)自動(dòng)在棧中為b開發(fā)空間;heap:需要程序員自己申請,并指明大小,在c中malloc函數(shù),如p1=(char*)malloc(10);(2)申請后系統(tǒng)的反應(yīng):棧:只要棧的剩余空間大于所申請空間,系統(tǒng)將為程序提供內(nèi)存,否則將報(bào)異常提示棧溢出。堆:首先應(yīng)該明白操作系統(tǒng)有一個(gè)記錄空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序的申請時(shí),會(huì)遍歷該鏈表,查找第一個(gè)空間大于所申請空間的堆結(jié)點(diǎn),然后將該結(jié)點(diǎn)從空閑結(jié)點(diǎn)鏈表中刪除,并將該結(jié)點(diǎn)的空間分配給程序;(3)申請大小的限制:棧:在Windows下,棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存的區(qū)域。這句話的意思是棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先規(guī)定好的,在WINDOWS下,棧的大小是2M(也有的講是1M,總之是一個(gè)編譯時(shí)就確定的常數(shù)),假如申請的空間超過棧的剩余空間時(shí),將提示overflow。因此,能從棧獲得的空間較小。堆:堆是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域。這是由于系統(tǒng)是用鏈表來存儲(chǔ)的空閑內(nèi)存地址的,自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向高地址。堆的大小受限于計(jì)算機(jī)系統(tǒng)中有效的虛擬內(nèi)存。由此可見,堆獲得的空間比較靈活,也比較大。(4)申請效率的比較: 棧由系統(tǒng)自動(dòng)分配,速度較快。但程序員是無法操縱的。 堆是由new分配的內(nèi)存,一般速度比較慢,而且容易產(chǎn)生內(nèi)存碎片,只是用起來最方便.(5)存儲(chǔ)內(nèi)容的比較:棧:在函數(shù)調(diào)用時(shí),第一個(gè)進(jìn)棧的是主函數(shù)中后的下一條指令(函數(shù)調(diào)用語句的下一條可執(zhí)行語句)的地址,然后是函數(shù)的各個(gè)參數(shù),在大多數(shù)的C編譯器中,參數(shù)是由右往左入棧的,然后是函數(shù)中的局部變量。注意靜態(tài)變量是不入棧的。當(dāng)本次函數(shù)調(diào)用結(jié)束后,局部變量先出棧,然后是參數(shù),最后棧頂指針指向最開始存的地址,也確實(shí)是主函數(shù)中的下一條指令,程序由該點(diǎn)接著運(yùn)行。堆:一般是在堆的頭部用一個(gè)字節(jié)存放堆的大小。堆中的具體內(nèi)容有程序員安排。全局變量和靜態(tài)變量的存儲(chǔ)方式?(實(shí)達(dá))都存放在靜態(tài)存儲(chǔ)區(qū)段式存儲(chǔ)和頁式存儲(chǔ)的原理?(正泰電氣)頁式治理: 首先,各進(jìn)程的虛擬空間被劃分為若干個(gè)長度相等的頁。頁長的劃分和內(nèi)存外存之間數(shù)據(jù)傳輸速度以及內(nèi)存大小等有關(guān)。一般每個(gè)頁長大約為1-4K,通過頁劃分之后,進(jìn)程的虛地址變?yōu)轫撎?hào)P與頁內(nèi)地址W所組成;除了把進(jìn)程的虛擬空間劃分為大小相等的頁之外,頁式治理還把內(nèi)存空間也按頁的大小劃分為片或頁面。這些頁面為系統(tǒng)中的任一進(jìn)程所共享(除去操作系統(tǒng)區(qū)外)。從而,與分區(qū)治理不一樣,分頁治理師,用戶進(jìn)程在內(nèi)存空間內(nèi)除了在每個(gè)頁面內(nèi)地址連續(xù)之外,每個(gè)頁面之間不再連續(xù)。第一是實(shí)現(xiàn)了內(nèi)存中碎片的減少,因?yàn)槿我凰槠紩?huì)小于一個(gè)頁面,第二是實(shí)現(xiàn)了由連續(xù)存儲(chǔ)到非連續(xù)存儲(chǔ)那個(gè)飛躍,為在內(nèi)存中局部地,動(dòng)態(tài)地存儲(chǔ)那些反復(fù)執(zhí)行或立即執(zhí)行的程序或數(shù)據(jù)段打下了基礎(chǔ)。再者,頁式治理采納請求調(diào)頁或預(yù)調(diào)頁技術(shù)式實(shí)現(xiàn)了內(nèi)外存儲(chǔ)器的統(tǒng)一治理。即內(nèi)存內(nèi)只存放那些經(jīng)常被執(zhí)行或立即被執(zhí)行的頁,而那些不常被執(zhí)行以及在近期內(nèi)不可能被執(zhí)行的頁,則存放于外存中待需要時(shí)再調(diào)入。段式治理:段式治理是把程序按內(nèi)容或過程(函數(shù))關(guān)系分成段,每段有自己的名字,一個(gè)用戶作業(yè)或進(jìn)程所包含的段對應(yīng)于一個(gè)二維線性虛擬空間,也確實(shí)是一個(gè)二維虛擬存儲(chǔ)器。段式治理程序以段為單位分配內(nèi)存,然后通過地質(zhì)映射機(jī)構(gòu)把段式虛擬地址轉(zhuǎn)換成實(shí)際的內(nèi)存物理地址。和頁式治理一樣,段式治理也采納只把那些經(jīng)常訪問的段駐留內(nèi)存,而把那些在今后一段時(shí)刻內(nèi)不被訪問的段放入外存,待需要時(shí)自動(dòng)調(diào)入的方法實(shí)現(xiàn)二維虛擬存儲(chǔ)器。TCP三次握手協(xié)議?(臺(tái)達(dá))在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采納三次握手建立一個(gè)連接。第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);SYN:同步序列編號(hào)(SynchronizeSequenceNumbers)。第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,現(xiàn)在服務(wù)器進(jìn)入SYN_RECV狀態(tài);第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)。對接口了解多少?(臺(tái)達(dá))鼠標(biāo)、攝像頭、優(yōu)盤差不多上使用USB接口的設(shè)備,假如想要使用他們就必須連接在USB接口上,這些設(shè)備的接口必須遵守USB接口的規(guī)范才能通過USB接口來使用。能夠如此講:接口是一套規(guī)范,滿足那個(gè)規(guī)范的設(shè)備,我們就能夠把他們組裝到一起,從而實(shí)現(xiàn)該設(shè)備的功能。接口類型是指游戲設(shè)備與電視機(jī)或電腦主機(jī)之間的接口類型。具體有與電視機(jī)相連的AV接口,與電腦主機(jī)相連的串口、USB接口、PCI接口、I-LINK(四針I(yè)EEE1394接口)、連接聲卡的MIDI接口、無線接口等等。什么叫死鎖?如何預(yù)防和解決死鎖?(實(shí)達(dá))所謂死鎖:是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去。現(xiàn)在稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永久在互相等待的進(jìn)程稱為死鎖進(jìn)程。由于資源占用是互斥的,當(dāng)某個(gè)進(jìn)程提出申請資源后,使得有關(guān)進(jìn)程在無外力協(xié)助下,永久分配不到必需的資源而無法接著運(yùn)行,這就產(chǎn)生了一種專門現(xiàn)象死鎖。產(chǎn)生死鎖的四個(gè)必要條件:互斥條件(Mutualexclusion)一個(gè)資源每次只能被一個(gè)進(jìn)程使用。請求與保持條件(占有等待)(Holdandwait)一個(gè)進(jìn)程因請求資源而堵塞時(shí),對已獲得的資源保持不放。不剝奪條件(不可搶占)(Nopre-emption)進(jìn)程已獲得的資源,在未使用完之前,不能強(qiáng)行剝奪。循環(huán)等待條件(Circularwait)若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。這四個(gè)條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必定成立,而只要上述條件之一不滿足,就可不能發(fā)生死鎖。死鎖的解除與預(yù)防理解了死鎖的緣故,尤其是產(chǎn)生死鎖的四個(gè)必要條件,就能夠最大可能地幸免、預(yù)防和解除死鎖。因此,在系統(tǒng)設(shè)計(jì)、進(jìn)程調(diào)度等方面注意如何不讓這四個(gè)必要條件成立,如何確定資源的合理分配算法,幸免進(jìn)程永久占據(jù)系統(tǒng)資源。此外,也要防止進(jìn)程在處于等待狀態(tài)的情況下占用資源,在系統(tǒng)運(yùn)行過程中,對進(jìn)程發(fā)出的每一個(gè)系統(tǒng)能夠滿足的資源申請進(jìn)行動(dòng)態(tài)檢查,并依照檢查結(jié)果決定是否分配資源,若分配后系統(tǒng)可能發(fā)生死鎖,則不予分配,否則予以分配。因此,對資源的分配要給予合理的規(guī)劃。有序資源分配法這種算法資源按某種規(guī)則系統(tǒng)中的所有資源統(tǒng)一編號(hào)(例如打印機(jī)為1、磁帶機(jī)為2、磁盤為3、等等),申請時(shí)必須以上升的次序。系統(tǒng)要求申請進(jìn)程:1、對它所必須使用的而且屬于同一類的所有資源,必須一次申請完;2、在申請不同類資源時(shí),必須按各類設(shè)備的編號(hào)依次申請。例如:進(jìn)程PA,使用資源的順序是R1,R2;進(jìn)程PB,使用資源的順序是R2,R1;若采納動(dòng)態(tài)分配有可能形成環(huán)路條件,造成死鎖。采納有序資源分配法:R1的編號(hào)為1,R2的編號(hào)為2;PA:申請次序應(yīng)是:R1,R2PB:申請次序應(yīng)是:R1,R2如此就破壞了環(huán)路條件,幸免了死鎖的發(fā)生銀行算法幸免死鎖算法中最有代表性的算法是DijkstraE.W于1968年提出的銀行家算法:該算法需要檢查申請者對資源的最大需求量,假如系統(tǒng)現(xiàn)存的各類資源能夠滿足申請者的請求,就滿足申請者的請求。如此申請者就可專門快完成其計(jì)算,然后釋放它占用的資源,從而保證了系統(tǒng)中的所有進(jìn)程都能完成,因此可幸免死鎖的發(fā)生。死鎖排除的方法1、撤消陷于死鎖的全部進(jìn)程;2、逐個(gè)撤消陷于死鎖的進(jìn)程,直到死鎖不存在;3、從陷于死鎖的進(jìn)程中逐個(gè)強(qiáng)迫放棄所占用的資源,直至死鎖消逝。4、從另外一些進(jìn)程那兒強(qiáng)行剝奪足夠數(shù)量的資源分配給死鎖進(jìn)程,以解除死鎖狀態(tài)網(wǎng)絡(luò)編程的順序?(臺(tái)達(dá))*TCP編程服務(wù)器端步驟:創(chuàng)建Socket,端口監(jiān)聽ServerSocket

serverSocket

=

new

ServerSocket(4444);2.

同意客戶連接Socket

clientSocket

=

serverSocket.accept();3.

創(chuàng)建讀寫對象PrintWriter

out

=

new

PrintWriter(

clientSocket.getOutputStream(),

true);BufferedReader

in

=

new

BufferedReader(

new

InputStreamReader(

clientSocket.getInputStream()));4.

利用讀寫對象,與客戶端通信String

inputLine,

outputLine;inputLine

=

in.readLine();out.println(outputLine);5.

關(guān)閉對象out.close();in.close();clientSocket.close();serverSocket.close();*TCP編程客戶端步驟:1.

創(chuàng)建SocketSocket

echoSocket

=

new

Socket("Hostname",

7);2.

創(chuàng)建讀寫對象PrintWriter

out

=

new

PrintWriter(echoSocket.getOutputStream(),

true);BufferedReader

in

=

new

BufferedReader(new

InputStreamReader(

echoSocket.getInputStream()));3.

利用讀寫對象,與服務(wù)器通信String

userString;userString

=

in.readLine();out.println(userString);4.

關(guān)閉對象out.close();in.close();echoSocket.close();

*UDP編程服務(wù)器端步驟:1.

創(chuàng)建socketDatagramSocket

socket

=

new

DatagramSocket(4445);2.

同意客戶請求byte[]

buf

=

new

byte[256];DatagramPacket

packet

=

new

DatagramPacket(buf,

buf.length);socket.receive(packet);3.

數(shù)據(jù)預(yù)備String

dString

=

new

Date().toString();buf

=

dString.getBytes();4.

提取客戶端信息InetAddress

address

=

packet.getAddress();int

port

=

packet.getPort();5.

發(fā)送數(shù)據(jù)packet

=

new

DatagramPacket(buf,

buf.length,

address,

port);socket.send(packet);6.

關(guān)閉對象socket.close();*UDP編程客戶端步驟:1.

創(chuàng)建SocketDatagramSocket

socket

=

new

DatagramSocket();2.

預(yù)備服務(wù)器信息byte[]

buf

=

new

byte[256];InetAddress

address

=

InetAddress.getByName("Hostname");DatagramPacket

packet

=

new

DatagramPacket(buf,

buf.length,

address,

4445);3.

向服務(wù)器發(fā)送請求socket.send(packet);4.

從服務(wù)器讀取信息packet

=

new

DatagramPacket(buf,

buf.length);socket.receive(packet);5.

關(guān)閉對象socket.close();給你一個(gè)字符串將所有嚴(yán)格遞增的子串輸出,現(xiàn)場寫代碼實(shí)現(xiàn)。(淘寶)intfront=-1;for(inti=1;str[i]!='\0';++i){ if(str[i]-str[i-1]==1){ if(front==-1){ front=i-1; } } else{ if(front!=-1){ for(intj=front;j<i;++j){ printf("%c",str[j]); } printf("\n"); front=-1; } }}如何通過修改協(xié)議,使得服務(wù)器能一次性將客服端發(fā)過來的消息全部接收?(淘寶)一個(gè)HR,兩個(gè)技術(shù)官和我那個(gè)應(yīng)聘者,請問能夠用軟件工程方法劃分為幾個(gè)類?(聯(lián)迪商用)要想和A和B兩個(gè)進(jìn)程中的一個(gè)通信,請問用什么方法與A通信,而不與B混淆?(聯(lián)迪商用)如何確保對同一數(shù)據(jù)訪問的多個(gè)客戶端的數(shù)據(jù)一致?SQL語句如何寫?(淘寶)NEW,DELETE,MALLOC和FREE的區(qū)不與聯(lián)系?(淘寶)malloc與free是C++/C語言的標(biāo)準(zhǔn)庫函數(shù),new/delete是C++的運(yùn)算符。它們都可用于申請動(dòng)態(tài)內(nèi)存和釋放內(nèi)存。關(guān)于非內(nèi)部數(shù)據(jù)類型的對象而言,光用malloc/free無法滿足動(dòng)態(tài)對象的要求。對象在創(chuàng)建的同時(shí)要自動(dòng)執(zhí)行構(gòu)造函數(shù),對象在消亡之前要自動(dòng)執(zhí)行析構(gòu)函數(shù)。由于malloc/free是庫函數(shù)而不是運(yùn)算符,不在編譯器操縱權(quán)限之內(nèi),不能夠把執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務(wù)強(qiáng)加于malloc/free。C++語言需要一個(gè)能完成動(dòng)態(tài)內(nèi)存分配和初始化工作的運(yùn)算符new,以一個(gè)能完成清理與釋放內(nèi)存工作的運(yùn)算符delete。注意new/delete不是庫函數(shù)。C++程序經(jīng)常要調(diào)用C函數(shù),而C程序只能用malloc/free治理動(dòng)態(tài)內(nèi)存進(jìn)程與線程的區(qū)不與聯(lián)系?(臺(tái)達(dá))進(jìn)程概念進(jìn)程是表示資源分配的差不多單位,又是調(diào)度運(yùn)行的差不多單位。例如,用戶運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個(gè)進(jìn)程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、I/O設(shè)備等。然后,把該進(jìn)程放人進(jìn)程的就緒隊(duì)列。進(jìn)程調(diào)度程序選中它,為它分配CPU以及其它有關(guān)資源,該進(jìn)程才真正運(yùn)行。因此,進(jìn)程是系統(tǒng)中的并發(fā)執(zhí)行的單位。在Mac、WindowsNT等采納微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)中,進(jìn)程的功能發(fā)生了變化:它只是資源分配的單位,而不再是調(diào)度運(yùn)行的單位。在微內(nèi)核系統(tǒng)中,真正調(diào)度運(yùn)行的差不多單位是線程。因此,實(shí)現(xiàn)并發(fā)功能的單位是線程。線程概念線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位,亦即執(zhí)行處理機(jī)調(diào)度的差不多單位。假如把進(jìn)程理解為在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多可能的子任務(wù)之一。例如,假設(shè)用戶啟動(dòng)了一個(gè)窗口中的數(shù)據(jù)庫應(yīng)用程序,操作系統(tǒng)就將對數(shù)據(jù)庫的調(diào)用表示為一個(gè)進(jìn)程。假設(shè)用戶要從數(shù)據(jù)庫中產(chǎn)生一份工資單報(bào)表,并傳到一個(gè)文件中,這是一個(gè)子任務(wù);在產(chǎn)生工資單報(bào)表的過程中,用戶又能夠輸人數(shù)據(jù)庫查詢請求,這又是一個(gè)子任務(wù)。如此,操作系統(tǒng)則把每一個(gè)請求――工資單報(bào)表和新輸人的數(shù)據(jù)查詢表示為數(shù)據(jù)庫進(jìn)程中的獨(dú)立的線程。線程能夠在處理器上獨(dú)立調(diào)度執(zhí)行,如此,在多處理器環(huán)境下就同意幾個(gè)線程各自在單獨(dú)處理器上進(jìn)行。操作系統(tǒng)提供線程確實(shí)是為了方便而有效地實(shí)現(xiàn)這種并發(fā)性引入線程的好處(1)易于調(diào)度。(2)提高并發(fā)性。通過線程可方便有效地實(shí)現(xiàn)并發(fā)性。進(jìn)程可創(chuàng)建多個(gè)線程來執(zhí)行同一程序的不同部分。(3)開銷少。創(chuàng)建線程比創(chuàng)建進(jìn)程要快,所需開銷專門少。。(4)利于充分發(fā)揮多處理器的功能。通過創(chuàng)建多線程進(jìn)程(即一個(gè)進(jìn)程可具有兩個(gè)或更多個(gè)線程),每個(gè)線程在一個(gè)處理器上運(yùn)行,從而實(shí)現(xiàn)應(yīng)用程序的并發(fā)性,使每個(gè)處理器都得到充分運(yùn)行。進(jìn)程和線程的關(guān)系(1)一個(gè)線程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程能夠有多個(gè)線程,但至少有一個(gè)線程。(2)資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。(3)處理機(jī)分給線程,即真正在處理機(jī)上運(yùn)行的是線程。(4)線程在執(zhí)行過程中,需要協(xié)作同步。不同進(jìn)程的線程間要利用消息通信的方法實(shí)現(xiàn)同步。ARM開發(fā)板的UBOOT移植與流程?(瑞芯微)u-boot啟動(dòng)過程的兩個(gè)時(shí)期:第一時(shí)期(stage1)是依靠于CPU體系結(jié)構(gòu)的代碼(如設(shè)備初始化代碼等),一般用匯編語言來實(shí)現(xiàn)。要緊進(jìn)行以下方面的設(shè)置:設(shè)置ARM進(jìn)入SVC模式、禁止IRQ和FIQ、關(guān)閉看門狗、屏蔽所有中斷。設(shè)置時(shí)鐘(FCLK,HCLK,PCLK)、清空I/Dcache、清空TLB、禁止MMU和cache、配置內(nèi)存操縱器、為搬運(yùn)代碼做預(yù)備、搬移uboot映像到RAM中(使用copy_loop實(shí)現(xiàn))、分配堆棧、清空bss段(使用clbss_l實(shí)現(xiàn))。第二時(shí)期(stage2)通常用C語言來實(shí)現(xiàn)。start_armboot():一系列初始化(cpu,板卡,中斷,串口,操縱臺(tái)等),開啟I/Dcache。初始化FLASH,依照系統(tǒng)配置執(zhí)行其他初始化操作。打印LOG,使能中斷,獵取環(huán)境變量,初始化網(wǎng)卡。最后進(jìn)入main_loop()函數(shù)。在main_loop函數(shù)中會(huì)檢查bootdelay和bootcmd環(huán)境變量,假如bootcmd差不多設(shè)置過,則在等待bootdelay個(gè)毫秒后會(huì)自動(dòng)執(zhí)行bootcmd。假如等待過程中被用戶中斷(ctl+c)或者bootcmd沒有設(shè)置,則會(huì)等待用戶輸入命令。Socket編程服務(wù)器與客戶端的實(shí)現(xiàn)?(臺(tái)達(dá))網(wǎng)絡(luò)通信中的一個(gè)特不重要的概念確實(shí)是套接字(Socket),簡單地講,套接字確實(shí)是網(wǎng)絡(luò)進(jìn)程的ID,網(wǎng)絡(luò)通信歸根到底是進(jìn)程的通信,在網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)有一個(gè)網(wǎng)絡(luò)地址(即IP地址),兩個(gè)進(jìn)程通信時(shí),首先要確定各自所在網(wǎng)絡(luò)節(jié)點(diǎn)的網(wǎng)絡(luò)地址,然而,網(wǎng)絡(luò)地址只能確定進(jìn)程所在的計(jì)算機(jī),而一臺(tái)計(jì)算機(jī)上可能同時(shí)有多個(gè)網(wǎng)絡(luò)進(jìn)程,還不能確定到底是其中的哪個(gè)進(jìn)程,由此套接字中還要有其他的信息,那確實(shí)是端口號(hào)(Port),在一臺(tái)計(jì)算機(jī)中,一個(gè)端口一次只能分配給一個(gè)進(jìn)程,即端口號(hào)與進(jìn)程是一一對應(yīng)的關(guān)系,因此,端口號(hào)和網(wǎng)絡(luò)地址就能唯一地確定Internet中的一個(gè)網(wǎng)絡(luò)進(jìn)程。能夠認(rèn)為:套接字=網(wǎng)絡(luò)地址+端口號(hào)系統(tǒng)調(diào)用一個(gè)Socket()得到一個(gè)套接字描述符,然后就能夠通過他進(jìn)行網(wǎng)絡(luò)通信了。套接字有專門多種類,最常用的就有兩種;流式套接字和數(shù)據(jù)報(bào)套接字。在Linux中分不稱之"SOCK_STREAM"和"SOCK_DGRAM",他們分不使用不同的協(xié)議,流式套接字使用TCP協(xié)議,數(shù)據(jù)報(bào)套接字使用UDP協(xié)議,下文以流式套接字協(xié)議(tcp)為例。網(wǎng)絡(luò)上的絕大多數(shù)通信采納的差不多上客戶機(jī)/服務(wù)器機(jī)制(Client/Server),即服務(wù)器提供服務(wù),客戶是這些服務(wù)的使用者,服務(wù)器首先創(chuàng)建一個(gè)Socket,然后將該Socket與本地地址/端口號(hào)綁定(Bind()),成功之后就在相應(yīng)的Socket上監(jiān)聽(Listen())。當(dāng)Accept()函數(shù)捕捉到一個(gè)連接服務(wù)(Connect())請求時(shí),同意并生成一個(gè)新的Socket,并通過那個(gè)新的Socket與客戶端通信,客戶端同樣也要?jiǎng)?chuàng)建一個(gè)Socket,將該Socket與本地地址/端口號(hào)綁定,還需要指定服務(wù)器端的地址與端口號(hào),隨后向服務(wù)器端發(fā)出Connect(),請求被服務(wù)器端同意后,能夠通過Socket與服務(wù)器端通信。TCP是一種面向連接的、可靠的、雙向的通信數(shù)據(jù)流,講他可靠,是因?yàn)樗褂?段握手協(xié)議傳輸數(shù)據(jù),同時(shí)在傳輸時(shí)采納"重傳確信確認(rèn)"機(jī)制保證數(shù)據(jù)的正確發(fā)送:接收端收到的數(shù)據(jù)后要發(fā)出一個(gè)確信確認(rèn),而發(fā)送端必須要能同意到那個(gè)確信信號(hào),否則就要將數(shù)據(jù)重發(fā)。在此原理基礎(chǔ)之上,設(shè)計(jì)了基于Linux操作系統(tǒng)下TCP/IP編程實(shí)現(xiàn)文件傳輸?shù)膶?shí)例。我們采納客戶機(jī)/服務(wù)器模式通信時(shí),通信雙方發(fā)送/接收數(shù)據(jù)的工作流程如圖所示。文件傳輸確實(shí)是基于客戶機(jī)/服務(wù)器模型而設(shè)計(jì)的,客戶機(jī)和服務(wù)器之間利用TCP建立連續(xù),因文件傳輸是一個(gè)交互式會(huì)話系統(tǒng),客戶機(jī)每次執(zhí)行文件傳輸,都需要與服務(wù)器建立操縱連接和數(shù)據(jù)連接,其中操縱連接負(fù)責(zé)傳輸操縱信息、利用操縱命令、客戶機(jī)能夠向服務(wù)器提出無限次的請求,客戶機(jī)每次提出的請求,服務(wù)器與客戶機(jī)建立一個(gè)數(shù)據(jù)連接,進(jìn)行實(shí)際的數(shù)據(jù)傳輸,數(shù)據(jù)傳輸完畢后,對應(yīng)的數(shù)據(jù)連接被清除,操縱連接依舊保持,等待客戶機(jī)發(fā)出新的傳輸請求,直到客戶機(jī)撤銷操縱連接結(jié)束會(huì)話。當(dāng)進(jìn)行文件傳輸時(shí),首先向服務(wù)器發(fā)出連接請求,服務(wù)器驗(yàn)證身份后,與客戶端建立連接,雙方進(jìn)入會(huì)話狀態(tài),這時(shí)只要客戶端向服務(wù)器端發(fā)出數(shù)據(jù)連接請求,建立起數(shù)據(jù)連接后,雙方就進(jìn)入數(shù)據(jù)傳輸狀態(tài),數(shù)據(jù)傳輸完畢后,數(shù)據(jù)連接被撤銷,如此循環(huán)反復(fù),直到會(huì)話結(jié)束,從而實(shí)現(xiàn)將文件從服務(wù)器端傳輸至客戶機(jī)端。文件傳輸程序設(shè)計(jì)流程1客戶端的TCP應(yīng)用程序流程(1)先用Socket()創(chuàng)建本地套接口,給服務(wù)器端套接口地址結(jié)構(gòu)賦值。(2)用Connect()函數(shù)使本地套接口向服務(wù)器端套接口發(fā)出建立連接請求,經(jīng)3次握手建立TCP連接。(3)用Read()函數(shù)讀取所要接收的文件名以及存放在內(nèi)存里的文件內(nèi)容。(4)用Open()函數(shù)打開客戶端新建立的目標(biāo)文件,假如沒有建立,該函數(shù)會(huì)自動(dòng)生成目標(biāo)文件,等待存放文件內(nèi)容。(5)最后用Write()函數(shù)將讀取的文件內(nèi)容存放在新的目標(biāo)文件中,以實(shí)現(xiàn)服務(wù)器端向客戶端的文件傳輸。(6)通信結(jié)束,用Close()關(guān)閉套接口,停止接收文件。2服務(wù)器端的TCP應(yīng)用程序流程(1)先用Open()函數(shù)打開等待傳輸?shù)目勺x文件;(2)用Socket()創(chuàng)建套接口,并給套接口地址結(jié)構(gòu)賦值;(3)用Bind()函數(shù)綁定套接口;(4)用Listen()函數(shù)在該套接口上監(jiān)聽請求;(5)用Accept()函數(shù)同意請求,產(chǎn)生新的套接口及描述字,并與客戶端連接;(6)用Lseek()函數(shù)是為了在每次同意客戶機(jī)連接時(shí),將用于讀的源文件指針移到文件頭;(7)用Read()函數(shù)讀取一定長度的源文件數(shù)據(jù);(8)最后用Write()函數(shù)將讀取的源文件數(shù)據(jù)存放在內(nèi)存中,以便客戶端讀??;(9)傳輸完畢時(shí),用Close()關(guān)閉所有進(jìn)程,結(jié)束文件傳輸。在文件傳輸過程中,專門重要的一點(diǎn)是:當(dāng)服務(wù)器端開始發(fā)送數(shù)據(jù)時(shí),客戶端要同時(shí)進(jìn)行文件數(shù)據(jù)的接收。假如客戶端沒有運(yùn)行,服務(wù)器端會(huì)一直等待客戶端發(fā)送請求,當(dāng)服務(wù)器源文件發(fā)送完畢,則客戶端也將源文件的數(shù)據(jù)完全接收,并生成新的目標(biāo)文件,從而實(shí)現(xiàn)文件的網(wǎng)絡(luò)通信。項(xiàng)目開發(fā)中遇到的最大問題與困難時(shí)什么?(網(wǎng)龍)談?wù)勀闼龅捻?xiàng)目?(幾乎所有面試)中斷跟系統(tǒng)調(diào)用有什么區(qū)不與聯(lián)系中斷是指計(jì)算機(jī)在執(zhí)行程序的過程中,當(dāng)出現(xiàn)異常情況或?qū)iT請求時(shí),計(jì)算機(jī)停止現(xiàn)行程序的運(yùn)行,轉(zhuǎn)向?qū)@些異常情況或?qū)iT請求的處理,處理結(jié)束后再返回現(xiàn)行程序的間斷處,接著執(zhí)行原程序。中斷是單片機(jī)實(shí)時(shí)地處理內(nèi)部或外部事件的一種內(nèi)部機(jī)制。當(dāng)某種內(nèi)部或外部事件發(fā)生時(shí),單片機(jī)的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進(jìn)行中斷事件的處理,中斷處理完畢后,又返回被中斷的程序處,接著執(zhí)行下去。在Unix/Linux系統(tǒng)中,系統(tǒng)調(diào)用像一般C函數(shù)調(diào)用那樣出現(xiàn)在C程序中。然而一般的函數(shù)調(diào)用序列并不能把進(jìn)程的狀態(tài)從用戶態(tài)變?yōu)楹诵膽B(tài),而系統(tǒng)調(diào)用卻能夠做到。C語言編譯程序利用一個(gè)預(yù)先確定的函數(shù)庫(一般稱為C庫),其中有各系統(tǒng)調(diào)用的名字。C庫中的函數(shù)都專門使用一條指令,把進(jìn)程的運(yùn)行狀態(tài)改為核心態(tài)。Linux的系統(tǒng)調(diào)用是通過中斷指令“INT0x80”實(shí)現(xiàn)的。每個(gè)系統(tǒng)調(diào)用都有惟一的號(hào)碼,稱作系統(tǒng)調(diào)用號(hào)。所有的系統(tǒng)調(diào)用都集中在系統(tǒng)調(diào)用入口表中統(tǒng)一治理。系統(tǒng)調(diào)用入口表是一個(gè)函數(shù)指針數(shù)組,以系統(tǒng)調(diào)用號(hào)為下標(biāo)在該數(shù)組中找到相應(yīng)的函數(shù)指針,進(jìn)而就能確定用戶使用的是哪一個(gè)系統(tǒng)調(diào)用。不同系統(tǒng)中系統(tǒng)調(diào)用的個(gè)數(shù)是不同的。另外,系統(tǒng)調(diào)用表中還留有一些余項(xiàng),可供用戶自行添加。排序算法哪些是穩(wěn)定的冒泡、合并、插入、基數(shù)排序數(shù)據(jù)庫的外連接第三范式要達(dá)到什么要求3NF的定義 定義6.7關(guān)系模式R<U,F(xiàn)>中若不存在如此的碼X、屬性組Y及非主屬性Z(ZY),使得X→Y,Y→Z成立,Y→X,則稱R<U,F(xiàn)>∈3NF。若R∈3NF,則非主屬性不部分或傳遞依靠于任何候選碼。對嵌入式系統(tǒng)的理解國內(nèi)普遍被認(rèn)同的定義:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可剪裁、適應(yīng)應(yīng)用系統(tǒng)對功能可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。分成硬件和軟件:硬件:嵌入式處理器存儲(chǔ)器外圍接口軟件:引導(dǎo)裝載程序嵌入式操作系統(tǒng)嵌入式應(yīng)用軟件1)嵌入式系統(tǒng)通常是面向特定應(yīng)用的軟硬件結(jié)合體一般用于特定的場合,其硬件和軟件都務(wù)須高效,量體裁衣,去除冗余。嵌入式處理器是面向具體應(yīng)用的,具有功耗低、體積小和集成度高等特點(diǎn),可將各種功能集成到處理器內(nèi)部,使設(shè)計(jì)小型化,移動(dòng)能力增強(qiáng),與網(wǎng)絡(luò)的耦合緊密。2)系統(tǒng)精簡,關(guān)注成本不明顯區(qū)分系統(tǒng)軟件和應(yīng)用軟件,不要求功能設(shè)計(jì)及實(shí)現(xiàn)上過于復(fù)雜,既有利于操縱系統(tǒng)成本,也有利于實(shí)現(xiàn)系統(tǒng)安全。系統(tǒng)的成本是關(guān)鍵因素,特不是消費(fèi)類數(shù)字化電子產(chǎn)品。3)嵌入式系統(tǒng)有實(shí)時(shí)性和可靠性的要求實(shí)時(shí)性的操作系統(tǒng)軟件是嵌入式軟件的差不多要求,而且軟件要求固態(tài)存儲(chǔ),以提高速度。軟件代碼要求高可靠性和實(shí)時(shí)性。在多任務(wù)嵌入式系統(tǒng)中,對重要性各不相同的任務(wù)進(jìn)行統(tǒng)籌兼顧的合理調(diào)度是保證每個(gè)任務(wù)及時(shí)執(zhí)行的關(guān)鍵,單純通過提高處理器速度是無法完成和沒有效率的,因此系統(tǒng)軟件的實(shí)時(shí)性是差不多要求。嵌入式系統(tǒng)一般要求具有出錯(cuò)處理和自動(dòng)復(fù)位功能,特不是在極端環(huán)境下工作的嵌入式系統(tǒng)。在大多數(shù)嵌入式系統(tǒng)中一般都包含一些硬件和軟件機(jī)制來保證系統(tǒng)的可靠性。比如硬件的看門狗電路,它在軟件失去操縱后使系統(tǒng)重新啟動(dòng);軟件的可靠性機(jī)制包含內(nèi)存愛護(hù)和重啟機(jī)制等。4)產(chǎn)品升級(jí)換代和具體產(chǎn)品同步,具有較長的生命周期嵌入式系統(tǒng)和具體應(yīng)用有機(jī)結(jié)合,它升級(jí)換代也和具體產(chǎn)品同步進(jìn)行,產(chǎn)品一旦進(jìn)入市場,便具有較長的生命周期。5)嵌入式軟件開發(fā)走向標(biāo)準(zhǔn)化,使用多任務(wù)的操作系統(tǒng)部分應(yīng)用程序可在沒有操作系統(tǒng)的情況下運(yùn)行。但為了合理地調(diào)度多任務(wù),利用系統(tǒng)資源、系統(tǒng)函數(shù)以及和專家?guī)旌瘮?shù)接口,應(yīng)該盡量使用OS或RTOS平臺(tái),如此才能保證程序執(zhí)行的實(shí)時(shí)性、可靠性,并減少開發(fā)時(shí)刻,保障軟件質(zhì)量。6)嵌入式系統(tǒng)需要開發(fā)工具和環(huán)境嵌入式系統(tǒng)資源有限,一般不具備自主開發(fā)和修改能力。使用開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)。工具和環(huán)境包括通用計(jì)算機(jī)、硬件仿真器、邏輯分析儀、信號(hào)源、示波器等。有主機(jī)和目標(biāo)機(jī)的概念:主機(jī)一般為通用計(jì)算機(jī)系統(tǒng),運(yùn)行開發(fā)軟件,完成開發(fā)的大部分工作;目標(biāo)機(jī)確實(shí)是嵌入式系統(tǒng),作為最后的執(zhí)行機(jī),開發(fā)時(shí)需要交替結(jié)合進(jìn)行。明白哪些設(shè)計(jì)模式Java中的23種設(shè)計(jì)模式:Factory(工廠模式)、Builder(建筑模式)、Factory

Method(工廠方法模式)、Prototype(原始模型模式)、Singleton(單例模式)、Facade(門面模式)、Adapter(適配器模式)、Bridge(橋梁模式)、Composite(合成模式)、Decorator(裝飾模式)、Flyweight(享元模式)、Proxy(代理模式)、Command(命令模式)、Interpreter(解釋器模式)、Visitor(訪問者模式)、Iterator(迭代子模式)、Mediator(調(diào)停者模式)、Memento(備忘錄模式)、Observer(觀看者模式)、State(狀態(tài)模式)、Strategy(策略模式)、Template

Method(模板方法模式)、Chain

Of

Responsibleity(責(zé)任鏈模式)。Tcp、ip的區(qū)不以及作用TCP/IP協(xié)議是一組包括TCP協(xié)議和IP協(xié)議,UDP(UserDatagramProtocol)協(xié)議、ICMP(InternetControlMessageProtocol)協(xié)議和其他一些協(xié)議的協(xié)議組。

TCP/IP協(xié)議并不完全符合OSI的七層參考模型。傳統(tǒng)的開放式系統(tǒng)互連參考模型,是一種通信協(xié)議的7層抽象的參考模型,其中每一層執(zhí)行某一特定任務(wù)。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數(shù)據(jù)鏈路層、網(wǎng)路層、傳輸層、話路層、表示層和應(yīng)用層。而TCP/IP通訊協(xié)議采納了4層的層級(jí)結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。這4層分不為:

應(yīng)用層:應(yīng)用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。

傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸操縱協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)等,TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又?,這一層負(fù)責(zé)傳送數(shù)據(jù),同時(shí)確定數(shù)據(jù)已被送達(dá)并接收。

互連網(wǎng)絡(luò)層:負(fù)責(zé)提供差不多的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收),如網(wǎng)際協(xié)議(IP)。

網(wǎng)絡(luò)接口層:對實(shí)際的網(wǎng)絡(luò)媒體的治理,定義如何使用實(shí)際網(wǎng)絡(luò)(如Ethernet、SerialLine等)來傳送數(shù)據(jù)。

以下簡單介紹TCP/IP中的協(xié)議都具備什么樣的功能,差不多上如何工作的:

IP

網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。

IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動(dòng)程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因?yàn)镮P并沒有做任何情況來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)。高層的TCP和UDP服務(wù)在接收數(shù)據(jù)包時(shí),通常假設(shè)包中的源地址是有效的。也能夠如此講,IP地址形成了許多服務(wù)的認(rèn)證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個(gè)有效的主機(jī)發(fā)送來的。IP確認(rèn)包含一個(gè)選項(xiàng),叫作IPsourcerouting,能夠用來指定一條源地址和目的地址之間的直接路徑。關(guān)于一些TCP和UDP的服務(wù)來講,使用了該選項(xiàng)的IP包仿佛是從路徑上的最后一個(gè)系統(tǒng)傳遞過來的,而不是來自于它的真實(shí)地點(diǎn)。那個(gè)選項(xiàng)是為了測試而存在的,講明了它能夠被用來欺騙系統(tǒng)來進(jìn)行平常是被禁止的連接。那么,許多依靠IP源地址做確認(rèn)的服務(wù)將產(chǎn)生問題同時(shí)會(huì)被非法入侵。

TCP

假如IP數(shù)據(jù)包中有差不多封好的TCP數(shù)據(jù)包,那么IP將把它們向‘上’傳送到TCP層。TCP將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號(hào)和確認(rèn),因此未按照順序收到的包能夠被排序,而損壞的包能夠被重傳。

TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設(shè)備驅(qū)動(dòng)程序和物理介質(zhì),最后到接收方。

面向連接的服務(wù)(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,因此它們使用了TCP。DNS在某些情況下使用TCP(發(fā)送和接收域名數(shù)據(jù)庫),但使用UDP傳送有關(guān)單個(gè)主機(jī)的信息。

3.UDP

UDP與TCP位于同一層,但關(guān)于數(shù)據(jù)包的順序錯(cuò)誤或重發(fā)。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP要緊用于那些面向查詢應(yīng)答的服務(wù),例如NFS。相關(guān)于FTP或Telnet,這些服務(wù)需要交換的信息量較小。使用UDP的服務(wù)包括NTP(網(wǎng)落時(shí)刻協(xié)議)和DNS(DNS也使用TCP)。

欺騙UDP包比欺騙TCP包更容易,因?yàn)閁DP沒有建立初始化連接(也能夠稱為握手)(因?yàn)樵趦蓚€(gè)系統(tǒng)間沒有虛電路),也確實(shí)是講,與UDP相關(guān)的服務(wù)面臨著更大的危險(xiǎn)。

ICMP

ICMP與IP位于同一層,它被用來傳送IP的的操縱信息。它要緊是用來提供有關(guān)通向目的地址的路徑信息。ICMP的‘Redirect’信息通知主機(jī)通向其他系統(tǒng)的更準(zhǔn)確的路徑,而‘Unreachable’信息則指出路徑有問題。另外,假如路徑不可用了,ICMP能夠使TCP連接‘風(fēng)光地’終止。PING是最常用的基于ICMP的服務(wù)。網(wǎng)絡(luò)擁塞協(xié)議層如何處理注:詳見計(jì)算機(jī)網(wǎng)絡(luò)運(yùn)輸層。在某段時(shí)刻,若對網(wǎng)絡(luò)中某資源的需求超過了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞——產(chǎn)生擁塞(congestion)。出現(xiàn)資源擁塞的條件:對資源需求的總和>可用資源(5-7)若網(wǎng)絡(luò)中有許多資源同時(shí)產(chǎn)生擁塞,網(wǎng)絡(luò)的性能就要明顯變壞,整個(gè)網(wǎng)絡(luò)的吞吐量將隨輸入負(fù)荷的增大而下降。幾種擁塞操縱方法

1.慢開始和擁塞幸免發(fā)送方維持一個(gè)叫做擁塞窗口cwnd(congestionwindow)的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,同時(shí)動(dòng)態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口。如再考慮到接收方的接收能力,則發(fā)送窗口還可能小于擁塞窗口。發(fā)送方操縱擁塞窗口的原則是:只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。但只要網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。慢開始算法的原理:在主機(jī)剛剛開始發(fā)送報(bào)文段時(shí)可先設(shè)置擁塞窗口cwnd=1,即設(shè)置為一個(gè)最大報(bào)文段MSS的數(shù)值。在每收到一個(gè)對新的報(bào)文段的確認(rèn)后,將擁塞窗口加1,即增加一個(gè)MSS的數(shù)值。用如此的方法逐步增大發(fā)送端的擁塞窗口cwnd,能夠使分組注入到網(wǎng)絡(luò)的速率更加合理。傳輸輪次(transmissionround):使用慢開始算法后,每通過一個(gè)傳輸輪次,擁塞窗口cwnd就加倍。一個(gè)傳輸輪次所經(jīng)歷的時(shí)刻事實(shí)上確實(shí)是往返時(shí)刻RTT?!皞鬏斴喆巍备訌?qiáng)調(diào):把擁塞窗口cwnd所同意發(fā)送的報(bào)文段都連續(xù)發(fā)送出去,并收到了對已發(fā)送的最后一個(gè)字節(jié)的確認(rèn)。例如,擁塞窗口cwnd=4,這時(shí)的往返時(shí)刻RTT確實(shí)是發(fā)送方連續(xù)發(fā)送4個(gè)報(bào)文段,并收到這4個(gè)報(bào)文段的確認(rèn),總共經(jīng)歷的時(shí)刻。設(shè)置慢開始門限狀態(tài)變量ssthresh:慢開始門限ssthresh的用法如下:當(dāng)cwnd<ssthresh時(shí),使用慢開始算法。當(dāng)cwnd>ssthresh時(shí),停止使用慢開始算法而改用擁塞幸免算法。當(dāng)cwnd=ssthresh時(shí),既可使用慢開始算法,也可使用擁塞幸免算法。擁塞幸免算法的思路是讓擁塞窗口cwnd緩慢地增大,即每通過一個(gè)往返時(shí)刻RTT就把發(fā)送方的擁塞窗口cwnd加1,而不是加倍,使擁塞窗口cwnd按線性規(guī)律緩慢增長。當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),不管在慢開始時(shí)期依舊在擁塞幸免時(shí)期,只要發(fā)送方推斷網(wǎng)絡(luò)出現(xiàn)擁塞(其依照確實(shí)是沒有按時(shí)收到確認(rèn)),就要把慢開始門限ssthresh設(shè)置為出現(xiàn)擁塞時(shí)的發(fā)送方窗口值的一半(但不能小于2)。然后把擁塞窗口cwnd重新設(shè)置為1,執(zhí)行慢開始算法。如此做的目的確實(shí)是要迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時(shí)刻把隊(duì)列中積壓的分組快重傳和快恢復(fù)處理完畢:快重傳算法首先要求接收方每收到一個(gè)失序的報(bào)文段后就立即發(fā)出重復(fù)確認(rèn)。如此做能夠讓發(fā)送方及早明白有報(bào)文段沒有到達(dá)接收方。發(fā)送方只要一連收到三個(gè)重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對方尚未收到的報(bào)文段。不難看出,快重傳并非取消重傳計(jì)時(shí)器,而是在某些情況下可更早地重傳丟失的報(bào)文段。假如五年后有家更好的公司挖你,你會(huì)如何選擇?在學(xué)校的做過什么項(xiàng)目沒

?比較擅長哪方面的編程?首先先自我介紹下?會(huì)可不能被考慮眼前的利益?你對以后五年有什么規(guī)劃你有女朋友?你對出差有什么看法?你認(rèn)為你大學(xué)四年中最成功或者最失敗的是什么?你在學(xué)校做過什么課程設(shè)計(jì),簡述一下?你的學(xué)習(xí)成績?你的特長?你對薪資的要求?你是如何樣學(xué)習(xí)一門語言的?你還有什么問題?xml和html什么區(qū)不?xml:XML(ExtensibleMarkupLanguage)即可擴(kuò)展標(biāo)記語言,用來配置文件和存儲(chǔ)數(shù)據(jù)用的html:HTML(HyperTextMark-upLanguage)即超文本標(biāo)記語言或超文本鏈接標(biāo)示語言,制作網(wǎng)頁的語言js經(jīng)常都如何用?網(wǎng)頁的腳本語言,能夠操縱一些網(wǎng)頁的簡單驗(yàn)證。對框架的理解,并講講這3大框架各自的作用?SpringSpring是一個(gè)解決了許多在J2EE開發(fā)中常見的問題的強(qiáng)大框架。Spring提供了治理業(yè)務(wù)對象的一致方法同時(shí)鼓舞了注入對接口編程而不是對類編程的良好適應(yīng)。Spring的架構(gòu)基礎(chǔ)是基于使用JavaBean屬性的InversionofControl容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構(gòu)建完關(guān)注所有架構(gòu)層的完整解決方案方面是獨(dú)一無二的。Spring提供了唯一的數(shù)據(jù)訪問抽象,包括簡單和有效率的JDBC框架,極大的改進(jìn)了效率同時(shí)減少了可能的錯(cuò)誤。Spring的數(shù)據(jù)訪問架構(gòu)還集成了Hibernate和其他O/Rmapping解決方案。Spring還提供了唯一的事務(wù)治理抽象,它能夠在各種底層事務(wù)治理技術(shù),例如JTA或者JDBC事務(wù)提供一個(gè)一致的編程模型。Spring提供了一個(gè)用標(biāo)準(zhǔn)Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務(wù)治理和其他企業(yè)事務(wù)--假如你需要--還能實(shí)現(xiàn)你自己的aspects。那個(gè)框架足夠強(qiáng)大,使得應(yīng)用程序能夠拋開EJB的復(fù)雜性,同時(shí)享受著和傳統(tǒng)EJB相關(guān)的關(guān)鍵服務(wù)。Spring還提供了能夠和IoC容器集成的強(qiáng)大而靈活的MVCWeb框架。STRUCTSStruts是一個(gè)基于SunJ2EE平臺(tái)的MVC框架,要緊是采納Servlet和JSP技術(shù)來實(shí)現(xiàn)的。由于Struts能充分滿足應(yīng)用開發(fā)的需求,簡單易用,敏捷迅速,在過去的一年中頗受關(guān)注。Struts把Servlet、JSP、自定義標(biāo)簽和信息資源(messageresources)整合到一個(gè)統(tǒng)一的框架中,開發(fā)人員利用其進(jìn)行開發(fā)時(shí)不用再自己編碼實(shí)現(xiàn)全套MVC模式,極大的節(jié)約了時(shí)刻,因此講Struts是一個(gè)特不不錯(cuò)的應(yīng)用框架。HibernateHibernate是一個(gè)開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了特不輕量級(jí)的對象封裝,使得Java程序員能夠?yàn)樗麨榈氖褂脤ο缶幊趟季S來操縱數(shù)據(jù)庫。Hibernate能夠應(yīng)用在任何使用JDBC的場合,既能夠在Java的客戶端程序有用,也能夠在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate能夠在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。數(shù)據(jù)庫連接池的三個(gè)參數(shù)各代表什么?分頁你是如何處理的?注:詳見操作系統(tǒng)存儲(chǔ)治理。頁式治理分為靜態(tài)分頁和動(dòng)態(tài)分頁:1.靜態(tài)分頁在進(jìn)程的整個(gè)生命周期中進(jìn)程的內(nèi)容全部保存在內(nèi)存中,并以分頁的方式治理內(nèi)存,稱為靜態(tài)分頁。靜態(tài)分頁需要操作系統(tǒng)維持三個(gè)數(shù)據(jù)結(jié)構(gòu),頁表、請求表和存儲(chǔ)頁面表(幀位圖)。靜態(tài)分頁(分配與回收)分配:步1查找?guī)粓D推斷是否有足夠數(shù)量的幀,假如沒有,拒絕請求,掛起提出請求的進(jìn)程。結(jié)束。步2選出要分配的幀,將幀位圖對應(yīng)的比特置反。步3查找請求表,找到該進(jìn)程的頁表。步4更新頁表。回收:步1查找請求表,找到該進(jìn)程的頁表。步2更新頁表。步3將幀位圖對應(yīng)的比特置反。步4查找是否有進(jìn)程在等待內(nèi)存資源,若有調(diào)用分配過程。2.動(dòng)態(tài)分頁同意在進(jìn)程生命周期的全部或某一時(shí)期,在內(nèi)存中只保存進(jìn)程內(nèi)容的一部分,同時(shí)采納分頁的方式治理內(nèi)存,稱為動(dòng)態(tài)分頁。動(dòng)態(tài)分頁能夠?qū)?nèi)存進(jìn)行邏輯擴(kuò)充,而靜態(tài)分頁不具備那個(gè)能力。采納動(dòng)態(tài)分頁,并不要求進(jìn)程的所有頁都一直在內(nèi)存中,那么,與靜態(tài)分頁相比,就有如下兩個(gè)新問題需要解決。第一,何時(shí)裝入需要使用的頁。第二,當(dāng)需要從外存裝入頁內(nèi)容且內(nèi)存沒有足夠的空閑幀時(shí),如何辦?針對第一個(gè)問題,有兩種策略。一、請求頁式。要用到某頁且該頁不在內(nèi)存中時(shí)裝入。二、預(yù)調(diào)入方式。操作系統(tǒng)預(yù)測立即要用到的頁,假如該頁不再內(nèi)存,將其裝入。以下要緊介紹請求頁式。針對第二個(gè)問題(當(dāng)需要從外存裝入頁內(nèi)容且內(nèi)存沒有足夠的空閑幀時(shí),如何辦?),解決方法是置換,簡言之,確實(shí)是把內(nèi)存中的某個(gè)頁換到外存為新裝入的頁騰出空間。具體方法有:⑴隨機(jī)淘汰法⑵輪轉(zhuǎn)法和先進(jìn)先出法⑶最近最久未使用法技術(shù)問你第二范式的特性2NF的定義 定義6.6若R∈1NF,且每一個(gè)非主屬性完全函數(shù)依靠于碼,則R∈2NF。全局常量如何定義Java和c的區(qū)不Oracle10g那個(gè)g代表什么,答案是網(wǎng)格綜合面試、無領(lǐng)導(dǎo)小組討論(計(jì)算機(jī)1、3班提供)無領(lǐng)導(dǎo)小組討論:(安利公司)題目:黑板上有個(gè)圓,你要在圓上加一筆,并講明什么緣故這么加。無領(lǐng)導(dǎo)小組討論經(jīng)驗(yàn):在無領(lǐng)導(dǎo)面試中切忌不要沉默寡言,也不要滔滔不絕,然而一定要突出自己的觀點(diǎn)。還有確實(shí)是不要緊張,一緊張,語言組織能力就會(huì)下降,就當(dāng)做和熟人一起探討一個(gè)問題。群面:(東南融通)題目:某公司現(xiàn)在項(xiàng)目做到后面發(fā)覺,時(shí)刻可能還要3個(gè)月才能完成。但差不多和客戶講好了時(shí)刻,因此不能違約?,F(xiàn)在假如你是項(xiàng)目組長,給領(lǐng)導(dǎo)開會(huì)。有以下的內(nèi)容,讓你按順序安排開會(huì)內(nèi)容,并講明理由:有個(gè)骨干成員脾氣不行,經(jīng)常和組員、客戶吵架,但又是不可或缺的??蛻舴降霓k公室正在裝修,聲音嘈雜,阻礙到了組員的情緒銷售人員在和客戶方談項(xiàng)目的時(shí)候,為了能夠早點(diǎn)完工,接其他項(xiàng)目,時(shí)刻講少了項(xiàng)目開始時(shí),安排的人員少了,假如增加人員,造成超支項(xiàng)目開始到現(xiàn)在,客戶方不斷改變需求,我們對需求也一直不明確存在一個(gè)技術(shù)問題一直沒有解決……無領(lǐng)導(dǎo)小組討論:(福建富士通)題目:加入你的團(tuán)隊(duì)不小心掉入了非洲的叢林里,你有以下14樣能夠攜帶的工具,把你認(rèn)為按重要的先后順尋排序,到最后小組再討論一個(gè)順序,專家再給一個(gè)順尋,計(jì)算偏離程度,偏的越小,講明你的生存能力越強(qiáng)。大砍刀打火機(jī)蠟燭7個(gè)綠色垃圾袋3個(gè)高爾夫球桿食物空的熱水瓶防水毛毯手槍藥箱蛇咬藥箱指南針其他(按公司分類)筆試題:(計(jì)算機(jī)2班提供)編程相關(guān)榕基WEB:列出4種常見的圖片格式列出5個(gè)linux查看文件的命令寫出你熟悉的語言的4個(gè)特性寫出修改表結(jié)構(gòu)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論