2024年屆校園招聘筆試面試題及部分答案_第1頁(yè)
2024年屆校園招聘筆試面試題及部分答案_第2頁(yè)
2024年屆校園招聘筆試面試題及部分答案_第3頁(yè)
2024年屆校園招聘筆試面試題及部分答案_第4頁(yè)
2024年屆校園招聘筆試面試題及部分答案_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

筆試面試題匯總

一、筆試題

1、給你一個(gè)二叉樹(shù)的前序序列和中序序列,求其后續(xù)序列?(淘寶)

先看三個(gè)公式:

Pre0rder(T)=T的根節(jié)點(diǎn)+PrcOrder(T的左子樹(shù))+Pre0rder(T的右子樹(shù));

InOrder(T)=InOrder(T的左子樹(shù))+T的根節(jié)點(diǎn)+InOrder(T的右子樹(shù));

PostOrder(T)=PostOrder(T的左子樹(shù))+PostOrder(T的右子樹(shù))+T的根節(jié)點(diǎn)。

依照以上的三給公式就能夠很輕易處理一卜兩個(gè)問(wèn)題:

前序+中序T后序;

中序+后序令前序。

當(dāng)然也可把樹(shù)畫(huà)出來(lái),再求他的各種序列。

2、Cache替代算法命中率最高是?(淘寶)

這個(gè)組成原理就有講到了,能夠找組成原理的書(shū)看下,把各種替代算法在了解下,在書(shū)上的

P98-P99講得很詳細(xì)。

3、給一個(gè)次序表,然后再給你一個(gè)碼值,求在二分查找改碼值的比較次數(shù)?(淘寶)

自己去做二分的查找的過(guò)程,我們懂得二分查找是log(n)的,一次比較次數(shù)不小于log(n)肯定

是錯(cuò)的。詳細(xì)能夠看下數(shù)據(jù)結(jié)構(gòu)的書(shū),P17-P18講的很詳細(xì)。

4、編譯程序中安排中間代瑪生成的目標(biāo)是?(淘寶)

把與機(jī)器有關(guān)的工作集中到目標(biāo)代碼生成階段,難度司工作量下降。便于移直和維護(hù)。利于優(yōu)

化。

5、假設(shè)在n進(jìn)制下,17*456=8206成立,n是多少?(淘寶)

從上面的等式中能夠看到8,則進(jìn)制可定不小于8,因此能夠從9進(jìn)制開(kāi)始枚舉,直至滿(mǎn)足等式,

就能夠了。(提議:先都轉(zhuǎn)換成十進(jìn)制,在實(shí)現(xiàn)乘法運(yùn)算)

6、要從一億會(huì)員中抽出100萬(wàn)會(huì)員,考慮到公平性、相對(duì)分散、相對(duì)隨機(jī),不能重復(fù),抽取速度

要快。有一個(gè)random函數(shù),能產(chǎn)生0-9的隨機(jī)數(shù)。請(qǐng)寫(xiě)出你能想到的抽取措施?并寫(xiě)明步驟。

(淘寶)

用random函數(shù)產(chǎn)生兩個(gè)數(shù)xl、x2,那么會(huì)員號(hào)mod10()等于xlx2的話(huà),該會(huì)與就被選中,這

么每個(gè)會(huì)員的中獎(jiǎng)概率是l/100o

7、Va11cc和naw的區(qū)分?

8、++、一、sizeof(字符串、結(jié)構(gòu)體)(融通)

9、字符串函數(shù)的實(shí)現(xiàn)(strlen>slrcpy等)(網(wǎng)龍、億聯(lián)網(wǎng)絡(luò))

10、字符串以單詞逆序

11、CSTRING類(lèi)的某些基本函數(shù)的實(shí)現(xiàn)

12、DEBUG和RELESE兩種調(diào)試的區(qū)分

13、CONST的使用方法

我只要一聽(tīng)到被面試者說(shuō):"const意味著常數(shù)”,我就懂得我正在和一個(gè)業(yè)余者打交道。去年Dan

Saks已經(jīng)在他的文章里完全概括了const的所有使用方法,因此E5P(譯者:EmbeddedSystems

Programming)的每?位讀者應(yīng)當(dāng)非常熟悉const能做什么和不能做什么.假如你從沒(méi)有讀到那篇

文章,只要能說(shuō)出const意味著“只讀”就能夠了。盡管這個(gè)答案不是完全的答案,但我接收它作

為一個(gè)正確的答案。(假如你想懂得更詳細(xì)的答案,仔細(xì)讀一下Saks的文章吧。)

假如應(yīng)試者能正確回答這個(gè)問(wèn)題,我將問(wèn)他一個(gè)附加的問(wèn)題:

下面的申明都是什么意思?

constinta;

intconsta;

constint*a;

int*consta;

intconst*aconst;

前兩個(gè)的作用是同樣,a是一個(gè)常整型數(shù)。第三個(gè)意味著a是一個(gè)指向常整型數(shù)的指針(也就是,

整型數(shù)是不可修改的,但指針能夠)。第四個(gè)意思a是一個(gè)指向整型數(shù)的常指針(也就是說(shuō),指

針指向的整型數(shù)理?能夠修改的,但指針是不可修改的)。最后一個(gè)意味著a是一個(gè)指向常整型數(shù)

的常指針(也就是說(shuō),指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的,假如應(yīng)試

者能正確回答這些問(wèn)題,那么他就給我留下了一個(gè)好印象。順帶提一句,也許你也許會(huì)問(wèn),雖

然不用核心字const,乜還是能很輕易寫(xiě)出功效正確的程序,那么我為何還要如此看重核心字

const呢?我也如下的幾下理由:

1)核心字const的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,申明一個(gè)參數(shù)為常

量是為了告訴了用戶(hù)這個(gè)參數(shù)的應(yīng)用目標(biāo)。假如你曾花諸多時(shí)間清理其他人留下的垃圾,你就

會(huì)很快學(xué)會(huì)感激這點(diǎn)多出的信息。(當(dāng)然,懂得用const的程序員極少會(huì)留下的垃圾讓他人來(lái)清

理的。)

2)通過(guò)給優(yōu)化器某些附加的信息,使用核心字const也許能產(chǎn)生更緊湊的代碼。

3)合理地使用核心字const能夠使編譯器很自然地保于那些不希望被變化的參數(shù),預(yù)防其被無(wú)

意的代碼修改。簡(jiǎn)而言之,這么能夠減少bug的出現(xiàn)。

14、虛基類(lèi)抽象基類(lèi)的使用方法

);

classDl:virtualpublicB

{

);

classD2:virtualpublicB

(

);

classC:publicDI,publicD2

15、Java線程中的*1pep,yei1cl,nntify的作用和區(qū)分

sleep:讓線程睡眠

ycild:暫停目前正在執(zhí)行的線程對(duì)象,并執(zhí)行其他線程

noliry:喚醒線程

16、面對(duì)對(duì)象的特性有哪些方面

封裝、繼承、多態(tài)

17、ServletConfig對(duì)象與ServletContext對(duì)象的作用和區(qū)分

servletconfig對(duì)象能夠使用一個(gè)或多個(gè)<init-param>標(biāo)簽為servlet配備某些初始化參數(shù),

八配備了初始化參數(shù)后,web容器在創(chuàng)建seivlel實(shí)例對(duì)象時(shí),會(huì)自動(dòng)將這些初始化參數(shù)

封裝到ServletConfig對(duì)象中,并在調(diào)用servlet的init措施時(shí),將ServletConfig對(duì)象傳遞

給servleto進(jìn)而,程序員通過(guò)ServletConfig對(duì)象就能夠得到目前servlet的初始化參數(shù)信

息。

WEB容器在開(kāi)啟時(shí),它會(huì)為每個(gè)KEB應(yīng)用程序都創(chuàng)建一個(gè)對(duì)應(yīng)的ScrvletContext對(duì)象,它代表

目前web應(yīng)用o

ServletConfig對(duì)象中維護(hù)了ServletContext對(duì)象的引用,開(kāi)發(fā)人員在編寫(xiě)servlet時(shí),能夠

通過(guò)ServletConfig.getServletContext措施取得ServletContext對(duì)象。

18、編程:鏈表的反轉(zhuǎn)、兩個(gè)排好序鏈表結(jié)合成一個(gè)有序鏈表

19、寫(xiě)一個(gè)程序?qū)崿F(xiàn)字符串反轉(zhuǎn)。(新大陸)

20、多去旌意味著一個(gè)操作在不一樣的類(lèi)中能夠有不一樣的實(shí)現(xiàn)方式。(淘寶)

21、二分搜索算法

詳細(xì)能夠看下數(shù)據(jù)結(jié)構(gòu)的書(shū),P17-P18講的很詳細(xì)。

22、樹(shù):節(jié)點(diǎn)個(gè)數(shù)與樹(shù)高的計(jì)算

這個(gè)能夠用深搜和廣搜實(shí)現(xiàn),節(jié)點(diǎn)個(gè)數(shù)沒(méi)遇到一個(gè)還沒(méi)標(biāo)識(shí)的節(jié)點(diǎn)就加1并標(biāo)識(shí)該節(jié)點(diǎn)。把根

節(jié)點(diǎn)記為1,然后對(duì)于逐沒(méi)標(biāo)識(shí)的節(jié)點(diǎn)就等于他爸爸的值+1,這過(guò)程中出現(xiàn)的最大值就是樹(shù)高。

對(duì)于樹(shù)的某些定義數(shù)據(jù)結(jié)構(gòu)書(shū)上有P138-P139.

23、操作系統(tǒng):內(nèi)存的大小端,生產(chǎn)者、消費(fèi)者問(wèn)題

1-2.生產(chǎn)者消費(fèi)者問(wèn)題:

生產(chǎn)者與消費(fèi)者問(wèn)題能夠被描述為:一個(gè)有限緩沖區(qū)和兩類(lèi)線程,它們是生產(chǎn)者和消費(fèi)者,

生產(chǎn)者把產(chǎn)品放入緩沖區(qū),相反消費(fèi)者便是從緩沖區(qū)中拿走產(chǎn)品。

生產(chǎn)者在緩沖區(qū)滿(mǎn)時(shí)必須等候,直到緩沖區(qū)有空間才繼續(xù)生產(chǎn)。消費(fèi)者在緩沖區(qū)空時(shí)必須

等候,直到緩沖區(qū)中有產(chǎn)品才能繼續(xù)讀取。

P.V操作來(lái)處理進(jìn)程同時(shí)與進(jìn)程通信的問(wèn)題。

信號(hào)量是最早出現(xiàn)的用來(lái)處理進(jìn)程同時(shí)與互斥問(wèn)題的機(jī)制,包括一個(gè)稱(chēng)為信號(hào)量的變量及時(shí)

它進(jìn)行的兩個(gè)原語(yǔ)操作,信號(hào)量為一個(gè)整數(shù),我們?cè)O(shè)這個(gè)信號(hào)量為:sem。很顯然,我們要求在

sem不小于等于零的時(shí)候代表可供并發(fā)進(jìn)程使用的資源實(shí)體數(shù),sem小于零的時(shí)候,表示正在等

候使用臨界區(qū)的進(jìn)程的個(gè)數(shù)。依照這個(gè)標(biāo)準(zhǔn),在給信號(hào)量附初值的時(shí)候,我們顯然就要設(shè)初值

不小于零。

P操作和v操作是不可中斷的程序段,稱(chēng)為原語(yǔ)。P,V原語(yǔ)中P是荷蘭語(yǔ)的Passeren,相稱(chēng)

于英文的pass,V是荷蘭語(yǔ)的Verhoog,相稱(chēng)于英文中的incremneto

P原語(yǔ)操作的動(dòng)作是:

(1)sem減1:

(2)若sem減1后仍不小于或等于零,則進(jìn)程繼續(xù)執(zhí)行;

(3)若sem減1后小于零,則該進(jìn)程被阻塞后進(jìn)入與該信號(hào)相對(duì)應(yīng)的隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)

度。

V原語(yǔ)操作的動(dòng)作是:

(1)sem力口1;

(2)若相加成果不小于零,則進(jìn)程繼續(xù)執(zhí)行;

(3)若相加成果小于或等于零,則從該信號(hào)的等候隊(duì)列中喚醒一等候進(jìn)程,然后再返回原進(jìn)程

繼續(xù)執(zhí)行或復(fù)進(jìn)程調(diào)度,

需要提示大家一點(diǎn)就是P,V操作對(duì)于每一個(gè)進(jìn)程來(lái)說(shuō),都只能進(jìn)行一次。并且必為!成對(duì)使用。

且在P,V愿語(yǔ)執(zhí)行期間不允許有中斷的發(fā)生。

24、軟件工程的類(lèi)圖

類(lèi)圖(Classdiagram)是最常用的1ML圖,顯示出類(lèi)、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系;它

用于描述系統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)。

類(lèi)

(Class)一般包括3個(gè)組成部分。第一個(gè)是類(lèi)名;第二個(gè)是屬性(attributes);第三個(gè)

是該類(lèi)提供的措施。

Flight

flightNumber:Integer

departure!ime:Date

flightDuration:Minutes

delayFlight(numberOfMinutes:int):Date

getArrivalTime():Date

類(lèi)與類(lèi)間關(guān)系

常見(jiàn)的關(guān)系有:繼承(Generalization),關(guān)聯(lián)關(guān)系(Association),聚合關(guān)系(Aggregation),

組合關(guān)系(Composition),依賴(lài)關(guān)系(Dependency)。其中,聚合關(guān)系(Aggregation),

組合關(guān)系(Composition)屬于關(guān)聯(lián)關(guān)系(Association)0

詳見(jiàn)軟件工程教材。

25、C語(yǔ)言:c語(yǔ)言的核心字、運(yùn)算符的優(yōu)先級(jí)與結(jié)合性、宏、指針的了解、typedef等

3-1.c語(yǔ)言的核心字

核心字是由C語(yǔ)言要求的具備特定意義的字符串,一般也稱(chēng)為保存字。用戶(hù)定義的標(biāo)識(shí)

符不應(yīng)與核心字相同。

c語(yǔ)言核心字共32個(gè):

1、數(shù)據(jù)類(lèi)型核心字(12個(gè)):

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

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

(3).cnum:申明枚舉類(lèi)型

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

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

(6).long:申明長(zhǎng)整型變量或函數(shù)

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

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

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

(10).union:申明聯(lián)合數(shù)據(jù)類(lèi)型

(11).unsigned:申明無(wú)符號(hào)類(lèi)型變曷或函數(shù)

(12).void:申明函數(shù)無(wú)返回值或無(wú)參數(shù),申明無(wú)類(lèi)型指針(基本上就這三個(gè)作用)

2、控制語(yǔ)句核心字(12個(gè)):

A.循環(huán)語(yǔ)句

(1).for:一個(gè)循環(huán)語(yǔ)句(可意會(huì)不可言傳)

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

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

(4).break:跳出目前循環(huán)

(5).uunlinue:結(jié)束目前循環(huán),開(kāi)始下輪循環(huán)

B.條件語(yǔ)句

(D.if:條件語(yǔ)句

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

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

C.開(kāi)關(guān)語(yǔ)句

(1).switch:用于開(kāi)關(guān)語(yǔ)句

(2).case:開(kāi)關(guān)語(yǔ)句分支

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

D.

return:子程序返回語(yǔ)句(能夠帶參數(shù),也看不帶參數(shù))

3、存儲(chǔ)類(lèi)型核心字(4個(gè)):

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

(2).extern:申明變量是在其他文獻(xiàn)正申明(也能夠看做是引用變量)

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

(4).static:申明靜態(tài)變量

4、其他核心字(4個(gè)):

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

(2).sizeof:計(jì)算數(shù)據(jù)類(lèi)型長(zhǎng)度

(3).typedef:用以給數(shù)據(jù)類(lèi)型取別名(當(dāng)然尚有其他作用)

(4).volatile:闡明變量在程序執(zhí)行中可被隱含地變化

3-2.運(yùn)算符的優(yōu)先級(jí)與結(jié)合性、宏、指針的了解、typed"等

注:譚浩強(qiáng)那本書(shū)附錄很詳細(xì)。

c語(yǔ)言運(yùn)算符

1級(jí)優(yōu)先級(jí)左結(jié)合

0圓括號(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)算符

(類(lèi)型)類(lèi)型轉(zhuǎn)換運(yùn)算符

*指針運(yùn)算符

&地址與運(yùn)算符

sizeof長(zhǎng)度運(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é)合

II邏輯或運(yùn)算符

13級(jí)優(yōu)先級(jí)右結(jié)合

?:條件運(yùn)算符

14級(jí)優(yōu)先級(jí)右結(jié)合

=+=-=*=/=忙&==1=?=?=全為賦值運(yùn)算符

15級(jí)優(yōu)先級(jí)左結(jié)合

,逗號(hào)運(yùn)算符

26>網(wǎng)絡(luò):就。si模型

OSI七層模型簡(jiǎn)介

OSI是一個(gè)開(kāi)放性的通行系統(tǒng)互連參考模型,他是一個(gè)定義的非常好的協(xié)議規(guī)范。OSI模型有

7層結(jié)構(gòu),每層都能夠有幾個(gè)子層。

OSI的7層從上到下分別是

7應(yīng)用層6表示層5會(huì)話(huà)層4傳輸層3網(wǎng)絡(luò)層2數(shù)據(jù)缽路層1物理層

其中高層,既7、6^5、4層定義了應(yīng)用程序的功效,下面3層,既3、2、1層重要面對(duì)通過(guò)

網(wǎng)絡(luò)的端到端的數(shù)據(jù)流。下面我給大家簡(jiǎn)介一下這7層的功效:

1)應(yīng)用層:與其他計(jì)算機(jī)進(jìn)行通訊的一個(gè)應(yīng)用,它是對(duì)應(yīng)應(yīng)用程序的通信服務(wù)的。例如,

一個(gè)沒(méi)有通信功效的字處理程序就不能執(zhí)行通信的代碼,從事字處理工作的程序員也不關(guān)心OSI

的第7層。不過(guò),假如添加了一個(gè)傳輸文獻(xiàn)的選項(xiàng),那么字處理器的程序員就需要實(shí)現(xiàn)OSI的第

7層。示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。

2)表示層:這一層的重要功效是定義數(shù)據(jù)格式及加密。例如,F(xiàn)TP允許你選擇以二進(jìn)制

或A5n格式傳輸。假如選擇二進(jìn)制,那么發(fā)送方和接收方不變化文獻(xiàn)的內(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等。

3)會(huì)話(huà)層:他定義了怎樣開(kāi)始、控制和結(jié)束一個(gè)會(huì)話(huà),包括對(duì)多個(gè)雙向小時(shí)的控制和管

理,以便在只完成連續(xù)消息的一部分時(shí)能夠通知應(yīng)用,從而使表示層看到的數(shù)據(jù)是連續(xù)的,在某

些情況下,假如表示層收到了所有的數(shù)據(jù),則用數(shù)據(jù)代表表示層。示例:RPC,SQL等c

4)傳輸層:這層的功效包括是否選擇差錯(cuò)恢復(fù)協(xié)議還是無(wú)差錯(cuò)恢復(fù)協(xié)議,及在同一主機(jī)

上對(duì)不一樣應(yīng)用的數(shù)據(jù)流的輸入進(jìn)行復(fù)用,還包括對(duì)收到的次序不正確數(shù)據(jù)包的重新排序功效。

示例:TCP,UDP,SPXo

5)網(wǎng)絡(luò)層:這層對(duì)端到端的包傳輸進(jìn)行定義,他定義了能夠標(biāo)識(shí)所有結(jié)點(diǎn)的邏輯地址,

還定義了路由實(shí)現(xiàn)的方式和學(xué)習(xí)的方式。為了適應(yīng)最大傳輸單元長(zhǎng)度小于包長(zhǎng)度的傳輸介質(zhì),網(wǎng)

絡(luò)層還定義了怎樣將一個(gè)包分解成更小的包的分段措施。示例:IP,IPX等。

6)數(shù)據(jù)鏈路層:他定義了在單個(gè)鏈路上怎樣傳輸數(shù)據(jù)。這些協(xié)議與被討論的歌種介質(zhì)有

關(guān)。示例:ATM,FDDI等。

7)物理層:0SI的物理層規(guī)范是有關(guān)傳輸介質(zhì)的特性標(biāo)準(zhǔn),這些規(guī)范一般也參考了其他

組織制定的標(biāo)準(zhǔn)。連接頭、針、針的使用、電流、電流、編碼及光調(diào)制等都屬戶(hù)各種物理層規(guī)范

中的內(nèi)容。物理層常用多個(gè)規(guī)范完成對(duì)所有細(xì)節(jié)的定義。示例:Rj45,802.3等。

27、在一個(gè)工程中,假如一個(gè)文獻(xiàn)向要引用其他文獻(xiàn)中定義的一個(gè)變量或者函數(shù),請(qǐng)問(wèn)需要添

加什么核心字?答:extern。

28、volatile:闡明變量在程序執(zhí)行中可被隱含地變化

29、

voidfunc(void){

staticinti=0;

i++;

prinif("刎\n",i);

)

voidmainO{

func();

func();

請(qǐng)問(wèn)輸出是:

1

2

(核心考查static核心字)

30、指針的應(yīng)用方面,數(shù)組應(yīng)用,鏈表應(yīng)用。

31、某些簡(jiǎn)單的字符串處理函數(shù),排序函數(shù)(冒泡,快排等

32、智力游戲:

你面前有一對(duì)黑白棋,同色給你足夠多的黑白棋(以防不夠用)。你每次從這一堆黑(B)白(W)

棋中隨機(jī)抽取出2顆棋子,假猶如色則向這一堆中放入一顆黑棋,否則:RW)放入

一?顆白根.最后只剩余一顆.請(qǐng)問(wèn),最后狀態(tài)和初始狀態(tài)有和關(guān)系?

解:因?yàn)楫?dāng)抽取出RW時(shí),放入肌即W沒(méi)有減少,而抽取出WW時(shí),放入的是B,因此W只能成

對(duì)減少。因此成果與W的奇偶有關(guān),W為奇,則剩余M否則剩余B。

33、500\ltxt搜a(bǔ)bed串

34、封裝,繼承,多態(tài),析構(gòu)函數(shù),解析函數(shù)有關(guān)的題目

35、給你10萬(wàn)個(gè)核心詞,然后再給你某些文章(這些文章的大小為k的數(shù)最級(jí)的),然后把文

章中出現(xiàn)的核心詞過(guò)濾不確定的解答:先依照10萬(wàn)個(gè)核心詞構(gòu)建AC自動(dòng)機(jī),然后對(duì)每一篇文

章進(jìn)行一次AC自動(dòng)機(jī)處理,這么的空間復(fù)雜度是10萬(wàn)個(gè)核心詞的字典樹(shù)的空間消耗。他的下

一個(gè)問(wèn)題是怎樣進(jìn)行空間優(yōu)化,當(dāng)事人表示不懂。

36、編程題:

String[]str={“test",null,"“中國(guó)“,“福富軟件”}

設(shè)一全局變量*然后讓字符數(shù)組變成l*e*s*l中*國(guó),福*富*軟*件并輸出

答案:

源碼(僅供參考):

publicclassTest{

publicstaticvoidmain(String[]args){

String[]str="中國(guó)",null,"福富軟件","test"};

for(inti=0:i<str.length:i++)I

StringBuffersb=newStringBuffer();

sb.delete(0,sb.length());

sb.append(str[i]);

ifequals(str[i])||str[i]==nul1)

System.out.printing'*");

else{

intn=1;

intlen=str[i].length();

while((len-)>1){

sb.insert(n,;

n=n+2;

}//endwhile

System.out.println(sb);

}endelse

}//endfor

}//endmain

)//endclass

37、編程題:實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接工具類(lèi),并實(shí)現(xiàn)增刪改查的功效。

二、面試題(計(jì)算機(jī)1、3、4、7班提供)

1、Linux的存儲(chǔ)管理?(融通)

Linux采取祈求調(diào)頁(yè)方略進(jìn)行存儲(chǔ)管理。祈求調(diào)頁(yè)方略在內(nèi)外村之間往返傳遞的是存儲(chǔ)頁(yè)而不

是整個(gè)進(jìn)程,從而使得進(jìn)程的地址映射具備了更大的靈活性,且允許進(jìn)程的大小比可用物理存

儲(chǔ)空間大得多。

2、Linux的常用命令?(如:1s及其參數(shù))(融通)

3、數(shù)據(jù)庫(kù)索引:怎樣建立及其作用?(實(shí)達(dá)電腦)

索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一個(gè)結(jié)構(gòu),使用索引可迅速訪問(wèn)數(shù)據(jù)庫(kù)表中的

特定信息,索引好比是一本書(shū)前面的目錄,用之能加快數(shù)據(jù)庫(kù)的查詢(xún)速度

建立索引的一般格式:create[unique][cluster]index<索引名)on〈表名)(<列

名>【<次序)】[,<列名>[<次序〉]]…);

4、多進(jìn)程訪問(wèn)共有資源怎樣處理沖突?(實(shí)達(dá)電腦)

靠進(jìn)程間互斥來(lái)實(shí)現(xiàn)

5、UML的各種圖?(如請(qǐng)說(shuō)出幾個(gè)UML的圖)(融通)

用例圖,類(lèi)圖,對(duì)象圖,活動(dòng)圖,狀態(tài)圖,次序圖,林作圖,構(gòu)件圖,布署圖。

6、最擅長(zhǎng)的科目?接下來(lái)的問(wèn)題:用一句話(huà)概括該科目?及有關(guān)該科目標(biāo)某些問(wèn)題

7、在C語(yǔ)言里面用指針要注意哪些方面?(福富)

內(nèi)存泄露,內(nèi)存碎片,數(shù)組越界.

8、進(jìn)程間通信實(shí)現(xiàn)方式?(聯(lián)迪、實(shí)達(dá))

信號(hào),信號(hào)量,消息隊(duì)列,共享內(nèi)存,命名管道

9、Const、static、final,typeddefine等的使用方法?(網(wǎng)龍、實(shí)達(dá))

1)const是一個(gè)C語(yǔ)言的核心字,它限定一個(gè)變量不允許被變化。使用const在一定程度上

能夠提升程序的安全性和可靠性:

2)C++的static有兩種使用方法:面對(duì)過(guò)程程序設(shè)計(jì)中的static和面對(duì)對(duì)象程序設(shè)計(jì)

中的static。前者應(yīng)用于一般變量和函數(shù),不包括類(lèi);后者重要闡明static在類(lèi)中

的作用,面對(duì)過(guò)程程序設(shè)計(jì)中static使用方法重要有:靜態(tài)全局變量,靜態(tài)局部變

量,尚有靜態(tài)函數(shù),定義靜態(tài)函數(shù)的好處:靜態(tài)函數(shù)不能被其他文獻(xiàn)所用;其他文

獻(xiàn)中能夠定義相同名字的函數(shù),不會(huì)發(fā)生沖突;面對(duì)對(duì)象中的使用方法有:靜態(tài)數(shù)

據(jù)組員,靜態(tài)組員函數(shù)之類(lèi)的

3)Final:Java核心字final有“這是無(wú)法變化的”或者“終態(tài)的”含義,它能夠修飾

非抽象類(lèi)、非抽象類(lèi)組員措施和變量。能夠修飾的對(duì)象:final域final措施final

類(lèi)。finul類(lèi)不能被繼承,沒(méi)有了類(lèi),finul類(lèi)中的措施默認(rèn)是final的。final措

施不能被子類(lèi)的措施覆蓋,但能夠被繼承。final組員變量表示常量,只能被賦值一

次,賦值后值不再變化。final不能用于修飾結(jié)構(gòu)措施。

4)Typedef:為既有類(lèi)型創(chuàng)建一個(gè)新的名字,是一個(gè)在計(jì)算機(jī)編程語(yǔ)言中用來(lái)申明自定

義數(shù)據(jù)類(lèi)型,配合各種原右數(shù)據(jù)類(lèi)型來(lái)達(dá)成簡(jiǎn)化編程的目標(biāo)的類(lèi)型定義核心字。

5)Define:

a)簡(jiǎn)單的define定義SdefineMAXTIME1000

b)define的"函數(shù)定義""definemax(x,y)(x)〉(y)?(x):(y)等等

10、堆和棧的區(qū)分?(聯(lián)迪、實(shí)達(dá)、臺(tái)達(dá))

棧區(qū)(stack)一由編譯器自動(dòng)分派釋放,存儲(chǔ)函數(shù)的參數(shù)值,局部變量的值等。其操作方式類(lèi)

似于數(shù)據(jù)結(jié)構(gòu)中的棧。

堆區(qū)(heap)一一般由程序員分派釋放,若程序員不辭放,程序結(jié)束時(shí)也許由OS回收。注意它

與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分派方式倒是類(lèi)似于鏈表。詳細(xì)差異如下:

(1)申請(qǐng)方式:

stack:由系統(tǒng)自動(dòng)分派。例如,申明在函數(shù)中一個(gè)局部變量intb;系統(tǒng)自動(dòng)在棧中

為b開(kāi)辟空間;

heap:需要程序員自己申請(qǐng),并指明大小,在c中malloc函數(shù),如pl=(char

*)malloc(10);

(2)申請(qǐng)后系統(tǒng)的反應(yīng):

棧:只要棧的剩余空間不小于所申請(qǐng)空間,系統(tǒng)將為程序提供內(nèi)存,否則將報(bào)異常提示棧

溢出。

堆:首先應(yīng)當(dāng)懂得操作系統(tǒng)有一個(gè)統(tǒng)計(jì)空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序的申請(qǐng)時(shí),

會(huì)遍歷該鏈表,尋找第一個(gè)空間不小于所申請(qǐng)空間的堆結(jié)點(diǎn),然后將該結(jié)點(diǎn)從空閑結(jié)點(diǎn)鏈

表中刪除,并將該結(jié)點(diǎn)的空間分派給程序:

(3)申請(qǐng)大小的限制:

棧:在Windows下,棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存的區(qū)域。這句話(huà)的

意思是棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先要求好的,在WIND0臨下,棧的大小是2M

(也有的說(shuō)是IM,總之是一個(gè)編譯時(shí)就確定的營(yíng)數(shù)),假如申請(qǐng)的空間超出棧的剩余空

間時(shí),將提示overflow。因此,能從棧取得的竺間較小。

堆:堆是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域。這是因?yàn)橄到y(tǒng)是用鏈表來(lái)存儲(chǔ)

的空閑內(nèi)存地址的,自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向高地址。堆的大小

受限于計(jì)算機(jī)系統(tǒng)中有效的虛擬內(nèi)存。由此可見(jiàn),堆取得的空間比較靈活,也比較大。

(4)申請(qǐng)效率的比較:

棧由系統(tǒng)自動(dòng)分派,速度較快。但程序員是無(wú)法控制的。

堆是由new分派的內(nèi)存,一般速度比較慢,并且輕易產(chǎn)生內(nèi)存碎片,不過(guò)用起來(lái)最以

便.

(5)存儲(chǔ)內(nèi)容的比較:

棧:在函數(shù)調(diào)川時(shí),第一個(gè)進(jìn)棧的是主函數(shù)中后的下一條指令(函數(shù)調(diào)用語(yǔ)句的下一條可

執(zhí)行語(yǔ)句)的地址,然后是函數(shù)的各個(gè)參數(shù),在大多數(shù)的C編譯器中,參數(shù)是由右往左入

棧的,然后是函數(shù)中的局部變量。注意靜態(tài)變量是不入棧的。當(dāng)本次函數(shù)調(diào)用結(jié)束后,局

部變量先出棧,然后是參數(shù),最后棧頂指針指向最開(kāi)始存的地址,也就是主函數(shù)中的下一

條指令,程序由該點(diǎn)繼續(xù)運(yùn)行。

堆:一般是在堆的頭部用一個(gè)字節(jié)存儲(chǔ)堆的大小。堆中的詳細(xì)內(nèi)容有程序員安排。

11、全局變量和靜態(tài)變量的存儲(chǔ)方式?(實(shí)達(dá))

都存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū)

12、段式存儲(chǔ)和頁(yè)式存儲(chǔ)的原埋?(正泰電氣)

頁(yè)式管理:

首先,各進(jìn)程的虛擬空間被劃分為若干個(gè)長(zhǎng)度相等的頁(yè)。頁(yè)長(zhǎng)的劃分和內(nèi)存外存之間數(shù)據(jù)

傳輸速度以及內(nèi)存大小等有關(guān)。一般每個(gè)頁(yè)長(zhǎng)大約為14K,通過(guò)頁(yè)劃分之后,進(jìn)程的虛地址變

為頁(yè)號(hào)P與頁(yè)內(nèi)地址W所組成;除了把進(jìn)程的虛擬空間劃分為大小相等的頁(yè)之外,頁(yè)式管理還

把內(nèi)存空間也按頁(yè)的大小劃分為片或頁(yè)面。這些頁(yè)面為系統(tǒng)中的任一進(jìn)程所共享(除去操作系

統(tǒng)區(qū)外)。從而,與分區(qū)管理不一樣樣,分頁(yè)管理師,用戶(hù)進(jìn)程在內(nèi)存空間內(nèi)除了在每個(gè)頁(yè)面

內(nèi)地址連續(xù)之外,每個(gè)頁(yè)面之間不再連續(xù)。第一是實(shí)現(xiàn)了內(nèi)存中碎片的減少,因?yàn)槿我凰槠?/p>

會(huì)小于一個(gè)頁(yè)面,第二是實(shí)現(xiàn)了由連續(xù)存儲(chǔ)到非連續(xù)存儲(chǔ)這個(gè)飛躍,為在內(nèi)存中局部地,動(dòng)態(tài)

地存儲(chǔ)那些重復(fù)執(zhí)行或即將執(zhí)行的程序或數(shù)據(jù)段打下了基礎(chǔ)。

再者,頁(yè)式管理采取祈求調(diào)頁(yè)或預(yù)調(diào)頁(yè)技術(shù)式實(shí)現(xiàn)了內(nèi)外存儲(chǔ)器的統(tǒng)一管理。即內(nèi)存內(nèi)只

存儲(chǔ)那些常常被執(zhí)行或即將被執(zhí)行的頁(yè),而那些不常被執(zhí)行以及在近期內(nèi)不也許被執(zhí)行的頁(yè),

則存儲(chǔ)于外存中待需要時(shí)再調(diào)入。

段式管理:

段式管理是把程序按內(nèi)容或過(guò)程(函數(shù))關(guān)系提成段,每段有自己的名字,一個(gè)用戶(hù)作業(yè)

或進(jìn)程所包括的段對(duì)應(yīng)于一個(gè)二維線性虛擬空間,也就是一個(gè)二維虛擬存儲(chǔ)器。段式管理程序

以段為單位分派內(nèi)存,然后通過(guò)地質(zhì)映射機(jī)構(gòu)把段式虛擬地址轉(zhuǎn)換成實(shí)際的內(nèi)存物理地址。和

頁(yè)式管理同樣,段式管理也采取只把那些常常訪問(wèn)的段駐留內(nèi)存,而把那些在將來(lái)一段時(shí)間內(nèi)

不被訪問(wèn)的段放入外存,待需要時(shí)自動(dòng)調(diào)入的措施實(shí)現(xiàn)二維虛擬存儲(chǔ)器。

13、TCP三次握手協(xié)議?(臺(tái)達(dá))

在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采取三次握手建立一個(gè)連接。

第一次握手:建立連接時(shí),客戶(hù)端發(fā)送syn包(syn二j)到服務(wù)器,并進(jìn)入SYNSEND狀態(tài),等候

服務(wù)器確認(rèn);SYN:同時(shí)序列編號(hào)(SynchronizeSequenceNumbers)0

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶(hù)的SYN(ack=j+l),同時(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狀態(tài),完成三次握手。

完成三次握手,客戶(hù)端與服務(wù)器開(kāi)始傳送數(shù)據(jù)。

ReceiveSYN

(seq引

SendSYN

(seq=y,

ACK=x?1)

ReceiveACK

(ack=y*1)

14、

鼠標(biāo)、攝像頭、優(yōu)盤(pán)都是使用USB接口的設(shè)備,假如想要使用他們就必須連接在USB接口上,

這些設(shè)備的接口必須遵守USB接口的規(guī)范才能通過(guò)USB接口來(lái)使用。能夠這么說(shuō):接口是?套

規(guī)范,滿(mǎn)足這個(gè)規(guī)范的設(shè)備,我們就能夠把他們組裝到一起,從而實(shí)現(xiàn)該設(shè)備的功效。

接口類(lèi)型是指游戲設(shè)備與電視機(jī)或電腦主機(jī)之間的接口類(lèi)型。詳細(xì)有與電視機(jī)相連的AV接口,

與電腦主機(jī)相連的串口、USB接口、PCI接口、【-UNK(四針I(yè)EEE1394接口機(jī)連接聲卡的MIDI

接口、無(wú)線接口等等。

15、什么叫死鎖?怎樣預(yù)防和處理死鎖?(實(shí)達(dá))

所謂死鎖:是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中,因爭(zhēng)奪資源而導(dǎo)致的一個(gè)相互等候的現(xiàn)

象,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去。此時(shí)稱(chēng)系統(tǒng)處在死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這

些永遠(yuǎn)在相互等候的進(jìn)程稱(chēng)為死鎖進(jìn)程。因?yàn)橘Y源占用是互斥的,當(dāng)某個(gè)進(jìn)程提出申請(qǐng)資源后,

使得有關(guān)進(jìn)程在無(wú)外力協(xié)助下,永遠(yuǎn)分派不到必需的資源而無(wú)法繼續(xù)運(yùn)行,這就產(chǎn)生了一個(gè)特

殊現(xiàn)象死鎖。

產(chǎn)生死鎖的四個(gè)必要條件:

互斥條件(Mutualexclusion)

一個(gè)資源每次只能被一個(gè)進(jìn)程使用。

祈求與保持條件(占有等候)(Holdandwait)一個(gè)進(jìn)程因祈求資源而阻塞時(shí),對(duì)已取得的

資源保持不放。

不剝奪條件(不可搶占)(Nopre-emption)

進(jìn)程已取得的資源,在未使用完之前,不能強(qiáng)行剝奪。

循環(huán)等候條件(Circularwait)

若干進(jìn)程之間形成一個(gè)頭尾相接的循環(huán)等候資源關(guān)系v

這四個(gè)條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之

一不滿(mǎn)足,就不會(huì)發(fā)生死鎖。

死鎖的解除與預(yù)防

了解J'死鎖的原因,尤其是產(chǎn)生死鎖的四個(gè)必要條件,就能夠最大也許地防止、預(yù)防和解除死

鎖。因此,在系統(tǒng)設(shè)計(jì)、進(jìn)程調(diào)度等方面注意怎樣不讓這四個(gè)必要條件成立,怎樣確定資源的

合理分派算法,防止進(jìn)程永久占據(jù)系統(tǒng)資源。另外,也要預(yù)防進(jìn)程在處在等候狀態(tài)的情況下占

用資源,在系統(tǒng)運(yùn)行過(guò)程中,對(duì)進(jìn)程發(fā)出的每一個(gè)系統(tǒng)能夠滿(mǎn)足的資源申請(qǐng)進(jìn)行動(dòng)態(tài)檢查,并依

照檢食成果決定是否分派資源,若分派后系統(tǒng)也許發(fā)生死鎖,則不予分派,否則予以分派。因

此,對(duì)資源的分派要予以合理的規(guī)劃。

有序資源分派法

這種算法資源按某種規(guī)則系統(tǒng)中的所有資源統(tǒng)一編號(hào)1例如打印機(jī)為1、磁帶機(jī)為2、磁盤(pán)為3、

等等),申請(qǐng)時(shí)必須以上升的次序。系統(tǒng)要求申請(qǐng)進(jìn)程:

1、對(duì)它所必須使用的并且屬于同一類(lèi)的所有資源,必須一次申請(qǐng)完;

2、在申請(qǐng)不一樣類(lèi)資源時(shí),必須按各類(lèi)設(shè)備的編號(hào)依次申請(qǐng)。例如:進(jìn)程PA,使用資源的次

序是RI,R2;進(jìn)程PB,使用資源的次序是R2,R1;若采取動(dòng)態(tài)分派有也許形成環(huán)路條件,導(dǎo)

致死鎖。

采取有序資源分派法:R1的編號(hào)為1,R2的編號(hào)為2:PA:申請(qǐng)次序應(yīng)是:RI,R2PB:

申請(qǐng)次序應(yīng)是:RI,R2這么就破壞了環(huán)路條件,防止了死鎖的發(fā)生

銀行算法

防止死鎖算法中最芍代表性的算法是DijkstraE.W于1968年提出的銀行家算法:該算法

需要檢查申請(qǐng)者對(duì)資源的最大需求量,假如系統(tǒng)現(xiàn)存的各類(lèi)資源能夠滿(mǎn)足申請(qǐng)者的祈求,就滿(mǎn)

足申請(qǐng)者的祈求。這么申請(qǐng)者就可很快完成其計(jì)算,然后釋放它占用的資源,從而確保了系統(tǒng)

中的所有進(jìn)程都能完成,因此可防止死鎖的發(fā)生。

死鎖排除的措施

1、撤消陷丁死鎖的所有進(jìn)程;

2、逐一撤消陷于死鎖的進(jìn)程,直到死鎖不存在:

3、從陷于死鎖的進(jìn)程中逐一強(qiáng)迫放棄所占用的資源,直至死鎖消失。

4、從另外某些進(jìn)程那里強(qiáng)行剝奪足夠數(shù)量的資源分派給死鎖進(jìn)程,以解除死鎖狀態(tài)

16、網(wǎng)絡(luò)編程的次序?(臺(tái)達(dá))

*TCP編程服務(wù)器端步驟:

1.創(chuàng)建Socket,端口監(jiān)聽(tīng)

ServerSocketserverSocket=newServerSocket(4444);

2.接收客戶(hù)連接

SocketclientSocket=serverSocket.accept();

3.創(chuàng)建讀寫(xiě)對(duì)象

PrintWriterout=newPrintWriter(

clientSocket.getOutputStream(),t

rue):

BufferedReaderin=newBufferedReader(

newInputStreamReader(

clienlSocket.?etInputs

tream()));

4.利用讀寫(xiě)對(duì)象,與客戶(hù)端通信

StringinputLine,outputLine;

inputLine=in.readLineO;

out.piiiitln(uulputLine),

5.關(guān)閉對(duì)象

out.closeO;

in.closeO;

clientSocket.closeO;

scrvcrSocket.close();

*TCP編程客戶(hù)端步驟:

1.創(chuàng)建Socket

SocketechoSocket=newSocket("Hostname”,7);

2.創(chuàng)建讀寫(xiě)對(duì)象

PrintWriterout=newPrintWriter(echoSocket.getOutputStreamO,true);

BufferedReaderin=newBufferedReader(new1nputStreamReader(

echoSocket.getlnputStreamO)):

3.利用讀寫(xiě)對(duì)象,與服務(wù)器通信

StringuserString;

userString=in.readLineO;

out.printIn(userString);

4.關(guān)閉對(duì)象

out.closeO;

in.closeO;

euliuSockel.close0,

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

1.創(chuàng)建socket

DatagramSocketsocket=newDatagramSocket(4445);

2.接收客戶(hù)祈求

byte[]buf=newbyte[256];

Datagrampacketpacket=newDatagrampacket(buf,buf.length);

socket,receive(packet);

3.數(shù)據(jù)準(zhǔn)備

StringdString=newDate().toStringO;

buf=dString.getBytesO;

4.提取客戶(hù)端信息

InetAddressaddress=packet.getAddressO;

intport=packet.getPort():

5.發(fā)送數(shù)據(jù)

packet=newDatagramPackot(buf,buf.length,address,port);

socket,send(packet);

6.關(guān)閉對(duì)象

socket.closeO;

制DP編程客戶(hù)端步驟:

1.創(chuàng)建Socket

DalugiuiiiSuuketsvckel=newDcilcigxcunSoukel(),

2.準(zhǔn)備服務(wù)器信息

byte[]buf=newbyte[256];

InetAddressaddress=InetAddress.getByName(wHostnamev);

DatagramPacketpacketnewDatagramPacket(buf,

buf.length,address,4445);

3.向服務(wù)器發(fā)送祈求

socket,send(packet);

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

packet=newDatagramPacket(buf,buf.length);

socket.receive(packet);

5.關(guān)閉對(duì)象

socket,close():

17、給你一個(gè)字符串將所有嚴(yán)格遞增的子串輸出,現(xiàn)場(chǎng)寫(xiě)代碼實(shí)現(xiàn)。(淘寶)

intfront=-l;

for(inti=l;str[i]!=\0*;++i){

if(str[i]-str[i-l]==l){

if(front==-l){

front=i-l;

)

)

else{

if(front!=-l){

for(intj=front;j<i;++j){

printf(“4c”,str[j]);

printf("\n");

front=-l;

18、怎樣通過(guò)修改協(xié)議,使得服務(wù)器能一次性將客服端發(fā)過(guò)來(lái)的消息所有接收?(淘寶)

19、一個(gè)HR,兩個(gè)技術(shù)官和我這個(gè)應(yīng)聘者,請(qǐng)問(wèn)能夠用軟件工程措施劃分為幾個(gè)類(lèi)?(聯(lián)迪商

用)

20、要想和A和B兩個(gè)進(jìn)程中的一個(gè)通信,請(qǐng)問(wèn)用什么措施與A通信,而不與B混同?(聯(lián)迪

商用)

21、怎樣確保對(duì)同一數(shù)據(jù)訪問(wèn)的多個(gè)客戶(hù)端的數(shù)據(jù)一致?SQL語(yǔ)句怎么寫(xiě)?(淘寶)

22、NEW,DELETE,MALLOC和FREE的區(qū)分與聯(lián)系?(淘寶)

1.malloc與free是C++/C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù),new/delete是C++的運(yùn)算符。它們都可用于申

請(qǐng)動(dòng)態(tài)內(nèi)存和釋放內(nèi)存。

2.對(duì)于非內(nèi)部數(shù)據(jù)類(lèi)型的對(duì)象而言,光用malloc/free無(wú)法滿(mǎn)足動(dòng)態(tài)對(duì)象的要求。對(duì)象在創(chuàng)建

的同時(shí)要自動(dòng)執(zhí)行結(jié)構(gòu)函數(shù),對(duì)象在消亡之前耍自動(dòng)執(zhí)行析構(gòu)函數(shù)。因?yàn)閙alloc/free是庫(kù)

函數(shù)而不是運(yùn)算符,不在編譯器控制權(quán)限之內(nèi),不能夠把執(zhí)行結(jié)構(gòu)函數(shù)和析構(gòu)函數(shù)的任務(wù)

強(qiáng)加于malloc/freec

3.C++語(yǔ)言需要一個(gè)能完成動(dòng)態(tài)內(nèi)存分派和初始化工作的運(yùn)算符new,以一個(gè)能完成清理與釋

放內(nèi)存工作的運(yùn)算符delete。注意new/delete不是庫(kù)函數(shù)。

4.C++程序常常要調(diào)用C函數(shù),而C程序只能用malloc/free管理動(dòng)態(tài)內(nèi)存

23、進(jìn)程與線程的區(qū)分與聯(lián)系?(臺(tái)達(dá))

進(jìn)程概念

進(jìn)程是表示資源分派的基本單位,又是調(diào)度運(yùn)行的基本單位。例如,用戶(hù)運(yùn)行自己的程序,

系統(tǒng)就創(chuàng)建一個(gè)進(jìn)程,并為它分派資源,包括各種表格、內(nèi)存空間、磁盤(pán)空間、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è)用戶(hù)開(kāi)啟了一個(gè)窗口中的數(shù)據(jù)庫(kù)應(yīng)用程序,操作系統(tǒng)就將對(duì)數(shù)據(jù)庫(kù)的調(diào)用表示為一個(gè)進(jìn)程。

假設(shè)用戶(hù)要從數(shù)據(jù)庫(kù)中產(chǎn)生一份工資單報(bào)表,并傳到一個(gè)文獻(xiàn)中,這是一個(gè)子任務(wù);在產(chǎn)生工

資單報(bào)表的過(guò)程中,用戶(hù)乂能夠輸人數(shù)據(jù)庫(kù)查詢(xún)祈求,這乂是一個(gè)子任務(wù)。這么,操作系統(tǒng)則

把每個(gè)祈求一一工資單報(bào)表和新輸人的數(shù)據(jù)宜詢(xún)表示為數(shù)據(jù)庫(kù)進(jìn)程中的獨(dú)立的線程。線程能

夠在處理器上獨(dú)立調(diào)度次行,這么,在多處理器環(huán)境下就允許幾個(gè)線程各自在單獨(dú)處理器上進(jìn)

行。操作系統(tǒng)提供線程就是為了以便而有效地實(shí)現(xiàn)這種并發(fā)性

引入線程的好處

(1)易于調(diào)度。

(2)提升并發(fā)性。通過(guò)線程可以便有效地實(shí)現(xiàn)并發(fā)性。進(jìn)程可創(chuàng)建多個(gè)線程來(lái)執(zhí)行同一程序的

不一樣部分。(3)開(kāi)銷(xiāo)少。創(chuàng)建線程比創(chuàng)建進(jìn)程要快,所需開(kāi)銷(xiāo)極少。。

(4)利于充足發(fā)揮多處理器的功效。通過(guò)創(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í)行過(guò)程中,需要協(xié)作同時(shí)。不一樣進(jìn)程的線程間要利用消息通信的措施實(shí)現(xiàn)同時(shí)。

24、ARM開(kāi)發(fā)板的UBOOT移植與流程?(瑞芯微)

u-boot開(kāi)啟過(guò)程的兩個(gè)階段:

第一階段(stage1)是依賴(lài)于CPU體系結(jié)構(gòu)的代碼(如設(shè)備初始化代碼等),一般用匯編語(yǔ)言

來(lái)實(shí)現(xiàn)。重要進(jìn)行如下方面的設(shè)置:設(shè)置ARM進(jìn)入SVC模式、嚴(yán)禁IRQ和FIQ、關(guān)比看門(mén)狗、

屏蔽所有中斷。設(shè)置時(shí)鐘(FCLK,HCLK,PCLK)、清空I/Dcache,清空TLB、嚴(yán)禁MMU和cache、

配備內(nèi)存控制器、為搬運(yùn)代碼做準(zhǔn)備、搬移uboot映像到RAM中(使用copy」oop實(shí)現(xiàn))、分

派堆棧、清空bss段(使用clbss」實(shí)現(xiàn))。

第二階段(stage2)一般用C語(yǔ)言來(lái)實(shí)現(xiàn)。

startarmboot():

一系列初始化(cpu,板卡,中斷,串口,控制臺(tái)等),開(kāi)啟I/Dcache。初始化FLASH,依照

系統(tǒng)配備執(zhí)行其他初始化操作。打印LOG,使能中斷,獲取環(huán)境變量,初始化網(wǎng)卡。最后進(jìn)入

mainloopO函數(shù)。在mainloop函數(shù)中會(huì)檢查bootdelay和bootemd環(huán)境變量,假如bootemd

已經(jīng)設(shè)置過(guò),則在等候bootdelay個(gè)亳秒后會(huì)自動(dòng)執(zhí)行bootemd。假如等候過(guò)程中被用戶(hù)中斷

(ctl+c)或者bootemd沒(méi)有設(shè)置,則會(huì)等候用戶(hù)輸入命令。

25、Socket編程服務(wù)器與客戶(hù)端的實(shí)現(xiàn)?(臺(tái)達(dá))

網(wǎng)絡(luò)通信中的一個(gè)非常重要的概念就是套接字(Socket),簡(jiǎn)單地說(shuō),套接字就是網(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ò)地址,不過(guò),網(wǎng)絡(luò)地址只能確定進(jìn)程所在

的計(jì)算機(jī),而一臺(tái)計(jì)算機(jī)上也許同時(shí)有多個(gè)網(wǎng)絡(luò)進(jìn)程,還不能確定到底是其中的哪個(gè)進(jìn)程,由

此套接字中還要有其他的信息,那就是端口號(hào)(Port),在一臺(tái)計(jì)算機(jī)中,一個(gè)端口一次只能

分派給一個(gè)進(jìn)程,即端口號(hào)與進(jìn)程是一一對(duì)應(yīng)的關(guān)系,因此,端口號(hào)和網(wǎng)絡(luò)地址就能唯一地確

定Internet中的一個(gè)網(wǎng)絡(luò)進(jìn)程。

能夠以為:套接字:網(wǎng)絡(luò)地址+端口號(hào)

系統(tǒng)調(diào)用一個(gè)Socket()得到一個(gè)套接字描述符,然后就能夠通過(guò)他進(jìn)行網(wǎng)絡(luò)通信了0

套接字有諸多個(gè)類(lèi),最常用的就有兩種;流式套接字和數(shù)據(jù)報(bào)套接字。在Linux中分別稱(chēng)之

“SOCK_STREAM〃

和〃S()CK_DGRAM〃,他們分別使用不一樣的協(xié)議,流式套接字使用TCP協(xié)議,數(shù)據(jù)報(bào)套接字使

用UDP協(xié)議,下文以流式套接宇協(xié)議(lep)為例。

網(wǎng)絡(luò)上的絕大多數(shù)通信采取的都是客戶(hù)機(jī)/服務(wù)器機(jī)制(Client/Server),即服務(wù)器提供服務(wù),

客戶(hù)是這些服務(wù)的使用者,服務(wù)器首先創(chuàng)建一個(gè)Socket,然后將該Socket與本地地址/端II號(hào)

綁定(Bind()),成功之后就在對(duì)應(yīng)的Socket上監(jiān)聽(tīng)(Listen())。當(dāng)Accept(;函數(shù)捕捉

到一個(gè)連接服務(wù)(Connect())祈求時(shí),接收并生成一個(gè)新的Sockel,并通過(guò)這個(gè)新的Sockel

與客戶(hù)端通信,客戶(hù)端同樣也要?jiǎng)?chuàng)建一個(gè)Socket,將咳Socket與本地地址/端口號(hào)綁定,還需

要指定服務(wù)器端的地址與端口號(hào),隨即向服務(wù)器端發(fā)出Connect(),祈求被服務(wù)器端接收后,

能夠通過(guò)Socket與服務(wù)器端通信。

TCP是一個(gè)面對(duì)連接的、可靠的、雙向的通信數(shù)據(jù)流,說(shuō)他可靠,是因?yàn)樗褂?段握手協(xié)

議傳輸數(shù)據(jù),并且在傳輸時(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)文獻(xiàn)傳輸?shù)膶?shí)例。我們采取客

戶(hù)機(jī)/服務(wù)器模式通信時(shí),通信雙方發(fā)送/接收數(shù)據(jù)的工作流程如圖所示。

TCP服務(wù)器端

文獻(xiàn)傳輸就是基于客戶(hù)機(jī)/服務(wù)器模型而設(shè)計(jì)的,客戶(hù)機(jī)和服務(wù)器之間利用TCP建立

溫馨提示

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

評(píng)論

0/150

提交評(píng)論