(絕密資料)Java高級程序員面試題(附答案解析)

1.你認(rèn)為項(xiàng)目中最重要的過程是那些?

分析、設(shè)計(jì)階段 盡量找出進(jìn)度的優(yōu)先級

2.如果給你一個4-6人的team,怎么分配?

挑選一技術(shù)過硬的人作為我的替補(bǔ)。其它人平均分配任務(wù),每周進(jìn)行全面的任務(wù)分配,每個人領(lǐng)取一周的工作量,每天匯報進(jìn)度。

3.簡述軟件開發(fā)文檔?

需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、操作手冊、測試計(jì)劃

4.你認(rèn)為一個項(xiàng)目如何才正確?

是企業(yè)利益最大化。

5.你經(jīng)常讀那些書?

Java編程思想 Java模式 人月神話

6.springmvc的工作原理?

客戶端請求提交到DispacherServlet由DispacherServlet控制器查詢HandlerMapping,找到處理請求的Controller

Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView

DispacherServlet查詢視圖解析,找到ModelAndView指定的視圖

視圖負(fù)責(zé)將結(jié)果顯示到客戶端

7.springmvc 和struts2的區(qū)別?

機(jī)制 :springmvc 的入口是servlet,struts2的入口是filter

性能 : springmvc 會比struts2快一點(diǎn)。springmvc是基于方法設(shè)計(jì),struts2是基于類,每次發(fā)一次請求都會實(shí)例一個action,每個Action都會被注入屬性。

參數(shù)傳遞:struts2是在接受參數(shù)的時候,可以采用屬性來接收參數(shù),這家說明可以讓多個方法共享

攔截器機(jī)制:struts2有自己的interceptor機(jī)制,springmvc用的是獨(dú)立的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的實(shí)例

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其實(shí)就是一個動態(tài)代理的實(shí)現(xiàn)

聲明式事務(wù)和編程式事務(wù)

11.mybatis的優(yōu)缺點(diǎn)?

優(yōu)點(diǎn):SQL寫在XML中,便于統(tǒng)一管理和優(yōu)化

提供映射標(biāo)簽,支持對象和數(shù)據(jù)庫的orm字段關(guān)系映射

可以對SQL進(jìn)行優(yōu)化

缺點(diǎn): SQL工作量大

mybagtis移植姓不好

不支持級聯(lián)

12.談?wù)凷SH整合?

struts(表示層)+spring(業(yè)務(wù)層)+hibernate(持久層)

struts是一個表示層的框架,主要用于接收請求,分發(fā)請求。struts其實(shí)屬于MVC中的VC層次的

hibernate是一個持久層的框架,主要負(fù)責(zé)與關(guān)系數(shù)據(jù)庫的操作

spring是一個業(yè)務(wù)層的框架,是一個整合的框架,能夠很好的黏合表示層和持久層。

13.maven是什么?有什么作用?

是一個項(xiàng)目管理、構(gòu)建工具

作用:幫助下載jar 尋找依賴,幫助下載依賴 熱部署、熱編譯

14.WEB 前端優(yōu)化?

減少HTTP請求的數(shù)量(合并css、js、圖片)

利用瀏覽器的緩存機(jī)制

利用GZIP壓縮機(jī)制:只針對文本類資源有效

把CSS文件放在HTML開頭

把javascript文件放在HTML結(jié)尾

避免CSS表達(dá)式(判斷瀏覽器)

使用javascript壓縮

減少DNS查找

避免重定向

使用ajax

15.安全性測試

利用安全性測試技術(shù),找到潛在的漏洞

16.事務(wù)隔離級別(4種)

Serializable(串行化):一個事務(wù)在執(zhí)行過程中完全看不到其他事物對數(shù)據(jù)庫所做的更新(事務(wù)執(zhí)行的時候不允許別的事務(wù)并發(fā)執(zhí)行,事務(wù)只能一個接著一個地執(zhí)行,而不能并發(fā)執(zhí)行)

Repeatable Read(可重復(fù)讀):一個事務(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個文件,其中文件名和表名都相同,但是擴(kuò)展名分別為:.frm(存儲表定義) ,YD(MYData,存儲數(shù)據(jù)) , MYI(MYIndex,存儲索引),InnoDB,InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復(fù)能力的事務(wù)安全。但是對比MyISAM的存儲引擎,InnoDB寫的處理效率差一些并且會占用更多的磁盤空間以保留數(shù)據(jù)和索引。

1)自動增長列2)外鍵約束

MEMORY

memory使用存在內(nèi)存中的內(nèi)容來創(chuàng)建表。每個MEMORY表實(shí)際對應(yīng)一個磁盤文件,格式是.frm。MEMORY類型的表訪問非常快,因?yàn)樗綌?shù)據(jù)是放在內(nèi)存中的,并且默認(rèn)使用HASH索引,但是一旦服務(wù)器關(guān)閉,表中的數(shù)據(jù)就會丟失,但表還會繼續(xù)存在。

MERGE

merge存儲引擎是一組MyISAM表的組合,這些MyISAM表結(jié)構(gòu)必須完全相同,MERGE表中并沒有數(shù)據(jù),對MERGE類型的表可以進(jìn)行查詢、更新、刪除的操作,這些操作實(shí)際上是對內(nèi)部的MyISAM表進(jìn)行操作。

18.事務(wù)傳播特性

1. PROPAGATION_REQUIRED: 如果存在一個事務(wù),則支持當(dāng)前事務(wù)。如果沒有事務(wù)則開啟

2. PROPAGATION_SUPPORTS: 如果存在一個事務(wù),支持當(dāng)前事務(wù)。如果沒有事務(wù),則非事務(wù)的執(zhí)行

3. PROPAGATION_MANDATORY: 如果已經(jīng)存在一個事務(wù),支持當(dāng)前事務(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ù)存在,則運(yùn)行在一個嵌套的事務(wù)中. 如果沒有活動事務(wù),。

20.TCP協(xié)議(傳輸控制協(xié)議Transmission Control Protocol )

建立鏈接:三次握手(1.給對方撥號 2.喂,您好,請問是哪位 3 我是小劉)

關(guān)閉鏈接:四次揮手保證可靠

21.shiro 是什么

Apache Shiro 是一個強(qiáng)大易用的java安全框架,提供了認(rèn)證、授權(quán)、加密和會話管理等功能。

認(rèn)證 :驗(yàn)證用戶來核實(shí)他們的身份

授權(quán):會話管理

22. 項(xiàng)目技術(shù)

前臺:面向的客戶

前端:css div js jquery

后端:springmvc spring mybatis

使用的優(yōu)化技術(shù):

1.頁面靜態(tài)化(Freemarker)

2.緩存

2.1 頁面緩存(OSCache)

2.2 分布式緩存(memcached)

3. 圖片分離(服務(wù)器)

4.負(fù)載均衡(解決高并發(fā)終極策略)

后臺:(管理對象)

前端:css html js jquery

后端:springmvc spring mybatis

數(shù)據(jù)庫:mysql

圖片分離框架:jersey

23.什么RESTful(表現(xiàn)層狀態(tài)轉(zhuǎn)化)架構(gòu)?

(1)每一個URI代表一種資源;

(2)客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;

(3)客戶端通過四個HTTP動詞,對服務(wù)器端資源進(jìn)行操作,實(shí)現(xiàn)”表現(xiàn)層狀態(tài)轉(zhuǎn)化”。

以上內(nèi)容只做了簡單總結(jié)以及引導(dǎo),具體內(nèi)容大家可以根據(jù)自己的情況詳細(xì)總結(jié)。

喜歡對你有幫助的話可以轉(zhuǎn)發(fā)分享,記得加個關(guān)注不迷路哦

還有后臺私信“資料”可以獲取到一些個人收集的面試資料,或許對你有幫助!

圖片發(fā)自簡書App
圖片發(fā)自簡書App
圖片發(fā)自簡書App
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容