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

下載本文檔

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

文檔簡介

1、筆試面試題匯總筆試題1、給你一個二叉樹的前序序列和中序序列,求其后續(xù)序列?(淘寶) 先看三個公式:PreOrder(T)=T 的根節(jié)點 +PreOrder (T 的左子樹)+PreOrder (T 的右子樹);InOrder(T)= InOrder(T的左子樹)+T的根節(jié)點+ InOrder (T的右子樹);PostOrder(T)= PostOrder( T 的左子樹)+ PostOrder ( T 的右子樹)+T 的根節(jié)點。2、3、根據(jù)以上的三給公式就可以很容易解決一下兩個問題:前序 +中序 后序;中序 +后序 前序。 當(dāng)然也可把樹畫出來,再求他的各種序列。Cache 替換算法命中率最高是

2、?(淘寶) 這個組成原理就有講到了,可以找組成原理的書看下,把各種替換算法在理解下,在書上的 P98-P99 講得很詳細。給一個順序表, 然后再給你一個碼值, 求在二分查找改碼值的比較次數(shù)? (淘寶)4、5、6、7、8、9、10、11、自己去做二分的查找的過程, 我們知道二分查找是 log(n) 的,一次比較次數(shù)大于 log(n) 肯定是 錯的。具體可以看下數(shù)據(jù)結(jié)構(gòu)的書, P17-P18 講的很詳細。 編譯程序中安排中間代碼生成的目的是?(淘寶) 把與機器相關(guān)的工作集中到目標(biāo)代碼生成階段,難度和工作量下降。便于移直和維護。利于優(yōu) 化。假設(shè)在 n 進制下, 17*456=8206 成立, n 是

3、多少?(淘寶) 從上面的等式中可以看到 8,則進制可定大于 8,因此可以從 9 進制開始枚舉,直至滿足等式, 就可以了。 (建議:先都轉(zhuǎn)換成十進制,在實現(xiàn)乘法運算)要從一億會員中抽出 100 萬會員,考慮到公平性、相對分散、相對隨機,不能重復(fù),抽取速度 要快。有一個 random 函數(shù),能產(chǎn)生(淘寶)用 random 函數(shù)產(chǎn)生兩個數(shù) 樣每個會員的中獎概率是Malloc 和new的區(qū)別?- 、 sizeof (字符串、 字符串函數(shù)的實現(xiàn)( strlen 、strcpy 等)(網(wǎng)龍、億聯(lián)網(wǎng)絡(luò)) 字符串 以單詞逆序CSTRING的一些基本函數(shù)的實現(xiàn)0-9 的隨機數(shù)。請寫出你能想到的抽取方法?并寫明步

4、驟。+、x1、x2, 1/100 。結(jié)構(gòu)體)那么會員號 mod100 等于 x1x2 的話,該會與就被選中。這融通)12、13、DEBUG和RELESE兩種調(diào)試的區(qū)另CONST勺用法我只要一聽到被面試者說:const意味著常數(shù)”,我就知道我正在和一個業(yè)余者打交道。去年DanSaks已經(jīng)在他的文章里完全概括了const的所有用法,因此ESP譯者:Embedded SystemsProgrammi ng)的每一位讀者應(yīng)該非常熟悉con st能做什么和不能做什么.如果你從沒有讀到那篇文章,只要能說出const意味著”只讀就可以了。盡管這個答案不是完全的答案,但我接受它作 為一個正確的答案。(如果你想

5、知道更詳細的答案,仔細讀一下Saks的文章吧。) 如果應(yīng)試者能正確回答這個問題,我將問他一個附加的問題:下面的聲明都是什么意思?const int a;int const a;const int *a;int * const a;int const * a con st;前兩個的作用是一樣,a是一個常整型數(shù)。第三個意味著a是一個指向常整型數(shù)的指針(也就是, 整型數(shù)是不可修改的,但指針可以)。第四個意思a是一個指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不可修改的,同時指針也是不可修改的

6、)。如果應(yīng)試者能正確回答這些問題,那么他就給我留下了一個好印象。順帶提一句,也許你可能會問,即 使不用關(guān)鍵字 con st,也還是能很容易寫出功能正確的程序,那么我為什么還要如此看重關(guān)鍵字const呢?我也如下的幾下理由:1)關(guān)鍵字const的作用是為給讀你代碼的人傳達非常有用的信息,實際上,聲明一個參數(shù)為常量是為了告訴了用戶這個參數(shù)的應(yīng)用目的。如果你曾花很多時間清理其它人留下的垃圾,你就 會很快學(xué)會感謝這點多余的信息。(當(dāng)然,懂得用con st的程序員很少會留下的垃圾讓別人來清理的。)2)通過給優(yōu)化器一些附加的信息,使用關(guān)鍵字con st也許能產(chǎn)生更緊湊的代碼。3)合理地使用關(guān)鍵字 cons

7、t可以使編譯器很自然地保護那些不希望被改變的參數(shù),防止其被無 意的代碼修改。簡而言之,這樣可以減少bug的出現(xiàn)。14、虛基類 抽象基類的用法如:答:在派生類繼承基類時,加上一個 virtual關(guān)鍵詞則為虛擬基類繼承,classderiveMrtual p ublic base;虛基類主要解決在多重繼承時,基類可能被多次繼承,虛基類主要提供一個基類給 派生類,如:classB;classDI: public B;classD2: public B;classC: public D1, public D2;這里C在D1,D2上繼承,但有兩個基類, 造成混亂。因而使用虛基類,即:classB;cla

8、ssD1:virtual p ublic B;classD2:virtual publicB15、16、; classC: public D1, public D2 Java 線程中的 sleep,yeild,notify sleep:讓線程睡眠 yeild :暫停當(dāng)前正在執(zhí)行的線程對象,并執(zhí)行其他線程 notify:喚醒線程面向?qū)ο蟮奶卣饔心男┓矫?封裝、繼承、多態(tài)的作用和區(qū)別17、ServletConfig 對象與ServletContext對象的作用和區(qū)別servlet configservlet配置了初始化參數(shù)后,封裝到ServletConfig對象中,給servlet。進而,程序員通

9、過息。WEB容器在啟動時,它會為每個 當(dāng)前web應(yīng)用。ServletCo nfig對象中維護了 ServletCo ntext對象的引用,開發(fā)人員在編寫 servlet 時,可以通過 ServletConfig.getServletContext 方法獲得 ServletContext對象。對象可以使用一個或多個標(biāo)簽為servlet配置一些初始化參數(shù),web容器在創(chuàng)建servlet實例對象時,會自動將這些初始化參數(shù) 并在調(diào)用servlet的in it方法時,將ServletCo nfig對象傳遞ServletCo nfig對象就可以得到當(dāng)前 servlet的初始化參數(shù)信WEB用程序都創(chuàng)建一個對

10、應(yīng)的ServletC on text對象,它代表1819、20、編程:鏈表的反轉(zhuǎn)、兩個排好序鏈表結(jié)合成一個有序鏈表 寫一個程序?qū)崿F(xiàn)字符串反轉(zhuǎn)。(新大陸)多態(tài)性意味著一個操作在不同的類中可以有不同的實現(xiàn)方式。(淘寶)21、二分搜索算法具體可以看下數(shù)據(jù)結(jié)構(gòu)的書,P17-P18講的很詳細。樹:節(jié)點個數(shù)與樹高的計算這個可以用深搜和廣搜實現(xiàn),節(jié)點個數(shù)沒遇到一個還沒標(biāo)記的節(jié)點就加1并標(biāo)記該節(jié)點。把根22、節(jié)點記為1,然后對于還沒標(biāo)記的節(jié)點就等于他父親的值+1,這過程中出現(xiàn)的最大值就是樹高。對于樹的一些定義數(shù)據(jù)結(jié)構(gòu)書上有P138-P139。23、操作系統(tǒng):內(nèi)存的大小端,生產(chǎn)者、消費者問題1-2.生產(chǎn)者消費者

11、問題:生產(chǎn)者與消費者問題可以被描述為:一個有限緩沖區(qū)和兩類線程,它們是生產(chǎn)者和消費者,生產(chǎn)者把產(chǎn)品放入緩沖區(qū),相反消費者便是從緩沖區(qū)中拿走產(chǎn)品。生產(chǎn)者在緩沖區(qū)滿時必須等待,直到緩沖區(qū)有空間才繼續(xù)生產(chǎn)。消費者在緩沖區(qū)空時必須 等待,直到緩沖區(qū)中有產(chǎn)品才能繼續(xù)讀取。P,V操作來解決進程同步與進程通信的問題。信號量是最早出現(xiàn)的用來解決進程同步與互斥問題的機制,包括一個稱為信號量的變量及對 它進行的兩個原語操作。信號量為一個整數(shù),我們設(shè)這個信號量為:sem=很顯然,我們規(guī)定在sem大于等于零的時候代表可供并發(fā)進程使用的資源實體數(shù),sem小于零的時候,表示正在等待使用臨界區(qū)的進程的個數(shù)。根據(jù)這個原則,在

12、給信號量附初值的時候,我們顯然就要設(shè)初值大 于零。P操作和v操作是不可中斷的程序段,稱為原語。P,V原語中P是荷蘭語的Passeren,相當(dāng)于英文的Pass, V是荷蘭語的Verhoog,相當(dāng)于英文中的incremnet 。P原語操作的動作是:sem 減 1;若sem減1后仍大于或等于零,則進程繼續(xù)執(zhí)行;若sem減1后小于零,則該進程被阻塞后進入與該信號相對應(yīng)的隊列中,然后轉(zhuǎn)進程調(diào)(1)(2)(3) 度。V原語操作的動作是:(1)sem 加 1 ;(2)若相加結(jié)果大于零,則進程繼續(xù)執(zhí)行;(3)若相加結(jié)果小于或等于零,則從該信號的等待隊列中喚醒一等待進程,然后再返回原進程 繼續(xù)執(zhí)行或轉(zhuǎn)進程調(diào)度。

13、需要提醒大家一點就是P,V操作對于每一個進程來說,都只能進行一次。而且必須成對使用。且在P,V愿語執(zhí)行期間不允許有中斷的發(fā)生。24、軟件工程的類圖類圖(Class diagram)是最常用的UML圖,顯示出類、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系;它 用于描述系統(tǒng)的結(jié)構(gòu)化設(shè)計。類(Class )一般包含3個組成部分。第一個是類名;第二個是屬性( attributes );第三個是該類提供的方法。FlightflightlMumber : Integer departure! i me : Date flightDuration : MinutescielayFfight (numberOfMinu

14、tes : int) : Date getArrivalTime ( ) : Date類與類間關(guān)系25、常見的關(guān)系有:繼承(Generalization組合關(guān)系(Comp ositio n ),依賴關(guān)系(Depen de ncy)。 組合關(guān)系(Composition )屬于關(guān)聯(lián)關(guān)系(Association 詳見軟件工程教材。C語言:c語言的關(guān)鍵字、運算符的優(yōu)先級與結(jié)合性、),關(guān)聯(lián)關(guān)系(Association ),聚合關(guān)系(Aggregation ), 其中,聚合關(guān)系(Aggregation ),宏、指針的理解、typedef等1、3-1.c 語言的關(guān)鍵字 關(guān)鍵字是由 C 語言規(guī)定的具有特定意義

15、的字符串,通常也稱為保留字。用戶定義的標(biāo)識 符不應(yīng)與關(guān)鍵字相同。 c 語言關(guān)鍵字共 32 個: 數(shù)據(jù)類型關(guān)鍵字( 12 個):(1) . char(2) . double(3) . enum(4) . float(5) . int(6) . long(7) . short(8) . signed(9) . struct(10) . union:聲明字符型變量或函數(shù):聲明雙精度變量或函數(shù):聲明枚舉類型:聲明浮點型變量或函數(shù): 聲明整型變量或函數(shù):聲明長整型變量或函數(shù):聲明短整型變量或函數(shù):聲明有符號類型變量或函數(shù):聲明結(jié)構(gòu)體變量或函數(shù):聲明聯(lián)合數(shù)據(jù)類型 :聲明無符號類型變量或函數(shù)聲明無類型指針

16、(基本上就這三個作用)2、控制語句關(guān)鍵字( 12 個):A. 循環(huán)語句(1). for:(2). do:(3). while(4). break(5). continueB. 條件語句(1).if:(2).else(3).goto一種循環(huán)語句 ( 可意會不可言傳) 循環(huán)語句的循環(huán)體 :循環(huán)語句的循環(huán)條件:跳出當(dāng)前循環(huán):結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)條件語句:條件語句否定分支(與 if 連用) :無條件跳轉(zhuǎn)語句(11) . unsigned (12). void :聲明函數(shù)無返回值或無參數(shù),3、C. 開關(guān)語句(1).switch :(2).case :(3).defaultD.return :子程

17、序返回語句(可以帶參數(shù),也看不帶參數(shù)) 存儲類型關(guān)鍵字( 4 個):(1).auto(2).extern(3).register(4). static其它關(guān)鍵字(1).const(2).sizeof(3).typedef(4).volatile4、用于開關(guān)語句開關(guān)語句分支:開關(guān)語句中的“其他”分支:聲明自動變量 一般不使用:聲明變量是在其他文件正聲明(也可以看做是引用變量):聲明積存器變量:聲明靜態(tài)變量( 4 個):聲明只讀變量:計算數(shù)據(jù)類型長度:用以給數(shù)據(jù)類型取別名(當(dāng)然還有其他作用):說明變量在程序執(zhí)行中可被隱含地改變3-2. 運算符的優(yōu)先級與結(jié)合性、宏、指針的理解、 typedef 等注

18、:譚浩強那本書附錄很詳細。c 語言運算符1 級優(yōu)先級 左結(jié)合() 圓括號 下標(biāo)運算符- 指向結(jié)構(gòu)體成員運算符. 結(jié)構(gòu)體成員運算符2 級優(yōu)先級 右結(jié)合! 邏輯非運算符 按位取反運算符+ 前綴增量運算符前綴增量運算符+ 正號運算符負號運算符( 類型 ) 類型轉(zhuǎn)換運算符* 指針運算符& 地址與運算符sizeof 長度運算符3 級優(yōu)先級 左結(jié)合* 乘法運算符/ 除法運算符% 取余運算符4 級優(yōu)先級 左結(jié)合+ 加法運算符減法運算符5 級優(yōu)先級 左結(jié)合 右移運算符6 級優(yōu)先級 左結(jié)合、 、= 關(guān)系運算符7 級優(yōu)先級 左結(jié)合= 等于運算符!= 不等于運算符8 級優(yōu)先級 左結(jié)合& 按位與運算符9 級優(yōu)先級 左

19、結(jié)合A按位異或運算符10 級優(yōu)先級 左結(jié)合| 按位或運算符11 級優(yōu)先級 左結(jié)合& 邏輯與運算符12 級優(yōu)先級 左結(jié)合| 邏輯或運算符13 級優(yōu)先級 右結(jié)合條件運算符14 級優(yōu)先級 右結(jié)合全為賦值運算符=+= -= *= /= %= &= A= |= =15 級優(yōu)先級 左結(jié)合 , 逗號運算符26、網(wǎng)絡(luò):就 osi 模型OSI 七層模型介紹OSI 是一個開放性的通行系統(tǒng)互連參考模型,7 層結(jié)構(gòu),每層都可以有幾個子層。OSI 的 7 層從上到下分別是7 應(yīng)用層 6 表示層 5 會話層 4 傳輸層他是一個定義的非常好的協(xié)議規(guī)范。 OSI 模型有網(wǎng)絡(luò)層 2 數(shù)據(jù)鏈路層 1 物理層其中高層,既 7、6、

20、5、4層定義了應(yīng)用程序的功能,下面3 層,既 3、2、1 層主要面向通過網(wǎng)絡(luò)的端到端的數(shù)據(jù)流。下面我給大家介紹一下這 7 層的功能:OSIOSI 的第1) 應(yīng)用層:與其他計算機進行通訊的一個應(yīng)用,它是對應(yīng)應(yīng)用程序的通信服務(wù)的。例如, 一個沒有通信功能的字處理程序就不能執(zhí)行通信的代碼,從事字處理工作的程序員也不關(guān)心 的第 7 層。但是,如果添加了一個傳輸文件的選項,那么字處理器的程序員就需要實現(xiàn)7 層。示例:tel net , HTT P,FTP, WWW,NFS,SMTP。2) 表示層:這一層的主要功能是定義數(shù)據(jù)格式及加密。例如,F(xiàn)TP 允許你選擇以二進制或 ASII 格式傳輸。如果選擇二進制

21、,那么發(fā)送方和接收方不改變文件的內(nèi)容。如果選擇ASII 格式,發(fā)送方將把文本從發(fā)送方的字符集轉(zhuǎn)換成標(biāo)準的 ASII 后發(fā)送數(shù)據(jù)。在接收方將標(biāo)準的 ASII 轉(zhuǎn)換成接收方計算機的字符集。示例:加密, ASII 等。3) 會話層:他定義了如何開始、控制和結(jié)束一個會話,包括對多個雙向小時的控制和管 理,以便在只完成連續(xù)消息的一部分時可以通知應(yīng)用,從而使表示層看到的數(shù)據(jù)是連續(xù)的,在某 些情況下,如果表示層收到了所有的數(shù)據(jù),則用數(shù)據(jù)代表表示層。示例:RPC SQL等。4) 傳輸層:這層的功能包括是否選擇差錯恢復(fù)協(xié)議還是無差錯恢復(fù)協(xié)議,及在同一主機 上對不同應(yīng)用的數(shù)據(jù)流的輸入進行復(fù)用,還包括對收到的順序不

22、對的數(shù)據(jù)包的重新排序功能。示 例: TCP,UDP,SPX。5) 網(wǎng)絡(luò)層:這層對端到端的包傳輸進行定義,他定義了能夠標(biāo)識所有結(jié)點的邏輯地址, 還定義了路由實現(xiàn)的方式和學(xué)習(xí)的方式。為了適應(yīng)最大傳輸單元長度小于包長度的傳輸介質(zhì),網(wǎng) 絡(luò)層還定義了如何將一個包分解成更小的包的分段方法。示例: IP,IPX 等。6)關(guān)。示例:7)數(shù)據(jù)鏈路層:他定義了在單個鏈路上如何傳輸數(shù)據(jù)。這些協(xié)議與被討論的歌種介質(zhì)有 ATM, FDDI 等。物理層: OSI 的物理層規(guī)范是有關(guān)傳輸介質(zhì)的特性標(biāo)準,這些規(guī)范通常也參考了其他 組織制定的標(biāo)準。連接頭、針、針的使用、電流、電流、編碼及光調(diào)制等都屬于各種物理層規(guī)范中的內(nèi)容。物

23、理層常用多個規(guī)范完成對所有細節(jié)的定義。示例:Rj45,802.3等。27、在一個工程中,如果一個文件向要引用其他文件中定義的一個變量或者函數(shù),請問需要添 加什么關(guān)鍵字?答: extern 。28、29、 void func(void) static int i = 0;volatile :說明變量在程序執(zhí)行中可被隱含地改變i+;printf(%dn, i);void main()func();func();請問輸出是:12 (關(guān)鍵考察 static 關(guān)鍵字)30、31、32、指針的應(yīng)用方面,數(shù)組應(yīng)用,鏈表應(yīng)用。 一些簡單的字符串處理函數(shù),排序函數(shù)(冒泡,快排等) 智力游戲:33、34、35、你

24、面前有一對黑白棋,同色給你足夠多的黑白棋(以防不夠用)。你每次從這一堆黑(B)白(W)棋中隨機抽取出 2顆棋子,如果同色(BB,WW,則向這一堆中放入一顆黑棋,否則(RW放入一顆白棋。最后只剩下一顆。請問,最終狀態(tài)和初始狀態(tài)有和關(guān)系?解:由于當(dāng)抽取出 RW寸,放入 W即W沒有減少,而抽取出 WWt放入的是B,因此W只能成 對減少。因此結(jié)果與 W的奇偶有關(guān),W為奇,則剩下 W否則剩下500Mtxt 搜 abcd 串 封裝,繼承,多態(tài),析構(gòu)函數(shù),解析函數(shù) 相關(guān)的題目 給你 10 萬個關(guān)鍵詞,然后再給你一些文章(這些文章的大小為 章中出現(xiàn)的關(guān)鍵詞過濾不確定的解答:先根據(jù) 10 萬個關(guān)鍵詞構(gòu)建B。k

25、的數(shù)量級的) ,然后把文AC自動機,然后對每一篇文章進行一次AC自動機處理,這樣的空間復(fù)雜度是10萬個關(guān)鍵詞的字典樹的空間消耗。他的下一個問題是如何進行空間優(yōu)化,當(dāng)事人表示不懂。36、編程題: String str = “test ” ,null, ”, ”中國” , ”福富軟件” 設(shè)一全局變量 * 然后讓字符數(shù)組變成 t*e*s*t中 *國,福 *富* 軟*件并輸出 答案:源碼 (僅供參考 ):public class Test public static void main(String args) String str = ,中國 ,null, 福富軟件 ,test;for(int i

26、= 0 ;i1)sb.insert(n, *); n = n+2;/end whileSystem.out.println(sb);37、1、2、8、end else/end for/end mai n/end class編程題:實現(xiàn)數(shù)據(jù)庫連接工具類,并實現(xiàn)增刪改查的功能。面試題(計算機1、3、4、7班提供)Linux的存儲管理?(融通)Linux采用請求調(diào)頁策略進行存儲管理。請求調(diào)頁策略在內(nèi)外村之間來回傳遞的是存儲頁而不 是整個進程,從而使得進程的地址映射具有了更大的靈活性,且允許進程的大小比可用物理存 儲空間大得多。Linux的常用命令?(如:ls及其參數(shù))(融通) 數(shù)據(jù)庫索引:如何建立及

27、其作用?(實達電腦) 索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的 特定信息,索引好比是一本書前面的目錄,用之能加快數(shù)據(jù)庫的查詢速度建立索引的一般格式:create uni que cluster index 名 【次序 】, 列名 次序);多進程訪問共有資源如何解決沖突?(實達電腦)靠進程間互斥來實現(xiàn)UML的各種圖?(如請說出幾種UML的圖)(融通)用例圖,類圖,對象圖,活動圖,狀態(tài)圖,順序圖,協(xié)作圖,構(gòu)件圖,部署圖。索引名 on 表名 ( 列最擅長的科目?接下來的問題: 用一句話概括該科目?及關(guān)于該科目的一些問題在C語言里面用指針要注意哪些方面?(福富

28、) 內(nèi)存泄露,內(nèi)存碎片,數(shù)組越界.進程間通信實現(xiàn)方式?(聯(lián)迪、實達)信號,信號量,消息隊列,共享內(nèi)存,命名管道Con st、static 、final 、typed、defi ne 等的用法?(網(wǎng)龍、實達)1)const是一個C語言的關(guān)鍵字,它限定一個變量不允許被改變。使用con st在一定程度上可以提高程序的安全性和可靠性;2)C+的static有兩種用法:面向過程程序設(shè)計中的static和面向?qū)ο蟪绦蛟O(shè)計中的static。前者應(yīng)用于普通變量和函數(shù),不涉及類;后者主要說明static 在類中的作用,面向過程程序設(shè)計中static用法主要有:靜態(tài)全局變量,靜態(tài)局部變量,還有靜態(tài)函數(shù),定義靜態(tài)函

29、數(shù)的好處:靜態(tài)函數(shù)不能被其它文件所用;其它文件中可以定義相同名字的函數(shù),不會發(fā)生沖突;面向?qū)ο笾械挠梅ㄓ校红o態(tài)數(shù)據(jù)成員,靜態(tài)成員函數(shù)之類的3)Fin al:Java關(guān)鍵字final 有這是無法改變的”或者終態(tài)的”含義,它可以修飾非抽象類、非抽象類成員方法和變量??梢孕揎椀膶ο?:final 域final 方法final類。final類不能被繼承,沒有子類,final類中的方法默認是final 的。final法不能被子類的方法覆蓋,但可以被繼承。final成員變量表示常量,只能被賦值一次,賦值后值不再改變。final不能用于修飾構(gòu)造方法。4)5)Define :a) 簡單的b) defi ned

30、efi ne 定義 #define MAXTIME 1000的函數(shù)定義”#define max(x,y) (x)(y)?(x):(y)等等10、堆和棧的區(qū)別?(聯(lián)迪、實達、臺達)Typ edef:為現(xiàn)有類型創(chuàng)建一個新的名字,是一種在計算機編程語言中用來聲明自定義數(shù)據(jù)類型,配合各種原有數(shù)據(jù)類型來達到簡化編程的目的的類型定義關(guān)鍵字。棧區(qū)(stack )由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類 似于數(shù)據(jù)結(jié)構(gòu)中的棧。OS回收。注意它堆區(qū)(heaP)般由程序員分配釋放,若程序員不釋放,程序結(jié)束時可能由 與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表。具體差別如下:(1) 申

31、請方式:stack :由系統(tǒng)自動分配。例如,聲明在函數(shù)中一個局部變量 為b開辟空間; heap:需要程序員自己申請,并指明大小,在c中malloc函數(shù),如*)malloc(10);(2) 申請后系統(tǒng)的反應(yīng):棧:只要棧的剩余空間大于所申請空間,系統(tǒng)將為程序提供內(nèi)存,否則將報異常提示棧溢出。int b;系統(tǒng)自動在棧中p1 = (char堆:首先應(yīng)該知道操作系統(tǒng)有一個記錄空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序的申請時, 會遍歷該鏈表,尋找第一個空間大于所申請空間的堆結(jié)點,然后將該結(jié)點從空閑結(jié)點鏈表中刪除,并將該結(jié)點的空間分配給程序;(3)申請大小的限制:棧:在 Windows下,棧是向低地址擴展的數(shù)據(jù)結(jié)

32、構(gòu),是一塊連續(xù)的內(nèi)存的區(qū)域。這句話的 意思是棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先規(guī)定好的,在WINDOW下,棧的大小是 2M(也有的說是1M總之是一個編譯時就確定的常數(shù)),如果申請的空間超過棧的剩余空 間時,將提示overflow。因此,能從棧獲得的空間較小。堆:堆是向高地址擴展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域。 這是由于系統(tǒng)是用鏈表來存儲的空閑內(nèi)存地址的, 自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向高地址。堆的大小受限于計算機系統(tǒng)中有效的虛擬內(nèi)存。由此可見,堆獲得的空間比較靈活,也比較大。(4) 申請效率的比較: 棧由系統(tǒng)自動分配,速度較快。但程序員是無法控制的。,不過用起來最方堆是由new分

33、配的內(nèi)存,一般速度比較慢,而且容易產(chǎn)生內(nèi)存碎片便.(5) 存儲內(nèi)容的比較:棧:在函數(shù)調(diào)用時,第一個進棧的是主函數(shù)中后的下一條指令 (函數(shù)調(diào)用語句的下一條可 執(zhí)行語句)的地址,然后是函數(shù)的各個參數(shù), 在大多數(shù)的C編譯器中,參數(shù)是由右往左入棧的,然后是函數(shù)中的局部變量。 注意靜態(tài)變量是不入棧的。 當(dāng)本次函數(shù)調(diào)用結(jié)束后, 局 部變量先出棧,然后是參數(shù),最后棧頂指針指向最開始存的地址,也就是主函數(shù)中的下一條指令,程序由該點繼續(xù)運行。堆:一般是在堆的頭部用一個字節(jié)存放堆的大小。堆中的具體內(nèi)容有程序員安排。11、全局變量和靜態(tài)變量的存儲方式?(實達) 都存放在靜態(tài)存儲區(qū)12、段式存儲和頁式存儲的原理?(正

34、泰電氣) 頁式管理:首先,各進程的虛擬空間被劃分為若干個長度相等的頁。頁長的劃分和內(nèi)存外存之間數(shù)據(jù)傳輸速度以及內(nèi)存大小等有關(guān)。一般每個頁長大約為 1-4K,經(jīng)過頁劃分之后,進程的虛地址變?yōu)轫撎朠與頁內(nèi)地址 W所組成;除了把進程的虛擬空間劃分為大小相等的頁之外,頁式管理還 把內(nèi)存空間也按頁的大小劃分為片或頁面。這些頁面為系統(tǒng)中的任一進程所共享(除去操作系 統(tǒng)區(qū)外)。從而,與分區(qū)管理不一樣,分頁管理師,用戶進程在內(nèi)存空間內(nèi)除了在每個頁面內(nèi) 地址連續(xù)之外,每個頁面之間不再連續(xù)。第一是實現(xiàn)了內(nèi)存中碎片的減少,因為任一碎片都會 小于一個頁面,第二是實現(xiàn)了由連續(xù)存儲到非連續(xù)存儲這個飛躍,為在內(nèi)存中局部地,

35、動態(tài)地 存儲那些反復(fù)執(zhí)行或即將執(zhí)行的程序或數(shù)據(jù)段打下了基礎(chǔ)。再者,頁式管理采用請求調(diào)頁或預(yù)調(diào)頁技術(shù)式實現(xiàn)了內(nèi)外存儲器的統(tǒng)一管理。即內(nèi)存內(nèi)只存放那些經(jīng)常被執(zhí)行或即將被執(zhí)行的頁,而那些不常被執(zhí)行以及在近期內(nèi)不可能被執(zhí)行的頁, 則存放于外存中待需要時再調(diào)入。段式管理:段式管理是把程序按內(nèi)容或過程(函數(shù))關(guān)系分成段,每段有自己的名字,一個用戶作業(yè) 或進程所包含的段對應(yīng)于一個二維線性虛擬空間,也就是一個二維虛擬存儲器。段式管理程序 以段為單位分配內(nèi)存,然后通過地質(zhì)映射機構(gòu)把段式虛擬地址轉(zhuǎn)換成實際的內(nèi)存物理地址。和 頁式管理一樣,段式管理也采用只把那些經(jīng)常訪問的段駐留內(nèi)存,而把那些在將來一段時間內(nèi) 不被訪

36、問的段放入外存,待需要時自動調(diào)入的方法實現(xiàn)二維虛擬存儲器。13、TCP三次握手協(xié)議?(臺達)在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個連接。第一次握手:服務(wù)器確認;建立連接時,客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進入 SYN_SEN狀態(tài),等待服務(wù)器收到syn包,必須確認客戶的 SYN(ac k=j+1 ),同時自己也發(fā)送一個SYNSYN 同步序列編號(Synchronize Sequenee Numbers)。第二次握手:包(syn=k),即SYN+AC包,此時服務(wù)器進入 SYN_REC狀態(tài);第三次握手:客戶端收到服務(wù)器的SYW ACK包,向服務(wù)器發(fā)送確認

37、包 ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進入ESTABLISHED狀態(tài),完成三次握手。完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)。14、HOSTReceive 5VHSend SYH (seq 書.ACK 列 + UReceive AC K (ach = y+1鼠標(biāo)、攝像頭、優(yōu)盤都是使用USB接口的設(shè)備,如果想要使用他們就必須連接在這些設(shè)備的接口必須遵守 USB接口的規(guī)范才能通過 USB接口來使用??梢赃@樣說: 規(guī)范,滿足這個規(guī)范的設(shè)備,我們就可以把他們組裝到一起,從而實現(xiàn)該設(shè)備的功能。15、USB接口上,接口是一套接口類型是指游戲設(shè)備與電視機或電腦主機之間的接口類型。具體有與

38、電視機相連的 與電腦主機相連的串口、接口、無線接口等等。AV接口,USB接口、PCI 接口、l-LINK(四針 IEEE 1394 接口)、連接聲卡的 MIDI什么叫死鎖?如何預(yù)防和解決死鎖?(實達) 所謂死鎖:是指兩個或兩個以上的進程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進下去。此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這 些永遠在互相等待的進程稱為死鎖進程。由于資源占用是互斥的,當(dāng)某個進程提出申請資源后, 使得有關(guān)進程在無外力協(xié)助下,永遠分配不到必需的資源而無法繼續(xù)運行,這就產(chǎn)生了一種特 殊現(xiàn)象死鎖。產(chǎn)生死鎖的四個必要條件:互斥條件(Mutual e

39、xclusion )一個資源每次只能被一個進程使用。請求與保持條件(占有等待)(Hold and wait )一個進程因請求資源而阻塞時,對已獲得的資源保持不放。不剝奪條件(不可搶占)(No P re-e mp tion )進程已獲得的資源,在未使用完之前,不能強行剝奪。循環(huán)等待條件(Circular wait )若干進程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。這四個條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發(fā)生死鎖。死鎖的解除與預(yù)防理解了死鎖的原因,尤其是產(chǎn)生死鎖的四個必要條件,就可以最大可能地避免、預(yù)防和解除死 鎖。所以,在系統(tǒng)設(shè)計、進程調(diào)度

40、等方面注意如何不讓這四個必要條件成立,如何確定資源的 合理分配算法,避免進程永久占據(jù)系統(tǒng)資源。此外,也要防止進程在處于等待狀態(tài)的情況下占 用資源,在系統(tǒng)運行過程中, 對進程發(fā)出的每一個系統(tǒng)能夠滿足的資源申請進行動態(tài)檢查, 據(jù)檢查結(jié)果決定是否分配資源,若分配后系統(tǒng)可能發(fā)生死鎖,則不予分配,否則予以分配 此,對資源的分配要給予合理的規(guī)劃。并根。因有序資源分配法這種算法資源按某種規(guī)則系統(tǒng)中的所有資源統(tǒng)一編號 (例如打印機為 1、磁帶機為 2、磁盤為 3、 等等),申請時必須以上升的次序。系統(tǒng)要求申請進程:1、對它所必須使用的而且屬于同一類的所有資源,必須一次申請完;2、在申請不同類資源時,必須按各類

41、設(shè)備的編號依次申請。例如:進程PA使用資源的順序是R1,R2;進程PB,使用資源的順序是 R2, R1 ;若采用動態(tài)分配有可能形成環(huán)路條件,造成 死鎖。采用有序資源分配法:R1的編號為1, R2的編號為2;PA申請次序應(yīng)是:R1, R2PB:申請次序應(yīng)是: R1, R2 這樣就破壞了環(huán)路條件,避免了死鎖的發(fā)生銀行算法 避免死鎖算法中最有代表性的算法是 Dijkstra E.W 于 1968年提出的銀行家算法:該算法 需要檢查申請者對資源的最大需求量,如果系統(tǒng)現(xiàn)存的各類資源可以滿足申請者的請求,就滿 足申請者的請求。這樣申請者就可很快完成其計算,然后釋放它占用的資源,從而保證了系統(tǒng) 中的所有進程

42、都能完成,所以可避免死鎖的發(fā)生。死鎖排除的方法1 、撤消陷于死鎖的全部進程;2、逐個撤消陷于死鎖的進程,直到死鎖不存在;3、從陷于死鎖的進程中逐個強迫放棄所占用的資源,直至死鎖消失。以解除死鎖狀態(tài)4、從另外一些進程那里強行剝奪足夠數(shù)量的資源分配給死鎖進程,16、網(wǎng)絡(luò)編程的順序?(臺達)*TCP 編程服務(wù)器端步驟 :1. 創(chuàng)建 Socket, 端口監(jiān)聽ServerSocket serverSocket2. 接受客戶連接Socket clientSocket3. 創(chuàng)建讀寫對象PrintWriter outnew ServerSocket(4444);serverSocket.accept();ne

43、w PrintWriter(clientSocket.getOutputStream(),rue);BufferedReader innew BufferedReader(new InputStreamReader(clientSocket.getInputStream();4. 利用讀寫對象 , 與客戶端通信 String inputLine, outputLine; inputLine = in.readLine(); out.println(outputLine);5. 關(guān)閉對象 out.close(); in.close(); clientSocket.close(); serverS

44、ocket.close();*TCP 編程客戶端步驟 :1. 創(chuàng)建 Socketnew Socket(Hostname,Socket echoSocket2. 創(chuàng)建讀寫對象PrintWriter outnew PrintWriter(echoSocket.getOutputStream(),true);BufferedReader innew BufferedReader(new InputStreamReader(echoSocket.getInputStream();3. 利用讀寫對象 , 與服務(wù)器通信 String userString;userString = in.readLine(

45、); out.println(userString);4. 關(guān)閉對象 out.close(); in.close(); echoSocket.close();*UDP編程服務(wù)器端步驟1. 創(chuàng)建 socket DatagramSocket2. 接受客戶請求 byte buf = DatagramPacketsocketnew DatagramSocket(4445);new byte256;packet = new DatagramPacket(buf, buf.length);socket.receive(packet);3. 數(shù)據(jù)準備String dString = new Date().t

46、oString(); buf = dString.getBytes();4. 提取客戶端信息InetAddress addresspacket.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)建 Socket DatagramSocket socket2. 準備服務(wù)器信息new DatagramSocket();

47、byte buf = new byte256;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)閉對象17、socket.close();給你一個字符串將所有嚴

48、格遞增的子串輸出, 現(xiàn)場寫代碼實現(xiàn)。(淘寶)int front=-1;for(int i=1;stri!=0;+i) if(stri-stri-1=1)if(front=-1)front=i-1;elseif(front!=-1)for(int j=front;ji;+j)printf(%c,strj);printf(n);front=-1;18、如何通過修改協(xié)議, 使得服務(wù)器能一次性將客服端發(fā)過來的消息全部接收?淘寶)19、一個HR兩個技術(shù)官和我這個應(yīng)聘者,請問可以用軟件工程方法劃分為幾個類?聯(lián)迪商用)20、21、要想和A和B兩個進程中的一個通信,請問用什么方法與A通信,而不與商用)如何確保

49、對同一數(shù)據(jù)訪問的多個客戶端的數(shù)據(jù)一致?B 混淆?(聯(lián)迪SQL 語句怎么寫?(淘寶)2、NEW,DELETE,MALLOC FREE的區(qū)別與聯(lián)系?(淘寶)1.malloc與free是C+/C語言的標(biāo)準庫函數(shù), new/delete是C+的運算符。它們都可用于申 請動態(tài)內(nèi)存和釋放內(nèi)存。對于非內(nèi)部數(shù)據(jù)類型的對象而言,光用 malloc/free 無法滿足動態(tài)對象的要求。對象在創(chuàng)建 的同時要自動執(zhí)行構(gòu)造函數(shù),對象在消亡之前要自動執(zhí)行析構(gòu)函數(shù)。由于malloc/free 是庫函數(shù)而不是運算符,不在編譯器控制權(quán)限之內(nèi),不能夠把執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務(wù) 強加于 malloc/free 。C

50、+語言需要一個能完成動態(tài)內(nèi)存分配和初始化工作的運算符new,以一個能完成清理與釋放內(nèi)存工作的運算符 delete。注意new/delete不是庫函數(shù)。C+程序經(jīng)常要調(diào)用 C函數(shù),而C程序只能用 malloc/free管理動態(tài)內(nèi)存23、進程與線程的區(qū)別與聯(lián)系?(臺達) 進程概念進程是表示資源分配的基本單位,又是調(diào)度運行的基本單位。例如,用戶運行自己的程序, 系統(tǒng)就創(chuàng)建一個進程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、I/O設(shè)備等。然后,把該進程放人進程的就緒隊列。進程調(diào)度程序選中它,為它分配CPU以及其它有關(guān)資源,該進程才真正運行。所以,進程是系統(tǒng)中的并發(fā)執(zhí)行的單位。在Mac Wind

51、ows NT等采用微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)中,進程的功能發(fā)生了變化:它只是資 源分配的單位,而不再是調(diào)度運行的單位。在微內(nèi)核系統(tǒng)中,真正調(diào)度運行的基本單位是線程。 因此,實現(xiàn)并發(fā)功能的單位是線程。線程概念操作系統(tǒng)就將對數(shù)據(jù)庫的調(diào)用表示為一個進程。線程是進程中執(zhí)行運算的最小單位,亦即執(zhí)行處理機調(diào)度的基本單位。如果把進程理解為 在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多可能的子任務(wù)之一。例如, 假設(shè)用戶啟動了一個窗口中的數(shù)據(jù)庫應(yīng)用程序, 假設(shè)用戶要從數(shù)據(jù)庫中產(chǎn)生一份工資單報表,并傳到一個文件中,這是一個子任務(wù);在產(chǎn)生工 資單報表的過程中,用戶又可以輸人數(shù)據(jù)庫查詢請求,這又是一個子任務(wù)。

52、這樣,操作系統(tǒng)則 把每一個請求一一工資單報表和新輸人的數(shù)據(jù)查詢表示為數(shù)據(jù)庫進程中的獨立的線程。線程可 以在處理器上獨立調(diào)度執(zhí)行,這樣,在多處理器環(huán)境下就允許幾個線程各自在單獨處理器上進 行。操作系統(tǒng)提供線程就是為了方便而有效地實現(xiàn)這種并發(fā)性 引入線程的好處(1) 易于調(diào) (2) 提高并發(fā)性。通過線程可方便有效地實現(xiàn)并發(fā)性。進程可創(chuàng)建多個線程來執(zhí)行同一程序的不同部分。(3)開銷少。創(chuàng)建線程比創(chuàng)建進程要快,所需開銷很少。(4 )利于充分發(fā)揮多處理器的功能。通過創(chuàng)建多線程進程(即一個進程可具有兩個或更多個線 程),每個線程在一個處理器上運行,從而實現(xiàn)應(yīng)用程序的并發(fā)性,使每個處理器都得到充分運 行。

53、進程和線程的關(guān)系(1) 一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程。(2 )資源分配給進程,同一進程的所有線程共享該進程的所有資源。(3 )處理機分給線程,即真正在處理機上運行的是線程。(4) 線程在執(zhí)行過程中,需要協(xié)作同步。不同進程的線程間要利用消息通信的辦法實現(xiàn)同步。24、ARM開發(fā)板的UBOOT移植與流程?(瑞芯微)u-boot啟動過程的兩個階段:第一階段(stage 1)是依賴于CPU體系結(jié)構(gòu)的代碼(如設(shè)備初始化代碼等),一般用匯編語言來實現(xiàn)。主要進行以下方面的設(shè)置:設(shè)置屏蔽所有中斷。設(shè)置時鐘(FCLK,HCLK, PCLK)、清空配置內(nèi)存控制器、為搬運代碼做準備、搬移uboot配堆棧、清空bss段(使用clbss_l實現(xiàn))。第二階段(stage 2)通常用C語言來實現(xiàn)。start_armboot():一系列初始化(cpu,板卡,中斷,串口,控制臺等)ARM進

溫馨提示

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

最新文檔

評論

0/150

提交評論