最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

java程序員找工作&跳槽必備面試寶典

2022-08-20 10:35 作者:噓-臣妾做不到啊  | 我要投稿

? 臺下十年功,臺上一分鐘。不管學習多久,終究是要面臨面試的關卡,士兵不打沒有準備的戰(zhàn),今天就給大家整理一些面試方面的題,快快刷起來。


第一部分:java基礎、語法

1.Java跨平臺原理(字節(jié)碼文件、虛擬機)




C/C++語言都直接編譯成針對特定平臺機器碼。如果要跨平臺,需要使用相應的編譯器重新編譯。


Java源程序(.java)要先編譯成與平臺無關的字節(jié)碼文件(.class),然后字節(jié)碼文件再解釋成機器碼運行。解釋是通過Java虛擬機來執(zhí)行的。


字節(jié)碼文件不面向任何具體平臺,只面向虛擬機。


Java虛擬機是可運行Java字節(jié)碼文件的虛擬計算機。不同平臺的虛擬機是不同的,但它們都提供了相同的接口。


Java語言具有一次編譯,到處運行的特點。就是說編譯后的.class可以跨平臺運行,前提是該平臺具有相應的Java虛擬機。但是性能比C/C++要低。


Java的跨平臺原理決定了其性能沒有C/C++高




2.Java的安全性


語言層次的安全性主要體現(xiàn)在:


Java取消了強大但又危險的指針,而代之以引用。由于指針可進行移動運算,指針可隨便指向一個內存區(qū)域,而不管這個區(qū)域是否可用,這樣做是危險的,因為原來這個內存地址可能存儲著重要數(shù)據或者是其他程序運行所占用的,并且使用指針也容易數(shù)組越界。


垃圾回收機制:不需要程序員直接控制內存回收,由垃圾回收器在后臺自動回收不再使用的內存。避免程序忘記及時回收,導致內存泄露。避免程序錯誤回收程序核心類庫的內存,導致系統(tǒng)崩潰。


異常處理機制:Java異常機制主要依賴于try、catch、finally、throw、throws五個關鍵字。


強制類型轉換:只有在滿足強制轉換規(guī)則的情況下才能強轉成功。


底層的安全性可以從以下方面來說明


Java在字節(jié)碼的傳輸過程中使用了公開密鑰加密機制(PKC)。


在運行環(huán)境提供了四級安全性保障機制:


字節(jié)碼校驗器 -類裝載器 -運行時內存布局 -文件訪問限制


3.Java三大版本


Java2平臺包括標準版(J2SE)、企業(yè)版(J2EE)和微縮版(J2ME)三個版本:


Standard Edition(標準版) J2SE 包含那些構成Java語言核心的類。


比如:數(shù)據庫連接、接口定義、輸入/輸出、網絡編程


Enterprise Edition(企業(yè)版) J2EE 包含J2SE 中的類,并且還包含用于開發(fā)企業(yè)級應用的類。


比如servlet、JSP、XML、事務控制


Micro Edition(微縮版) J2ME 包含J2SE中一部分類,用于消費類電子產品的軟件開發(fā)。


比如:呼機、智能卡、手機、PDA、機頂盒


他們的范圍是:J2SE包含于J2EE中,J2ME包含了J2SE的核心類,但新添加了一些專有類


應用場合,API的覆蓋范圍各不相同。


4.什么是JVM?什么是JDK? 什么是JRE?


JVM :JVM是Java Virtual Machine(Java虛擬機)的縮寫,它是整個java實現(xiàn)跨平臺的最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執(zhí)行,也就是說class并不直接與機器的操作系統(tǒng)相對應,而是經過虛擬機間接與操作系統(tǒng)交互,由虛擬機將程序解釋給本地系統(tǒng)執(zhí)行。JVM是Java平臺的基礎,和實際的機器一樣,它也有自己的指令集,并且在運行時操作不同的內存區(qū)域。 JVM通過抽象操作系統(tǒng)和CPU結構,提供了一種與平臺無關的代碼執(zhí)行方法,即與特殊的實現(xiàn)方法、主機硬件、主機操作系統(tǒng)無關。JVM的主要工作是解釋自己的指令集(即字節(jié)碼)到CPU的指令集或對應的系統(tǒng)調用,保護用戶免被惡意程序騷擾。 JVM對上層的Java源文件是不關心的,它關注的只是由源文件生成的類文件(.class文件)。


JRE:JRE是java runtime environment(java運行環(huán)境)的縮寫。光有JVM還不能讓class文件執(zhí)行,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib。在JDK的安裝目錄里你可以找到jre目錄,里面有兩個文件夾bin和lib,在這里可以認為bin里的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和lib和起來就稱為jre。所以,在你寫完java程序編譯成.class之后,你可以把這個.class文件和jre一起打包發(fā)給朋友,這樣你的朋友就可以運行你寫程序了(jre里有運行.class的java.exe)。JRE是Sun公司發(fā)布的一個更大的系統(tǒng),它里面就有一個JVM。JRE就與具體的CPU結構和操作系統(tǒng)有關,是運行Java程序必不可少的(除非用其他一些編譯環(huán)境編譯成.exe可執(zhí)行文件……),JRE的地位就象一臺PC機一樣,我們寫好的Win32應用程序需要操作系統(tǒng)幫我們運行,同樣的,我們編寫的Java程序也必須要JRE才能運行。?


JDK:JDK是java development kit(java開發(fā)工具包)的縮寫。每個學java的人都會先在機器上裝一個JDK,那 讓我們看一下JDK的安裝目錄。在目錄下面有六個文件夾、一個src類庫源碼壓縮包、和其他幾個聲明文件。其中,真正在運行java時起作用的是以下四個文件夾:bin、include、lib、jre?,F(xiàn)在我們可以看出這樣一個關系,JDK包含JRE,而JRE包含JVM。


bin:最主要的是編譯器(javac.exe)


include:java和JVM交互用的頭文件


lib:類庫? ? ??


jre:java運行環(huán)境?


(注意:這里的bin、lib文件夾和jre里的bin、lib是不同的)總的來說JDK是用于java程序的開發(fā),而jre則是只能運行class而沒有編譯的功能。eclipse、idea等其他IDE有自己的編譯器而不是用JDK bin目錄中自帶的,所以在安裝時你會發(fā)現(xiàn)他們只要求你選jre路徑就ok了。


JDK,JRE,JVM三者關系概括如下:


jdk是JAVA程序開發(fā)時用的開發(fā)工具包,其內部也有JRE運行環(huán)境JRE。JRE是JAVA程序運行時需要的運行環(huán)境,就是說如果你光是運行JAVA程序而不是去搞開發(fā)的話,只安裝JRE就能運行已經存在的JAVA程序了。JDk、JRE內部都包含JAVA虛擬機JVM,JAVA虛擬機內部包含許多應用程序的類的解釋器和類加載器等等。


5.Java三種注釋類型


共有單行注釋、多行注釋、文檔注釋3種注釋類型。使用如下:


單行注釋,采用“//”方式.只能注釋一行代碼。如://類成員變量


多行注釋,采用“/*...*/”方式,可注釋多行代碼,其中不允許出現(xiàn)嵌套。如:


/*System.out.println("a");


System.out.println("b");


System.out.println("c");*/


文檔注釋,采用“/**...*/”方式。如:


/**


* 子類 Dog


* @author Administrator


**/


public class Dog extends Animal{}



第二部分:String相關

1.下面程序的運行結果是()(選擇一項)


String str1="hello";


?


String str2=new String("hello");


?


System.out.println(str1==str2);


A. true

B. false

C. hello

D. he

答案:B


分析:str1沒有使用new關鍵字,在堆中沒有開辟空間,其值”hello”在常量池中,str2使用new關鍵字創(chuàng)建了一個對象,在堆中開辟了空間,”==”比較的是對象的引用,即內存地址,所以str1與str2兩個對象的內存地址是不相同的


2.Java語言中,String類中的indexOf()方法返回值的類型是()


A. int16

B. int32

C. int

D. long

答案:C


3.給定以下代碼,程序的運行結果是 ()(選擇一項)


public class Example {


String str=new String("good");


char [] ch={'a','b','c'};


?


public static void main(String[] args) {


Example ex=new Example();


ex.change(ex.str, ex.ch);


System.out.print(ex.str+"and");


System.out.print(ex.ch);


}


?


public void change(String? str,char ch[]){


str="test ok";


ch[0]='g';


}


}


A. goodandabc

B. goodandgbc

C. test okandabc

D. test okandgbc

答案:B


分析:在方法調用時,在change方法中對str的值進行修改,是將str指向了常量江池中的”test ok”,而主方法中的ex.str仍然指向的是常量池中的”good”。字符型數(shù)組在方法調用時,將主方法中ex.ch的引用傳遞給change方法中的ch,指向是堆中的同一堆空間,所以修改ch[0]的時候,ex.ch可以看到相同的修改后的結果。


4.執(zhí)行下列代碼后,哪個結論是正確的()(選擇兩項)


String[] s=new String[10];


A. s[10]為””

B. s[9]為null

C. s[0]為未定義

D. s.length為10

答案:BD


分析: 引用數(shù)據類型的默認值均為null

s.length數(shù)組的長度


5.實現(xiàn)String類的replaceAll方法


思路說明:replaceAll方法的本質是使用正則表達式進行匹配,最終調用的其實是Matcher對象的replaceAll方法。


import java.util.regex.Matcher;


import java.util.regex.Pattern;


?


public class TestStringReplaceAll {


public static void main(String[] args) {


String str = "a1s2d3f4h5j6k7";


// 將字符串中的數(shù)字全部替換為0


System.out.println(replaceAll(str, "\\d", "0"));


}


?


/**


?* @param str:源字符串


?* @param regex:正則表達式


?* @param newStr:替換后的子字符串


?* @return 返回替換成功后的字符串


?*/


public static String replaceAll(String str, String regex, String newStr) {


Pattern pattern = Pattern.compile(regex);


Matcher mathcer = pattern.matcher(str);


String reslut = mathcer.replaceAll(newStr);


return reslut;


}


}


6.在“=”后填寫適當?shù)膬热荩?/p>


String []a=new String[10];


則:a[0]~a[9]=null;


a.length=10;


如果是int[]a=new int[10];


則:a[0]~a[9]= (0)


a.length= (10)


7.是否可以繼承String類?


答:不可以,因為String類有final修飾符,而final修飾的類是不能被繼承的,實現(xiàn)細節(jié)不允許改變。


public final class String implements java.io.Serializable,


Comparable< String>, CharSequence




第三部分:集合

第四部分:多線程

IO流

網絡編程

異常處理

Web方面相關

設計模式

高級框架

微服務框架

數(shù)據庫

JVM

Linux操作

算法分析及手寫代碼

篇幅有限,后續(xù)還有內容,我已經整理成電子版保存到網盤,另外還有很多學習編程可以用到的資料可以分享,有需要記得關注私信我,或者你需要什么學習資料,評論區(qū)告訴我,我會不定期上傳,感謝支持~





java程序員找工作&跳槽必備面試寶典的評論 (共 條)

分享到微博請遵守國家法律
武汉市| 博乐市| 林口县| 晋城| 沾化县| 惠来县| 枝江市| 普宁市| 临清市| 陈巴尔虎旗| 满城县| 迭部县| 沙雅县| 天祝| 阿勒泰市| 皮山县| 华蓥市| 南昌县| 张家口市| 长宁县| 安康市| 宜宾县| 柘荣县| 偏关县| 牙克石市| 潢川县| 嵊州市| 建瓯市| 城市| 威宁| 曲阜市| 澜沧| 上高县| 新平| 天台县| 合作市| 姜堰市| 东兰县| 阳高县| 天镇县| 南宁市|