1. 程式人生 > >Java資料結構面試題

Java資料結構面試題

1.棧和佇列的共同特點是(只允許在端點處插入和刪除元素)
4.棧通常採用的兩種儲存結構是(線性儲存結構和連結串列儲存結構)
5.下列關於棧的敘述正確的是(D
     A.棧是非線性結構B.棧是一種樹狀結構C.棧具有先進先出的特徵D.棧有後進先出的特徵
6.連結串列不具有的特點是(BA.不必事先估計儲存空間       B.可隨機訪問任一元素
C.插入刪除不需要移動元素      D.所需空間與線性表長度成正比
7.用連結串列表示線性表的優點是(便於插入和刪除操作)
8.在單鏈表中,增加頭結點的目的是(方便運算的實現)
9.迴圈連結串列的主要優點是(從表中任一結點出發都能訪問到整個連結串列)
10.線性表L=(a1,a2,a3,……ai,……an),下列說法正確的是(D      A.每個元素都有一個直接前件和直接後件   B.線性表中至少要有一個元素      C.表中諸元素的排列順序必須是由小到大或由大到小      D.除第一個和最後一個元素外,其餘每個元素都有一個且只有一個直接前件和直接後件 11.線性表若採用鏈式儲存結構時,要求記憶體中可用儲存單元的地址(D A.必須是連續的 B.部分地址必須是連續的C.一定是不連續的 D.連續不連續都可以 12.線性表的順序儲存結構和線性表的鏈式儲存結構分別是(隨機存取的儲存結構、順序存取的儲存結構) 13.樹是結點的集合,它的根結點數目是(有且只有
1 14.在深度為5的滿二叉樹中,葉子結點的個數為(31 15.具有3個結點的二叉樹有(5種形態) 16.設一棵二叉樹中有3個葉子結點,有8個度為1的結點,則該二叉樹中總的結點數為(13 17.已知二叉樹後序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是(cedba 18.已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFHDBGEACHF,則該二叉樹的後序遍歷為(DGEBHFCA 19.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其後序遍歷的結點訪問順序是(gdbehfca 20.資料庫保護分為:安全性控制、完整性控制
、併發性控制和資料的恢復。
1. 在計算機中,演算法是指(解題方案的準確而完整的描述)
2.在下列選項中,哪個不是一個演算法一般應該具有的基本特徵(無窮性)說明:演算法的四個基本特徵是:可行性、確定性、有窮性和擁有足夠的情報。
3. 演算法一般都可以用哪幾種控制結構組合而成(順序、選擇、迴圈)
4.演算法的時間複雜度是指(演算法執行過程中所需要的基本運算次數)
5. 演算法的空間複雜度是指(執行過程中所需要的儲存空間)
					
6. 演算法分析的目的是(分析演算法的效率以求改進)
					
7. 下列敘述正確的是(C
A.演算法的執行效率與資料的儲存結構無關
B.演算法的空間複雜度是指演算法程式中指令(或語句)的條數
C.演算法的有窮性是指演算法必須能在執行有限個步驟之後終止
D.演算法的時間複雜度是指執行演算法程式所需要的時間
8.資料結構作為計算機的一門學科,主要研究資料的邏輯結構、對各種資料結構進行的運算,以及(資料的儲存結構)
9. 資料結構中,與所使用的計算機無關的是資料的(C
A.儲存結構   B.物理結構     C.邏輯結構     D.物理和儲存結構
10. 下列敘述中,錯誤的是(B
A.資料的儲存結構與資料處理的效率密切相關
B.資料的儲存結構與資料處理的效率無關
C.資料的儲存結構在計算機中所佔的空間不一定是連續的
D.一種資料的邏輯結構可以有多種儲存結構
11. 資料的儲存結構是指(資料的邏輯結構在計算機中的表示)
12. 資料的邏輯結構是指(反映資料元素之間邏輯關係的資料結構)
13. 根據資料結構中各資料元素之間前後件關係的複雜程度,一般將資料結構分為(線性結構和非線性結構)
14. 下列資料結構具有記憶功能的是(CA.佇列B.迴圈佇列C.棧D.順序表
15. 下列資料結構中,按先進後出原則組織資料的是(B
A.線性連結串列   B.棧            C.迴圈連結串列        D.順序表
16. 遞迴演算法一般需要利用(佇列)實現。
17. 下列關於棧的敘述中正確的是(DA.在棧中只能插入資料B.在棧中只能刪除資料
C.棧是先進先出的線性表            D.棧是先進後出的線性表
20. 由兩個棧共享一個儲存空間的好處是(節省儲存空間,降低上溢發生的機率)
					
21. 應用程式在執行過程中,需要通過印表機輸出資料時,一般先形成一個列印作業,將其存放在硬碟中的一個指定(佇列)中,當印表機空閒時,就會按先來先服務的方式從中取出待列印的作業進行列印。
22.下列關於佇列的敘述中正確的是(CA.在佇列中只能插入資料 B.在佇列中只能刪除資料   C.佇列是先進先出的線性表            D.佇列是先進後出的線性表
23.下列敘述中,正確的是(DA.線性連結串列中的各元素在儲存空間中的位置必須是連續的
B.線性連結串列中的表頭元素一定儲存在其他元素的前面 C.線性連結串列中的各元素在儲存空間中的位置不一定是連續的,但表頭元素一定儲存在其他元素的前面 D.線性連結串列中的各元素在儲存空間中的位置不一定是連續的,且各元素的儲存順序也是任意的
24.下列敘述中正確的是(AA.線性表是線性結構      B.棧與佇列是非線性結構
C.線性連結串列是非線性結構                                 D.二叉樹是線性結構
25. 線性表L=(a1,a2,a3,……ai,……an),下列說法正確的是(D
A.每個元素都有一個直接前件和直接後件      B.線性表中至少要有一個元素
C.表中諸元素的排列順序必須是由小到大或由大到小D.除第一個元素和最後一個元素外,其餘每個元素都有一個且只有一個直接前件和直接後件
26.線性表若採用鏈式儲存結構時,要求記憶體中可用儲存單元的地址(連續不連續都可以)
					
27. 連結串列不具有的特點是(BA.不必事先估計儲存空間            B.可隨機訪問任一元素
C.插入刪除不需要移動元素            D.所需空間與線性表長度成正比
28. 非空的迴圈單鏈表head的尾結點(由p所指向),滿足(p->next=head
29.與單向連結串列相比,雙向連結串列的優點之一是(更容易訪問相鄰結點)
					
30. 在(D)中,只要指出表中任何一個結點的位置,就可以從它出發依次訪問到表中其他所有結點。A.線性單鏈表            B.雙向連結串列            C.線性連結串列            D.迴圈連結串列
31. 以下資料結構屬於非線性資料結構的是(CA.佇列      B.線性表C.二叉樹      D.棧
32.樹是結點的集合,它的根結點數目是(有且只有1
33.具有3個結點的二叉樹有(5種形態)
					
34. 在一棵二叉樹上第8層的結點數最多是(128注:2K-1
35. 在深度為5的滿二叉樹中,葉子結點的個數為(16注:2n-1
36. 在深度為5的滿二叉樹中,共有(31)個結點。注:2n1
37.設一棵完全二叉樹共有699個結點,則在該二叉樹中的葉子結點數為(350說明:完全二叉樹總結點數為N,若N為奇數,則葉子結點數為(N+1/2;若N為偶數,則葉子結點數為N/2
38. 設有下列二叉樹,對此二叉樹中序遍歷的結果是(B
AABCDEF      
BDBEAFC
CABDECF      
DDEBFCA
39.已知二叉樹後序遍歷序列是dabec,中序遍歷序列debac,它的前序遍歷序列是(cedba
					
40. 已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFHDBGEACHF,則該二叉樹的後序遍歷為(DGEBHFCA
41.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其後序遍歷的結點訪問順序是(gdbehfca
42. 串的長度是(串中所含字元的個數)
					
43.設有兩個串pq,求qp中首次出現位置的運算稱做(模式匹配)
44. N個頂點的連通圖中邊的條數至少為(N-1
45.N個頂點的強連通圖的邊數至少有(N
46.對長度為n的線性表進行順序查詢,在最壞情況下所需要的比較次數為(N
47. 最簡單的交換排序方法是(氣泡排序)
					
48.假設線性表的長度為n,則在最壞情況下,氣泡排序需要的比較次數為(n(n-1)/2
					
49. 在待排序的元素序列基本有序的前提下,效率最高的排序方法是(氣泡排序)
50. 在最壞情況下,下列順序方法中時間複雜度最小的是(堆排序)
					
51. 希爾排序法屬於(插入類排序)
52. 堆排序法屬於(選擇類排序)
53. 在下列幾種排序方法中,要求記憶體量最大的是(歸併排序)
					
54. 已知資料表A中每個元素距其最終位置不遠,為節省時間,應採用(直接插入排序)
55. 演算法的基本特徵是可行性、確定性、有窮性和擁有足夠的情報。
1.一個演算法通常由兩種基本要素組成:一是對資料物件的運算和操作,二是演算法的控制結構。
1. 演算法的複雜度主要包括時間複雜度和空間複雜度。
2. 實現演算法所需的儲存單元多少和演算法的工作量大小分別稱為演算法的空間複雜度和時間複雜度
3.所謂資料處理是指對資料集合中的各元素以各種方式進行運算,包括插入、刪除、查詢、更改等運算,也包括對資料元素進行分析。
4.資料結構是指相互有關聯的資料元素的集合。
5.資料結構分為邏輯結構與儲存結構,線性連結串列屬於儲存結構
6.資料結構包括資料的邏輯結構和資料的儲存結構。
7. 資料結構包括資料的邏輯結構、資料的儲存結構以及對資料的操作運算。
8.資料元素之間的任何關係都可以用前趨和後繼關係來描述。
9.資料的邏輯結構有線性結構和非線性結構兩大類。
10.常用的儲存結構有順序、連結、索引等儲存結構。
11. 順序儲存方法是把邏輯上相鄰的結點儲存在物理位置相鄰的儲存單元中。
12. 棧的基本運算有三種:入棧、退棧與讀棧頂元素
13. 佇列主要有兩種基本運算:入隊運算與退隊運算
14. 在實際應用中,帶鏈的棧可以用來收集計算機儲存空間中所有空閒的儲存結點,這種帶鏈的棧稱為可利用棧
15.棧和佇列通常採用的儲存結構是鏈式儲存和順序儲存
16.當線性表採用順序儲存結構實現儲存時,其主要特點是邏輯結構中相鄰的結點在儲存結構中仍相鄰
17. 迴圈佇列主要有兩種基本運算:入隊運算與退隊運算。每進行一次入隊運算,隊尾指標就1 
18.當迴圈佇列非空且隊尾指標等於對頭指標時,說明迴圈佇列已滿,不能進行入隊運算。這種情況稱為上溢
19.當迴圈佇列為空時,不能進行退隊運算,這種情況稱為下溢
20. 在一個容量為25的迴圈佇列中,若頭指標front=16,尾指標rear=9,則該迴圈佇列中共有 18 個元素。注:當rear<front時,元素個數=總容量-(frontrear);rear>front時,元素個數=rearfront
1.判斷連結串列是否存在環型連結串列問題:判斷一個連結串列是否存在環,例如下面這個連結串列就存在一個環:例如N1->N2->N3->N4->N5->N2就是一個有環的連結串列,環的開始結點是N5這裡有一個比較簡單的解法。設定兩個指標p1p2。每次迴圈p1向前走一步,p2向前走兩步。直到p2碰到NULL指標或者兩個指標相等結束迴圈。如果兩個指標相等則說明存在環。
struct link 
{
        int data;
         link* next;
};
bool IsLoop(link* head)
{
         link* p1=head, *p2 = head;
          if (head ==NULL || head->next ==NULL) 
          {
                    return false;
          }
         do{
             p1= p1->next;
             p2 = p2->next->next;
         } while(p2 && p2->next && p1!=p2);          
          if(p1 == p2)
                    return true;
          else
                    return false;
}
2,連結串列反轉單向連結串列的反轉是一個經常被問到的一個面試題,也是一個非常基礎的問題。比如一個連結串列是這樣的: 1->2->3->4->5 通過反轉後成為5->4->3->2->1。最容易想到的方法遍歷一遍連結串列,利用一個輔助指標,儲存遍歷過程中當前指標指向的下一個元素,然後將當前節點元素的指標反轉後,利用已經儲存的指標往後面繼續遍歷。原始碼如下:
struct linka {
          int data;
          linka* next;
};
void reverse(linka*& head)
{
          if(head ==NULL)
               return;
          linka*pre, *cur, *ne;
          pre=head;
          cur=head->next;
          while(cur)
          {
               ne = cur->next;
               cur->next = pre;
               pre = cur;
               cur = ne;
          }
          head->next = NULL;
          head = pre;
}
還有一種利用遞迴的方法。這種方法的基本思想是在反轉當前節點之前先呼叫遞迴函式反轉後續節點。原始碼如下。不過這個方法有一個缺點,就是在反轉後的最後一個結點會形成一個環,所以必須將函式的返回的節點的next域置為NULL。因為要改變head指標,所以我用了引用。演算法的原始碼如下:
linka* reverse(linka* p,linka*& head)
{
          if(p == NULL || p->next == NULL)
          {
               head=p;
               return p;
          }
          else
          {
               linka* tmp = reverse(p->next,head);
               tmp->next = p;
               return p;
          }
}
3,判斷兩個陣列中是否存在相同的數字給定兩個排好序的陣列,怎樣高效得判斷這兩個陣列中存在相同的數字?這個問題首先想到的是一個O(nlogn)的演算法。就是任意挑選一個數組,遍歷這個陣列的所有元素,遍歷過程中,在另一個數組中對第一個陣列中的每個元素進行binary search。用C++實現程式碼如下:
bool findcommon(int a[],int size1,int b[],int size2)
{
          int i;
          for(i=0;i<size1;i++)
          {
               int start=0,end=size2-1,mid;
               while(start<=end)
               {
                    mid=(start+end)/2;
                    if(a[i]==b[mid])
                         return true;
                    else if (a[i]<b[mid])
                         end=mid-1;
                    else
                         start=mid+1;
               }
          }
          return false;
}
後來發現有一個 O(n)演算法。因為兩個陣列都是排好序的。所以只要一次遍歷就行了。首先設兩個下標,分別初始化為兩個陣列的起始地址,依次向前推進。推進的規則是比較兩個陣列中的數字,小的那個陣列的下標向前推進一步,直到任何一個數組的下標到達陣列末尾時,如果這時還沒碰到相同的數字,說明陣列中沒有相同的數字。
bool findcommon2(int a[], int size1, int b[], int size2)
{
          int i=0,j=0;
          while(i<size1 && j<size2)
          {
               if(a[i]==b[j])
                         return true;
               if(a[i]>b[j])
                    j++;
               if(a[i]<b[j])
                    i++;
          }
          return false;
}
4,最大子序列問題:給定一整數序列A1 A2... An (可能有負數),求A1~An的一個子序列Ai~Aj,使得AiAj的和最大例如:整數序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和為21對於這個問題,最簡單也是最容易想到的那就是窮舉所有子序列的方法。利用三重迴圈,依次求出所有子序列的和然後取最大的那個。當然演算法複雜度會達到O(n^3)。顯然這種方法不是最優的,下面給出一個演算法複雜度為O(n)的線性演算法實現,演算法的來源於Programming Pearls一書。在給出線性演算法之前,先來看一個對窮舉演算法進行優化的演算法,它的演算法複雜度為O(n^2)。其實這個演算法只是對對窮舉演算法稍微做了一些修改:其實子序列的和我們並不需要每次都重新計算一遍。假設Sum(i, j)A[i] ... A[j]的和,那麼Sum(i, j+1) = Sum(i, j) + A[j+1]。利用這一個遞推,我們就可以得到下面這個演算法:
int max_sub(int a[],int size)
{
          int i,j,v,max=a[0];
          for(i=0;i<size;i++)
          {
               v=0;
               for(j=i;j<size;j++)
               {
                    v=v+a[j];//Sum(i, j+1) = Sum(i, j) + A[j+1]
                    if(v>max)
                         max=v;
               }
          }
          return max;
}
那怎樣才能達到線性複雜度呢?這裡運用動態規劃的思想。先看一下原始碼實現:
int max_sub2(int a[], int size)
{
          int i,max=0,temp_sum=0;
          for(i=0;i<size;i++)
          {
               temp_sum+=a[i];
               if(temp_sum>max)
                    max=temp_sum;
               else if(temp_sum<0)
                    temp_sum=0;
          }
          return max;
}
6,按單詞反轉字串並不是簡單的字串反轉,而是按給定字串裡的單詞將字串倒轉過來,就是說字串裡面的單詞還是保持原來的順序,這裡的每個單詞用空格分開。例如:

Here is www.mianwww.com.cn

經過反轉後變為:如果只是簡單的將所有字串翻轉的話,可以遍歷字串,將第一個字元和最後一個交換,第二個和倒數第二個交換,依次迴圈。其實按照單詞反轉的話可以在第一遍遍歷的基礎上,再遍歷一遍字串,對每一個單詞再反轉一次。這樣每個單詞又恢復了原來的順序。
char* reverse_word(const char* str)
{
           int len = strlen(str);
           char* restr = new char[len+1];
           strcpy(restr,str);
           int i,j;
           for(i=0,j=len-1;i<j;i++,j--)
           {
                char temp=restr[i];
                restr[i]=restr[j];
                restr[j]=temp;
           }
           int k=0;
           while(k<len)
           {
                i=j=k;
                while(restr[j]!=' ' && restr[j]!='' )
                     j++;
                k=j+1;
                j--;
                for(;i<j;i++,j--)
                {
                     char temp=restr[i];
                     restr[i]=restr[j];
                     restr[j]=temp;
                }
           }
           return restr;
}
如果考慮空間和時間的優化的話,當然可以將上面程式碼裡兩個字串交換部分改為異或實現。例如將
                char temp=restr[i];
                restr[i]=restr[j];
                restr[j]=temp;
改為
                restr[i]^=restr[j];
                      restr[j]^=restr[i];
                restr[i]^=restr[j];
					
7,字串反轉我沒有記錯的話是一道MSN的筆試題,網上無意中看到的,拿來做了一下。題目是這樣的,給定一個字串,一個這個字串的子串,將第一個字串反轉,但保留子串的順序不變。例如:輸入:第一個字串: "This is mianwww's Chinese site: http://www.mianwww.com.cn/cn"

子串: "mianwww"

輸出: "nc/nc.moc.mianwww.www//:ptth :etis esenihC s'mianwww si sihT"

一般的方法是先掃描一邊第一個字串,然後用stack把它反轉,同時記錄下子串出現的位置。然後再掃描一遍把記錄下來的子串再用stack反轉。我用的方法是用一遍掃描陣列的方法。掃描中如果發現子串,就將子串倒過來壓入堆疊。最後再將堆疊裡的字元彈出,這樣子串又恢復了原來的順序。原始碼如下:
#include <iostream>
#include <cassert>
#include <stack>
using namespace std;
//reverse the string 's1' except the substring 'token'.
const char* reverse(const char* s1, const char* token)
{
             assert(s1 && token);
             stack<char> stack1;
             const char* ptoken = token, *head = s1, *rear = s1;
             while (*head != '')
             {
                          while(*head!= '' && *ptoken == *head)
                          {
                             ptoken++;
                             head++;
                          }
                          if(*ptoken == '')//contain the token
                          {
                             const char* p;
                             for(p=head-1;p>=rear;p--)
                                          stack1.push(*p);
					
                             ptoken = token;
                             rear = head;
                          }
                          else
                          {
                             stack1.push(*rear);
                                   head=++rear;
                             ptoken = token;
                          }
             }
             char * return_v = new char[strlen(s1)+1];
             int i=0;
             while(!stack1.empty())
             {
                          return_v[i++] = stack1.top();
                          stack1.pop();
             }
             return_v[i]='';
             return return_v;
}
int main(int argc, char* argv[])
{cout<<"This is mianwww 's Chinese site: http://www.mianwww.com.cn/cn
";
             cout<<reverse("This is mianwww's Chinese site: http://www. mianwww.com.cn/cn"," mianwww ");
             return 0;
}
 8, 刪除陣列中重複的數字問題:一個動態長度可變的數字序列,以數字0為結束標誌,要求將重複的數字用一個數字代替,例如:將陣列 1,1,1,2,2,2,2,2,7,7,1,5,5,5,0 轉變成1,2,7,1,5,0 問題比較簡單,要注意的是這個陣列是動態的。所以避免麻煩我還是用了STL
            
           

相關推薦

Java資料結構試題

1.棧和佇列的共同特點是(只允許在端點處插入和刪除元素) 4.棧通常採用的兩種儲存結構是(線性儲存結構和連結串列儲存結構) 5.下列關於棧的敘述正確的是(D)      A.棧是非線性結構B.棧是一種樹狀結構C.棧具有先進先出的特徵D.棧有後進先出的特徵 6.連結串列不具有的

Java 程式設計師必須掌握的 8 道資料結構試題,你會幾道

瑞士電腦科學家Niklaus Wirth在1976年寫了一本書,名為《演算法+資料結構=程式設計》。 40多年後,這個等式仍被奉為真理。這就是為什麼在面試過程中,需要考察軟體工程師對資料結構的理解。 幾乎所有的問題都需要面試者對資料結構有深刻的理解。無論你是初入職場的

Java常見資料結構試題(帶答案)

1.棧和佇列的共同特點是(只允許在端點處插入和刪除元素)4.棧通常採用的兩種儲存結構是(線性儲存結構和連結串列儲存結構)5.下列關於棧的敘述正確的是(D)     A.棧是非線性結構B.棧是一種樹狀結構C.棧具有先進先出的特徵D.棧有後進先出的特徵6.連結串列不具有的特點是(

資料結構試題oj練習

題        oj 連結:https://leetcode-cn.com/problems/remove-linked-list-elements/description/ /** * Definition for singly-lin

資料結構試題(含答案)

1.棧和佇列的共同特點是(只允許在端點處插入和刪除元素) 4.棧通常採用的兩種儲存結構是(線性儲存結構和連結串列儲存結構) 5.下列關於棧的敘述正確的是(D)      A.棧是非線性結構B.棧是一種樹狀結構C.棧具有先進先出的特徵D.棧有後進先出的特徵 6.連結串列不具有的特點是(B)A.不必事先估計儲存

資料結構試題/判斷一棵樹是否是完全二叉樹

二叉樹: 1.滿二叉樹:在一棵二叉樹中,如果所有分支節點都存在左子樹和右子樹,並且所有葉子節點都在同一層上。 2.完全二叉樹:如果一棵具有N個結點的二叉樹的結構與滿二叉樹的前N個結點的結構相同,稱為完全二叉樹。 //判斷一棵二叉樹是否是完全二叉樹--利

資料結構試題總結1——陣列:求最大、次大值

一般大家一開始想到的辦法就是一次迴圈,記錄下最大值和最小值。或者就是用兩次冒泡,找到最大值和次大值。 這兩種方法實踐複雜度差不多都是O(2n),如果陣列很長,效率還是不夠高的。 注意:直接排序,再選擇最大的兩個值,這並不是一個好辦法,因為我們只需要前兩個數有序,不需要後N-

python+演算法+資料結構+試題

一、單鏈表反轉 #!/usr/bin/python #遞迴實現單鏈表反轉 class ListNode(object): def __init__(self,x): self.val=x self.next=None def recurse(hea

資料結構試題總結5——陣列:找出陣列中唯一一個出現一次的元素

問題描述:一個數組其中有一個元素出現了一次(奇次),其他元素都出現兩次(偶數次數),找出出現一次(奇次)的元素。 分析:碰到這種偶次奇次的問題,首先要想一下位運算中的異或。一個數異或本身為0,一個數異或0不變。a ^ a = 0, a ^ 0 = a。 這個題中,我們可以把

資料結構試題總結2——陣列:求出現次數超過一半的元素

遇到這個題最簡單的想法就是,統計每個元素出現的次數。但是無法知道陣列中有多少種元素,並且這樣會用到其他的儲存空間,再查詢結果的時候也需要多遍歷一次結果的陣列。 正確的解決辦法是去記錄重複元素(不管是否是結果元素)的數量,然後碰見一個不同元素就減一(相當於抵消了),碰見結果元

資料結構試題總結6——陣列:求兩個陣列中滿足給定和的兩個元素

問題描述:在兩個有序陣列中,分別找出a,b兩個元素滿足a+b = c,c已知。 分析:我們要用有序這個有利條件,避免迴圈中套迴圈。我們用兩個索引i,j分別指向陣列A,B的首尾,根據比較的結果來移動索引的位置。 如果     A[i] + B[j]  <  c , i+

java資料方面試題_2

8:如果main方法被宣告為private會怎樣? 答案:能正常編譯,但執行的時候會提示”main方法不是public的”。 9:Java裡的傳引用和傳值的區別是什麼? 答案:傳引用是指傳遞的是地址而不是值本身,傳值則是傳遞值的一份拷貝。 10:如果要重寫一個物件的equals方法,還要考慮什麼?

Java常考試題3--Java的基本資料型別有哪些?

問:String 是最基本的資料型別嗎? 答:不是。 Java中的基本資料型別只有8個:byte、short、int、long、float、double、char、boolean; 除了基本型別(pr

螞蟻金服初級Java電話面試 試題

ringbuf str eem 螞蟻 ren 電話 什麽 死鎖 hashmap 1.String, StringBuffer, StringBuilder 的區別,為什麽String 不可改變,StringBuilder可以改變? 2.HashMap 是不是有序的,有哪些有

Java線程試題 Top 50

pos 很難 設置 edt 維護 initial ips 有意 缺少 Java線程面試題 Top 50不管你是新程序員還是老手,你一定在面試中遇到過有關線程的問題。Java語言一個重要的特點就是內置了對並發的支持,讓Java大受企業和程序員的歡迎。大多數待遇豐厚的Java開

Java線程試題

linux下 rand 競態 java多線 答案 固定 枚舉類型 隨機 發現 不管你是新程序員還是老手,你一定在面試中遇到過有關線程的問題。Java語言一個重要的特點就是內置了對並發的支持,讓Java大受企業和程序員的歡迎。大多數待遇豐厚的Java開發職位都要求開發者精通多

算法和數據結構試題

printf sso 標點符號 子數組 names 開始 負數 con 那是 1.求子數組的最大和 例如輸入的數組為1, -2, 3, 10, -4, 7, 2, -5,和最大的子數組為3, 10, -4, 7, 2,因此輸出為該子數組的和18。 因為是O(N)的復雜度,因

大公司喜歡問的Java集合類試題

排序 ger stack cap out strong factor ack 繼承 大公司喜歡問的Java集合類面試題 看了一些所謂大公司的JAVA面試問題,發現對於JAVA集合類的使用都比較看重似的,而自己在這方面還真的是所真甚少,抽空也學習學習吧。 java.uti

Java常考試題(三)

請求 其中 默認 查找 重新 技術分享 block 知識 logs     序言        說說今天遇到的一件小事吧,在遇到問題,查找答案時,看到很多人的博客裏面都有提到關鍵字眼,可讓人覺得可恨的是,大多數人寫的博文中,基本上都是照著書上的語言發表的,看了跟沒看一樣,沒

Java常考試題(一)

div 並且 功能 不出 共享 情況 字符型 對象 java字節碼       序言         我是一只亂飛亂撞的菜鳥,寫的文章目前是以記錄自己學習,和方便以後查看,期待日後不久能通過自己的努力,獲得一點小小的成功,然後寫出我的學習經驗總結性文章來。