Ⅰ java基礎面試題有哪些
下面是10道java基礎面試題,後附答案
1.什麼是 Java 虛擬機?為什麼 Java 被稱作是「平台無關的編程語言」?
Java 虛擬機是一個可以執行 Java 位元組碼的虛擬機進程。Java 源文件被編譯成能被 Java 虛擬機執行的位元組碼文件。
Java 被設計成允許應用程序可以運行在任意的平台,而不需要程序員為每一個平台單獨重寫或者是重新編譯。Java 虛擬機讓這個變為可能,因為它知道底層硬體平台的指令長度和其他特性。
2.「static」關鍵字是什麼意思?Java 中是否可以覆蓋(override)一個 private 或者是static 的方法?
「static」關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的實例變數的情況下被訪問。
Java 中 static 方法不能被覆蓋,因為方法覆蓋是基於運行時動態綁定的,而 static 方法是編譯時靜態綁定的。static 方法跟類的任何實例都不相關,所以概念上不適用。
3.JDK 和 JRE 的區別是什麼?
Java 運行時環境(JRE)是將要執行 Java 程序的 Java 虛擬機。它同時也包含了執行 applet 需要的瀏覽器插件。Java 開發工具包 (JDK)是完整的 Java 軟體開發包,包含了 JRE,編譯器和其他的工具(比如:JavaDoc,Java 調試器),可以讓開發者開發、編譯、執行 Java 應用程序。
4.是否可以在 static 環境中訪問非 static 變數?
static 變數在 Java 中是屬於類的,它在所有的實例中的值是一樣的。當類被 Java 虛擬機載入的時候,會對 static 變數進行初始化。如果你的代碼嘗試不用實例來訪問非 static 的變數,編譯器會報錯,因為這些變數還沒有被創建出來,還沒有跟任何實例關聯上。
5.Java 支持的數據類型有哪些?什麼是自動拆裝箱?
Java 語言支持的 8 中基本數據類型是:
byte
short
int
long
float
double
boolean
char
自動裝箱是 Java 編譯器在基本數據類型和對應的對象包裝類型之間做的一個轉化。比如:把 int 轉化成 Integer,double 轉化成 double,等等。反之就是自動拆箱。
6.Java 支持多繼承么?
不支持,Java 不支持多繼承。每個類都只能繼承一個類,但是可以實現多個介面。
7.Java 中,什麼是構造函數?什麼是構造函數重載?什麼是復制構造函數?
當新對象被創建的時候,構造函數會被調用。每一個類都有構造函數。在程序員沒有給類提供構造函數的情況下,Java 編譯器會為這個類創建一個默認的構造函數。
Java 中構造函數重載和方法重載很相似。可以為一個類創建多個構造函數。每一個構造函數必須有它自己唯一的參數列表。
Java 不支持像 C++中那樣的復制構造函數,這個不同點是因為如果你不自己寫構造函數的情況下,Java 不會創建默認的復制構造函數。
8.Java 中的方法覆蓋(Overriding)和方法重載(Overloading)是什麼意思?
Java 中的方法重載發生在同一個類裡面兩個或者是多個方法的方法名相同但是參數不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數列表和返回類型。覆蓋者可能不會限制它所覆蓋的方法的訪問。
9.介面和抽象類的區別是什麼?
Java 提供和支持創建抽象類和介面。它們的實現有共同點,不同點在於:
介面中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。
類可以實現很多個介面,但是只能繼承一個抽象類
類如果要實現一個介面,它必須要實現介面聲明的所有方法。但是,類可以不實現抽象類聲明的所有方法,當然,在這種情況下,類也必須得聲明成是抽象的。
抽象類可以在不提供介面方法實現的情況下實現介面。
Java 介面中聲明的變數默認都是 final 的。抽象類可以包含非 final 的變數。
Java 介面中的成員函數默認是 public 的。抽象類的成員函數可以是 private, protected 或者是 public。
介面是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含 main 方法的話是可以被調用的。
10.什麼是值傳遞和引用傳遞?
對象被值傳遞,意味著傳遞了對象的一個副本。因此,就算是改變了對象副本,也不會影響源對象的值。
對象被引用傳遞,意味著傳遞的並不是實際的對象,而是對象的引用。因此,外部對引用對象所做的改變會反映到所有的對象上。
最後祝你面試順利!
Ⅱ 解答一下有關JAVA異常類的問題
問題(1)可以改為Exception
問題(2)示情況而定是否可以改為IOException
原因,原語句中的try...catch..的語義是在try裡面的兩行語句中捕獲可能拋出的DangerException異常並加以處理,
(1). Exception是DangerException的父類,替換後語義變為了在try裡面的兩行語句中捕獲可能拋出的Exception異常並加以處理,語義是正確的;
(2). IOException不確定是不是DangerException的父類,替換後語義變為了在try裡面的兩行語句中捕獲可能拋出的IOException異常並加以處理,語義不一定正確,如果IOException是DangerException的父類,就是正確的,否則是錯誤的(在try裡面沒有IOException的類型可能被拋出),在編譯時會報錯(Exception 'java.io.IOException' is never thrown in the corresponding try block)
Ⅲ 初級java面試,面試官是如何出題的
您好,贛州中公教育為您解答:
Java技術題:
問題一:會前端開發么,都會用哪些開發技術呢?
答案:如果熟悉前端的,就說:我對前端這塊還是比較熟練的,能夠熟悉運用 html5、css3、js、jQuery 等前端開發技術;如果不太熟悉的,就答前台js寫的比較熟練,html5+css3的框架寫得也不錯,只是jQuery特效能力比較差。
問題二:Java是什麼?(此題90%的公司必問)
解答:這個結合自己的理解回答,不要將網路上的知識生搬硬套。
問題三:jjvm GC的原理是什麼?
答案:JVM工作原理和特點主要是指操作系統裝入JVM是通過jdk中Java.exe來完成,通過下面4步來完成JVM環境.
1.創建JVM裝載環境和配置
2.裝載JVM.dll
3.初始化JVM.dll並掛界到JNIENV(JNI調用介面)實例
4.調用JNIEnv實例裝載並處理class類。
問題四:spring ioc aop 的原理是什麼?
答案:IOC(反轉控制):對成員變數的賦值的控制權從代碼中反轉到配置文件中。
AOP:Aspect(切面) Oriented(面向) Programming(編程),面向切面編程。
差不多就夠了,再看就是Spring的事務處理,基本就這些。
問題五:Java的集合都有哪些?
答案:集合主要有Collection和Map介面。Collection介面定義了一個包含一批對象的集合。Map介面在Collection的基礎上,為其中的每個對象指定了一個key,並使用Entry保存每個key-value對,以實現通過key快速定位到對象(value)。
問題六:java創建對象有幾種常用方法?
答案:四種,分別是:1.用new語句創建對象,這是最常用的創建對象的方式。
2.運用反射手段,調用Java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。
3.調用對象的clone()方法。
4.運用反序列化手段,調用java.io.ObjectInputStream對象的readObject()方法。