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