Java每日面試題_01

1、講一下MVC前端

MVC設計模式:Model-View-Controller簡寫。java

MVC是軟件工程中的一種軟件架構模式·,它是一種分離業務邏輯與顯示界面的設計方法。它把軟件系統分爲三個基本部分:Model、View、Controller。程序員

模型 Model:用於業務處理面試

視圖 View:用戶與程序交互的界面;算法

控制器 Controller:對請求進行處理,負責選擇視圖;json

 

2、SpringMVC執行流程設計模式

SpringMVC是一個MVC框架數組

一、發送請求:在瀏覽器輸入請求路徑,發送請求,前端控制器鏈接全部的請求。瀏覽器

二、得到處理器:核心處理器(DispatcherServlet)接收到請求,經過處理器映射器(handlerMapping)得到對應的處理器(Handler)架構

簡單說:根據請求路徑得到對應的controller

三、執行處理器:經過處理器適配器(HandlerAdapter)執行處理器(Handler),並返回視圖模型對象(ModelAndView)

簡單說:執行Controller方法。若是方法返回的字符串,底層也會轉換成ModelAndView

四、解析視圖:經過視圖解析器(ViewResovler)解析ModelAndView中的視圖,將邏輯視圖解析成真正的視圖

五、渲染視圖:將Model中的數據渲染到視圖(View)中

六、響應結果

將模型數據(查詢結果)渲染到jsp頁面中,並將處理結果響應給瀏覽器。

 

 

3、什麼是Spring MVC框架的控制器?

Spring框架的核心控制器(前端控制器)是DispatherServlet他的核心功能就是分發請求,將請求分發給對應處理的類handler。

 

4、SpringMVC跳轉一個頁面,怎麼返回一個json數據?

使用@ResponseBody註解,返回json數據

一、在方法上使用該註解,當前方法返回Json數據

二、在類上使用該註解,當前類中的全部的方法,都將返回json數據

 

 

5、JDK和JRE的區別

JDK是整個JAVA的核心,包括了Java運行環境JRE,一堆Java工具和Java基礎的類庫。經過JDK開發人 員將源碼文件(java文件)編譯成字節碼文件(class)文件。

 

JRE是Java運行環境,不含開發環境,沒有編譯器和調試器。將class文件加載到內存準備運行。

 

6、講一講Java內存的堆(heap)、棧(stack)和方法區(method)

棧:調用方法將在棧中開闢內存,稱爲入棧(壓棧)。

棧內存放基本類型值和引用數據類型的地址。

棧內存中的數據,沒有默認初始化值,須要手動設置。

方法調用完成,棧內存當即釋放,稱爲出棧(彈棧)

 

堆:用於存放使用new 建立的對象或數組。

全部的對象都有內存地址值。

數據都有默認初始化值。

堆內存中的對象再也不被指向時,JVM啓動垃圾回收機制,自動清除。

 

方法區:與Java堆同樣,是各個線程共享的內存區域。

儲存已被Java虛擬機加載的類信息、常量、靜態變量、以及編譯器編譯後的代碼等。

 

七、GC是什麼?爲何要有GC?

GC是垃圾回收的意思。

是指JVM用於釋放那些再也不使用的對象所佔用的內存。垃圾回收能夠有效防止內存泄漏,有效的使用可使用的內存。不須要程序員人工釋放內存空間。

 

 

八、在Java中,對象何時能夠被垃圾回收?

通常狀況下java中對象可被回收的前提是:該對象再也不被引用。而後垃圾回收器在回收的時候便會把這個對象清理掉

 

 

垃圾回收機制的算法:(擴展)

1 引用計數算法:

給對象中添加一個引用計數器,每當有一個地方引用它時,計數器值就加1;當引用失效時,計數器值就減1;任什麼時候刻計數器都爲0的對象就是再也不被使用的,垃圾收集器將回收該對象使用的內存。

2 根搜索算法:

經過一系列的名爲「GC Root」的對象做爲起點,從這些節點向下搜索,搜索所走過的路徑稱爲引用鏈(Reference Chain),當一個對象到GC Root沒有任何引用鏈相連時,則該對象不可達,該對象是不可以使用的,垃圾收集器將回收其所佔的內存。

 

 

九、java中會存在內存泄漏嗎?

會存在,內存泄漏是指程序分配的內存未釋放或沒法釋放的現象。

 

十、Java中內存泄漏產生的緣由可能有哪些?遞歸的時候會引發棧內存溢出

java中內存泄漏的發生場景:全局的集合變量、不正確的單例模式的使用

一、靜態集合類引發內存泄漏;

二、當集合裏的對象屬性被修改後,再調用remove()方法時不起做用;

三、監聽器

四、各類鏈接

五、內部類和外部模塊的引用

六、單例模式

 

 

十一、面對對象的基本特徵是什麼/什麼是面對對象/你是如何理解面對對象的

封裝:有選擇的隱藏和暴露一些數據和方法

繼承:子類能夠直接實現父類中的方法,有選擇的擴展

多態:調用同一個方法展現出來不一樣的方式。(子當複用)

抽象:把共同的特性抽取到一個類中。

 

十二、講一下你對OOP的理解

面向對象具備四大特性,分別是

1.抽象

將一些事物的共性抽離出來歸爲一個類。

如對於動物,具備生命體徵、活動能力等區別於其它事物的共同特徵

 

2.封裝

有選擇地隱藏和暴露數據和方法

好比有U盤這個類,我但願隱藏內部組成和實現,只暴露USB接口以供使用

 

3.繼承

子類能夠直接使用父類的部分數據和方法,能夠有選擇的擴展

好比鳥是動物,但鳥擴展了飛行的能力。

 

4.多態

同一類的對象調用相同方法能夠表現出不一樣的行爲

好比動物實現了say()方法,猴子、馬等動物重寫了say()方法來表現不一樣的交流語言。

 


(來源自傳智播客的面試題2019)

相關文章
相關標籤/搜索