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)