更新時間:2020-10-15 17:00:17 來源:動力節點 瀏覽2948次
在現在的互聯網大環境下,程序員和工程師的職位需求在提高,相應的想投入到工程師行業的人也在變多,所以很多大公司對于面試工程師職位的人要求也在逐漸提高,但是在java面試中,面試官著重考察的還是基礎知識是否扎實,基礎java編程面試題是在面試前必須要做的功課,下面整理了15道基礎java編程面試題,有要參加java面試的朋友們可以學習下面的內容。
答:Java取消了強大但又危險的指針,而代之以引用。由于指針可進行移動運算,指針可隨便指向一個內存區域,而不管這個區域是否可用,這樣做是危險的,因為原來這個內存地址可能存儲著重要數據或者是其他程序運行所占用的,并且使用指針也容易數組越界。
垃圾回收機制:不需要程序員直接控制內存回收,由垃圾回收器在后臺自動回收不再使用的內存。避免程序忘記及時回收,導致內存泄露。避免程序錯誤回收程序核心類庫的內存,導致系統崩潰。
異常處理機制:Java異常機制主要依賴于try、catch、finally、throw、throws五個關鍵字。
強制類型轉換:只有在滿足強制轉換規則的情況下才能強轉成功。
答:jdk是JAVA程序開發時用的開發工具包,其內部也有JRE運行環境JRE。JRE是java程序運行時需要的運行環境,就是說如果你光是運行JAVA程序而不是去搞開發的話,只安裝JRE就能運行已經存在的JAVA程序了。JDk、JRE內部都包含java虛擬機JVM,java虛擬機內部包含許多應用程序的類的解釋器和類加載器等等。
答:相同之處:都是分支語句,多超過一種的情況進行判斷處理。
不同之處:switch更適合用于多分支情況,就是有很多種情況需要判斷處理,判斷條件類型單一,只有一個入口,在分支執行完后(如果沒有break跳出),不加判斷地執行下去;而if—elseif---else多分枝主要適用于分支較少的分支結構,判斷類型不是單一,只要一個分支被執行后,后邊的分支不再執行。switch為等值判斷(不允許比如>= <=),而if為等值和區間都可以,if的使用范圍大。
答:&和&&的聯系:&和&&都可以用作邏輯與運算符,但是要看使用時的具體條件來決定。操作數1&操作數2,操作數1&&操作數2,表達式1&表達式2,表達式1&&表達式2。
情況1:當上述的操作數是boolean類型變量時,&和&&都可以用作邏輯與運算符。
情況2:當上述的表達式結果是boolean類型變量時,&和&&都可以用作邏輯與運算符。
表示邏輯與(and),當運算符兩邊的表達式的結果或操作數都為true時,整個運算結果才為true,否則,只要有一方為false,結果都為false。
&和&&的區別(不同點):&邏輯運算符稱為邏輯與運算符,&&邏輯運算符稱為短路與運算符,也可叫邏輯與運算符。無論任何情況,&兩邊的操作數或表達式都會參與計算。對于&&:當&&左邊的操作數為false或左邊表達式結果為false時,&&右邊的操作數或表達式將不參與計算,此時最終結果都為false。
綜上所述,如果邏輯與運算的第一個操作數是false或第一個表達式的結果為false時,對于第二個操作數或表達式是否進行運算,對最終的結果沒有影響,結果肯定是false。
答:基本類型轉換分為自動轉換和強制轉換。
自動轉換規則:容量小的數據類型可以自動轉換成容量大的數據類型,也可
以說低級自動向高級轉換。這兒的容量指的不是字節數,而是指類型表述的范圍。
強制轉換規則:高級變為低級需要強制轉換。如何轉換:(1)賦值運算符“=”右邊的轉換,先自動轉換成表達式中級別最高的數據類型,再進行運算。(2)賦值運算符“=”兩側的轉換,若左邊級別>右邊級別,會自動轉換;若左邊級別 == 右邊級別,不用轉換;若左邊級別 < 右邊級別,需強制轉換。(3)可以將整型常量直接賦值給byte, short, char等類型變量,而不需要進行強制類型轉換,前提是不超出其表述范圍,否則必須進行強制轉換。
答:相同之處:都是分支語句,多超過一種的情況進行判斷處理。
不同之處:switch更適合用于多分支情況,就是有很多種情況需要判斷處理,判斷條件類型單一,只有一個入口,在分支執行完后(如果沒有break跳出),不加判斷地執行下去;而if—elseif---else多分枝主要適用于分支較少的分支結構,判斷類型不是單一,只要一個分支被執行后,后邊的分支不再執行。switch為等值判斷(不允許比如>= <=),而if為等值和區間都可以,if的使用范圍大。
答:while先判斷后執行,第一次判斷為false,循環體一次都不執行;do while先執行 后判斷,最少執行1次;如果while循環第一次判斷為true, 則兩種循環沒有區別。
答:break: 結束當前循環并退出當前循環體。break還可以退出switch語句。
continue: 循環體中后續的語句不執行,但是循環沒有結束,繼續進行循環條件的判斷(for循環還會i++)。continue只是結束本次循環。
答:數組是(相同類型數據)的(有序)(集合);
數組會在內存中開辟一塊連續的空間,每個空間相當于之前的一個變量,稱為數組的元素element;
每個數組元素有默認值 double 0.0 boolean false int 0;
數組元素有序的,不是大小順序,是索引的順序;
數組中可以存儲基本數據類型,可以存儲引用數據類型;但是對于一個數組而言,數組的類型是固定的,只能是一個;
length:數組的長度,數組的長度是固定的,一經定義,不能再發生變化(數組的擴容)。
public class WanShu {
????private static boolean isWanShu(int shu){
????????int sum = 0;
????????for (int i = 1; i < shu; i++) {
????????????if(shu%i==0){
????????????????sum+= i;
????????????}
????????}
????????if(sum==shu){
????????????return true;
????????}else{ ?????????
????????????return false;
????????} ?
????}
????public static void main(String[] args) {
????????for (int i = 1; i < 1000; i++) {
????????????if(isWanShu(i)){
????????????????System.out.println(i);
????????????};
????????}
????}
}
static boolean foo(char c) {
????????System.out.print(c);
????????return true;
????}
public static void main(String[] args) {
????????int i = 0;
????????for (foo('A'); foo('B') && (i < 2); foo('C')) {
????????????i++;
????????????foo('D');
????????}
}?
A. ABDCBDCB B. ABDCDBCB C. ABDBCDCB D. ABDBCDCB
解析:首先,必定是ABDC打頭,排除C、D,隨后執行foo('B') && (i < 2)這一項,結果為B,可得出結果為A。執行順序--foo('A')--foo('B')&&true--foo('D')--foo('C')--foo('B')&&true--foo('D')--foo('C')--foo('B')&&false--end
int foo(int n)
????{
????????if(n<2)return n;
????????return foo(n-1)+foo(n-2);
????}
A.5 B.7 C.8 D.1
解析:Result=foo(4)+foo(3)
foo(4)=foo(3)+foo(2)
foo(3)=foo(2)+foo(1)
foo(2)=foo(1)+foo(0)
foo(1)=1
foo(0)=0
所以foo(2)=1,foo(3)=2,foo(4)=3
:package com.bjsxt;
public class TestInsertSort {
public static void sort(int arr[]) {
int i, j;
for (i = 1; i < arr.length; i++) {
int temp = arr[i];
for (j = i; j > 0 && temp < arr[j - 1]; j--) {
arr[j] = arr[j - 1];
}
arr[j] = temp;
}
}
}
答:final修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承例如:String類、Math類等。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重寫,但是能夠重載。 使用final修飾的對象,對象的引用地址不能變,但是對象的值可以變。
finally在異常處理時提供 finally 塊來執行任何清除操作。如果有finally的話,則不管是否發生異常,finally語句都會被執行。一般情況下,都把關閉物理連接(IO流、數據庫連接、Socket連接)等相關操作,放入到此代碼塊中。
finalize方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要清理工作。finalize() 方法是在垃圾收集器刪除對象之前被調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。一般情況下,此方法由JVM調用,程序員不要去調用。
答:形式上:字符常量是單引號引起的一個字符;字符串常量是雙引號引起的若干個字符。含義上:字符常量相當于一個整形值(ASCII值),可以參加表達式運算;字符串常量代表一個地址值(該字符串在內存中存放位置)。占內存大小:字符常量只占一個字節;字符串常量占若干個字節(至少一個字符結束標志)。
以上是今天為朋友們整理的基礎java編程面試題,這15道題肯定不能說是有最全面的java編程知識,但肯定是基礎的常考的內容,會有很大的出現在java面試中的概率,所以希望大家可以好好學上面的內容,再及時的通過java基礎教程來學習更多的java知識。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習