JAVA面試題 (一)

来源:https://www.cnblogs.com/Ruoqian/archive/2019/10/02/ms102_1.html
-Advertisement-
Play Games

java作用域public private protected 不寫 friendly的區別? public:可以被任何類引用。 protected:除了其他包不能使用,當前類,子孫類,同一包下的所有類都可 以使用。 friendly:不寫時,子孫類和其他包不能使用,當前類,同一包下都可以使用。 p ...



java作用域public private protected 不寫-friendly的區別?
  • public:可以被任何類引用。
  • protected:除了其他包不能使用,當前類,子孫類,同一包下的所有類都可
    以使用。
  • friendly:不寫時,子孫類和其他包不能使用,當前類,同一包下都可以使用。
  • private:只有當前類中可以使用。

& 和 && 的區別。
  • &是位運算符,而&&的邏輯運算符。二者沒有可比性。

collection和collections的區別。
  • collection是java中容器框架的頂層介面。繼承它的主要有list和set兩個介面。
  • collections是針對容器類的一個幫助類。提供一系列的靜態方法實現對容器的各種
    搜索,排序,線程安全化的操作。
  • 線程安全化:使用synchronized方法將集合變為線程同步的安全集合。
class model{
    List list1 = Collections.synchronizedList(new ArrayList());
    List list2 = Collections.synchronizedMap(new Map<String,String>());
    List list3 = Collections.synchronizedSet(new TreeSet<>());
}

String s=new String("asd")創建了多少個對象。
  • 創建了兩個。首先創建asd的字元串對象。然後new字元串對象將asd賦予它。
  • String s = "asd":這種方式變數存儲在方法區中。
  • new String("asd"): 這種方式對象存儲在堆中。

java中有沒有goto關鍵字?
  • java中的保留字,現在沒有在java中使用。goto語句常與條件語句配合使用。可用來實現
    條件轉移,構成迴圈,跳出迴圈體等功能。但是在結構化程式中,一般不使用goto語句,以免
    造成程式流的混亂,使理解和調試程式困難。

5%3、-5%3、5%-3、-5%-3的結果是多少?
  • 以右邊的符號為準:2 -2 2 -2

Overload和Override的區別
  • 重載:Overload在同一類中使用,只要方法名一致,參數個數,返回值都可以不用一致。訪問類型也可以改。
  • 重寫:Override繼承關係類使用,方法名,返回值,參數個數必須一致。訪問類型必須必父類大。

set容器里的元素是不能重覆的,那麼使用什麼方法實現的?
  • 首先set集合的底層是map實現的,而map的key是不能重覆的。map的key值不重覆是因為put方法會先進行
    hashcode的比較,如果值一致那麼再進行equals方法比較。這樣保證key值得唯一性。

error和exception的區別
  • error一般是指可以恢復但是非常困難的問題,如棧溢出,記憶體溢出。
  • exception指運行時異常,這是一種設計或者實現上的問題。

jdk8的新特性 主要的
  • Lambda表達式和函數式介面:
lambda表達式也稱為閉包。是jdk8中的最大的改變,它允許我們將函數當成參數傳遞給某個方法,或者把代碼
本身當做數據處理:函數式開發。
  • 介面增加的預設方法和靜態方法:
default和static
  • 方法引用:
方法引用使得開發者可以引用現存的方法,java類的構造方法或者實例對象。一般和lambda表達式配合使用。
使得代碼簡介,緊湊。
構造器引用 Class::new///Class<T>::new
靜態方法引用 Class::static_method
某個類的成員方法引用 Class::method 
實例對象的成員方法引用 instance::method
  • 重覆註解:
自從java5引進註解之後,註解使用的越來越多,尤其是在框架中,但是註解不能在一個地方多次使用,
java8打破了這個限制,可以在一個地方重覆使用同一個註解,使用 @Repeatable定義重覆的註解
  • 更好的類型推斷
編譯器可以推導出某個參數的數據類型,使得代碼更加的簡潔
  • 拓寬註解的應用場景
現在註解幾乎可以使用在任何元素上。局部變數,介面,超類,實現類等

抽象類的介面的區別
  • 相同點:都是不能被直接實例化的
  • 不同點:
1. 抽象類是可以有方法體的,介面中沒有,但是java8的新特性中介面可以寫static和default關鍵字
的方法。
2. 抽象類中的成員變數可以隨意修飾,介面中只能是public sttaic final類型 
3. 介面中不能含有靜態代碼塊,靜態方法。抽象類可以有,新特性之後,介面可以寫靜態方法。
4. 一個類只能單繼承,但是可以多實現。
5. 抽象類可以定義成員變數,介面中的變數都是常量。

抽象類是否可以繼承實體類?
  • 抽象類是可以繼承實體類的,但是前提是實體類具有明確的構造函數。

constructor可以被override麽?
  • 不能,因為constructor是不能被繼承的。但是可以被overload。

String類可以被繼承麽?
  • 不能,該類是被final修飾的

在try-catch-final中,return在try語句里,那麼執行順序?
  • final中的code會在return之前執行。

靜態變數和實例變數的區別
  • 靜態變數是被static修飾的變數,也叫作類變數,不屬於類的任何一個對象,一個類不管創建多少個對象
    靜態變數在記憶體中有且僅有一個拷貝。
  • 實例變數必須依托於某一個實例,需要先創建對象後通過對象才能訪問,靜態變數可以實現讓多個對象共用
    記憶體

ArrayList和Vector的區別,HashMap和Hashtable的區別。

ArrayList和Vector:

  • 同步性:ArrayList是線程不安全的,也即是不同步的,Vector是線程安全的,也即是同步的。
  • 數據增長:ArrayList在達到閾值的時候會增長原來集合的50%,Vector則會增長100%。

    HashMap和Hashtable:

  • 歷史原因:Hashtable是基於Dictionary類的,HashMap是java1.2引進的Map介面的一個實現。
  • 同步性:Hashtable是線程安全的,HaspMap是線程不安全的的。
  • 值:只有HashMap可以有空值,key或value。


char變數可以存儲一個漢字麽?為什麼?
  • 可以,java中以unicode編碼,一個char占16字元,所以放中文是沒有問題的。
    ***

    GC是什麼?為什麼要有GC?
  • GC就是垃圾收集器。java不像C定義一個變數需要手動釋放記憶體。主要就是GC實現的,他可以自動檢測對象
    是否超過作用域從而達到自動回收的目的。


String和StringBuffer和StringBuilder的區別
  • String是長度不可變的,而Buffer和Builder是可變的。
  • buffer和builder最大的區別就是buffer是線程安全的,builder是線程不安全的。所以多線程推薦使用
    buffer,單線程使用builder。

final,finally,finalize的區別
  • final:修飾符,修飾類:不可被繼承,修飾變數:變為常量,修飾方法:不能重載
  • finally:在處理異常時finally塊來執行任何清除操作。
  • finalize:方法名,java允許finalize方法在GC將對象從記憶體中清除之前做必要的清理工作。此方法是
    GC確定該對象沒有被使用的時候調用的,屬於Object類,所以所有類都有該方法。

面向對象的特性
  • 抽象
  • 繼承
  • 封裝
  • 多態

基本數據類型
  • byte char int short long double float boolean

int和integer的區別
  • int是基本數據類型,integer是int的封裝類型。

ArrayList和Vector和LinkedList的存儲性能和特性
  • ArrayList和Vector都是基於數組實現的,所以查詢快,但是ArrayList是線程不安全的,Vector是線程
    安全的,其次,Vector的性能較差。
  • LinkedList是基於鏈表的,所以插入,刪除,更改快。

heap和stack的區別

heap堆,stack棧。

  • 棧:存取快,僅次於CPU中的寄存器,棧中的數據大小和生存區是確定的,缺乏靈活性。棧數據可以共用
  • 堆:動態分配記憶體大小:堆中的GC可以周期的收取不再使用的對象。因為動態分配記憶體,存取慢。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 有些網站做了反爬技術,如:比較初級的通過判斷請求頭部中的user-agent欄位來檢測是否通過瀏覽器訪問的。 在爬這類網站時需要模擬user-agent user-agent.txt 百度網盤 鏈接:https://pan.baidu.com/s/1ramkIyjVSI2_GXbxypj1Dg 提取 ...
  • 使用Python編寫一個簡單的文本編輯器,需要展示一個用戶界面,功能包括打開、保存文本文件。 使用tkinter庫來編寫GUI。 ...
  • 先看一段代碼: mov eax,dword ptr [a] add eax,1 mov dword ptr [a],eax //這三行指令將a+1 mov ecx,dword ptr [a] mov dword ptr [ebp 0D0h],ecx //這兩行指令將a的值存儲到一個臨時地址(寄存器間 ...
  • Open Eclipse.- Open the menu "Help", menu item "Install new software..."- Click on the button "Add..." to add a new software site.- Fill in the name " ...
  • 1、ArrayList源碼解析 源碼解析: 如下源碼來自JDK8:。 (以上所有內容皆為個人筆記,如有錯誤之處還望指正。) ...
  • 終於到了精髓的地方了,這確實有點懵,總感覺這太麻煩了,而且寫著也不爽,還是懷念py或者java,但也沒辦法,還是要繼續學下去。 一、運算符& 1. scanf("%d" , &i); 里的& 2. 獲取變數的地址,它的操作數必須是變數 3. 地址的大小是否與int相同取決於編譯器 &不能取的地址 & ...
  • Python解釋器安裝與環境變數調試 Python解釋器安裝(3.6): www.python.org這個是python解釋器的官網,一定要牢記。 鑒於市場上有兩種python版本(2和3),今天兩種版本都裝一下,互相學習,如有錯誤還請各位評論指正。 ![img](https://img2018.c ...
  • 1、Java常用容器:List,Set,Map List: 繼承了Collection介面(public interface List<E> extends Collection<E> ),有序且允許出現重覆值。 Set: 繼承了Collection介面(public interface Set<E ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...