大數(shù)據(jù)面試題(十一)
616.Linux 文件系統(tǒng)的文件都按其作用分門別類地放在相關(guān)的目錄中,對(duì)于外部設(shè)備文件,一般應(yīng)將其放在()目錄中
A./bin
B./etc
C./dev
D./lib
答案:C
617.在重新啟動(dòng)Linux 系統(tǒng)的同時(shí)把內(nèi)存中的信息寫入硬盤,應(yīng)使用()命令實(shí)現(xiàn)
A.# reboot
B.# halt
C.# reboot
D.# shutdown –r now
答案:D
618.網(wǎng)絡(luò)管理具備以下幾大功能:配置管理、()、性能管理、安全管理和計(jì)費(fèi)管理等
A.故障管理
B.日常備份管理
C.升級(jí)管理
D.發(fā)送
答案:A
619.關(guān)閉linux 系統(tǒng)(不重新啟動(dòng))可使用命令()
A.Ctrl+Alt+Del
B.halt
C.shutdown -r now
D.reboot
答案:B
620.實(shí)現(xiàn)從IP 地址到以太網(wǎng)MAC 地址轉(zhuǎn)換的命令為: ()
A.ping
B.ifconfig
C.arp
D.traceroute
答案:C
621.在vi 編輯器中的命令模式下,鍵入()可在光標(biāo)當(dāng)前所在行下添加一新行
A.< a>;
B.< o>;
C.< I>;
D.A
答案:B
622.在vi 編輯器中的命令模式下,刪除當(dāng)前光標(biāo)處的字符使用()命令
A.< x>;
B.< d>;< w>;
C.< D>;
D.< d>;< d>;
答案:A
623.在vi 編輯器中的命令模式下,重復(fù)上一次對(duì)編輯的文本進(jìn)行的操作,可使用()命令
A.上箭頭
B.下箭頭
C.< .>;
D.< *>;
答案:C
624.刪除文件命令為: ()
A.mkdir
B.rmdir
C.mv
D.traceroute
答案:D
625.退出交互模式的shell,應(yīng)鍵入()
A.< Esc>;
B.^q
C.exit
D.quit__
答案:C
算法分析及手寫代碼
626.判斷身份證:要么是15位,要么是18位,最后一位可以為字母,并寫出程序提出其中年月日。要求:
寫出合格的身份證的正則表達(dá)式,
^(\d{15}|\d{17}[\dx])$
寫程序提取身份證中的年月日

628.寫一個(gè)完整函數(shù),實(shí)現(xiàn)拷貝數(shù)組

629.寫一排序算法,輸入10個(gè)數(shù)字,以逗號(hào)分開,可根據(jù)參數(shù)選擇升序或者降序排序,須注明是何種排序算法。


630.判斷字符串是否是這樣的組成的,第一個(gè)字母,后面可以是字母、數(shù)字、下劃線、總長度為5-20。

631.已排好序的數(shù)組A,一般來說可用二分查找可以很快找到,現(xiàn)有一特殊數(shù)組A,它是循環(huán)遞增的,如a[]={17, 19 ,20, 25, 1, 4, 7, 9},在這樣的數(shù)組中找一元素,看看是否存在。請(qǐng)寫出你的算法,必要時(shí)可寫偽代碼,并分析其空間,時(shí)間復(fù)雜度。
思路說明:循環(huán)遞增數(shù)組有這么一個(gè)性質(zhì):以數(shù)組中間元素將循環(huán)遞增數(shù)組劃分為兩部分,則一部分為一個(gè)嚴(yán)格遞增數(shù)組,而另一部分為一個(gè)更小的循環(huán)遞增數(shù)組。當(dāng)中間元素大于首元素時(shí),前半部分為嚴(yán)格遞增數(shù)組,后半部分為循環(huán)遞增數(shù)組;當(dāng)中間元素小于首元素時(shí),前半部分為循環(huán)遞增數(shù)組;后半部分為嚴(yán)格遞增數(shù)組。
記要檢索的元素為e,數(shù)組的首元素為a[low],中間元素為a[mid],末尾元素為a[high]。則當(dāng)e等于a[mid] 時(shí),直接返回mid的值即可;當(dāng)e不等于a[mid] 時(shí):
1) a[mid] > a[low],即數(shù)組前半部分為嚴(yán)格遞增數(shù)組,后半部分為循環(huán)遞增數(shù)組時(shí),若key小于a[mid]并且不小于a[low]時(shí),則key落在數(shù)組前半部分;否則,key落在數(shù)組后半部分。
2) a[mid] < a[high],即數(shù)組前半部分為循環(huán)遞增數(shù)組,后半部分為嚴(yán)格遞增數(shù)組時(shí),若key大于a[mid]并且不大于a[high]時(shí),則key落在數(shù)組后半部分;否則,key落在數(shù)組前半部分。
這種方式的時(shí)間復(fù)雜度為:O(log(n)),空間復(fù)雜度為O(1)。

632.請(qǐng)編寫一個(gè)完整的程序,實(shí)現(xiàn)如下功能:從鍵盤輸入數(shù)字n,程序自動(dòng)計(jì)算n!并輸出。(注1:n!=1*2*3...*n, 注2:請(qǐng)使用遞歸實(shí)現(xiàn))
思路說明:因?yàn)閚! = (n-1)! * n,所以要求n!首先要求出(n-1)!,而(n-1)! = (n-1-1)! * (n-1),以此類推,直到n = 1為止。

633.請(qǐng)用遞歸的方法計(jì)算斐波那契數(shù)列的同項(xiàng)F(n),已知F0=0,F1=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*).
思路說明:斐波那契數(shù)列的排列是:0,1,1,2,3,5,8,13,21,34,55,89,144……,特別指出的是0不是第一項(xiàng)而是第0項(xiàng);因?yàn)镕(n)=F(n-1)+F(n-2),所以要求F(n)首先要求出F(n-1)和F(n-2),而F(n-1)=F(n-1-1)+F(n-1-2),以此類推,直到,F(2)=F(1)+F(0)為止,已知F(1) = 1,F(xiàn)(0) = 0。

634.現(xiàn)在有整數(shù)數(shù)組{11,66,22,0,55,32},請(qǐng)任意選擇一種排序算法,用Java程序?qū)崿F(xiàn)
冒泡思路說明:
(1) 最開始將數(shù)組看做一個(gè)無序數(shù)列(個(gè)數(shù)是數(shù)組的長度)與一個(gè)有序數(shù)列(0個(gè))的組合;
(2) 每一趟比較完后, 找到了無序數(shù)列的最大值, 將其放到有序數(shù)列中(有序數(shù)列個(gè)數(shù)+1);
(3) N個(gè)數(shù), 比較N-1趟;
(4) 每一趟挨個(gè)進(jìn)行比較:從數(shù)組的第一個(gè)元素開始, 到無序數(shù)列的最后一個(gè)為止;
(5) 如果前邊一個(gè)大于后邊一個(gè), 那么交換位置;
(6) 每趟比較的次數(shù)與趟數(shù)有關(guān);
(7) 根據(jù)每趟比較是否發(fā)生了交換判斷數(shù)據(jù)是否已經(jīng)有序,從而進(jìn)行優(yōu)化。

635.請(qǐng)根據(jù)注釋,編碼實(shí)現(xiàn)下面類的方法

思路說明:我們首先要讀懂這道題的意思:righString這個(gè)字符串是用來存儲(chǔ)一系列權(quán)限的,并且權(quán)限的取值只有兩種:有和沒有;在righString中使用字符‘1’表示有權(quán)限,字符空格‘ ’表示沒有權(quán)限。舉個(gè)例子:如果righString的長度為3,第一位表示對(duì)訂單系統(tǒng)是否有權(quán)限,第二位表示對(duì)人員管理系統(tǒng)是否有權(quán)限,第三位表示對(duì)庫存系統(tǒng)是否有權(quán)限。而方法中的int right參數(shù)則表示的是字符串的第幾位。
上邊這些搞明白之后,方法的編寫就簡單多了。

636.二分法查詢(遞歸實(shí)現(xiàn))
思路說明:假設(shè)在一個(gè)已經(jīng)排好序的有序序列(N個(gè)元素,升序排列),首先讓序列中的中間的元素與需要查找的關(guān)鍵字進(jìn)行比較,如果相等,則查找成功,否則利用中間位置將序列分成兩個(gè)子序列,如果待查找的關(guān)鍵字小于中間的元素,則在前一個(gè)子序列中同樣的方法進(jìn)一步查找,如果待查找的關(guān)鍵字大于中間的元素,則在后一個(gè)子序列中同樣的方法進(jìn)一步查找,重復(fù)以上過程一直到查找結(jié)束!

637.編寫一段Java程序,把一句英語中的每個(gè)單詞中的字母次序倒轉(zhuǎn),單詞次序保持不變,例入輸入為“There is a dog.”,輸出結(jié)果應(yīng)該是“erehT si a god.”要求不使用Java的庫函數(shù),例如String類的split,reverse方法。
函數(shù)形如:

思路說明:將字符串轉(zhuǎn)化成字符數(shù)組,然后根據(jù)數(shù)組中空格的位置判斷每個(gè)單詞所占的索引范圍,根據(jù)得到的索引將數(shù)組中的每個(gè)單詞逆序后拼接到新的字符串中。

638.手寫9x9乘法表,冒泡排序
9x9乘法表:

639.題目: 給定一個(gè)整數(shù)數(shù)組,找到是否該數(shù)組包含任何重復(fù)數(shù)字。你的函數(shù)應(yīng)該返回true只要有任何數(shù)字 在該數(shù)組中重復(fù)出現(xiàn),否則返回false。

640.給定一個(gè)數(shù)組nums, 寫一個(gè)函數(shù)來移動(dòng)所有0元素到數(shù)組末尾,同時(shí)維持?jǐn)?shù)組中非0元素的相對(duì)順序不變。要求不能申請(qǐng)額外的內(nèi)存空間,并且最小化操作次數(shù)。

641.給定一顆二叉樹,返回節(jié)點(diǎn)值得先序遍歷,請(qǐng)使用迭代(非遞歸)方式實(shí)現(xiàn)。

642.驗(yàn)證一棵樹是否為有效的二叉搜索樹BST

643.從一個(gè)鏈表中刪除節(jié)點(diǎn)
題目: 寫一個(gè)函數(shù)用于在一個(gè)單向鏈表中刪除一個(gè)節(jié)點(diǎn)(?非尾節(jié)點(diǎn)),前提是僅僅能夠訪問要?jiǎng)h除的那個(gè)節(jié)點(diǎn)。
比如給定鏈表1 -> 3 -> 5 -> 7 -> 9 -> 16,給定你值為3的那個(gè)節(jié)點(diǎn), 調(diào)?用你的函數(shù)后,鏈表變?yōu)?/p>
1 -> 5 -> 7 -> 9 -> 16。

644.二叉搜索樹BST中第Kth小的元素 題目:給定?個(gè)BST,寫一個(gè)函數(shù)kthSmallest來找到第kth小的元素

645.題目:給定含有n個(gè)整數(shù)的數(shù)組S,S中是否存在三個(gè)元素a,b,c使得a + b + c = 0? 找到所有這樣的三元 組,并且結(jié)果集中不包含重復(fù)的三元組。
比如,
S = [-1, 0, 1, 2, -1, -4],,
結(jié)果集為: [
[-1, 0, 1],
[-1, -1, 2]
]



646.子集問題
題目: 給定一個(gè)不包含相同元素的整數(shù)集合,nums,返回所有可能的子集集合。解答中集合不能包含重 復(fù)的子集。
比如,
nums = [1, 2, 3], ?一種解答為:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2], []
]

647.迭代方法實(shí)現(xiàn)二叉樹的先序遍歷:題目: 給定一顆?叉樹,返回節(jié)點(diǎn)值得先序遍歷,請(qǐng)使用迭代(非遞歸)方式實(shí)現(xiàn)。
比如, 給定二叉樹{1,#,2,3}, 返回 [1,2,3]

648.驗(yàn)證二叉搜索樹BST:題目: 驗(yàn)證一棵樹是否為有效的二叉搜索樹BST比如,二叉樹[2, 1, 3],返回true二叉樹[1, 2, 3], 返回false

649.編輯距離題目: 給定兩個(gè)單詞word1和word2,找到最小的操作步驟使得word1轉(zhuǎn)換成word2,每次操作算作一 步。你可以對(duì)單詞進(jìn)行以下三種操作:1)插入一個(gè)字符2)刪除一個(gè)字符3)替換一個(gè)字符
參考地址:http://www.cnblogs.com/masterlibin/p/5785092.html
650.買賣股票問題:題目: 你有一個(gè)數(shù)組,第i個(gè)元素表示第i天某個(gè)股票的價(jià)格,設(shè)計(jì)一個(gè)算法找到最大的利潤,并且你只能最多完成兩次交易。
參考地址:沒有完全理解的
http://www.mamicode.com/info-detail-1087177.html
http://www.mamicode.com/info-detail-1087177.html

651.[編程]任給n個(gè)整數(shù)和一個(gè)整數(shù)x。請(qǐng)計(jì)算n個(gè)整數(shù)中有多少對(duì)整數(shù)之和等于x。

652.[編程]請(qǐng)說明快速排序算法的設(shè)計(jì)思想和時(shí)間復(fù)雜度,并用高級(jí)語言寫出對(duì)整數(shù)數(shù)組進(jìn)行一趟快排的函數(shù)實(shí)現(xiàn)。
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。
設(shè)要排序的數(shù)組是A[0]……A[N-1],首先任意選取一個(gè)數(shù)據(jù)(通常選用數(shù)組的第一個(gè)數(shù))作為關(guān)鍵數(shù)據(jù),然后將所有比它小的數(shù)都放到它前面,所有比它大的數(shù)都放到它后面,這個(gè)過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩(wěn)定的排序算法,也就是說,多個(gè)相同的值的相對(duì)位置也許會(huì)在算法結(jié)束時(shí)產(chǎn)生變動(dòng)。
一趟快速排序的算法是:
1、設(shè)置兩個(gè)變量i、j,排序開始的時(shí)候:i=0,j=N-1;
2、以第一個(gè)數(shù)組元素作為關(guān)鍵數(shù)據(jù),賦值給key,即key=A[0];
3、從j開始向前搜索,即由后開始向前搜索(j--),找到第一個(gè)小于key的值A(chǔ)[j],將A[j]和A[i]互換;
4、從i開始向后搜索,即由前開始向后搜索(i++),找到第一個(gè)大于key的A[i],將A[i]和A[j]互換;
5、重復(fù)第3、4步,直到i=j; (3,4步中,沒找到符合條件的值,即3中A[j]不小于key,4中A[i]不大于key的時(shí)候改變j、i的值,使得j=j-1,i=i+1,直至找到為止。找到符合條件的值,進(jìn)行交換的時(shí)候i, j指針位置不變。另外,i==j這一過程一定正好是i+或j-完成的時(shí)候,此時(shí)令循環(huán)結(jié)束)。

653.對(duì)于一段形如:1,-1~3,1~15×3的輸入
輸入會(huì)依照以下規(guī)則:
1、所有輸入為整數(shù)、
2、“,”為分隔符
3、“~”表示一個(gè)區(qū)間,比如“-1~3”表示-1到3總共5個(gè)整數(shù),同時(shí)“~”前的數(shù)小于“~”后的數(shù):
4、“x”表示步長,“x3”指每3個(gè)整數(shù)一個(gè),比如“1~15×3”表示1,4,7,10,13;
根據(jù)以上得到的結(jié)果進(jìn)行打印,打印的規(guī)則為:
1、所有得到的整數(shù)按從小到大排列,以“,”分隔,不計(jì)重復(fù);
2、每行最多顯示3個(gè)整數(shù);
3、如果兩個(gè)整數(shù)是連續(xù)的,可以放在同一行,否則自動(dòng)換行。
例如對(duì)于輸入“1,-1~3,1~15×3”的輸出結(jié)果為:
-1,0,1,
2,3,4,
7,
10,
13


654.有兩個(gè)字符串:目標(biāo)串S=“s1s2.......sn”,模式串T="t1t2.......tm"。若存在T的每個(gè)字符一次和S中的一個(gè)連續(xù)字符序列相等,則匹配成功,返回T中第一個(gè)字符在S中的位置。否則匹配不成功,返回0。寫出你的算法,要求線性時(shí)間復(fù)雜度
答:
字符串匹配操作定義:
目標(biāo)串S="S0S1S2...Sn-1" , 模式串T=“T0T1T2...Tm-1”
對(duì)合法位置 0<= i <= n-m (i稱為位移)依次將目標(biāo)串的字串 S[i ... i+m-1] 和模式串T[0 ... m-1] 進(jìn)行比較,若:
1、S[i ... i+m-1] = T[0 ... m-1] , 則從位置i開始匹配成功,稱模式串 T 在目標(biāo)串 S 中出現(xiàn)。
2、S[i ... i+m-1] != T[0 ... m-1] ,則從位置i開始匹配失敗。
字符串匹配算法 —— Brute-Force 算法
字符串匹配過程中,對(duì)于位移i (i在目標(biāo)串中的某個(gè)位置),當(dāng)?shù)谝淮?Sk != Tj 時(shí),i 向后移動(dòng)1位 , 及 i = i+1,此時(shí)k退回到i+1位置 ;模式串要退回到第一個(gè)字符。該算法時(shí)間復(fù)雜度O(M*N),但是實(shí)際情況中時(shí)間復(fù)雜度接近于O(M + N),以下為Brute-Force算法的Java實(shí)現(xiàn)版本:

655.如何生成一個(gè)0-100的隨機(jī)整數(shù)?

656.請(qǐng)編寫一段Java程序?qū)蓚€(gè)有序數(shù)組合并成一個(gè)有序數(shù)組

657.在最佳情況下,以下哪個(gè)時(shí)間復(fù)雜度最高(D)
A.直接插入排序
B.直接選擇排序
C.冒泡排序
D.歸并排序
分析:答案: D
排序方法 最壞時(shí)間復(fù)雜度 最好時(shí)間復(fù)雜度 平均時(shí)間復(fù)雜度
直接插入 O(n2) O(n) O(n2)
簡單選擇 O(n2) O(n2) O(n2)
冒泡排序 O(n2) O(n) O(n2)
快速排序 O(n2) O(nlog2n) O(nlog2n)
堆排序 O(nlog2n) O(nlog2n) O(nlog2n)
歸并排序 O(nlog2n) O(nlog2n) O(nlog2n)
658.一個(gè)數(shù)組,元素為從0到m的整數(shù),判斷其中是否有重復(fù)元素,使用java語言編寫一個(gè)方法

659.某二叉樹的先序遍歷是12453,中序遍歷是42513,那么其后序遍歷是(A)
A.45231
B.42351
C.12345
D.54321

660.設(shè)一顆二叉樹中有3個(gè)葉子節(jié)點(diǎn),有八個(gè)度為1的節(jié)點(diǎn),則該二叉樹中總的節(jié)點(diǎn)數(shù)為()
A.12
B.13
C.14
D.15
分析:選b 子葉節(jié)點(diǎn)是度為零的節(jié)點(diǎn),而二叉樹的性質(zhì)可知,度是0的節(jié)點(diǎn)比度是2的節(jié)點(diǎn)數(shù)多1個(gè),所以度是2的節(jié)點(diǎn)為2個(gè),所以共有3+8+2=13
661.給出下面的二叉樹先序、中序、后序遍歷的序列?

答:先序序列:ABDEGHCF;中序序列:DBGEHACF;后序序列:DGHEBFCA。
補(bǔ)充:二叉樹也稱為二分樹,它是樹形結(jié)構(gòu)的一種,其特點(diǎn)是每個(gè)結(jié)點(diǎn)至多有二棵子樹,并且二叉樹的子樹有左右之分,其次序不能任意顛倒。二叉樹的遍歷序列按照訪問根節(jié)點(diǎn)的順序分為先序(先訪問根節(jié)點(diǎn),接下來先序訪問左子樹,再先序訪問右子樹)、中序(先中序訪問左子樹,然后訪問根節(jié)點(diǎn),最后中序訪問右子樹)和后序(先后序訪問左子樹,再后序訪問右子樹,最后訪問根節(jié)點(diǎn))。如果知道一棵二叉樹的先序和中序序列或者中序和后序序列,那么也可以還原出該二叉樹。
例如,已知二叉樹的先序序列為:xefdzmhqsk,中序序列為:fezdmxqhks,那么還原出該二叉樹應(yīng)該如下圖所示:

662.你知道的排序算法都哪些?用Java寫一個(gè)排序系統(tǒng)
答:穩(wěn)定的排序算法有:插入排序、選擇排序、冒泡排序、雞尾酒排序、歸并排序、二叉樹排序、基數(shù)排序等;不穩(wěn)定排序算法包括:希爾排序、堆排序、快速排序等。
由于字?jǐn)?shù)限制,后續(xù)內(nèi)容更加精彩,歡迎關(guān)注,整理不易,可否動(dòng)動(dòng)你的小手給小編來點(diǎn)更新的動(dòng)力,希望對(duì)你們會(huì)有幫助!~