2020 - 面試刷題 ING(java基礎知識點鞏固)

養成每年都去面試市場看看的好習慣很重要,看清形勢,也認清自己 zzz ...

知識點都要見識過,至少有印象 (否則:喔唷~~~ 不給性感面試官,在線發offer的機會嘍)

目錄

 

1.Java入門知識點分析

2.java基礎知識

java基礎語法

java基本數據類型

java包裝類

java集合容器

java工具類

java運算符/循環結構

java反射

java 流IO (這塊不大熟悉)

java 錯誤/異常Throwable

java線程知識


1.Java入門知識點分析

  1. 什麼是面向對象 *
  2. java有哪幾種基本數據類型
  3. java語言基本格式
  4. 普通類/ 接口類 / 抽象類 / 枚舉類 的共性
  5. 普通類/ 接口類 區別?
  6. 普通類/ 抽象類 區別?
  7. 普通類/ 枚舉類 區別?
  8. 接口類/ 抽象類 區別?
  9. 繼承注意事項?
  10. 接口實現注意事項?
  11. 訪問修飾符有幾種?
  12. 訪問修飾符對 類 / 屬性 / 方法上分別起什麼作用?
  13. static 修飾符有什麼作用?
  14. final 修飾符作用?
  15. java中對象怎麼創建?
  16. i++ 與 ++i的區別?
  17. = 與 == 分別是什麼含義?
  18. 數組有幾種創建方式?
  19. 字符串創建有幾種方式?
  20. java中超類是哪個,有什麼特點?
  21. java集合有哪幾種?
  22. 數組和鏈表的區別?(數據結構)

 

2.java基礎知識

java基礎語法

  1. 繼承和接口實現有什麼區別?
  2. 多態是什麼?
  3. 重寫和重載的區別?
  4. java中根據數據類型區分:可以分爲哪2種?

java基本數據類型

  1. java有哪幾種基本數據類型 ,對應的包裝類是哪些?
  2. int 類型能否爲null?
  3. byte  / short / int  / long,在內存中存儲 對應字的節數爲多少?
  4. float / double 精度 ?
  5. boolean默認值是? 在內存中存儲的值是怎麼樣?
  6.  int 類型引用  能指向 long類型空間 嗎?反之呢? (可以從內存角度分析)爲什麼?
  7. int類型值上下限是多少?
  8. byte類型 與 bit 區別?
  9. 基本數據類型 --- 自動類型轉換順序知道嗎?從高到底依次是怎麼樣的?
  10. 能把大容量類型轉換爲小容量類型嗎?
  11. char類型轉int類型的結果可以去哪兒查? (有對應的表)
  12. 精度值強轉成整型,是進行4舍5入還是其它?
  13. 整型 3/2 結果是多少?
  14. Math中取餘數的方法對負數是怎麼處理的?

java包裝類

  1. Object類中有多少個方法?每個方法的作用
  2. 其中的clone() 方法與序列化相比有什麼區別?
  3. finalize() 方法什麼作用?
  4. Integer包裝類瞭解多少?
  5.  
            Integer a= 128;
            int a1 = 128;
            Integer a2= 128;
            Integer b= 129;
            int b1 = 129;
            Integer c= new Integer(128);
            Integer d= new Integer(129);
            System.out.println( a == 128);
            System.out.println( a == (Integer) 128);
            System.out.println( a == a1);
            System.out.println( a == a2);
            System.out.println( a == c);
            System.out.println( b == b1);
            System.out.println( b == d);
    
    
     哪幾個返回true?爲什麼呢?(可以從裝箱/拆箱的角度回答問題)
  6. 交換Integer類型的2個值,方法怎麼寫?
            Integer a= 128;
            Integer b= 129;
            System.out.println( "交換前:a = " + a + ", b = " + b);
            swap(a, b);
            System.out.println( "交換後:a = " + a + ", b = " + b);    
    
        public static void swap(Integer i, Integer j){
            Integer temp = new Integer(i.intValue());
            try {
                Field intValue = Integer.class.getDeclaredField("value");
                intValue.setAccessible(true);
                intValue.set(i, j);
                intValue.set(j, temp);
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
    
        }

    上面這個方法對嗎?裏面有涉及到多少知識點?

  7. String 類能否被繼承?
  8. String對象能否修改?
  9. String類中常用方法有哪些?
  10. 字符串比較
    String a = "abc";
    String b = "abc";
    String c = new String("abc");
    System.out.println( a == b);
    System.out.println( a == c);

    結果怎麼樣?能從內存模型角度解析一下嗎?

  11. 字符串比較

        public static void main(String[] args) {
            String a = "ab";
            String c = "cd";
            String d = "abcd"
            String e = "ab" + "cd" + "";
            String f = a + "cd";
            String g = a + c;
        }
    
    

    判斷上面 d == e / e == f /  e == g  / f == g ,哪些爲true,哪些爲false?爲什麼(String運行反編譯文章 傳送門

  12. StringBuffer 和 StringBuild的比較?

  13. String 類的 indexof() 方法什麼意思?

  14. String類的replace()  和 replaceAll ()  有什麼區別?

  15. trim() 能去除字符串中間的空白符嗎?

  16. intern() 方法有什麼用,jdk5之後該方法做了什麼修改?

java集合容器

  1. 數組與集合有什麼區別 ?*傳送門

  2. java中集合類有哪些 ?

  3. collection 與collects 有什麼區別 ?

  4. iterator和 Iterable 有什麼區別 ?

  5. comparator<T> 比較函數式接口理解多少,compareable 排序接口 怎麼使用?寫個程序舉例子

  6. Collection中有remove方法 Iterator中也有remove,2者有什麼區別 ?

  7. List 和 Set的區別 ?

  8. List是否可以存儲重複的值嗎 ?有順序嗎?可以存儲null嗎? Map呢 ?

  9. 數組和鏈表 數據結構上的區別 ?

  10. List是否是線程安全的?如果不安全,能否舉個例子說明不安全 ?

  11. CopyOnWriteArrayList 的使用瞭解嗎 ?

  12. Set有什麼特點?一般什麼場景使用它 ?

  13. HashSet 和 TreeSet有什麼區別?內部實現能描述嗎?

  14. Collection 常用方法有哪些知道嗎 ?1.8之後加入什麼方法 ?

  15. Map 常用方法知道嗎 ?Properties實現了什麼接口 ?

  16. Map中k-v,key能存儲空值嗎?value能存儲空值嗎?

  17. HashMap也是變長的,默認長度是多少?什麼情況下,會進行擴容 ?

  18. HashMap 1.7 中put操作的流程大概記得嗎?大概描述一下?

  19. HashMap 1.7 中get操作的流程大概記得嗎?大概描述一下?

  20. HashMap 1.7 中size操作的流程大概記得嗎?大概描述一下?

  21. HashMap和HashTable的區別?

  22. CurrentHashMap 與 HashMap有什麼區別?

  23. HashMap底層實現?1.8版本有什麼新改動?

  24. HashMap 1.8 中put操作的流程大概記得嗎?大概描述一下?

  25. HashMap 1.8 中get操作的流程大概記得嗎?大概描述一下?

  26. HashMap 1.8 中size操作的流程大概記得嗎?大概描述一下?

  27. Hash衝突問題怎麼解決?

  28. CurrentHashMap1.7 如何實現同步,可以談談內部結構? 1.8版本做了些什麼改動

  29. CurrentHashMap在1.7中segment初始化都在什麼時候?

  30. CurrentHashMap在1.7中put中先獲取鎖還是先擴容?(送分)

  31. CurrentHashMap在1.7中size會發生什麼問題,推薦使用嗎?

  32. CurrentHashMap 1.8版本如何實現同步?取消使用AQS機制,用到了synchronized,爲什麼這麼選擇?

  33. 核心方法: tabAt / casTabAt / setTabAt 這幾個方法如何實現保證線程安全?

  34. CurrentHashMap 1.8版本中紅黑樹 與 鏈表什麼時候互相開始轉換?8 ,6

  35. CurrentHashMap 1.8版本的併發度?

  36. CurrentHashMap 1.8 中put操作的流程大概記得嗎?大概描述一下?

  37. CurrentHashMap 1.8 中get操作的流程大概記得嗎?大概描述一下?

  38. CurrentHashMap 1.8 中size操作的流程大概記得嗎?大概描述一下?

  39. SkipList - 跳錶的數據結構?

  40. SkipList - 跳錶出現的目的?增快查詢的數據

  41. SkipList - 跳錶的查詢思想?空間換時間!

  42. 普通二分概念? 二叉樹的概念?

  43. 當二叉樹出現最壞情況變成鏈表的情況,怎麼解決?通過左右旋靠近平衡二叉樹,紅黑樹!

  44. CopyOnWriteArrayList 寫時復置容器,用空間換時間,單服務可以使用做白名單/黑名單!

java工具類

  1. Number類瞭解多少?

  2. 數組的創建方式?

  3. 日期類Date() 與JDK8新加入的日期類 LocalDateTime() 橫向比較.

  4. 計算2個時間之間相隔多少天?    (多方法實現)

  5. 正則語法不要忘記>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

java運算符/循環結構

  1. 循環有哪幾種方法,continue, break; return; 在循環中分別起到什麼作用?

  2. switch () 入參類型限制? 字符串類型可以嗎(什麼版本jdk加入)?

  3. 下面的代碼最終輸出什麼內容?

       public static void main(String args[]){
          int i = 1;
          switch(i){
             case 0:
                System.out.println("0");
             case 1:
                System.out.println("1");
             case 2:
                System.out.println("2");
             default:
                System.out.println("default");
          }
       }

     

  4. 普通for循環, 增強for 循環, foreach循環有什麼區別嗎?

  5. java8新增的循環方式: IntStream.range(a, b).forEach(),與普通for循環相比優勢和劣勢?

  6.  IntStream.range(a, b)循環想要加入stop條件?(java9中加入了那些方法)

  7. 位運算符>> 與 >>> 的區別?位運算了解多少?

java反射

  1. 創建一個對象有那些方式?

  2. Java中的反射可以怎麼理解?

  3. 獲取Class有哪些方式?

  4. 反射怎麼獲取屬性/方法?

  5. 對象的私有屬性,沒有公用方法,怎麼修改值?

  6. Junit中是否使用到反射知識?

  7. Spring的Bean創建是否使用了反射? 如果有是Cglib 還是java自帶動態代理proxy?

  8. 註解解析是否使用反射,怎麼使用的?

java 流IO (這塊不大熟悉)

  1. 字節流,字符流了解多少?

  2. BIO是什麼,有什麼特點?

  3. NIO是什麼,有什麼特點?

java 錯誤/異常Throwable

  1. java語言中所有錯誤/異常的超類是什麼?

  2. throw 和 throws的區別是什麼?

  3. Exception 和 RuntimeException 怎麼理解?舉例子說明更棒

  4. 什麼是編譯期異常?什麼是運行時異常?

  5. 常見的異常知道多少?列舉20個(😄,直接榨乾)

  6. Error 和 Exception有什麼區別?能舉例說明嗎?

  7. java中什麼是異常鏈?我們一般利用異常鏈做什麼?

  8. try / catch / finally 

        public static void main(String[] args) {
            System.out.println(test1(0));
            System.out.println(test2(0));
            System.out.println(test3(0));
            System.out.println(test4(0));
        }
    
        public static Integer test1(Integer a) {
            try {
                a += 1;
                return a;
            } catch (Exception e) {
                a += 10;
            } finally {
                a += 100;
                System.out.println("finally:" + a);
            }
            return a;
        }
        public static Integer test2(Integer a) {
            try {
                a += 1;
            } catch (Exception e) {
                a += 10;
            } finally {
                a += 100;
                System.out.println("finally:" + a);
            }
            return a;
        }
        public static Integer test3(Integer a) {
            try {
                a += 1/0;
            } catch (Exception e) {
                a += 10;
                return a;
            } finally {
                a += 100;
                System.out.println("finally:" + a);
            }
            return a;
        }
        public static Integer test4(Integer a) {
            try {
                a += 1/0;
                return a;
            } catch (Exception e) {
                a += 10;
            } finally {
                a += 100;
                System.out.println("finally:" + a);
            }
            return a;
        }

    輸出結果如何,能解釋一下嗎?

  9. catch方法

        try {
            XXXX
        } catch (Exception ex) {
            ex.printStackTrace();
        } catch (RuntimeException re) {
            re.printStackTrace();
        }

    上面的代碼會報錯嗎?屬於什麼時期的異常?

java線程知識

  1. 多線程的意義?

  2. 時間片輪轉概念?

  3. 線程的並行數和併發數的區別?

  4. 多線程之間是協作式還是搶佔式工作?

  5. Java內存模型瞭解嗎?多線程運行,內存如何分配!

  6. java中創建新線程的方式有哪些?

  7. Thread類瞭解多少?裏面有哪些常用方法?

  8. Runnable接口瞭解嗎?

  9. run() / start() 方法有什麼區別?

  10. runnable 接口和 callable接口有什麼區別?

  11. 帶返回值的新起線程,怎麼獲取返回值?

  12. Future<V> 瞭解多少,get()獲取線程返回值,會等待嗎還是直接返回null?   

  13. (函數式方法)lambad表達式實現一個線程創建?

  14. 以前對於線程知識也有過一些提問(傳送門

  15. 線程運行的流轉狀態有那些?

  16. wait 與 notify 有什麼作用? notify 和 notfiyAll 有什麼區別?一般怎麼選擇

  17. sleep與wait有什麼區別?

  18. interrupt  與interrupted  有什麼區別?分別是什麼作用

  19. 怎麼安全的停止線程,停止服務?

  20. 什麼是死鎖?(死鎖例子:傳送門

  21. synchronized關鍵字能在基本數據類型上使用嗎?能在 Integer 上使用嗎?

  22. synchronized能在哪些位置使用,方法?方法塊?靜態方法?

  23. volatile關鍵字的作用,與synchronized相比有什麼區別,結合內存模型談談?

  24. ThreadLocal 概念?線程局部變量!

  25. 在ThreadLocal中內存泄漏怎麼發生? (tip:Thread類中ThreadLocalMap -- Entry extends  WeakReference<ThreadLocal<?>>)

  26. strongReference / softReference / weakReference / 虛引用 的區別?

  27. 線程池大概是什麼,有什麼作用?

  28. 線程池創建入參有哪些?分別有什麼作用?

  29. 線程池該如何選擇?針對不同的情況:IO密集型和 CPU密集型

  30. 線程池的等待隊列如何選擇   =====> 什麼情況 ?有界or無界

  31. 拒絕策略的目的是什麼?拒絕策略我們如何選擇 ?

  32. BlockingQueue:什麼是阻塞(等待)隊列?

  33. BlockingQueue:對於生產者和消費者模式,什麼時候會出現阻塞?有界和無界的區別

  34. DelayQueue :延遲隊列有什麼特點?

  35. 阻塞隊列的操作?隊列插入元素有哪幾種?移除元素有哪幾種?有什麼區別?

  36. 阻塞隊列的檢查方法有哪些?有什麼區別

  37. Executors 類內部給我們實現了很多種類型的線程池,可以隨便取2個分析一下嗎?

  38. 除了java語言鎖synchronized,還有其它鎖嗎?

  39. CAS原理?與synchronized相比較呢?

  40. cas的使用會出現哪些問題? ABA問題怎麼發生? 怎麼避免?(和volatile搭配使用香不香?)

  41. JDK併發包 - 代碼實現的鎖 Lock 瞭解多少?

  42. ReentrantLock鎖瞭解多少?幾個核心方法是什麼?

  43. ReentrantLock鎖的使用固定格式知道嗎?

  44. 公平鎖和非公平鎖區別在哪兒?效率怎麼比較?

  45. ReentrantLock是否可重入?可重入的概念是什麼?

  46. 當讀多寫少的時候如何選擇鎖?讀寫鎖瞭解多少?如何使用?

  47. 關於AQS瞭解多少?能否自己實現一個簡單的可重入鎖?

  48. 鎖的對象是什麼?繼承AbstractQueuedSynchronize 需要實現那幾個主要方法?(標記當前獲取鎖線程方法, trylock / release)

  49. 關於tryAcquire() 方法的核心操作怎麼一個實現流程知道嗎?傳送門

  50. AQS中有一個condition類的使用,瞭解多少呢?

  51. AQS中LockSupport這個又瞭解多少呢?

  52. 對於AQS實現的鎖,能畫一張圖來描述一下嗎?

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章