java面試題-java基礎
1.1java與其他語言相比,有什麽優點和缺點?
首先,java與c、c++相比,java是一種完全的面對對象的語言,雖然他的底層(運行時庫)使用c語言開發的,可是並不依賴於c,因為java的運行是在運行時庫的支持下進行的,所以所以運行效率可以更接近底層的c、c++來說效率會有所影響,不過java的類庫采用很好的設計理念,非常好用,頁非常實用,已經成為業界的一種標準的開發語言,他的跨平臺的特性收到開發者的青睞,只需要開發一次就能在所有安裝了java運行時庫的環境中運行。
其次,java和c#相比,c#是微軟開發的一種編程語言,語法類似java,幾乎就是java的翻版,運行原理和java也相似,也是通過運行時庫的支持運行,不過支持的平臺有限,java幾乎被所有的平臺支持,二c#目前只能被windows和linu西支持,windows下的支持當然是微軟自己開發的,二linux下的支持則是由mono支持,實際上,mono也是吧c#應用轉化為java應用而已,所以本質上,c#仍然只是被微軟自己的操作系統支持。應用平臺受限,是最大的缺點。
1.2請回答幾個名詞的意思,jvm,jdk,jre,javase,javaee,javame,gc
jvm:java虛擬機,java virtual machine的縮寫,是一個虛構出來的計算機,通過在實際的計算機上仿真模擬各種計算機功能來實現,java虛擬機有自己完善的硬體架構,如處理器,堆棧,寄存器等,還具有相應的指令系統,jvm屏蔽於具體操作系統平臺相關的信息,是的java程序只生成在java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改的運行。
jdk:java開發工具包,java development kit的縮寫。jdk是整個java的核心,包括了java運行環境。java工具和java核心類庫。
jre:java運行環境,java runtime environment的縮寫,運行java程序必須的環境集合,包含jvm標準實現和java和興類庫。
javase:java standardedition,標準版,是我們常用的一個版本,從jdk1.5開始改名為javase,主要用於桌面應用軟件的編程;
javaee;java enterprise edition,企業版,javaee是將ee的一個新名稱,主要用於分布式網絡程序的開發。
me:java micro editon。機頂盒,移動電話和pda之類嵌入式消費電子設備提供的java語言平臺,包括虛擬機和一系列標準化的javaapi。
gc:垃圾回收,garbage collection 的縮寫。當java虛擬機發現內存緊張時,會自動清理無用對象,(沒有應用到的對象)占用的內存空間。
1.3jvm能有幾個實例
每個java程序對應一個jvm實例,當一個java程序運行時就創建一個jvm實例,因此jvm實例的個數取決於同事執行的程序的個數。
1.4java跨平臺是如何實現的。
java是利用jvm實現的。java源代碼,經過java編譯器變異成java字節碼。class,執行java字節碼,javaz字節經過jvm解釋為具體平臺的具體指令並執行,不同平臺有不同的jvm,主流平臺都提供了jvm,所以java字節碼可以再主流平臺上能夠解釋執行。也就是說java字節碼是跨平臺的。
1.5 簡述tcp,udp協議的區別
tcp:面向連接 可靠 傳輸大量的數據 速度慢 udp:面向非連接 不可靠 少量的數據 快
1.6 類的命名規則,方法的名米規則,變量的命名,包,常量的命名規範,
在java中,首先符合java標識符的命名規則:
1 可以以字母,數字,下劃線,和$組成
2 首字母不能以數字開頭 3 中文可以作為變量名,但是不用 4 java區分大小寫 5 不能使用java保留的關鍵字
其次,類命名:首字母大寫,如何多個字母合成,每個單詞首字母都要大寫
方法命名:首字母小寫,中間的每個單詞首字母都要大寫;
變量的:於方法的一樣;
包的:java包的名字都是小寫單詞組成;一般以互聯網上的域名作為包的唯一前綴。
常量:基本數據類型的常量名犬大寫,如果多個單詞構成,可以用寫劃線隔開;
1.7 java共有幾種註釋的方法
三種 單行註釋 多行註釋 文檔註釋
1.8 如何增加代碼的清晰度和可觀;
代碼添加註釋 命名規範 縮進排版規範 添加異常處理 使用測試類和測試方法
1.9 void 和 null,有你什麽區別;
void用於無返回值的方法中 null表示對象,變量沒有被實例化,沒有誌向具體的內存地址
1.10 java結構化程序設計有哪三種基本流程,分別對應那些語句
順序,選擇,循環,其中,順序表示程序中的個操作是安裝出現的先後順序執行的,選擇對應if witch,循環對應java語言中的for dowhile 以及while
1.11 &he &&區別
&運算時吧邏輯表達式全部計算完,&&運算具有短路計算功能,所謂短路計算,是指系統從左向右進行邏輯表達式的計算,一旦出現計算結果已經確定的情況下,則計算過程終止
1.12 java中八大數據類型和字節長度
byte 一字節 八位 存儲一個字節數據 short 2字節 16位 兼容性考慮 一般不用 int 4字節 32位 存儲整數 long 8字節 64位 存儲長整數 float 四字節 32位 存儲浮點數
double 8字節 64位 存儲雙精度浮點數 char 2字節 16位 存儲一個字符 boolean 一字節 8位 存儲邏輯變量 true false
1.13 jvm加載class文件的原理機制
jvm中類的加載是由classloader和他的子類來實現,java classloader是一個重要java 運行時系統組件,他負責在運行時查找和裝入類文件中的類
1.15 什麽是進程
進程是操作系統結構的基礎,是一個計算機中正在運行的程序實例,可分配給處理器並由處理器執行的一個實體,由單一順序的執行顯示,一個當前狀態和一組相關的系統資源所描述的活動單元。
1.16 什麽是垃圾回收,什麽時候出發,如何降低垃圾回收出發頻率,他能保證程序有足夠的可用內存;
1 垃圾回收gc是java語言的一個重要特性,作用是釋放不在被使用的內存
2 垃圾回收由系統進行管理,在系統認為需要的時候自動啟動一個線程來驚醒處理;
3 盡量減少垃圾內存 也及時新建對象的數量 可以降低垃圾回收的頻率
4 垃圾回收機制無法保存有足夠的內存
1.17 java內存泄漏
兩種情況 1 堆中分配的內存,在沒有將其釋放的時候,就把所有能訪問這塊內存的方式都刪掉 2 在內存對象已經不需要的時候 ,還保留這塊內存和他的訪問方式
1.18 java源文件中是否可以包括多個類,有什麽限制
一個java源文件可以包含多個類,有一個public的話 必須和這個名字相同,沒有public的話 用什麽都可以的 最好一個java源文件包含一個java類
1.18 列出自己常用的jdk包
1.java。lang 這個包包含了jdk提供的基礎類。如String扥都在這裏面 這個包是唯一一個不用導入就可以使用的包
2.java.io 包含了於 輸入輸出相關的類 如文件操作等
3 java。net 包含了與網絡相關的類,比如url urlconnection等
4 javautil 這個是系統輔助類 特別是集合類 collection list map
5 java sql 數據庫操作 的類 connection statement resultset
1.19 簡單說明什麽是遞歸 什麽情況下會使用 並使用java實現
1 遞歸作為一種算法在程序設計語言中的廣泛應用,是函數 過程 子程序在運行過程中直接或間接調用自身 二產生的重入現象
2 遞歸算法一般用於解決三類問題
數據的定義按遞歸定義的 問題揭發按遞歸算法實現的 數據的結構形式按遞歸定義的
1.20 java中的排序
插入排序 交換排序 選擇排序 歸並排序 分配排序
java面試題-java基礎