北京Java培訓
達內北京中關村中心

010-62126400

熱門課程

達內北京Java培訓班:Java基礎知識面試題大集合

  • 時間:2020-06-12 14:41
  • 發布:北京java培訓
  • 來源:筆試題

本文達內北京Java培訓機構為大家分享知識點目錄,Java基礎知識面試題集合,一起來看看吧!

Java概述

何為編程

什么是Java

jdk1.5之后的三大版本

JVM、JRE和JDK的關系

什么是跨平臺性?原理是什么

Java語言有哪些特點?

什么是字節碼?采用字節碼的最大好處是什么

什么是Java程序的主類?應用程序和小程序的主類有何不同?

Java應用程序與小程序之間有那些差別?

Java和C++的區別

Oracle JDK 和 OpenJDK 的對比

基礎語法

數據類型

Java有哪些數據類型

switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上

用最有效率的方法計算 2 乘以 8

Math.round(11.5) 等于多少?Math.round(-11.5)等于多少

float f=3.4;是否正確

short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎

編碼

Java語言采用何種編碼方案?有何特點?

注釋

什么是Java注釋

訪問修飾符

訪問修飾符 public,private,protected,以及不寫(默認)時的區別

運算符

&和&&的區別

關鍵字

Java 有沒有 goto

final 有什么用?

final finally finalize區別

this關鍵字的用法

super關鍵字的用法

this與super的區別

static存在的主要意義

static的獨特之處

static應用場景

static注意事項

流程控制語句

break ,continue ,return 的區別及作用

在 Java 中,如何跳出當前的多重嵌套循環

面向對象

面向對象概述

面向對象和面向過程的區別

面向對象三大特性

面向對象的特征有哪些方面

什么是多態機制?Java語言是如何實現多態的?

面向對象五大基本原則是什么(可選)

類與接口

抽象類和接口的對比

普通類和抽象類有哪些區別?

抽象類能使用 final 修飾嗎?

創建一個對象用什么關鍵字?對象實例與對象引用有何不同?

變量與方法

成員變量與局部變量的區別有哪些

在Java中定義一個不做事且沒有參數的構造方法的作用

在調用子類構造方法之前會先調用父類沒有參數的構造方法,其目的是?

一個類的構造方法的作用是什么?若一個類沒有聲明構造方法,改程序能正確執行嗎?為什么?

構造方法有哪些特性?

靜態變量和實例變量區別

靜態變量與普通變量區別

靜態方法和實例方法有何不同?

在一個靜態方法內調用一個非靜態成員為什么是非法的?

什么是方法的返回值?返回值的作用是什么?

內部類

什么是內部類?

內部類的分類有哪些

靜態內部類

成員內部類

局部內部類

匿名內部類

內部類的優點

內部類有哪些應用場景

局部內部類和匿名內部類訪問局部變量的時候,為什么變量必須要加上final?

內部類相關,看程序說出運行結果

重寫與重載

構造器(constructor)是否可被重寫(override)

重載(Overload)和重寫(Override)的區別。重載的方法能否根據返回類型進行區分?

對象相等判斷

== 和 equals 的區別是什么

hashCode 與 equals (重要)

對象的相等與指向他們的引用相等,兩者有什么不同?

值傳遞

當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞

為什么 Java 中只有值傳遞

值傳遞和引用傳遞有什么區別

Java包

JDK 中常用的包有哪些

import java和javax有什么區別

IO流

java 中 IO 流分為幾種?

BIO,NIO,AIO 有什么區別?

Files的常用方法都有哪些?

反射

什么是反射機制?

反射機制優缺點

反射機制的應用場景有哪些?

Java獲取反射的三種方法

網絡編程

常用API

String相關

字符型常量和字符串常量的區別

什么是字符串常量池?

String 是最基本的數據類型嗎

String有哪些特性

String為什么是不可變的嗎?

String真的是不可變的嗎?

是否可以繼承 String 類

String str="i"與 String str=new String("i")一樣嗎?

String s = new String("xyz");創建了幾個字符串對象

如何將字符串反轉?

數組有沒有 length()方法?String 有沒有 length()方法

String 類的常用方法都有那些?

在使用 HashMap 的時候,用 String 做 key 有什么好處?

String和StringBuffer、StringBuilder的區別是什么?String為什么是不可變的

Date相關

包裝類相關

自動裝箱與拆箱

int 和 Integer 有什么區別

Integer a= 127 與 Integer b = 127相等嗎

何為編程

編程就是讓計算機為解決某個問題而使用某種程序設計語言編寫程序代碼,并最終得到結果的過程。

為了使計算機能夠理解人的意圖,人類就必須要將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算機之間交流的過程就是編程。

什么是Java

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程 。

jdk1.5之后的三大版本

Java SE(J2SE,Java 2 Platform Standard Edition,標準版)

Java SE 以前稱為 J2SE。它允許開發和部署在桌面、服務器、嵌入式環境和實時環境中使用的 Java 應用程序。Java SE 包含了支持 Java Web 服務開發的類,并為Java EE和Java ME提供基礎。

Java EE(J2EE,Java 2 Platform Enterprise Edition,企業版)

Java EE 以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的服務器端Java 應用程序。Java EE 是在 Java SE 的基礎上構建的,它提供 Web 服務、組件模型、管理和通信 API,可以用來實現企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web2.0應用程序。2018年2月,Eclipse 宣布正式將 JavaEE 更名為 JakartaEE

Java ME(J2ME,Java 2 Platform Micro Edition,微型版)

Java ME 以前稱為 J2ME。Java ME 為在移動設備和嵌入式設備(比如手機、PDA、電視機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內置的網絡協議以及對可以動態下載的連網和離線應用程序的豐富支持?;?Java ME 規范的應用程序只需編寫一次,就可以用于許多設備,而且可以利用每個設備的本機功能。

JVM、JRE和JDK的關系

JVM

Java Virtual Machine是Java虛擬機,Java程序需要運行在虛擬機上,不同的平臺有自己的虛擬機,因此Java語言可以實現跨平臺。

JRE

Java Runtime Environment包括Java虛擬機和Java程序所需的核心類庫等。核心類庫主要是java.lang包:包含了運行Java程序必不可少的系統類,如基本數據類型、基本數學函數、字符串處理、線程、異常處理類等,系統缺省加載這個包

如果想要運行一個開發好的Java程序,計算機中只需要安裝JRE即可。

JDK

Java Development Kit是提供給Java開發人員使用的,其中包含了Java的開發工具,也包括了JRE。所以安裝了JDK,就無需再單獨安裝JRE了。其中的開發工具:編譯工具(javac.exe),打包工具(jar.exe)等

JVM&JRE&JDK關系圖

什么是跨平臺性?原理是什么

所謂跨平臺性,是指java語言編寫的程序,一次編譯后,可以在多個系統平臺上運行。

實現原理:Java程序是通過java虛擬機在系統平臺上運行的,只要該系統可以安裝相應的java虛擬機,該系統就可以運行java程序。

Java語言有哪些特點

簡單易學(Java語言的語法與C語言和C++語言很接近)

面向對象(封裝,繼承,多態)

平臺無關性(Java虛擬機實現平臺無關性)

支持網絡編程并且很方便(Java語言誕生本身就是為簡化網絡編程設計的)

支持多線程(多線程機制使應用程序在同一時間并行執行多項任)

健壯性(Java語言的強類型機制、異常處理、垃圾的自動收集等)

安全性

什么是字節碼?采用字節碼的最大好處是什么

字節碼:Java源代碼經過虛擬機編譯器編譯后產生的文件(即擴展為.class的文件),它不面向任何特定的處理器,只面向虛擬機。

采用字節碼的好處:

Java語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。所以Java程序運行時比較高效,而且,由于字節碼并不專對一種特定的機器,因此,Java程序無須重新編譯便可在多種不同的計算機上運行。

先看下java中的編譯器和解釋器:

Java中引入了虛擬機的概念,即在機器和編譯程序之間加入了一層抽象的虛擬機器。這臺虛擬的機器在任何平臺上都提供給編譯程序一個的共同的接口。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然后由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機理解的代碼叫做字節碼(即擴展為.class的文件),它不面向任何特定的處理器,只面向虛擬機。每一種平臺的解釋器是不同的,但是實現的虛擬機是相同的。Java源程序經過編譯器編譯后變成字節碼,字節碼由虛擬機解釋執行,虛擬機將每一條要執行的字節碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然后在特定的機器上運行,這就是上面提到的Java的特點的編譯與解釋并存的解釋。

Java源代碼---->編譯器---->jvm可執行的Java字節碼(即虛擬指令)---->jvm---->jvm中解釋器----->機器可執行的二進制機器碼---->程序運行。

什么是Java程序的主類?應用程序和小程序的主類有何不同?

一個程序中可以有多個類,但只能有一個類是主類。在Java應用程序中,這個主類是指包含main()方法的類。而在Java小程序中,這個主類是一個繼承自系統類JApplet或Applet的子類。應用程序的主類不一定要求是public類,但小程序的主類要求必須是public類。主類是Java程序執行的入口點。

Java應用程序與小程序之間有那些差別?

簡單說應用程序是從主線程啟動(也就是main()方法)。applet小程序沒有main方法,主要是嵌在瀏覽器頁面上運行(調用init()線程或者run()來啟動),嵌入瀏覽器這點跟flash的小游戲類似。

Java和C++的區別

我知道很多人沒學過C++,但是面試官就是沒事喜歡拿咱們Java和C++比呀!沒辦法!!!就算沒學過C++,也要記下來!

都是面向對象的語言,都支持封裝、繼承和多態

Java不提供指針來直接訪問內存,程序內存更加安全

Java的類是單繼承的,C++支持多重繼承;雖然Java的類不可以多繼承,但是接口可以多繼承。

Java有自動內存管理機制,不需要程序員手動釋放無用內存

Oracle JDK 和 OpenJDK 的對比

Oracle JDK版本將每三年發布一次,而OpenJDK版本每三個月發布一次;

OpenJDK 是一個參考模型并且是完全開源的,而Oracle JDK是OpenJDK的一個實現,并不是完全開源的;

Oracle JDK 比 OpenJDK 更穩定。OpenJDK和Oracle JDK的代碼幾乎相同,但Oracle JDK有更多的類和一些錯誤修復。因此,如果您想開發企業/商業軟件,我建議您選擇Oracle JDK,因為它經過了徹底的測試和穩定。某些情況下,有些人提到在使用OpenJDK 可能會遇到了許多應用程序崩潰的問題,但是,只需切換到Oracle JDK就可以解決問題;

在響應性和JVM性能方面,Oracle JDK與OpenJDK相比提供了更好的性能;

Oracle JDK不會為即將發布的版本提供長期支持,用戶每次都必須通過更新到最新版本獲得支持來獲取最新版本;

Oracle JDK根據二進制代碼許可協議獲得許可,而OpenJDK根據GPL v2許可獲得許可。

基礎語法

數據類型

Java有哪些數據類型

定義:Java語言是強類型語言,對于每一種數據都定義了明確的具體的數據類型,在內存中分配了不同大小的內存空間。

分類

基本數據類型

整數類型(byte,short,int,long)

浮點類型(float,double)

數值型

字符型(char)

布爾型(boolean)

引用數據類型

類(class)

接口(interface)

數組([])

Java基本數據類型圖

switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上

在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。從 Java5 開始,Java 中引入了枚舉類型,expr 也可以是 enum 類型,從 Java 7 開始,expr 還可以是字符串(String),但是長整型(long)在目前所有的版本中都是不可以的。

用最有效率的方法計算 2 乘以 8

2 << 3(左移 3 位相當于乘以 2 的 3 次方,右移 3 位相當于除以 2 的 3 次方)。

Math.round(11.5) 等于多少?Math.round(-11.5)等于多少

Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在參數上加 0.5 然后進行下取整。

float f=3.4;是否正確

不正確。3.4 是雙精度數,將雙精度型(double)賦值給浮點型(float)屬于下轉型(down-casting,也稱為窄化)會造成精度損失,因此需要強制類型轉換float f =(float)3.4; 或者寫成 float f =3.4F;。

short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎

對于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 類型,因此 s1+1 運算結果也是 int型,需要強制轉換類型才能賦值給 short 型。

而 short s1 = 1; s1 += 1;可以正確編譯,因為 s1+= 1;相當于 s1 = (short(s1 + 1);其中有隱含的強制類型轉換。

編碼

Java語言采用何種編碼方案?有何特點?

Java語言采用Unicode編碼標準,Unicode(標準碼),它為每個字符制訂了一個唯一的數值,因此在任何的語言,平臺,程序都可以放心的使用。

注釋

什么Java注釋

定義:用于解釋說明程序的文字

分類

單行注釋

格式:// 注釋文字

多行注釋

格式:/* 注釋文字 */

文檔注釋

格式:/** 注釋文字 */

作用

在程序中,尤其是復雜的程序中,適當地加入注釋可以增加程序的可讀性,有利于程序的修改、調試和交流。注釋的內容在程序編譯的時候會被忽視,不會產生目標代碼,注釋的部分不會對程序的執行結果產生任何影響。

注意事項:多行和文檔注釋都不能嵌套使用。

訪問修飾符

訪問修飾符 public,private,protected,以及不寫(默認)時的區別

定義:Java中,可以使用訪問修飾符來保護對類、變量、方法和構造方法的訪問。Java 支持 4 種不同的訪問權限。

分類

private : 在同一類內可見。使用對象:變量、方法。注意:不能修飾類(外部類)

default (即缺省,什么也不寫,不使用任何關鍵字): 在同一包內可見,不使用任何修飾符。使用對象:類、接口、變量、方法。

protected : 對同一包內的類和所有子類可見。使用對象:變量、方法。注意:不能修飾類(外部類)。

public : 對所有類可見。使用對象:類、接口、變量、方法

訪問修飾符圖

運算符

&和&&的區別

&運算符有兩種用法:(1)按位與;(2)邏輯與。

&&運算符是短路與運算。邏輯與跟短路與的差別是非常巨大的,雖然二者都要求運算符左右兩端的布爾值都是true 整個表達式的值才是 true。&&之所以稱為短路運算,是因為如果&&左邊的表達式的值是 false,右邊的表達式會被直接短路掉,不會進行運算。

注意:邏輯或運算符(|)和短路或運算符(||)的差別也是如此。

關鍵字

Java 有沒有 goto

goto 是 Java 中的保留字,在目前版本的 Java 中沒有使用。

final 有什么用?

用于修飾類、屬性和方法;

被final修飾的類不可以被繼承

被final修飾的方法不可以被重寫

被final修飾的變量不可以被改變,被final修飾不可變的是變量的引用,而不是引用指向的內容,引用指向的內容是可以改變的

final finally finalize區別

final可以修飾類、變量、方法,修飾類表示該類不能被繼承、修飾方法表示該方法不能被重寫、修飾變量表

示該變量是一個常量不能被重新賦值。

finally一般作用在try-catch代碼塊中,在處理異常的時候,通常我們將一定要執行的代碼方法finally代碼塊

中,表示不管是否出現異常,該代碼塊都會執行,一般用來存放一些關閉資源的代碼。

finalize是一個方法,屬于Object類的一個方法,而Object類是所有類的父類,該方法一般由垃圾回收器來調

用,當我們調用System.gc() 方法的時候,由垃圾回收器調用finalize(),回收垃圾,一個對象是否可回收的

最后判斷。

以上就是達內北京Java培訓機構為大家帶來的Java基礎知識面試題集合相關內容,希望可以幫助到大家!

上一篇:北京Java培訓班:Java面試題大全
下一篇:達內北京Java培訓:27 道阿里巴巴 Java 面試題

馬上預約七天免費體驗課

姓名:

電話:

北京Java培訓班:最簡單的一道Java面試題,無人通過

達內北京Java培訓:27 道阿里巴巴 Java 面試題

達內北京Java培訓班:Java基礎知識面試題大集合

北京Java培訓班:Java面試題大全

選擇城市和中心
江西省

貴州省

廣西省

海南省

豆奶最新版本下载