黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

Java基礎面試題及答案總結

更新時間:2019-07-23 09:48:17 來源:動力節點 瀏覽3345次

  今天我們進入《Java基礎面試題及答案》專題,小編整合了近年各大廠的面試中的常見問題和知識點,我們的最終目標就是大廠:


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


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


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


  OutOfMemoryError:


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


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


  (2)JavaHeapSpaceJava虛擬機創建了太多的對象。


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


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


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


Java基礎面試題及答案總結.jpg


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


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


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


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


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


  4、Reader和InputStream區別?


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


  5、hashCode的作用?


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


  6、HashMap和Hashtable的區別?


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


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


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


Java基礎面試題及答案總結.jpg


  8、啟動一個線程是用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可以進入。


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


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


  (2)StreamAPI


  (3)接口的默認方法


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


  10、對sql進行優化的原則有哪些?


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

Java基礎面試題及答案總結.jpg

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


  (3)負載均衡(Nginx)。


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


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


  (6)集群。


  15、Integer內部緩存?


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


  


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 综合在线播放 | 国产玖玖 | www操操| 青青视频网 | 小黄鸭视频破解版 | 美女一级a毛片免费观看 | 香蕉成人999视频 | 99精品在线观看 | 亚洲伦 | 大学生美女穿黑色丝袜网站 | www.狠狠色| 欧美成人免费sss | 天堂网一区 | 亚洲va欧美 | 日本高清一本视频 | 天天爽天天爽天天片a久久网 | 亚洲三级视频 | 黄污视频在线 | 丝袜制服第一页 | 日韩精品第一 | 好看的看黄a大片爽爽影院 好黄好猛好爽好痛的视频 好吊爽在线播放视频 | 亚洲视频在线免费观看 | 亚洲九九九 | 亚洲欧美中文字幕在线网站 | 综合网插菊花 | 日本黄色xxxxx | 精品国产一区二区三区国产馆 | 欧美视频国产 | 黄色樱桃试色免费 | 在线视频一区二区日韩国产 | 欧美高清亚洲欧美一区h | 日韩高清一区二区三区五区七区 | 日韩视频第一页 | 在线观看欧洲成人免费视频 | 日本九色 | 亚洲第一区香蕉_国产a | 国产欧美精品一区二区三区四区 | 亚洲视屏一区 | 狠狠色丁香婷婷久久综合不卡 | 色老头永久免费网站 | 欧美一级在线观看 |