Java學習之面試題整理

 

(面試題)Java基本數據類型和引用數據類型(2019年10月8日)

 

1,java 基本數據類型有幾種?哪幾種?(面試題)
     答:8種 byte short int long float double char booleanhtml

2,int類型是幾個字節?(面試題)
     答:4字節java

3, int i = 3000000000; 編譯能經過嗎?緣由是什麼?(面試題)
     答:不能 右邊數據是int類型但超出了int類型的表示範圍 大約20多億(-2^31--2^31-1)面試

4,3默認是什麼類型?3.14默認是什麼類型?(面試題)
     答:3默認int類型 3.14默認double類型編程

5,請問H的字符值(ASCII值)是多少?(面試題)數組

     答:(A:65   a:97)安全

6,爲何 int a = 09;會報錯
     答:由於在進製表示中0開頭的表示八進制,而八進制中不能出現大於7的數!
dom

 

7,int a=3&4;請問a的值爲多少模塊化

 

     答:在java中,若是&先後都是數字,那麼表示位運算符,按位與:先把十進制的數轉化成爲二進制,而後按位與,都爲1的時候纔是1,其他都爲0post

 

            同理可知  在java中也是位運算符,按位或:先把十進制的數轉化成爲二進制,而後按位與,都爲0的時候纔是0,其他都爲1spa

 

8,高類型向低類型轉換須要強制轉換嗎?強制轉換可能致使什麼問題?
     答:須要 可能致使精度丟失或溢出

9,String是基本數據類型嗎?(面試題)

     答:不是,是引用數據類型

10, int i=2;  int b = i++ + ++i + i++ ;    b等於多少?i等於多少?(面試題)

     答:計算過程:第一個 i++        i先使用   再自增    2+ ++i + i++    此時 i=3

                              到第二個 ++i     i先自增   再使用    2+4 + i++       此時 i=4

                              到第三個i++     i先使用   再自增     2+4+4            此時 i=5

                            通常可由有多少個  i++  或  ++i  直接肯定  i  的值   ,每出現一次直接加1

 

(面試題)循環語句(2019年10月10號)

 

1,下面程序運行的結果是什麼?(面試題)

1 int i = 1 ; 2 while(i<=20){ 3 i++; 4 i=i++ ; 5 System.out.println(" char長度爲1,用單引號括起來。 "); 6 } 7 System.out.println(i);

     答:程序陷入死循環   右邊的運算結果爲1 ,i永遠都是1

 

(面試題)二維數組和方法(2019年10月11日)

 

 

1,打印星星

 1 //定義五行  2 int hs = 5;  3 for (int i = 1; i <= hs; i++) {  4 // 打印空格  5 for (int j = 1; j <= hs - i; j++) {  6 System.out.print(" ");  7 }  8 // 打印*號  9 for (int j = 1; j <= i + i - 1; j++) { 10 System.out.print("*"); 11 } 12 System.out.print("\n"); 13 }

 

 

2,冒泡排序(面試題)

有一個數組{7,5,14,23,19,2,4},要求使用冒泡進行排序(從大到小)

 1 public static void main(String[] args){  2 int [] arr={7,5,14,23,19,2,4};  3 //比較輪數  4 for(int i=1;i<arr.length-1;i++){  5 //從左往右,兩兩相比  6 for(int j=1;j<arr.length-1;j++){  7 //交換  8 if(arr[j]<arr[j+1]){  9 int temp=arr[j+1]; 10 arr[j+1]=arr[j]; 11 arr[j]=temp; 12  } 13  } 14  } 15 } 

3,內存分配原理  (面試題)

  

 

 

(面試題)面相對象(2019年10月14日)

 

1,談談你對面向對象的理解?什麼是類跟對象?(面試題)

      答:面向對象是向現實世界模型的天然延伸,這是一種「萬物皆對象」的編程思想。   類是對象的抽象 對象是類的具體實例。

 

               面向對象有三大特性,封裝、繼承和多態。

 

            封裝就是將一類事物的屬性和行爲抽象成一個類,使其屬性私有化,行爲公開化,提升了數據的隱祕性的同時,使代碼模塊化。這樣作使得代碼的複用性更高。

 

            繼承則是進一步將一類事物共有的屬性和行爲抽象成一個父類,而每個子類是一個特殊的父類--有父類的行爲和屬性,也有本身特有的行爲和屬性。

            這樣作擴展了已存在的代碼塊,進一步提升了代碼的複用性。

 

            若是說封裝和繼承是爲了使代碼重用,那麼多態則是爲了實現接口重用。多態的一大做用就是爲了解耦--爲了解除父子類繼承的耦合度。

 

           (這是主觀題,不要死記,經過本身理解,而後能夠在網上找一些答案,將和本身理解相近的記下來)

         

 

 

1,final的用法?(面試題)

     答:1,當final修飾變量的時候,表示常量,內容不能夠更改。
            2,當修飾類的時候表示這個類不可以被繼承。
            3,當修飾方法的時候表示這個方法不能被覆寫。

2,重載跟重寫有什麼區別?(面試題)

     答:重寫:子類與父類方法名相同,參數列表必須徹底與被重寫的方法相同,返回類型必須一直與被重寫的方法相同,訪問修飾符的限制必定要大於等於被重寫方法的訪問修飾符,重寫最多一次。
            重載:子類與父類方法名相同,必須具備不一樣的參數列表, 能夠有不一樣的返回類型,能夠有不一樣的訪問修飾符,重載能夠N次

3,java的3大特性是什麼?

     答:封裝   繼承   多態

 

(面試題)抽象類和靜態屬性以及靜態方法(2019年10月17日)

 

1,抽象類是否必定有抽象方法?

     答:不必定,但有抽象方法的類必定是抽象類

2,堆跟棧有什麼區別?

     答:1,最主要的區別就是棧內存用來存儲局部變量和方法調用;而堆內存用來存儲Java中的對象。不管是成員變量,局部變量,仍是類變量,它們指向的對象都存儲在堆內存中。

            2,棧空間比較小;堆空間比較大。

 

3,說下有哪幾種訪問修飾符?他們有什麼區別?(面試題)

     答:public   protected    default(不寫)   private    權限由高到低

            private :只有同類能夠直接訪問

            default(不寫):同類,同包能夠直接訪問

            protected:同類,同包和子類能夠直接訪問

            public:同類,同包,子類和不一樣包的類均可以直接訪問

4,java內存結構分爲哪幾部分?(面試題)

      答:棧,堆,方法區,程序計數器,本地方法棧(native)

5,構建對象會經歷哪些步驟?(面試題)

       答:1,訪問方法區看類是否已經被加載,若是沒有先加載(靜態成員會在第一次加載時初始化)

              2,而後經過關鍵字new在堆中申請空間,初始化對象

              3,執行方法裏面的邏輯

6,靜態方法中能夠調用非靜態的變量嗎?非靜態的方法中能夠調用靜態的變量嗎?(面試題)

     答:靜態方法不能夠調用非靜態的變量,非靜態方法能夠調用靜態的變量

 

(面試題)String,Random,Math 等一些Object對象(2019年10月22日)

1.請列舉switch case中能夠填寫的類型

答:byte  short  int char  String enum

2.請判斷下面生成了幾個對象

 String a="dax"; String b= new String("dax");

 答:產生兩個對象,一個在堆內存中 還有一個在方法區中的常量池中

3.請判斷下面輸出結果

     String str6 = "b"; String str7 = "a" + str6; String str67 = "ab"; System.out.println("str7 = str67 : "+ (str7 == str67)); 

答:結果是false,由於系統編譯的時候不知道str6是一個變量,系統不會自動幫你完成字符串的拼接

3.請判斷下面輸出結果

     final String str2 = "ab"; final String str3 = "cd"; String str4 = str2+str3; // String str5 = "abcd"; System.out.println("str4 = str5 : " + (str4==str5));

答:輸出的結果是true,因爲裏面都是字符串常量,結果能夠在編譯期間就肯定下來,因此在class中已是str1 = "abcd"

 

(面試題)ArrayList,HashSet以及HashMap(2019年10月23日)

1,看以下代碼會輸出什麼

1 Integer i1 = 120 ; 2 Integer i2 = 120 ; 3 Integer i3 = new Integer(120); 4 Integer i4 = new Integer(120);

    答: Integer 在類加載的時候會先在靜態區中初始化好-128 127 之間的數值,若是在這個範圍則直接重複使用,不然在堆中new一個Integer

              120:true 因爲10在範圍內,因此使用共用靜態區中的Integer

              1000:false 因爲1000在範圍外,因此在堆中從新new一個Integer

2,ArrayList能夠有重複的元素嗎?元素是有序的嗎?

    答:有重複的元素,元素是有序的

3,ArrayList和Vector有什麼區別

 答:ArrayList是線程不安全的,效率高

    Vector是線程安全的,效率低

4,有23個對象加入到HashSet中,初始化最小爲多少

 答:23/0.75=30.66...<32=2^5

    因此初始化32個最好,又不會擴容。也不會浪費空間

5,寫一個迭代器

1 // 迭代器遍歷
2 Iterator<String> iterator = set.iterator(); 3 while(iterator.hasNext()){ 4 System.out.println(iterator.next()); 5 }

 6,List 跟Set   Map的區別?

     答:List:繼承Collection接口,有序集合,容許重複元素。

            Set: 繼承Collection接口,無序集合,不容許重複元素,且最多有一個null值。

            Map: Map是獨立接口,key_value鍵值對存儲數據;不容許重複元素。

7,Vector 跟ArrayList的區別是什麼?

     答:ArrayList線程不安全,效率高 ,擴容1.5倍;Vector 線程安全,效率低,擴容2倍。

 

8,說下java中的集合,說下ArrayList底層原理?
      答:  對於ArrayList而言,它實現List接口、底層使用數組保存全部元素。其操做基本上是對數組的操做。
                  ArrayList定義只定義類兩個私有屬性:elementData存儲ArrayList內的元素,size表示它包含的元素的數量

9,說下ArrayList跟LinkList的區別?

     答:Arraylist:底層是基於動態數組,動態數組就是改變數組容量方法,建立新的數組,指定新的容量(原來的1.5倍),將舊數組複製到新數組中並本類舊數組指向新數組 

            LinkedList:LinkedList的實現是基於雙向鏈表,並實現隊列(Queue),雙向隊列(Deque)接口     

               對於隨機訪問:ArrayList優於LinkedList             對於插入和刪除操做:LinkedList優於ArrayList

            LinkedList比ArrayList更佔內存,由於LinkedList的節點除了存儲數據,還存儲了兩個引用,一個指向前一個元素,一個指向後一個元素。

 

(面試題)異常處理(2019年10月25日)

1,final  finally  finalize有什麼區別?

   答:final修飾變量表示其不能改變,修飾方法表示其不能重寫,修飾類表示其不能被繼承

          finalize當垃圾回收器回收時執行其中的邏輯

          finally不管是否發生異常,最終都會執行其中的邏輯

 

2,throws  throw 區別是什麼?

   答:throws:用來聲明一個方法可能產生的全部異常,不作任何處理而是將異常往上傳,誰調用我我就拋給誰。

          throw:則是用來拋出一個具體的異常類型。

3,寫出5個常見異常?(面試題)

   答:數組越界異常 (ArrayIndexOutOfBoundsException )

          空指針異常   (NullPointException)

          類轉換異常  (ClassCastException)

          算術異常    (ArithmeticException)

          類不存在異常 (ClassNotFoundException)

 待補充。。。。。

相關文章
相關標籤/搜索