更新時間:2019-10-12 09:37:04 來源:動力節(jié)點 瀏覽9730次
今天動力節(jié)點java培訓機構(gòu)小編為大家分享22Java架構(gòu)師面試題及答案,希望通過此文能夠幫助到大家,下面就隨小編一起來看看Java架構(gòu)師面試題及答案吧。
1、你認為項目中最重要的過程是那些?
分析、設(shè)計階段 盡量找出進度的優(yōu)先級
2、如果給你一個4-6人的team,怎么分配?
挑選一技術(shù)過硬的人作為我的替補。其它人平均分配任務(wù),每周進行全面的任務(wù)分配,每個人領(lǐng)取一周的工作量,每天匯報進度。
3、簡述軟件開發(fā)文檔?
需求分析、概要設(shè)計、詳細設(shè)計、操作手冊、測試計劃
4、你認為一個項目如何才正確?
是企業(yè)利益最大化。
5、你經(jīng)常讀那些書?
Java編程思想 Java模式
6、springmvc的工作原理?
客戶端請求提交到DispacherServlet由DispacherServlet控制器查詢HandlerMapping,找到處理請求的Controller
Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView
DispacherServlet查詢視圖解析,找到ModelAndView指定的視圖
視圖負責將結(jié)果顯示到客戶端
7、springmvc 和struts2的區(qū)別?
機制 :springmvc 的入口是servlet,struts2的入口是filter
性能 : springmvc 會比struts2快一點。springmvc是基于方法設(shè)計,struts2是基于類,每次發(fā)一次請求都會實例一個action,每個Action都會被注入屬性。
參數(shù)傳遞:struts2是在接受參數(shù)的時候,可以采用屬性來接收參數(shù),這家說明可以讓多個方法共享
攔截器機制:struts2有自己的interceptor機制,springmvc用的是獨立的AOP方式,strtus2的配置文件還是比springmvc大,springmvc使用簡潔,springMVC比struts2開發(fā)效率要高、
8、struts2工作原理?
客戶端初始化一個執(zhí)行servlet的請求
這個請求經(jīng)過一系列的過濾器,被FilterDispatcher調(diào)用,詢問ActionMapper來決定是否調(diào)用Action
FilterDispatcher把請求的處理交給ActionProxy
ActionProxy通過Configuraction Manager詢問相關(guān)的配置文件,找到需要的Action類
ActionProxy創(chuàng)建ActionInvocation的實例
ActionInvocation調(diào)用Action前后的攔截器
Action執(zhí)行完畢后,根據(jù)struts、xml配置文件找到對應(yīng)的視圖頁面
9、Hibernate 工作原理?
讀取并解析配置文件
創(chuàng)建SessionFactory
打開Session
創(chuàng)建事務(wù):transaction
持久化操作
提交事務(wù)
關(guān)閉Session
關(guān)閉SessionFactory
10、為什么要用spring?
spring能夠很好的和各大框架整合
spring 通過IOC容器管理了對象的創(chuàng)建和銷毀 工廠模式
在使用hiberna,mybatis的時候,不用每次都編寫提交的事務(wù)的代碼,可以使用spring的AOP來管理事務(wù) AOP其實就是一個動態(tài)代理的實現(xiàn)
聲明式事務(wù)和編程式事務(wù)
11、mybatis的優(yōu)缺點?
優(yōu)點:SQL寫在XML中,便于統(tǒng)一管理和優(yōu)化
提供映射標簽,支持對象和數(shù)據(jù)庫的orm字段關(guān)系映射
可以對SQL進行優(yōu)化
缺點: SQL工作量大
mybagtis移植姓不好
不支持級聯(lián)
12、談?wù)凷SH整合?
struts(表示層)+spring(業(yè)務(wù)層)+hibernate(持久層)
struts是一個表示層的框架,主要用于接收請求,分發(fā)請求。struts其實屬于MVC中的VC層次的
hibernate是一個持久層的框架,主要負責與關(guān)系數(shù)據(jù)庫的操作
spring是一個業(yè)務(wù)層的框架,是一個整合的框架,能夠很好的黏合表示層和持久層。
13、maven是什么?有什么作用?
是一個項目管理、構(gòu)建工具
作用:幫助下載jar 尋找依賴,幫助下載依賴 熱部署、熱編譯
14、WEB 前端優(yōu)化?
減少HTTP請求的數(shù)量(合并css、js、圖片)
利用瀏覽器的緩存機制
利用GZIP壓縮機制:只針對文本類資源有效
把CSS文件放在HTML開頭
把javascript文件放在HTML結(jié)尾
避免CSS表達式(判斷瀏覽器)
使用javascript壓縮
減少DNS查找
避免重定向
使用ajax
15、安全性測試
利用安全性測試技術(shù),找到潛在的漏洞
16、事務(wù)隔離級別(4種)
Serializable(串行化):一個事務(wù)在執(zhí)行過程中完全看不到其他事物對數(shù)據(jù)庫所做的更新(事務(wù)執(zhí)行的時候不允許別的事務(wù)并發(fā)執(zhí)行,事務(wù)只能一個接著一個地執(zhí)行,而不能并發(fā)執(zhí)行)
Repeatable Read(可重復讀):一個事務(wù)在執(zhí)行過程中可以看到其它事務(wù)已經(jīng)提交的新插入的記錄,但是不能看到其它事務(wù)對已有記錄的更新
Read Commited(讀已提交數(shù)據(jù)):一個事務(wù)在執(zhí)行過程中可以看到其它事務(wù)已經(jīng)提交的新插入的記錄,而且能看到其它事務(wù)已經(jīng)提交的對已有記錄的更新。
Read Uncommitted(讀未提交數(shù)據(jù)):一個事務(wù)在執(zhí)行過程中可以看到其它事務(wù)沒有提交的新插入的記錄的更新,而且能看其它事務(wù)沒有提交到對已有記錄的更新
17、MYSQL存儲引擎(4種)
MyISAM它不支持事務(wù),也不支持外鍵,尤其是訪問速度快,對事務(wù)完整性沒有要求或者以SELECT、INSERT為主的應(yīng)用基本都可以使用這個引擎來創(chuàng)建表。
每個MyISAM在磁盤上存儲成3個文件,其中文件名和表名都相同,但是擴展名分別為:、frm(存儲表定義) ,YD(MYData,存儲數(shù)據(jù)) , MYI(MYIndex,存儲索引),InnoDB,InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務(wù)安全。但是對比MyISAM的存儲引擎,InnoDB寫的處理效率差一些并且會占用更多的磁盤空間以保留數(shù)據(jù)和索引。
(1)自動增長列
(2)外鍵約束
MEMORY
memory使用存在內(nèi)存中的內(nèi)容來創(chuàng)建表。每個MEMORY表實際對應(yīng)一個磁盤文件,格式是、frm。MEMORY類型的表訪問非常快,因為它到數(shù)據(jù)是放在內(nèi)存中的,并且默認使用HASH索引,但是一旦服務(wù)器關(guān)閉,表中的數(shù)據(jù)就會丟失,但表還會繼續(xù)存在。
MERGE
merge存儲引擎是一組MyISAM表的組合,這些MyISAM表結(jié)構(gòu)必須完全相同,MERGE表中并沒有數(shù)據(jù),對MERGE類型的表可以進行查詢、更新、刪除的操作,這些操作實際上是對內(nèi)部的MyISAM表進行操作。
18、事務(wù)傳播特性
1、 PROPAGATION_REQUIRED: 如果存在一個事務(wù),則支持當前事務(wù)。如果沒有事務(wù)則開啟
2、 PROPAGATION_SUPPORTS: 如果存在一個事務(wù),支持當前事務(wù)。如果沒有事務(wù),則非事務(wù)的執(zhí)行
3、 PROPAGATION_MANDATORY: 如果已經(jīng)存在一個事務(wù),支持當前事務(wù)。如果沒有一個活動的事務(wù),則拋出異常。
4、 PROPAGATION_REQUIRES_NEW: 總是開啟一個新的事務(wù)。如果一個事務(wù)已經(jīng)存在,則將這個存在的事務(wù)掛起。
5、 PROPAGATION_NOT_SUPPORTED: 總是非事務(wù)地執(zhí)行,并掛起任何存在的事務(wù)。
6、 PROPAGATION_NEVER: 總是非事務(wù)地執(zhí)行,如果存在一個活動事務(wù),則拋出異常
7、 PROPAGATION_NESTED:如果一個活動的事務(wù)存在,則運行在一個嵌套的事務(wù)中、 如果沒有活動事務(wù),
19、TCP協(xié)議(傳輸控制協(xié)議Transmission Control Protocol )
建立鏈接:三次握手(1、給對方撥號 2、喂,您好,請問是哪位 3 我是小劉)
關(guān)閉鏈接:四次揮手保證可靠
20、shiro 是什么
Apache Shiro 是一個強大易用的java安全框架,提供了認證、授權(quán)、加密和會話管理等功能。
認證 :驗證用戶來核實他們的身份
授權(quán):會話管理
21、 項目技術(shù)
前臺:面向的客戶
前端:css div js jquery
后端:springmvc spring mybatis
使用的優(yōu)化技術(shù):
(1)頁面靜態(tài)化(Freemarker)
(2)緩存
1) 頁面緩存(OSCache)
2)分布式緩存(memcached)
(3) 圖片分離(服務(wù)器)
(4)負載均衡(解決高并發(fā)終極策略)
后臺:(管理對象)
前端:css html js jquery
后端:springmvc spring mybatis
數(shù)據(jù)庫:mysql
圖片分離框架:jersey
22、什么RESTful(表現(xiàn)層狀態(tài)轉(zhuǎn)化)架構(gòu)?
(1)每一個URI代表一種資源;
(2)客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;
(3)客戶端通過四個HTTP動詞,對服務(wù)器端資源進行操作,實現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。
以上就是動力節(jié)點java培訓機構(gòu)小編分享的“22道Java架構(gòu)師面試題及答案”的內(nèi)容,希望對大家有幫助,更多java架構(gòu)師面試題請繼續(xù)關(guān)注動力節(jié)點java培訓機構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。
相關(guān)java架構(gòu)師面試題推薦
Java架構(gòu)師面試題全集:基礎(chǔ)+框架+架構(gòu)
Java架構(gòu)師面試:遇到答不上的問題怎么應(yīng)對?