首頁  >  文章  >  Java  >  Java中高階面試題(附答案)

Java中高階面試題(附答案)

angryTom
angryTom轉載
2019-11-14 16:51:0711474瀏覽

Java中高階面試題(附答案)

1、redis如何跟本機資料同步?

程式實作mysql更新、新增、刪除就會同步操作redis

程式查詢redis,不存在就查詢mysql,自動儲存redis

2、redis幾種資料結構?

set、list、hash、string、zset

3、java記憶體溢位是如何造成的?

OutOfMemoryError:

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

解決方案:調參XX:PermSize 和XX:MaxPermSize、減少jar包減少類別的重複載入 

(2)Java Heap

Space Java虛擬機建立太多對象。解決方法:調參Xms(初始化堆大小)Xmx(最大堆大小)、檢查死循環或不必要建立的重複物件。

(3)unable to create new native Thread

JVM佔用了太多記憶體空間,而在JVM中建立執行緒還要再作業系統中建立執行緒。解決方案:調整JVM中執行緒大小。

4、String s = “123”,這個語句有多少物件產生?

若字串池中沒有“123”,則產生一個,並且放入常數池中,若有“123”,則產生0個

5 、JDK8的新特性,舉例描述

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

(2)Stream API 

#(3 )介面的預設方法

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

6、解決高並發與高負載

## (1)盡可能html靜態化,採用資訊輸入發布系統CMS實現資訊輸入自動產生靜態頁面,在前端快取不常改變的動態資料。

(2)CDN加速,把CSS/JS等資源分散在不同的伺服器上

(3)快取不常改變的資料(Redis、memcache)。

(4)圖片伺服器與應用程式伺服器分離。 

(5)群集

7、生產者與消費者模式得瑟作用是什麼?

(1)透過平衡生產能力和消費者的消費能力來提升整個系統的運作效率(2)解耦

8、Mybatis一級、二層級快取

(1)一級快取:基於PerpetualCache的HashMap本機緩存,其儲存作用域Session,當Session

flush或close之後,該Session中的所有Cache就將清空。

(2)二級快取與一級快取機制相同,預設也是採用PerpetualCache,HashMap存儲,不同在儲存作用域Mapper,並且可自訂儲存來源,如需開啟二級快取。在sql映射檔案中添加

9、描述一個服務從發佈到被消費的詳細過程

首先獲取zk的配置信息,然後獲取需要暴露的url,然後呼叫registry,register方法將url註冊到zookeeper上去

10、如何實現負載平衡,有哪些演算法可以實現?

隨機(random)、輪訓(round-robin)、一致雜湊(consistent-hash)和主備(master-slave)

11、如果要你實現Spring AOP,怎麼實現?

實作aop技術,主要分為兩大類:一採用動態代理技術,利用截取訊息的方式,對該訊息進行裝飾,以取代原有物件行為的執行

二是採用靜態織入的方式,引入特定語法創建“方面”,從而使得編譯器間織入有關“方面”的代碼

12、如何防止頁面重複提交?

叢集環境:採用token加redis(redis是單執行緒的,處理需要排隊)

處理流程:

1、資料提交前要向服務申請token,token放到redis內存,token有效時間

2、提交後後台校驗token,同時刪除token,生成新的token返回

13、什麼是微服務?

將工程依照不同的業務規則分割成微服務,部署在不同的機器上。服務間進行相互呼叫

14、什麼是web服務?

(1)web service就是一個應用程序,它向外界暴露出一個能夠透過web進行呼叫的API

(2)基於HTTP協定傳輸數據,這使得運行在不同機上的不同應用程序,無需借助附加的、專門的第三方軟體和硬件,就可以相互交換數據或集成

15、談一下你的項目選擇Struts2的理由?

①Action是POJO類,沒有依賴Servlet API,具有良好的可測試性;②強大的攔截器,簡化了開發的複雜度;

③支援多種表現層技術:JSP、Freemarker等;④靈活的驗證方式; ⑤國際化(I18N)支援⑥聲明式異常管理;

⑦透過JSON插件簡化Ajax; ⑧透過Spring插件跟Spring整合;

16、談一下攔截器和過濾器的差別?

攔截器和過濾器都可以用來實現橫切關注功能,其區別主要在於:①攔截器是基於JAVA反射機制的,而過濾器是基於函數回調的

②過濾器依賴Servlet容器,而攔截器不依賴Servlet容器

③攔截器只能對Action請求起作用(Action中的方法),而過濾器可以對幾乎所有的請求起作用(CSS JSP JS)

17、Spring支援的事務管理類型?

編程式事務管理:程式設計的方式管理事物,極大的彈性,難以維護

聲明式交易管理:可以將業務程式碼和事物管理分開、只需要用註解和XML設定來管理事物

php中文網,大量的免費Java入門教學,歡迎線上學習! 

以上是Java中高階面試題(附答案)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除