1. 程式人生 > >Java:面試技術點彙總

Java:面試技術點彙總

ssm


SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。常作為資料來源較簡單的web專案的框架。
頁面傳送請求給控制器,控制器呼叫業務層處理邏輯,邏輯層向持久層傳送請求,持久層與資料庫互動,後將結果返回給業務層,業務層將處理邏輯傳送給控制器,控制器再呼叫檢視展現資料

spring


Spring就像是整個專案中裝配bean的大工廠,在配置檔案中可以指定使用特定的引數去呼叫實體類的構造方法來例項化物件。也可以稱之為專案中的粘合劑。
  Spring的核心思想是IoC(控制反轉),即不再需要程式設計師去顯式地new

一個物件,而是讓Spring框架幫你來完成這一切。
2.輕量 
  從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小隻有1MB多的JAR檔案裡釋出。並且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的物件不依賴於Spring的特定類。
3.控制反轉 
Spring通過一種稱作控制反轉(IoC)的技術促進了鬆耦合。當應用了IoC,一個物件依賴的其它物件會通過被動的方式傳遞進來,而不是這個物件自己建立或者查詢依賴物件。你可以認為IoC與JNDI相反——不是物件從容器中查詢依賴,而是容器在物件初始化時不等物件請求就主動將依賴傳遞給它。
4.面向切面 
Spring提供了面向切面程式設計的豐富支援,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用物件只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支援。
5.容器 
Spring包含並管理應用物件的配置和生命週期,在這個意義上它是一種容器,你可以配置你的每個bean如何被建立——基於一個可配置原型(prototype),你的bean可以建立一個單獨的例項或者每次需要時都生成一個新的例項——以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。
6.框架 
Spring可以將簡單的元件配置、組合成為複雜的應用。在Spring中,應用物件被宣告式地組合,典型地是在一個XML檔案裡。Spring也提供了很多基礎功能(事務管理、持久化框架整合等等),將應用邏輯的開發留給了你。
所有Spring的這些特徵使你能夠編寫更乾淨、更可管理、並且更易於測試的程式碼。它們也為Spring中的各種模組提供了基礎支援。

springmvc


SpringMVC在專案中攔截使用者請求,它的核心Servlet即DispatcherServlet承擔中介或是前臺這樣的職責,將使用者請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執行的操作。SpringMVC相當於SSH框架中struts。

mybatis


mybatis是對jdbc的封裝,它讓資料庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory例項展開的。mybatis通過配置檔案關聯到各實體類的Mapper檔案,Mapper檔案中配置了每個類對資料庫所需進行的sql語句對映。在每次與資料庫互動時,通過sqlSessionFactory拿到一個sqlSession,再執行sql命令。

ssh


SSH在J2EE專案中表示了3種框架,即 Spring + Struts +Hibernate。 Struts對Model,View和Controller都提供了對應的元件。Spring是一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器框架,它由Rod Johnson建立。它是為了解決企業應用開發的複雜性而建立的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。 Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,可以應用在任何使用JDBC的場合,可以在Servlet/JSP的Web應用中使用,也可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。

strust


它通過採用Java Servlet/JSP技術,實現了基於Java EE Web應用的Model-View-Controller(MVC)設計模式的應用框架,是MVC經典設計模式中的一個經典產品。
在Struts中,已經由一個名為ActionServlet的Servlet充當控制器(Controller)的角色,根據描述模型、檢視、控制器對應關係的struts-config.xml的配置檔案,轉發檢視(View)的請求,組裝響應資料模型(Model)。

Hibernate


Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,使得Java程式設計師可以隨心所欲的使用物件程式設計思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。
Hibernate的核心介面一共有5個,分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個核心介面在任何開發中都會用到。通過這些介面,不僅可以對持久化物件進行存取,還能夠進行事務控制。下面對這五個核心介面分別加以介紹。
1.Session介面 Session介面負責執行被持久化物件的CRUD操作(CRUD的任務是完成與資料庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session物件是非執行緒安全的。同時,Hibernate的session不同於JSP應用中的HttpSession。這裡當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSesion物件稱為使用者session。
2.SessionFactory介面 SessionFactory介面負責初始化Hibernate。它充當資料儲存源的代理,並負責建立Session物件。這裡用到了工廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個專案通常只需要一個SessionFactory就夠,當需要操作多個數據庫時,可以為每個資料庫指定一個SessionFactory。
3.Configuration介面 Configuration介面負責配置並啟動Hibernate,建立SessionFactory物件。在Hibernate的啟動的過程中,Configuration類的例項首先定位對映文件位置、讀取配置,然後建立SessionFactory物件。
4.Transaction介面 Transaction介面負責事務相關的操作。它是可選的,開發人員也可以設計編寫自己的底層事務處理程式碼。
5.Query和Criteria介面 Query和Criteria介面負責執行各種資料庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。

bootstrap


Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JAVASCRIPT 的,它簡潔靈活,使得 Web 開發更加快捷。
Bootstrap 基本結構、Bootstrap CSS、Bootstrap 佈局元件和 Bootstrap 外掛幾個部分

vue


Vue.js(讀音 /vjuː/, 類似於view)是一套構建使用者介面的漸進式框架。與其他重量級框架不同的是,Vue 採用自底向上增量開發的設計。Vue 的核心庫只關注檢視層,並且非常容易學習,非常容易與其它庫或已有專案整合。另一方面,Vue 完全有能力驅動採用單檔案元件和Vue生態系統支援的庫開發的複雜單頁應用。
Vue.js 的目標是通過儘可能簡單的 API 實現響應的資料繫結和組合的檢視元件 [1] 。
Vue.js 自身不是一個全能框架——它只聚焦於檢視層。因此它非常容易學習,非常容易與其它庫或已有專案整合。另一方面,在與相關工具和支援庫一起使用時,Vue.js 也能完美地驅動複雜的單頁應用。

vuex


Vuex是Vue.js應用程式的狀態管理模式+庫。它充當應用程式中所有元件的集中儲存,其規則確保狀態只能以可預測的方式進行變更。它還與Vue的官方devtools擴充套件整合,以提供零配置時間旅行除錯和狀態快照匯出/匯入等高階功能。
在這裡插入圖片描述

axios


基於promise用於瀏覽器和node.js的http客戶端

特點
支援瀏覽器和node.js
支援promise
能攔截請求和響應
能轉換請求和響應資料
能取消請求
自動轉換JSON資料
瀏覽器端支援防止CSRF(跨站請求偽造)

小程式mina


微信團隊為小程式提供的框架命名為MINA應用框架。MINA框架通過封裝微信客戶端提供的檔案系統、網路通訊、任務管理、資料安全等基礎功能,對上層提供一整套JavaScript API,讓開發者能夠非常方便地使用微信客戶端提供的各種基礎功能與能力,快速構建一個應用。
在這裡插入圖片描述

tortoiseSVN


TortoiseSVN 是 Subversion 版本控制系統的一個免費開源客戶端,可以超越時間的管理檔案和目錄。檔案儲存在中央版本庫,除了能記住檔案和目錄的每次修改以外,版本庫非常像普通的檔案伺服器。你可以將檔案恢復到過去的版本,並且可以通過檢查歷史知道資料做了哪些修改,誰做的修改。這就是為什麼許多人將 Subversion 和版本控制系統看作一種“時間機器”。

velocity


Velocity是一個基於java的模板引擎(template engine)。它允許任何人僅僅使用簡單的模板語言(template language)來引用由java程式碼定義的物件。

AOP


可以通過預編譯方式和執行期動態代理實現在不修改原始碼的情況下給程式動態統一新增功能的一種技術。AOP實際是GoF設計模式的延續,設計模式孜孜不倦追求的是呼叫者和被呼叫者之間的解耦,提高程式碼的靈活性和可擴充套件性,AOP可以說也是這種目標的一種實現。
主要功能
日誌記錄,效能統計,安全控制,事務處理,異常處理等等。

IOC、DI


(1)Spring IOC原理
IOC的意思是控制元件反轉也就是由容器控制程式之間的關係,把控制元件權交給了外部容器,之前的寫法,由程式程式碼直接操控,而現在控制權由應用程式碼中轉到了外部容器,控制權的轉移是所謂反轉。
(2)DI(Dependency Injection,依賴注入)
IoC的一個重點是在系統執行中,動態的向某個物件提供它所需要的其他物件。這一點是通過DI(Dependency Injection,
依賴注入)來實現的。
詳細解釋