大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2019新的java面試題含答案(基礎篇)

2019新的java面試題含答案(基礎篇)

更新時間:2019-07-30 16:45:49 來源:動力節點 瀏覽6114次

 

 

如今IT仍是熱門行業,面試程序員的人也非常多,那么,怎樣才能順利通過面試呢?動力節點java學院小編來告訴你2019新的java面試題及答案(基礎篇),為你的面試助攻!

 

1、Java中的內存溢出是如何造成的?

 

OutOfMemoryError:

 

(1)PerGern Space 程序中使用了大量jar或class,使Java虛擬機裝載類空間不夠。

 

解決方案:調參XX:PermSize 和 XX:MaxPermSize 、減少jar包,減少類的重復加載

 

(2)Java Heap Space Java虛擬機創建了太多的對象。

 

解決方案:調參Xms(初始堆大小)Xmx(最大堆大小)、檢查死循環或不必要創建的重復對象

 

(3)unable to create new native Thread  JVM占用了太多內存空間,而在JVM中創建線程還要再操作系統中也創建線程。

 

解決方案:調整JVM中線程大小。

 

 

2、String s = “123”;這個語句有幾個對象產生?

 

若字符串池中沒有"123",則產生一個對象,并且放入常量池中,若有"123",則產生0個對象。

 

若是String s = new String("123"),若常量池中沒有,則在常量池中創建一個,然后在堆內存中創建一個。

 

 

3、問題:如果A和B對象循環引用,是否可以被GC?

 

回答:可以,現在的虛擬機基本都是通過可達性分析算法來判斷對象是否存活的,而不是通過簡單的引用計數法來判斷對象是否存活。可達性分析算法使用一系列的“GC Roots”對象(虛擬機棧中引用的對象、靜態屬性引用對象)作為起始點,這些節點向下搜索的路徑稱為引用鏈,當一個對象到GC Roots沒有任何引用鏈連接,則證明對象是不可用的。

 

 

4、Error、Exception和RuntimeException的區別,作用又是什么?

 

Error和Exception都是Throwable的子類,RuntimeException是Exception的子類。

 

Error用于指示合理應用程序不應該試圖捕獲的錯誤。

 

Exception指出合理的應用程序需要捕獲的條件。分為已檢查異常和未檢查異常。

 

RuntimeException是未檢查異常,不需要try catch或在方法上聲明,主要子類:NullPointer、Arithmatic、ArrayIndexOutOfBounds、ClassCast。

 

 

5、hashCode的作用?

 

hashCode主要是用于快速查找,如HashMap結構中,用于定位鍵值對的位置。兩個對象相同,則hashCode一定相同,而hashCode相同的對象則不一定相同,就相當于放在同一個框里。

 

 

6、HashMap和Hashtable的區別?

 

線程安全性、null值的key、效率、HashMap(Iterator快速失敗迭代器)、Hashtable(enumerator迭代器)、時間推移HashMap元素位置會變

 

 

7、Reader和InputStream區別?

 

都是抽象類,Reader用于讀取字符流(char或String),InputStream用于讀取字節流(byte數組)。

 

 

8、HashMap中是否任何對象都可以做為key,用戶自定義對象做為key有沒有什么要求?

 

可以、但是要key對象必須是不可變的對象,不然在Entry被插入Map中后,再改變key值,會導致當前key值與hash值不符合,即與數組索引不符,將無法被查找到。

 

 

9、 啟動一個線程是用run()還是start()?

 

多線程有幾種實現 同步和并發是如何解決的 什么叫守護線程,用什么方法實現守護線程(Thread.setDeamon()的含義) 如何停止一個線程? 解釋是一下什么是線程安全?舉例說明一個線程不安全的例子。解釋Synchronized關鍵字的作用。 當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?

 

(1)start 

 

(2)繼承Thread類、實現Runnable接口、使用ExectuorService、Future、Callable實現由返回值的線程。

 

(3)同步方法、同步代碼塊、鎖

 

(4)Damon線程、為其他線程的運行提供服務,如GC,Thread。setDeamon(true)。

 

(5)Thread.stop()不推薦(不會正確釋放資源)、使用中斷來停止線程。

 

(6)當多個線程訪問一個對象時,如果不用考慮這些線程在運行時環境下的調度和交替執行,也不需要進行額外的同步,或者在調用方進行任何其他的協調操作,調用這個對象的行為都可以獲得正確的結果,那這個對象是線程安全的。

 

(7)車票被重復賣出。

 

(8)同步關鍵詞。修飾靜態方法,則以類作為鎖對象,同時只能有一個線程訪問此類同步的靜態方法;修飾普通方法,則以此對象作為鎖對象,同時只能有一個線程訪問此類同步的普通方法;也可以自定義鎖對象同步代碼塊。

 

(9)synchronized方法不可以進入,非synchronized可以進入。

 

10、最新java面試題之對sql進行優化的原則有哪些?

 

詳情見我數據庫分類的的一篇博客

 

 

11、Servlet的生命周期,Serlvet與CGI的區別?

 

生命周期:類加載、實例化(構造對象),初始化(init),服務(service),銷毀(destroy)。

 

CGI:common gateway interface,通用網關接口,Perl語言編寫,每個請求創建一個CGI對象。

 

Servlet:只需要實例化、初始化一次,多線程。

 

12、了解過哪些JDK8的新特性,舉例描述下相應的特性?

 

(1)lambda表達式:函數式編程,方法引用

 

(2)Stream API

 

(3)接口的默認方法

 

(4)日期時間API的改進,新增DateTimeFormatter方法

 

 

13、StringBuffer有什么優勢?為什么快?

 

因為StringBuffer不需要重復創建String對象,但是其實也不是這樣。

 

比如String s = "a" + "b" + "c"操作編譯器會優化,變成String s = "abc"

 

String s = s1 + s2 + s3編譯器也會優化,變成StringBuilder的append操作,但是如果不是一次性+操作拼接完,就會反復生成String對象與StringBuilder對象,效率會很低。

 

 

14、加密解密算法了解嗎?

 

摘要算法:MD5(128位)、SHA1(160位),是一種不可逆的過程,無論多大的數據,經過摘要算法后都生成相同長度的數據。只能通過字典進行破解。

 

對稱加密算法:DES、AES,加密解密時使用相同的秘鑰。

 

非對稱加密算法:RSA,加密解密時使用不同的秘鑰,對接支付寶使用RSA2。

 

 

15、Integer內部緩存?

 

Integer類內部有一個staitic 的Integer數組,存儲的是一些已經完成初始化的Integer對象,一般值為(-128~127),若用==比較,則有時候會因為值不在緩存中而返回false,所以應該用equals比較。

 

 

16、ArrayList的原理?

 

(1)ArrayList是線程不安全的,若要線程安全,則使用CopyOnWriteList。

 

(2)底層是Object[]數組,內部有一個elementData引用指向數組,剛開始默認指向一個緩存空數組(transient),當要進行擴容時,會重新new一個大小為1.5倍(x + (x >>1))的新數組,然后將舊元素通過System.arraycopy這個native方法拷貝到新數組中。

 

(3)隨機讀寫(get、set)方法的算法復雜度為O(1)。

 

(4)增加操作分為兩種,add(index, value)的算法復雜度為O(n),因為要通過元素復制進行移動;而add(value)操作的算法復雜度為O(1)(若不發生擴容)。

 

(5)刪除操作的時間復雜度為O(n),因為不管是按index進行刪除還是按照object去刪除,都需要通過復制去實現移動操作,刪除后數組大小不會變,靠size屬性來維護長度。按object進行刪除時不能用new出來的對象,要通過ArrayList內對象的引用刪除。

 

 

17、LinkedList的原理?

 

(1)底層是一個雙向鏈表,維護著一個first指針和一個last指針。

 

(2)隨機讀寫(get,set)的時間復雜度為O(n)。

 

(3)插入操作add(object)的時間復雜度為O(1);add(index, object)的時間復雜度為O(n)。

 

(4)刪除操作remove(object)的時間復雜度為O(1);remove(index)的時間復雜度為O(n)。

 

 

18、解決高并發與高負載?

 

(1)靜態頁面消耗最小,盡可能的HTML靜態化,采用信息發布系統CMS實現信息錄入自動生成靜態頁面、在前端緩存不經常改變的動態數據。

 

(2)CDN,把CSS/JS等資源分布在不同的服務器上。

 

(3)負載均衡(Nginx)。

 

(4)緩存不常改變的數據(Redis、memcache)。

 

(5)圖片服務器與應用服務器分離。

 

(6)集群。

 

 

19、Spring中@Autowire與@Resource的區別?

 

@Autowire默認按照類型裝配,默認情況下它要求依賴對象必須存在如果允許為null,可以設置它required屬性為false,如果我們想使用按照名稱裝配,可以結合@Qualifier注解一起使用; 

 

@Resource默認按照名稱裝配,當找不到與名稱匹配的bean才會按照類型裝配,可以通過name屬性指定,如果沒有指定name屬性,當注解標注在字段上,即默認取字段的名稱作為bean名稱尋找依賴對象,當注解標注在屬性的setter方法上,即默認取屬性名作為bean名稱尋找依賴對象

 

 

20、線程池使用的注意事項?

 

(1)防止死鎖。線程池中所有線程都在等待A事件發生,而沒有空閑線程去執行A。

 

(2)防止系統資源不足。要控制線程數量。

 

(3)防止并發錯誤。

 

(4)防止線程泄漏,某個線程因RuntimeException或Error沒有正常被捕獲導致該線程異常終止,線程池失去了一個線程。

 

(5)避免任務過載。

 

以上就是動力節點java學院小編為大家總結的2019最新java面試題含答案(基礎篇)內容,希望對你的面試之路有所幫助,如果還想了解更多相關信息,可以咨詢動力節點的老師哦。

 

 

更多java面試題請點擊:http://www.dabaquan.cn/tutorial_baseinterviewquestions/

 

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 色老头福影院韩国激情影院 | 中文精品视频一区二区在线观看 | 国产成人一区在线播放 | 99国内精品久久久久久久 | 国产精品欧美一区二区在线看 | 精品久久久久久国产免费了 | 国产自愉自愉全免费高清 | jizzjizz欧美69巨大 | 久久精品国产精品亚洲婷婷 | 99久久免费精品视频 | 国产精品资源 | 伊人99| 久草手机视频在线 | 国产毛片在线看 | 久久久久久免费视频 | 性激烈欧美三级在线播放 | 天天操天天射天天舔 | 日本夜爽爽一区二区三区 | 国产精品2020在线看亚瑟 | 深夜视频在线 | 97人人看| 老头老太做爰xxx视频 | 99久久精品免费看国产麻豆 | 久久精品国产99久久6动漫欧 | 欧美激情亚洲精品日韩1区2区 | 色婷婷视频在线 | 精品新一区二区三区四区 | 精品四虎| 天天干天天色天天干 | 亚洲国产第一 | 亚欧毛片 | 久久精品国产一区 | 动漫精品欧美一区二区三区 | 久久久久久久久久久96av | 国产一级淫片a视频免费观看 | 亚州免费一级毛片 | 成年女人午夜毛片免费看 | 92自拍视频 | 97精品国产高清在线看入口 | 一级做a爱片久久毛片 | 香蕉久久网站 |