百萬Java 面試題整理(2.0)
26、如何取得年月日,小時分秒?
Calendarc=Calendar。getInstance();
c。set(Calendar。YEAR,2004);
c。set(Calendar。MONTH,0);
c。set(Calendar。DAY_OF_MONTH,31); System。out。println(c。get(Calendar。YEAR)+“
”+(c。get(Calendar。MONTH)+1)+“ ”+c。get(Calendar。DAY_OF_MONTH));
27、如何取得從 1970 年到現在的毫秒數
Java。util。Date dat=new Date();
long now=dat。getTime();
28、如何獲取某個日期是當月的最後一天?
當前日期加一天,若當前日期與結果的月份不相同,就是最後一天。取下一個月的第一天,下一個月的第一天-1
public static void main(String[] args)
{
Calendar c=Calendar。getInstance();
c。set(Calendar。YEAR,2004);
c。set(Calendar。MONTH,0);
c。set(Calendar。DAY_OF_MONTH,30);
Calendar c1=(Calendar)c。clone();
System。out。println(c。get(Calendar。YEAR)+“
”+(c。get(Calendar。MONTH)+1)+“ ”+c。get(Calendar。DAY_OF_MONTH));
c。add(Calendar。DAY_OF_MONTH,1); if(c。get(Calendar。MONTH)!=c1。get(Calendar。MONTH))
{
System。out。println(“是最後一天”);
}
else
{
System。out。println(“不是取後一天”);
}
}
29、如何格式化日期?
Import java。text。 SimpleDateFormat;
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
Date dat=new Date();
//把日期轉化為字串
String str=sdf。format(dat);
System。out。println(str);
//將字串轉化為日期
Java。util。Date d1=sdf。parse(“yyyy-mm-dd”);
30、編碼轉換,怎樣實現將 GB2312 編碼的字串轉換為ISO-8859-1 編碼的字串。
String a=new String(“中”。getBytes(“gb2312”),“iso-8859-1”);
String a=new String(“中”。getBytes(“iso-8859-1”));
32、String s = new String(“xyz”);建立了幾個 String Object?
New 了一個,”XYZ”本來又是一個兩個
33、float 型float f=3。4 是否正確
?
Ø 報錯,應當是 float f=3。4f
Ø 如果是 float f=3(整數)正確
35、說出一些常用的類,包,介面,請各舉 5 個。
常用的類: BufferedReader BufferedWriter FileReader FileWirter String Integer
常用的 包: java。lang java。awt java。io java。util java。sql javax。xml
javax。sevlet javax。ejb。 java。net javax。faces
常用的介面: List Map Document NodeList EjbObject EjbHome SessionBean EntityBean
36、java 中會存在記憶體洩漏嗎,請簡單描述。
會。如:int i,i2; return (i-i2); //when i 為足夠大的正數,i2 為足夠大的負數。結果會造成溢位,導致錯誤。
37、java 中實現多型的機制是什麼?
靜態的多型:方法名相同,引數個數或型別不相同。(overloading) 動態的多型:
子類覆蓋父類的方法,將子類的例項傳與父類的引用呼叫的是子類的方法實現介面的例項傳與介面的引用呼叫的實現類的方法。
38、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法 主動通知虛擬機器進行垃圾回收?
動態記憶體
存放類例項靜態記憶體
類本身
垃圾收集主要針對的是動態記憶體,一般當記憶體不夠用時會進行垃圾收集。或透過System。gc()手動收集,但不保證一定執行。
39、靜態變數和例項變數的區別?
static i = 10; //常量
class A a; a。i =10;//可變靜態方法可以呼叫靜態變數。
實現方法可以呼叫靜態變數、例項變數
41、是否可以從一個 static 方法內部發出對非static 方法的呼叫?
不可以,如果其中包含物件的method();不能保證物件初始化。
42、寫 clone()方法時,通常都有一行程式碼,是什麼?
Clone 有預設行為,super。clone();他負責產生正確大小的空間,並逐位複製。
43、JAVA 語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally 分別代表什麼意義?
Try:執行部分,產生異常Catch:捕捉異常
Finally:不管有沒有異常都執行
Throws:在方法宣告處宣告要丟擲的異常,呼叫者必須對其進行處理。Throw:丟擲一個異常
44、在 try 塊中可以丟擲異常嗎?
在 try 中可以丟擲異常,一般與宣告的異常相同。自定義異常要繼承於 Exception 或 Exception 的子類
45、氣泡排序法
//相鄰兩個數比較,將最小或最大的放到後面,最後面數的不參與比較
public class
BubbleSort {
private static int
al
[] =
new int
[10];
public
BubbleSort() {
al
[0]=2;
al
[1]=3;
al
[2]=23;
al
[3]=45;
al
[4]=1;
al
[5]=67;
al
[6]=23;
al
[7]=80;
al
[8]=35;
al
[9]=72;
public static void
main(String[] args) { BubbleSort bs =
new
BubbleSort();
System。
out
。println(“排序前:”);
display
(
al
);
for
(
int
i=0;i<
al
。length;i++) {
for
(
int
j = 0; j <
al
。length-i-1; j++) {
if
(
al
[j]>
al
[j+1]) {
swap
(j,j+1);
}
}
}
System。
out
。println(); System。
out
。println(“排序後:”);
display
(
al
);
}
private static void
display(
int
[] al2) {
for
(
int
i = 0; i < al2。length; i++) { System。
out
。print(al2[i]+“ ”);
}
}
private static void
swap(
int
i,
int
j) {
int
temp =
al
[i];
al
[i]=
al
[j];
al
[j] = temp;
}
}
46、String and StringBuffer 的區別?
String:長度給定不可變,當多個字串聯合時要先轉為StringBuffer,再聯合, 速度慢。
StringBuffer:長度可變,可以將多個字串值直接聯合,效率高
47、用 java 程式碼編寫堆疊?
public class Stack {
int[] data; int maxSize; int top;
public Stack(int maxSize) { this。maxSize = maxSize;
data = new int[maxSize]; top = -1;
}
/**
* 依次加入資料
* @param data 要加入的資料
* @return 新增是否成功
*/
public boolean push(int data) {
if(top+1== maxSize) { System。out。println(“棧已滿!”); return false;
}
this。data[++top] = data;
return true;
}
/**
* 從棧中取出資料
* @return 取出的資料
*/
public int pop() throws Exception{
if(top==-1) {
throw new Exception(“棧已空!”);
}
return this。data[top——];
}
public static void main(String[] args) throws Exception { Stack stack=new Stack(1000);
stack。push(1);
stack。push(2); stack。push(3); stack。push(4); stack。push(5); while(stack。top>=0)
{
System。out。println(stack。pop());
}
}
}
48、集合的作用是什麼?
資料的傳送 增、刪、改、查、constainsAll,可以存放不同型別的物件。
49、集合的通用方法有哪些?通用方法是什麼(操作)?
集合List 的遍歷方法有: Iterator: Enumeration
For Get set
Collection 的通用方法有: Iterator()
Add()
Clear();
remove()
50、說出 ArrayList,Vector, LinkedList 的儲存效能和特性 HashMap 和Hashtable 的區別?
ArrayList Vector:以陣列的方式儲存,增、刪慢,查、改快ArrayList:執行緒不安全,速度快
Vector:執行緒安全,速度慢(synchoronized) LikedList: 以單鏈表的方式儲存,增、刪快,查、改慢
HashMap 與Hashtable 都實現的Map 介面,HashTable 執行緒安全,HashMap 執行緒不安全。
51、Collection 和 Collections 的區別。
Collection 是集合的根介面,其下有set 及list Collections 是集合的演算法。
52、Set 裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別
?
用contains 來區分是否有重複的物件。還是都不用。
在比較時先呼叫 hashCode 方法,如果不相同,證明不相等。
如果相同,再呼叫 equals 方法,如果 equals 方法相同,證明相等,不相同,證明不相等。
==:主要用在基本資料型別及引用Equals:主要是物件或物件引用的比較。
集合中是否包含某一個元素用 contains 來判斷。
53、List, Set, Map 是否繼承自 Collection 介面?
List,set 繼承於 Collection
Map 沒有繼承於 Collection,其相對是獨立的。
屬於Collection 型別的物件,可以透過建構函式將一個集合構造成另外一個集合
54、面向物件的特徵有哪些方面?
1。抽象:
找共性,將共有的屬性、方法放到父類中2。繼承:
子類繼承於父類,具有父類的所有屬性與方法,可以重用,也可以覆蓋。3。封裝:
一個類包括多個屬性及方法。
4。 多型性:
動態:
靜態:
55、String 是最基本的資料型別嗎?
基本資料型別包括byte、int、char、long、float、double、boolean 和short。
java。lang。String 類是 final 型別的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer 類
56、int 和 Integer 有什麼區別?
Int 是基本資料型別,不是物件,佔一個記憶體空間,沒有方法。與其同類的有
long,char,doble
Integer 是封裝類,具有方法及屬性。與其同類的有 Long,Double。Float
57、執行時異常與一般異常有何異同?
執行時異常:java JVM 丟擲的異常,程式碼中不用處理。
一般異常:使用者丟擲的異常,如果用 throws 聲明瞭,呼叫這個方法的程式碼必須對其處理。
58、&和&&的區別?
&:與: 左邊若為 false 右邊還執行。
&&:短路與,左邊若為false 右邊不執行。
相關文章
- 2021-09-09一文帶你深入理解Java記憶體模型,小白也能看得懂!火速收藏!
- 2021-07-25我的世界:平原出現平頂山,村莊也陷進去了,這可不是1
- 2021-06-21Java高階工程師面試:Java中反射機制的理解!反射機制的使用原理
- 2021-05-18被嘲諷?金三銀四阿里定級P8Java面試漲薪秘籍!全網已開源
- 2021-05-05老照片 卡扎菲1979年以來沒有在利比亞擔任任何公職