本文目錄一覽:
Java基礎面試題都有哪些?
1.java異常機制的原理與應用\x0d\x0a答:每當程序出現異常之後,如果程序沒有進行相應的處理,則程序會出現中斷現象。\x0d\x0a實際上,產生了異常之後,JVM會拋出一個異常類的實例化對象,如果此時使用了try語句捕獲的話,則可以進行異常的處理,否則,交給JVM進行處理。當try語句捕獲異常之後,將與catch語句的異常類型進行匹配,如果匹配成功則執行catch內的語句。簡單的應用:在所以throws語句的地方加入try-catch。標準應用:try-catch-finally-throw-throws一起使用。 \x0d\x0a\x0d\x0a2. 垃圾回收機制的優點\x0d\x0a答:釋放無用的對象所佔用的空間。方式:自動回收,手動回收。使用System.gc(),實際上調用Runtime.getRuntime().gc()\x0d\x0a\x0d\x0a3. Error與Exception區別\x0d\x0a答:Error是jvm進行處理,是jvm出錯\x0d\x0aexception是可以由程序處理的,可以用try-catch捕獲的\x0d\x0a\x0d\x0a4. final,finally,finallize\x0d\x0a答:final定義的變量的值不能改變,定義的方法不能被覆蓋,定義的類不能被繼承\x0d\x0afinally是異常的統一出口,finallize是垃圾回收前的收尾工作,是Object類定義的\x0d\x0a\x0d\x0a5. Anonymous Inner Class是否可以extends,是否可以implements Interface\x0d\x0a答:允許繼承和實現,因為匿名內部類就是在抽象類和接口的基礎上發展起來的\x0d\x0a\x0d\x0a6. Static Nested Class 與Inner Class的區別\x0d\x0a答:使用Static定義的Class就是外部類,可以通過外部類. 內部類直接訪問\x0d\x0a而Inner Class是不能被外部訪問的,只能通過外部類的實例再找到內部類實例。\x0d\x0a\x0d\x0a7. HashMap and HashTable?\x0d\x0a答:HashMap:1) released in jdk 1.2,new Class 2)採用異步處理方式,性能較高,是非線程安全的 3)允許null\x0d\x0aHashTable:\x0d\x0a1)released in jdk 1.0 ,old Class \x0d\x0a2)採用同步處理方式,性能低,是線程安全的\x0d\x0a3)不允許null\x0d\x0a\x0d\x0a8. assert代表什麼?\x0d\x0a答:asserts是jdk 1.4之後發佈的新關鍵字,表示斷言,即程序執行到某個地方肯定是預計的值,一般開發很少使用。要使用assert,必須加上 -ea參數\x0d\x0a\x0d\x0a9. gc是什麼?\x0d\x0a答:gc是garbage collection,垃圾回收,使用gc可以進行垃圾空間的釋放\x0d\x0a\x0d\x0a10. String s = new String(“xyz”)產生了幾個對象?\x0d\x0a答:一個匿名對象xyz,在棧空間內。一個new實例化的對象,在堆空間內。\x0d\x0a\x0d\x0a11. sleep() and wait()?\x0d\x0a答:sleep()是Thread類定義方法,表示線程的休眠,可以自動喚醒\x0d\x0await()方法是Object類定義的方法,需要手動notify()和notifyAll()//sleep()不釋放資源,wait()釋放資源\x0d\x0a\x0d\x0a12. Overload與Override的區別\x0d\x0a答:Overload:重載\x0d\x0a |- 在一個類中定義的若干方法\x0d\x0a |- 所有的方法名相同,但參數類型或個數不同\x0d\x0a |- 只有參數有關,與返回類型無關\x0d\x0aOverride:覆寫\x0d\x0a |- 在繼承的關係中\x0d\x0a |- 子類定義了父類同名的方法,參數類型或個數最好完全一樣。\x0d\x0a |- 訪問權限不能更嚴格\x0d\x0a\x0d\x0a13. abstract class 和 interface有什麼區別?\x0d\x0a答:抽象類:\x0d\x0a |-由抽象方法和常量、變量、全局常量、構造方法、普通方法組成\x0d\x0a |-使用abstract聲明\x0d\x0a |-子類要通過extends繼承抽象類,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法\x0d\x0a |-存在單繼承的局限\x0d\x0a |-抽象類可以實現若干個接口\x0d\x0a接口:\x0d\x0a |-由抽象方法和全局常量組成\x0d\x0a |-使用interface關鍵字\x0d\x0a |-子類要通過implements實現接口,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法\x0d\x0a |-一個子類可以實現多個接口\x0d\x0a |-接口不能繼承一個抽象類,但允許繼承多個接口
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的面試題有哪些?
正如圈內的大佬所說的那樣,基礎很重要。浙江優就業的老師幫你總結一下。
常見的面試題有:
安卓圖片加載後一直在手機如何優化?
解釋一下安卓中SharedPreferences類?
客戶端和服務端如何收發信息?
activity里如何發起http請求?
安卓UI線程調用sleep?
static類如何回收?
接口和抽象類
JVM垃圾回收算法
如何區分哪些是老年代對象?
線程池
線程終止
設計模式
單例
JDBC
Runnable
run()
start()
區別?
Socket
靜態代碼塊和構造器的執行順序
final的map能否修改?
String
StringBuffer
StringBuild區別?
內存泄露?
ArraryList
LinkedList
HashMap原理
linux常用命令
查看進程PS
redis相關?
運行時異常
一個對象為空,怎麼進行處理?
泛型
哪裡用到?什麼好處
?
對數據庫進行一些操作,mybatis要進行哪些操作?
為什麼Java是跨平台?
匿名內部類能不能有外部內的接口?(反正跟匿名內部類有關)?
@Test
測試用例
幹嘛
如何獲取http的參數?
Controller的參數設置,為什麼是單例的?
@autowired裝載一個類,構造器里能不能直接調用這個類
?
spring和springmvc區別?
springmvc跨域?
鎖的種類等
望採納!
java面試題:酒店預訂!
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println(“是否是會員?y/n”);
String H = input.next();
System.out.println(“請輸入入住日期:”);
System.out.println(“例如2009-03-16”);
String in = input.next();
System.out.println(“請輸離開日期:”);
System.out.println(“例如2009-03-16”);
String out = input.next();
//String in = s.substring(5,15);
//String out = s.substring(15,26);
//System.out.println(in+” “+out);
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
try {
c1.setTime(sdf.parse(in));
c2.setTime(sdf.parse(out));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long time1 = c1.getTimeInMillis();
long time2 = c2.getTimeInMillis();
long tian = (time2-time1)/(1000*24*3600);
long tian1 = tian;
System.out.println(“tian “+tian);
int week1 = c1.get(Calendar.DAY_OF_WEEK)-1;
//System.out.println(week1);
//int week2 = c2.get(Calendar.DAY_OF_WEEK)-1;
//System.out.println(week2);
int count = 0;
while(tian10){
if(week1 == 6 || week1==0){
count++;
}
if(week1==6){
week1 = 0;
week1–;
}
tian1–;
week1++;
}
System.out.println(“count “+count);
long rujia;
long qitian;
long hanting;
if(H.equals(“y”)){
rujia = (tian-count)*80+count*80;
System.out.println(“tian “+tian);
qitian = (tian-count)*110+count*50;
hanting = (tian-count)*100+count*40;
}else{
rujia = (tian-count)*110+count*90;
qitian = (tian-count)*160+count*60;
hanting = (tian-count)*220+count*150;
}
System.out.println(“tian ” + tian);
System.out.println(“rujia “+rujia);
System.out.println(“hanting “+hanting);
System.out.println(“qitian “+qitian);
if(rujiaqitian rujiahanting){
System.out.println(“如家”);
}else if(qitianrujia qitianhanting){
System.out.println(“七天”);
}else if(hantingrujia hantingqitian){
System.out.println(“漢庭”);
}else if(hanting==rujia || hanting==qitian){
System.out.println(“漢庭”);
}else if(qitian==rujia qitianhanting){
System.out.println(“七天”);
}
}
我沒怎麼測試 自己測測吧 還有一些約束用戶輸入啥的 嚴謹性什麼的
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/189551.html