可可簡歷網

位置:首頁 > 面試 > 面試經驗

java職位面試10篇

java職位面試10篇
面試經驗1面試公司:盛大 職位:java
簡單簡單簡單一、選擇題:
5:既希望較快的查詢又便於線性表動態變化的查詢方法是【】?
A:順序查詢 B:折半查詢 C:索引順序查詢 D:雜湊法查詢
ans:C
詳細解釋:
查詢是在大量的資訊中尋找一個特定的資訊元素,在計算機應用中,查詢是常用的基本運算,例如編譯程式中符號表的查詢。用關鍵字標識一個數據元素,查詢時根據給定的某個值,在表中確定一個關鍵字的值等於給定值的記錄或資料元素。在計算機中進行查詢的方法是根據表中的記錄的組織結構確定的。
順序查詢也稱為線形查詢,從資料結構線形表的一端開始,順序掃描,依次將掃描到的結點關鍵字與給定值k相比較,若相等則表示查詢成功;若掃描結束仍沒有找到關鍵字等於k的結點,表示查詢失敗。
二分查詢要求線形表中的結點按關鍵字值升序或降序排列,用給定值k先與中間結點的關鍵字比較,中間結點把線形表分成兩個子表,若相等則查詢成功;若不相等,再根據k與該中間結點關鍵字的比較結果確定下一步查詢哪個子表,這樣遞迴進行,直到查詢到或查詢結束髮現表中沒有這樣的結點。
【優缺點】折半查詢法的優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。
分塊查詢也稱為索引順序查詢,把線形分成若干塊,在每一塊中的資料元素的儲存順序是任意的,但要求塊與塊之間須按關鍵字值的大小有序排列,還要建立一個按關鍵字值遞增順序排列的索引表,索引表中的一項對應線形表中的一塊,索引項包括兩個內容:① 鍵域存放相應塊的最大關鍵字;② 鏈域存放指向本塊第一個結點的指標。分塊查詢分兩步進行,先確定待查詢的結點屬於哪一塊,然後在塊內查詢結點。
雜湊表查詢是通過對記錄的關鍵字值進行運算,直接求出結點的地址,是關鍵字到地址的直接轉換方法,不用反覆比較。假設f包含n個結點,Ri為其中某個結點(1≤i≤n),keyi是其關鍵字值,在keyi與Ri的地址之間建立某種函式關係,可以通過這個函式把關鍵字值轉換成相應結點的地址,有:addr(Ri)=H(keyi),addr(Ri)為雜湊函式。
演算法詳細比較查詢演算法優點缺點運算效率順序查詢最簡單的,查詢表的儲存結構:既適用於順序儲存結構,也適用於鏈式儲存結構。 順序查詢效率低,當n過大時,應避免使用。
1若查詢成功:(n+1)/2;
2若查詢失敗:n+1;
3設查詢成功的概率為p,查詢不成功的概率為q=(1-p),則平均比較次數為:E(n)=p*(n+1)/2+q*(n+1)=p*(n+1)/2+(1-p)*(n+1)=(n+1)*(1-p/2);
4若成功和失敗的概率各佔50%,平均效能:3*(n+1)/4;
二分查詢查詢速度快; 但表必須有序。 頻繁插入和刪除不方便,二分法查詢適於表中元素很少變化而查詢頻繁的情況。
二分法查詢的過程可用二叉樹來描述,中間結點是二叉樹的根,左子表相當於左子樹,右子表相當於右子樹,由此得到的二叉樹便為描述二分法查詢的判定樹。二分法查詢的過程是走了一條從根結點到葉子結點的過程,不論查詢成功與失敗,查詢長度均不超過樹的高度,h= log2(n+1) ,那個2是log的下綴;
等概率時,折半查詢的平均長度為:;
當n很大時,ASL = log2(n+1)-1。
分塊查詢(索引順序查詢)分塊查詢綜合了順序查詢和二分法查詢的優點,既有動態結構,又適於快速查詢。
設待查詢檔案有n個記錄,平均分成b塊,每塊有s個記錄。若只考慮查詢成功的概率,且在塊內和索引表中均用順序查詢,則平均查詢長度為:
E(n)=Eb+Ew=(b+1)/2 +(s+1)/2 =(s^2+2*s+n)/(2*s);
若s= √n,則平均查詢長度取最小值:√n+1
若對索引表採用二分法查詢,則平均查詢長度為:
E(n)=Eb+Ew=㏒2(b+1) +(s+1)/2
雜湊表查詢不論雜湊表中有多少資料,插入和刪除(有時包括側除)只需要接近常量的時間即0(1)的時間級
雜湊表也有一些缺點它是基於陣列的,陣列建立後難於擴充套件某些雜湊表被基本填滿時,效能下降得非常嚴重,所以程式雖必須要清楚表中將要儲存多少資料(或者準備好定期地把資料轉移到更大的雜湊表中,這是個費時的過程)。
要面臨衝突處理問題。

基本是:O(1)
6:分別以下列構造二叉排序樹,與用其他三個序列所構造的結果不同的是【】?
A:(100,80,90,60,120,110,130)
B:(100,120,110,130,80,60,90)
C:(100,60,80,90,120,110,130)
D:(100,80,60,90,120,130,110)
ans:C
這道題我答錯了,我選得B,回來一看應該選擇C項,有餘長時間沒有看過作業系統了,好多東西我都忘記了,這道題真真的是蒙的。
詳細解釋:
一、二叉排序樹的定義
二叉排序樹或者是空樹,或者是具有如下性質的二叉樹:
1、左子樹上所有結點的資料值均小於根結點的資料值;
2、右子樹上所有結點的資料值均大於或等於根結點的資料值;
3、左子樹、右子樹本身又各是一棵二叉排序樹。
二、叉排序樹的構造
二叉排序樹的構造過程實質上就是排序的過程,它是二叉排序樹作媒介,將一個任意的資料序列變成一個有序序列。二叉排序樹的構造一般是採用陸續插入結點的辦法逐步構成的。具體構造的思路是:
1、以待排序的資料的第一個資料構成根結點;
2、對以後的各個資料,逐個插入結點,而且規定:在插入過程的每一步,原有樹結點位置不再變動,只是將新資料的結點作為一個葉子結點插入到合適的位置,使樹中任何結點的資料與其左、右子樹結點資料之間的關係仍然符合對二叉排序樹的要求。
所以有2可知,明顯我們應該選擇出C,因為只有C項的兩個子樹是以60,120為對應根節點的,其他的三個是以80,120作為子樹根節點的。
10:實現傳送到某個email連結的Html程式碼是【】?
A:< mail>xxx@yyy< /mail>
B:< mail href="xxx@yyy"/>
C:< a href="mailto:xxx@yyy">
D:< a href="xxx@yyy">
ans:C
詳細解釋:
^_^,這題我做對了,其實我不懂這個Html程式碼,我做到這道題的時候使用Html語言的邏輯猜的,看A和B,我使用排除法,要使A對,那麼要是按照Html的邏輯,那麼B也對,所以我知道A和B不對,另外對於D,明顯是超連結的語句啊,所以我選得C,回來一看果然對了,蒙也要技術的。
或者自己使用dreamweaver的插入--電子郵件標籤都看的到。
二、填空題:
2.多個執行緒互斥使用資源,對應的訊號量的變化範圍【 】?
ans:[0,1]
詳細解釋:一般訊號量為0,1就可以了,若某個資源一次最多可以n個執行緒可以訪問,那麼訊號量的範圍就為【0~(n-1)】
3.對於資源靜態分配法來避免死鎖,主要是打破了死鎖四個條件的那個【】?
ans:部分分配條件
詳細解釋:
死鎖的條件
1、互斥條件(Mutual exclusion):資源不能被共享,只能由一個程序使用。
2、請求與保持條件(Hold and wait):已經得到資源的程序可以再次申請新的資源。
3、非剝奪條件(也稱為部分分配條件)(No pre-emption):已經分配的資源不能從相應的程序中被強制地剝奪。
4、迴圈等待條件(Circular wait):系統中若干程序組成環路,改環路中每個程序都在等待相鄰程序正佔用的資源
死鎖預防的方法:
(1)打破"不剝奪條件:強迫那些請求新資源而沒有立即得到滿足的程序,釋放它已保持的其它資源。即一個程序已佔用的資源在執行過程中可能要暫時釋放。
(2)打破"部分分配"條件:對某程序所要求的資源一次性地分配完畢。這樣,程序在執行過程中就不再需要新的資源。這種方法又稱為預先靜態分配法。但在做靜態分配時,只要有一種資源不能滿足,該程序就必需等待.
(3)打破"環路等待"條件:在資源的分配過程中,對資源的請求作出某種限制,使環路不可能出現--有序資源分配法
4.當一個程序獨佔處理器順序執行的時候,具有兩個特性【】和可再現性。
ans:封閉性
詳細解釋:
程式順序執行的特徵:
a.順序性:每一操作必須在下一操作開始之前結束
b.封閉性:程式執行時獨佔全機資源,資源的狀態(除初始狀態外)只有本程式才能改變,程式一旦執行,其結果不受外界影響
c.可再現性:程式執行環境和初始條件相同,重複執行時,結果相同
我開始寫的是可預見性……我也不從哪裡看到這個說法的……
9.中級表示式3+x*(2.4/5+6)所對應的字尾表示式為【】?
ans:3x2.45/6-*+
詳細解釋:
表示式表示法
算術表示式中最常見的表示法形式有 中綴、字首和 字尾表示法。中綴表示法是書寫表示式的常見方式,而字首和字尾表示法主要用於電腦科學領域。
中綴表示法
中綴表示法是算術表示式的常規表示法。稱它為 中綴表示法是因為每個操作符都位於其運算元的中間,這種表示法只適用於操作符恰好對應兩個運算元的時候(在操作符是二元操作符如加、減、乘、除以及取模的情況下)。對以中綴表示法書寫的表示式進行語法分析時,需要用括號和優先規則排除多義性。
Syntax: operand1 operator operand2
Example: (A+B)*C-D/(E+F)

字首表示法
字首表示法中,操作符寫在運算元的前面。這種表示法經常用於電腦科學,特別是編譯器設計方面。為紀念其發明家 ― Jan Lukasiewicz,這種表示法也稱 波蘭表示法。
Syntax : operator operand1 operand2
Example : -*+ABC/D+EF

字尾表示法
在後綴表示法中,操作符位於運算元後面。字尾表示法也稱 逆波蘭表示法(reverse Polish notation,RPN),因其使表示式求值變得輕鬆,所以被普遍使用。
Syntax : operand1 operand2 operator
Example : AB+C*DEF+/-

字首和字尾表示法有三項公共特徵:
◆運算元的順序與等價的中綴表示式中運算元的順序一致
◆不需要括號
◆操作符的優先順序不相關
要把表示式從中綴表示式的形式轉換成用字尾表示法表示的等價表示式,必須瞭解操作符的優先順序和結合性。 優先順序或者說操作符的強度決定求值順序;優先順序高的操作符比優先順序低的操作符先求值。 如果所有操作符優先順序一樣,那麼求值順序就取決於它們的 結合性。操作符的結合性定義了相同優先順序操作符組合的順序(從右至左或從左至右)。
Left associativity : A+B+C = (A+B)+C
Right associativity : A^B^C = A^(B^C)

詳細步驟:
設以’@’字元作為結束符的中綴算術表示式已經儲存在s1字串中,轉換後得到的字尾算術表示式擬存於s2字串中。由中綴表示式轉換為字尾表示式的規則可知:轉換前後,表示式中的數值項的次序不變,而運算子的次序發生了變化,由處在兩個運算物件的中間變為處在兩個運算物件的後面,同時去掉了所有的括號。為了使轉換正確,必須設定一個運算子棧,並在棧底放入一個特殊算符,假定為‘@’字元,讓它具有最低的運算子優先順序,假定為數值0,此棧用來儲存掃描中綴表示式得到的暫不能放入字尾表示式中的運算子,待它的兩個運算物件都放入到字尾表示式以後,再令其出棧並寫入到字尾表示式中。
把中綴表示式轉換為字尾表示式演算法的基本思路是從頭到尾地掃描中綴表示式中的每個字元,對於不同型別的字元按不情況進行處理。若遇到的是空格則認為是分隔符,不需要進行處理;若遇到的是數字或小數點,則直接寫入到s2中,並在每個數值的最後寫入一個空格;若遇到的是左括號,則應把它壓入到運算子棧中,待以它開始的括號內的表示式轉換完畢後再出棧;若遇到的是右括號,則表明括號內的中綴表示式已經掃描完畢,把從棧底直到儲存著的對應左括號之間的運算子依次退棧並寫入s2串中;若遇到的是運算子,當該運算子的優先順序大於棧頂運算子的優先順序(加減運算子的優先順序設定為1,乘除運算子的優先順序設定為2,在棧中儲存的特殊運算子‘@’和’(’的優先順序設定為0)時,表明該運算子的後一個運算物件還沒有被掃描並放入到s2串中,應把它暫存於運算子棧中,待它的後一個運算物件從s1串中讀出並寫入到s2串中後,再另其出棧並寫入s2串中;若遇到的運算子的優先順序小於等於棧頂運算子的優先順序,這表明棧頂運算子的兩個運算物件已經被儲存到s2串中,應將棧頂運算子退棧並寫入到s2串中,對於新的棧頂運算子仍繼續進行比較和處理,直到被處理的運算子的優先順序大於棧頂運算子的優先順序為止,然後另該運算子進棧即可。
按照以上過程掃描到中綴表示式結束符‘@’時,把棧中剩餘的運算子依次退棧並寫入到字尾表示式中,再向s2寫入表示式結束符‘@’和字串結束符’{ent}’,整個轉換過程就處理完畢,在s2中就得到了轉換成的字尾表示式。
或者:
轉換過程包括用下面的演算法讀入中綴表示式的運算元、操作符和括號:
初始化一個空堆疊,將結果字串變數置空。
從左到右讀入中綴表示式,每次一個字元。
如果字元是運算元,將它新增到結果字串。
如果字元是個操作符,彈出(pop)操作符,直至遇見開括號(opening parenthesis)、優先順序較低的操作符或者同一優先順序的右結合符號。把這個操作符壓入(push)堆疊。
如果字元是個開括號,把它壓入堆疊。
如果字元是個閉括號(closing parenthesis),在遇見開括號前,彈出所有操作符,然後把它們新增到結果字串。
如果到達輸入字串的末尾,彈出所有操作符並新增到結果字串。
一個例子:
例如,設中綴算術表示式s1為:10+(18+9*3)/15-6@,使用的運算子棧用R表示,則轉換過程如下:
(1)開始時存放字尾表示式的字串s2為空,R中壓入有’@’算符,它具有最低的優先順序0:@
(2)當掃描到s1中的左括號時,s2和R中的資料變化如下:
1 0
@ + (

(3)當掃描到s1中的數值3時,s2和R中的資料變化為:
1 0 1 8 9 3
@ + ( + *

(4)當掃描到s1中的右括號時,s2和R變為:
1 0 1 8 9 3 * +
@ +

(5)當掃描到s1中的數值15時,s2和R又變為:
1 0 1 8 9 3 * + 1 5
@ + /

(6)當掃描到s1中的’@’字元時,s2和R為:
1 0 1 8 9 3 * + 1 5 / + 6
@ -

(7)當整個處理過程結束後,R棧為空,s2為:1 0 1 8 9 3 * + 1 5 / + 6 - @ ù
10.在一個帶頭節點的單迴圈連結串列中,P指向尾結點的直接前驅,則指向頭結點的指標head可用P表示為head=【 】?
ans:P->next->next
詳細解釋:其實這道題不難,不過我忘記怎麼使用連結串列指向下一個node了,我寫的是P.P.P,無語了……
12有序表(12,18,30,43,56,78,82,95)中以此二分查詢43和56元素時,其查詢長度分別為【 】和【 】?
ans:1,3
詳細解釋:這題要說難難在那裡哪?就是二分法比較的時候,當數列個數是偶數的時候到底是應該去哪個值,也就是說第一次比較的值應該是43,還是56,如果是43,那麼這題就是1,3這個結果,那麼恭喜你,你答對了,要使56,那麼這道題就是3,1.結果正好相反。像本篇日誌所涉及的第一道題就講到了查詢方法:二分法,其中還提供一個連結:,其實這個連結中舉的例子是錯誤的,因為在演算法實現中(1+n)/2並不會四捨五入,因為c和c++都是取整的,也就是說本題(1+8)/2=4,也就是43而不是56!!!另外還有一種理解方法,有8個數(偶數),那麼8/2=4,所以比較的是第四個數。這麼理解也是對的。同類其他面試題 點選新一篇或舊一篇可瀏覽全部同類面試題


舊一篇:2012年Java面試寶典 –精心收集 持續補充中
面試官的提問:一、選擇題:
5:既希望較快的查詢又便於線性表動態變化的查詢方法是【】?
A:順序查詢 B:折半查詢 C:索引順序查詢 D:雜湊法查詢
ans:C
詳細解釋:
查詢是在大量的資訊中尋找一個特定的資訊元素,在計算機應用中,查詢是常用的基本運算,例如編譯程式中符號表的查詢。用關鍵字標識一個數據元素,查詢時根據給定的某個值,在表中確定一個關鍵字的值等於給定值的記錄或資料元素。在計算機中進行查詢的方法是根據表中的記錄的組織結構確定的。
順序查詢也稱為線形查詢,從資料結構線形表的一端開始,順序掃描,依次將掃描到的結點關鍵字與給定值k相比較,若相等則表示查詢成功;若掃描結束仍沒有找到關鍵字等於k的結點,表示查詢失敗。
二分查詢要求線形表中的結點按關鍵字值升序或降序排列,用給定值k先與中間結點的關鍵字比較,中間結點把線形表分成兩個子表,若相等則查詢成功;若不相等,再根據k與該中間結點關鍵字的比較結果確定下一步查詢哪個子表,這樣遞迴進行,直到查詢到或查詢結束髮現表中沒有這樣的結點。
【優缺點】折半查詢法的優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。
分塊查詢也稱為索引順序查詢,把線形分成若干塊,在每一塊中的資料元素的儲存順序是任意的,但要求塊與塊之間須按關鍵字值的大小有序排列,還要建立一個按關鍵字值遞增順序排列的索引表,索引表中的一項對應線形表中的一塊,索引項包括兩個內容:① 鍵域存放相應塊的最大關鍵字;② 鏈域存放指向本塊第一個結點的指標。分塊查詢分兩步進行,先確定待查詢的結點屬於哪一塊,然後在塊內查詢結點。
雜湊表查詢是通過對記錄的關鍵字值進行運算,直接求出結點的地址,是關鍵字到地址的直接轉換方法,不用反覆比較。假設f包含n個結點,Ri為其中某個結點(1≤i≤n),keyi是其關鍵字值,在keyi與Ri的地址之間建立某種函式關係,可以通過這個函式把關鍵字值轉換成相應結點的地址,有:addr(Ri)=H(keyi),addr(Ri)為雜湊函式。
演算法詳細比較查詢演算法優點缺點運算效率順序查詢最簡單的,查詢表的儲存結構:既適用於順序儲存結構,也適用於鏈式儲存結構。 順序查詢效率低,當n過大時,應避免使用。
1若查詢成功:(n+1)/2;
2若查詢失敗:n+1;
3設查詢成功的概率為p,查詢不成功的概率為q=(1-p),則平均比較次數為:E(n)=p*(n+1)/2+q*(n+1)=p*(n+1)/2+(1-p)*(n+1)=(n+1)*(1-p/2);
4若成功和失敗的概率各佔50%,平均效能:3*(n+1)/4;
二分查詢查詢速度快; 但表必須有序。 頻繁插入和刪除不方便,二分法查詢適於表中元素很少變化而查詢頻繁的情況。
二分法查詢的過程可用二叉樹來描述,中間結點是二叉樹的根,左子表相當於左子樹,右子表相當於右子樹,由此得到的二叉樹便為描述二分法查詢的判定樹。二分法查詢的過程是走了一條從根結點到葉子結點的過程,不論查詢成功與失敗,查詢長度均不超過樹的高度,h= log2(n+1) ,那個2是log的下綴;
等概率時,折半查詢的平均長度為:;
當n很大時,ASL = log2(n+1)-1。
分塊查詢(索引順序查詢)分塊查詢綜合了順序查詢和二分法查詢的優點,既有動態結構,又適於快速查詢。
設待查詢檔案有n個記錄,平均分成b塊,每塊有s個記錄。若只考慮查詢成功的概率,且在塊內和索引表中均用順序查詢,則平均查詢長度為:
E(n)=Eb+Ew=(b+1)/2 +(s+1)/2 =(s^2+2*s+n)/(2*s);
若s= √n,則平均查詢長度取最小值:√n+1
若對索引表採用二分法查詢,則平均查詢長度為:
E(n)=Eb+Ew=㏒2(b+1) +(s+1)/2
雜湊表查詢不論雜湊表中有多少資料,插入和刪除(有時包括側除)只需要接近常量的時間即0(1)的時間級
雜湊表也有一些缺點它是基於陣列的,陣列建立後難於擴充套件某些雜湊表被基本填滿時,效能下降得非常嚴重,所以程式雖必須要清楚表中將要儲存多少資料(或者準備好定期地把資料轉移到更大的雜湊表中,這是個費時的過程)。
要面臨衝突處理問題。

基本是:O(1)
6:分別以下列構造二叉排序樹,與用其他三個序列所構造的結果不同的是【】?
A:(100,80,90,60,120,110,130)
B:(100,120,110,130,80,60,90)
C:(100,60,80,90,120,110,130)
D:(100,80,60,90,120,130,110)
ans:C
這道題我答錯了,我選得B,回來一看應該選擇C項,有餘長時間沒有看過作業系統了,好多東西我都忘記了,這道題真真的是蒙的。
詳細解釋:
一、二叉排序樹的定義
二叉排序樹或者是空樹,或者是具有如下性質的二叉樹:
1、左子樹上所有結點的資料值均小於根結點的資料值;
2、右子樹上所有結點的資料值均大於或等於根結點的資料值;
3、左子樹、右子樹本身又各是一棵二叉排序樹。
二、叉排序樹的構造
二叉排序樹的構造過程實質上就是排序的過程,它是二叉排序樹作媒介,將一個任意的資料序列變成一個有序序列。二叉排序樹的構造一般是採用陸續插入結點的辦法逐步構成的。具體構造的思路是:
1、以待排序的資料的第一個資料構成根結點;
2、對以後的各個資料,逐個插入結點,而且規定:在插入過程的每一步,原有樹結點位置不再變動,只是將新資料的結點作為一個葉子結點插入到合適的位置,使樹中任何結點的資料與其左、右子樹結點資料之間的關係仍然符合對二叉排序樹的要求。
所以有2可知,明顯我們應該選擇出C,因為只有C項的兩個子樹是以60,120為對應根節點的,其他的三個是以80,120作為子樹根節點的。
10:實現傳送到某個email連結的Html程式碼是【】
A:< mail>xxx@yyy< /mail>
B:< mail href="xxx@yyy"/>
C:< a href="mailto:xxx@yyy">
D:< a href="xxx@yyy">
ans:C
詳細解釋:
^_^,這題我做對了,其實我不懂這個Html程式碼,我做到這道題的時候使用Html語言的邏輯猜的,看A和B,我使用排除法,要使A對,那麼要是按照Html的邏輯,那麼B也對,所以我知道A和B不對,另外對於D,明顯是超連結的語句啊,所以我選得C,回來一看果然對了,蒙也要技術的。
或者自己使用dreamweaver的插入--電子郵件標籤都看的到。
二、填空題:
2.多個執行緒互斥使用資源,對應的訊號量的變化範圍【 】?
ans:[0,1]
詳細解釋:一般訊號量為0,1就可以了,若某個資源一次最多可以n個執行緒可以訪問,那麼訊號量的範圍就為【0~(n-1)】
3.對於資源靜態分配法來避免死鎖,主要是打破了死鎖四個條件的那個【】?
ans:部分分配條件
詳細解釋:
死鎖的條件
1、互斥條件(Mutual exclusion):資源不能被共享,只能由一個程序使用。
2、請求與保持條件(Hold and wait):已經得到資源的程序可以再次申請新的資源。
3、非剝奪條件(也稱為部分分配條件)(No pre-emption):已經分配的資源不能從相應的程序中被強制地剝奪。
4、迴圈等待條件(Circular wait):系統中若干程序組成環路,改環路中每個程序都在等待相鄰程序正佔用的資源
死鎖預防的方法:
(1)打破"不剝奪條件:強迫那些請求新資源而沒有立即得到滿足的程序,釋放它已保持的其它資源。即一個程序已佔用的資源在執行過程中可能要暫時釋放。
(2)打破"部分分配"條件:對某程序所要求的資源一次性地分配完畢。這樣,程序在執行過程中就不再需要新的資源。這種方法又稱為預先靜態分配法。但在做靜態分配時,只要有一種資源不能滿足,該程序就必需等待.
(3)打破"環路等待"條件:在資源的分配過程中,對資源的請求作出某種限制,使環路不可能出現--有序資源分配法
4.當一個程序獨佔處理器順序執行的時候,具有兩個特性【】和可再現性。
ans:封閉性
詳細解釋:
程式順序執行的特徵:
a.順序性:每一操作必須在下一操作開始之前結束
b.封閉性:程式執行時獨佔全機資源,資源的狀態(除初始狀態外)只有本程式才能改變,程式一旦執行,其結果不受外界影響
c.可再現性:程式執行環境和初始條件相同,重複執行時,結果相同
我開始寫的是可預見性……我也不從哪裡看到這個說法的……
9.中級表示式3+x*(2.4/5+6)所對應的字尾表示式為【】?
ans:3x2.45/6-*+
詳細解釋:
表示式表示法
算術表示式中最常見的表示法形式有 中綴、字首和 字尾表示法。中綴表示法是書寫表示式的常見方式,而字首和字尾表示法主要用於電腦科學領域。
中綴表示法
中綴表示法是算術表示式的常規表示法。稱它為 中綴表示法是因為每個操作符都位於其運算元的中間,這種表示法只適用於操作符恰好對應兩個運算元的時候(在操作符是二元操作符如加、減、乘、除以及取模的情況下)。對以中綴表示法書寫的表示式進行語法分析時,需要用括號和優先規則排除多義性。
Syntax: operand1 operator operand2
Example: (A+B)*C-D/(E+F)

字首表示法
字首表示法中,操作符寫在運算元的前面。這種表示法經常用於電腦科學,特別是編譯器設計方面。為紀念其發明家 ― Jan Lukasiewicz,這種表示法也稱 波蘭表示法。
Syntax : operator operand1 operand2
Example : -*+ABC/D+EF

字尾表示法
在後綴表示法中,操作符位於運算元後面。字尾表示法也稱 逆波蘭表示法(reverse Polish notation,RPN),因其使表示式求值變得輕鬆,所以被普遍使用。
Syntax : operand1 operand2 operator
Example : AB+C*DEF+/-

字首和字尾表示法有三項公共特徵:
◆運算元的順序與等價的中綴表示式中運算元的順序一致
◆不需要括號
◆操作符的優先順序不相關
要把表示式從中綴表示式的形式轉換成用字尾表示法表示的等價表示式,必須瞭解操作符的優先順序和結合性。 優先順序或者說操作符的強度決定求值順序;優先順序高的操作符比優先順序低的操作符先求值。 如果所有操作符優先順序一樣,那麼求值順序就取決於它們的 結合性。操作符的結合性定義了相同優先順序操作符組合的順序(從右至左或從左至右)。
Left associativity : A+B+C = (A+B)+C
Right associativity : A^B^C = A^(B^C)

詳細步驟:
設以’@’字元作為結束符的中綴算術表示式已經儲存在s1字串中,轉換後得到的字尾算術表示式擬存於s2字串中。由中綴表示式轉換為字尾表示式的規則可知:轉換前後,表示式中的數值項的次序不變,而運算子的次序發生了變化,由處在兩個運算物件的中間變為處在兩個運算物件的後面,同時去掉了所有的括號。為了使轉換正確,必須設定一個運算子棧,並在棧底放入一個特殊算符,假定為‘@’字元,讓它具有最低的運算子優先順序,假定為數值0,此棧用來儲存掃描中綴表示式得到的暫不能放入字尾表示式中的運算子,待它的兩個運算物件都放入到字尾表示式以後,再令其出棧並寫入到字尾表示式中。
把中綴表示式轉換為字尾表示式演算法的基本思路是從頭到尾地掃描中綴表示式中的每個字元,對於不同型別的字元按不情況進行處理。若遇到的是空格則認為是分隔符,不需要進行處理;若遇到的是數字或小數點,則直接寫入到s2中,並在每個數值的最後寫入一個空格;若遇到的是左括號,則應把它壓入到運算子棧中,待以它開始的括號內的表示式轉換完畢後再出棧;若遇到的是右括號,則表明括號內的中綴表示式已經掃描完畢,把從棧底直到儲存著的對應左括號之間的運算子依次退棧並寫入s2串中;若遇到的是運算子,當該運算子的優先順序大於棧頂運算子的優先順序(加減運算子的優先順序設定為1,乘除運算子的優先順序設定為2,在棧中儲存的特殊運算子‘@’和’(’的優先順序設定為0)時,表明該運算子的後一個運算物件還沒有被掃描並放入到s2串中,應把它暫存於運算子棧中,待它的後一個運算物件從s1串中讀出並寫入到s2串中後,再另其出棧並寫入s2串中;若遇到的運算子的優先順序小於等於棧頂運算子的優先順序,這表明棧頂運算子的兩個運算物件已經被儲存到s2串中,應將棧頂運算子退棧並寫入到s2串中,對於新的棧頂運算子仍繼續進行比較和處理,直到被處理的運算子的優先順序大於棧頂運算子的優先順序為止,然後另該運算子進棧即可。
按照以上過程掃描到中綴表示式結束符‘@’時,把棧中剩餘的運算子依次退棧並寫入到字尾表示式中,再向s2寫入表示式結束符‘@’和字串結束符’{ent}’,整個轉換過程就處理完畢,在s2中就得到了轉換成的字尾表示式。
或者:
轉換過程包括用下面的演算法讀入中綴表示式的運算元、操作符和括號:
初始化一個空堆疊,將結果字串變數置空。
從左到右讀入中綴表示式,每次一個字元。
如果字元是運算元,將它新增到結果字串。
如果字元是個操作符,彈出(pop)操作符,直至遇見開括號(opening parenthesis)、優先順序較低的操作符或者同一優先順序的右結合符號。把這個操作符壓入(push)堆疊。
如果字元是個開括號,把它壓入堆疊。
如果字元是個閉括號(closing parenthesis),在遇見開括號前,彈出所有操作符,然後把它們新增到結果字串。
如果到達輸入字串的末尾,彈出所有操作符並新增到結果字串。
一個例子:
例如,設中綴算術表示式s1為:10+(18+9*3)/15-6@,使用的運算子棧用R表示,則轉換過程如下:
(1)開始時存放字尾表示式的字串s2為空,R中壓入有’@’算符,它具有最低的優先順序0:@
(2)當掃描到s1中的左括號時,s2和R中的資料變化如下:
1 0
@ + (

(3)當掃描到s1中的數值3時,s2和R中的資料變化為:
1 0 1 8 9 3
@ + ( + *

(4)當掃描到s1中的右括號時,s2和R變為:
1 0 1 8 9 3 * +
@ +

(5)當掃描到s1中的數值15時,s2和R又變為:
1 0 1 8 9 3 * + 1 5
@ + /

(6)當掃描到s1中的’@’字元時,s2和R為:
1 0 1 8 9 3 * + 1 5 / + 6
@ -

(7)當整個處理過程結束後,R棧為空,s2為:1 0 1 8 9 3 * + 1 5 / + 6 - @ ù
10.在一個帶頭節點的單迴圈連結串列中,P指向尾結點的直接前驅,則指向頭結點的指標head可用P表示為head=【 】?
ans:P->next->next
詳細解釋:其實這道題不難,不過我忘記怎麼使用連結串列指向下一個node了,我寫的是P.P.P,無語了……
12有序表(12,18,30,43,56,78,82,95)中以此二分查詢43和56元素時,其查詢長度分別為【 】和【 】?
ans:1,3
詳細解釋:這題要說難難在那裡哪?就是二分法比較的時候,當數列個數是偶數的時候到底是應該去哪個值,也就是說第一次比較的值應該是43,還是56,如果是43,那麼這題就是1,3這個結果,那麼恭喜你,你答對了,要使56,那麼這道題就是3,1.結果正好相反。像本篇日誌所涉及的第一道題就講到了查詢方法:二分法,其中還提供一個連結:,其實這個連結中舉的例子是錯誤的,因為在演算法實現中(1+n)/2並不會四捨五入,因為c和c++都是取整的,也就是說本題(1+8)/2=4,也就是43而不是56!!!另外還有一種理解方法,有8個數(偶數),那麼8/2=4,所以比較的是第四個數。這麼理解也是對的。同類其他面試題 點選新一篇或舊一篇可瀏覽全部同類面試題


舊一篇:2012年Java面試寶典 –精心收集 持續補充中

------面試經驗2面試公司:文思創新(vanceinfo) 職位:java
當天去了文思創新,面試他們的java dev,
錯了,是筆試+面試
筆試的題目,個人覺得沒有什麼新意,不過考的還算全面
不是全部的題目都會,有兩個徹底沒有感覺
後來還有一個設計模式的題目,這個徹徹底底的沒有感覺
我都沒有看過這方面的呢
面試的結果呢,是我被鑑定為Junior類別了
不過她問我的那些都是我沒有接觸的,
也沒有聽別人說過,只有開源框架的,在網上聽說過
不過最近也在看了,因為沒有方向,也不知道到底應不應該看
現在看來,不管是不是有方向,
都應該看看這方面的東西了
他們招聘的人員是出差到南京華為的
4K+30*40差不多5k左右,稅前的
現在還沒有具體的結果呢,
一方面想去試試,另一方面,想留在上海
唉,有點為難呢
不知大該怎麼辦...
不管了,有了信兒再說吧!
面試官的提問:簡單的自我介紹,之後隨便聊聊

------面試經驗3面試公司:用友軟體 職位:java
的房間看電視飛機考慮的是風口浪尖了多少積分積極健康刀劍封肯德基瘋狂大減瘋狂大減瘋狂大減瘋狂大減瘋狂大減反饋的房間看電視飛機考慮的是風口浪尖了多少積分積極健康刀劍封肯德基瘋狂大減瘋狂大減瘋狂大減瘋狂大減瘋狂大減反饋的房間看電視飛機考慮的是風口浪尖了多少積分積極健康刀劍封肯德基瘋狂大減瘋狂大減瘋狂大減瘋狂大減瘋狂大減反饋的房間看電視飛機考慮的是風口浪尖了多少積分積極健康刀劍封肯德基瘋狂大減瘋狂大減瘋狂大減瘋狂大減瘋狂大減反饋的房間看電視飛機考慮的是風口浪尖了多少積分積極健康刀劍封肯德基瘋狂大減瘋狂大減瘋狂大減瘋狂大減瘋狂大減反饋的房間看電視飛機考慮的是風口浪尖了多少積分積極健康刀劍封肯德基瘋狂大減瘋狂大減瘋狂大減瘋狂大減瘋狂大減反饋
面試官的提問:的房間看電視飛機考慮的是風口浪尖了多少積分積極健康刀劍封肯德基瘋狂大減瘋狂大減瘋狂大減瘋狂大減瘋狂大

------面試經驗4面試公司:惠普(HP) 職位:Java
ReentrantLock例項化
ReentrantLock有個屬性sync,實際上對Lock介面的實現都是包裝了一下這個sync的實現
如果是公平模式則建立一個FairSync物件,否則建立一個NonfairSync物件,預設是不公平模式
1. lock() 呼叫()
公平模式下:直接走AQS的acquire函式,此函式的邏輯走一次tryAcquire,如果成功
執行緒拜託同步器的控制,否則加入NODE連結串列,進入acquireQueued的tryAcquire,休眠,被喚醒的輪迴
不公平模式下和公平模式下邏輯大體上是一樣的,不同點有兩個:
a. 在執行tryAcquire之前的操作,不公平模式會直接compareAndSetState(0, 1)原子性的設定AQS的資源
0表示目前沒有執行緒佔據資源,則直接搶佔資源,不管AQS的NODE連結串列的FIFO原則
面試官的提問:ReentrantLock例項化
ReentrantLock有個屬性sync,實際上對Lock

------面試經驗5面試公司:1號店 職位:Java
大概流程如下:
1.去武漢研發中心,先做40分鐘的一個邏輯測試題目
2.武漢專案經理1v1的面試,主要聊離職原因,專案管理,做過什麼專案,以前的工作經歷,未來的職業和發展規劃等。比較輕鬆,感覺挺好的。然後直接通知等技術複試。
3.上海技術主管電話面試,主要考察技術問題,包括,Java基礎知識,快取技術,多執行緒,事務處理等,做過的專案,併發處理機制等,大部分回答還可以,少部分沒答好。
4.上海專案經理面試,主要考察專案管理能力,包括軟體開發週期,模型,軟體開發過程,RUP理論等,怎樣帶領一個團隊,碰到一些問題怎麼解決,這塊我確實比較薄弱,所以實話實說,估計是這塊能力不夠,沒通過。
面試官的提問:1.快取重新整理機制
ie與session區別
3.多執行緒併發處理方式
4

------面試經驗6面試公司:samsung 職位:java
一輪電話面試,初選,挺簡單的,
二面,在上海cisco,時間挺長的,中午12點半,一直到下午4點半,一直沒停,沒累死哥,先做一份筆試題
主要考察java的一些原理和主要的類庫,接下來有5個面試官,輪流來面試你(不是一起來的,一個一個來)主要問資料結構,SNMP,web相關的主要問了ioc,hibernate的分頁和快取,其他的還問了rmi,java容器相關的(考察你對java容器的熟悉程度,以及對於資料結構的理解程度)資料庫相關,perl shell和c shell,根據我的工作經驗,還問了一些web balance相關,特別說明一下的是,其中有以為面試官會拿英文和你交流,語速不快,詞彙不生僻,不用擔心~
面試官的提問:資料結構,SNMP,web相關的主要問了ioc,hibernate的分頁和快取,其他的還問了rmi,

------面試經驗7面試公司:優街網 職位:java
公司談薪資的人事非常傻逼,自己公司交不起全額社保,一個勁說全額社保不好,說什麼本人扣的多了,養老保險不能全取出來,傻逼的,
社保只有養老保險嗎?傻逼一個!
一個勁的吹噓自己公司的技術人員多厲害,你他媽懂技術嗎?真她媽傻逼。
牛逼的會接受這待遇? 給不起錢他媽的別自己上網拉人面試,又是筆試又是面試的浪費老子時間。傻逼的。
誰投你們簡歷了,還壓價,還來個試用期80%!真她媽弱智!媽個逼的。
多少正規上市公司給個1萬老子都沒去,去你們個傻逼弱智不正規公司?傻逼的。
還以為別人找工作時間長了就找不到工作,沒見過這麼傻逼的人事了。傻逼!
面試官的提問:狗屎

------面試經驗8面試公司:北京環世財富科技 職位:java
公司談薪資的人事非常傻逼,自己公司交不起全額社保,一個勁說全額社保不好,說什麼本人扣的多了,養老保險不能全取出來,傻逼的,
社保只有養老保險嗎?傻逼一個!
一個勁的吹噓自己公司的技術人員多厲害,你他媽懂技術嗎?真她媽傻逼。
牛逼的會接受這待遇? 給不起錢他媽的別自己上網拉人面試,又是筆試又是面試的浪費老子時間。傻逼的。
誰投你們簡歷了,還壓價,還來個試用期80%!真她媽弱智!媽個逼的。
多少正規上市公司給個1萬老子都沒去,去你們個傻逼弱智不正規公司?傻逼的。
還以為別人找工作時間長了就找不到工作,沒見過這麼傻逼的人事了。傻逼!
面試官的提問:狗屎

------面試經驗9面試公司:上海大智慧軟體 職位:Java
先是筆試,出了30道題目,都是主觀題,根據自己的理解答題,比較人性化,然後是兩人的面試,聊技術和經驗,大概1個小時。之後是人事談薪水。但是試用期有6個月,比較不好。先是筆試,出了30道題目,都是主觀題,根據自己的理解答題,比較人性化,然後是兩人的面試,聊技術和經驗,大概1個小時。之後是人事談薪水。但是試用期有6個月,比較不好。先是筆試,出了30道題目,都是主觀題,根據自己的理解答題,比較人性化,然後是兩人的面試,聊技術和經驗,大概1個小時。之後是人事談薪水。但是試用期有6個月,比較不好。
面試官的提問:介紹專案經理。
介紹自己做過的最好的最複雜的專案。和自己在其中的角色。

------面試經驗10面試公司:PPS網路電視 職位:java
網站訪問統計系統是站長們必備的系統之一。目前網上有許多免費的統計系統,例如中國站長站(http:)、51()等。這些系統已經十分成熟,但是並不能為免費使用者儲存大量的歷史資料,也不能根據需要自定義某些功能,例如使用者訪問追蹤等。本系統使用Spring、Struts1、Hibernate構架。記錄使用者的IP地址、實際地址、訪問的網頁URL及標題、訪問來源、螢幕解析度、顏色位數、瀏覽器、作業系統、訪問時間等。如果使用者通過搜尋引擎訪問被監聽的網頁,系統還會記錄下搜尋引擎頁面以及搜尋詞。
面試官的提問:沒問題

------
標籤:Java 面試 職位