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

1.你認為項目中最重要的過程是那些?

分析、設計階段 儘量找出進度的優先級

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

挑選一技術過硬的人作為我的替補。其它人平均分配任務,每週進行全面的任務分配,每個人領取一週的工作量

,每天彙報進度。

3.簡述軟件開發文檔?

需求分析、概要設計、詳細設計、操作手冊、測試計劃

4.你認為一個項目如何才正確?

是企業利益最大化。

5.你經常讀那些書?

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

6.springmvc的工作原理?

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

Controller調用業務邏輯處理後,返回ModelAndView

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

視圖負責將結果顯示到客戶端

7.springmvc 和struts2的區別?

機制 :springmvc 的入口是servlet,struts2的入口是filter

性能 : springmvc 會比struts2快一點。springmvc是基於方法設計,struts2是基於類,每次發一次請求都會實例一個action,每個Action都會被注入屬性。

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

攔截器機制:struts2有自己的interceptor機制,springmvc用的是獨立的AOP方式,strtus2的配置文件還是比springmvc大,springmvc使用簡潔,springMVC比struts2開發效率要高.

8.struts2工作原理?

客戶端初始化一個執行servlet的請求

這個請求經過一系列的過濾器,被FilterDispatcher調用,詢問ActionMapper來決定是否調用Action

FilterDispatcher把請求的處理交給ActionProxy

ActionProxy通過Configuraction Manager詢問相關的配置文件,找到需要的Action類

ActionProxy創建ActionInvocation的實例

ActionInvocation調用Action前後的攔截器

Action執行完畢後,根據struts.xml配置文件找到對應的視圖頁面

9.Hibernate 工作原理?

讀取並解析配置文件

創建SessionFactory

打開Session

創建事務:transaction

持久化操作

提交事務

關閉Session

關閉SessionFactory

10.為什麼要用spring?

spring能夠很好的和各大框架整合

spring 通過IOC容器管理了對象的創建和銷燬 工廠模式

在使用hiberna,mybatis的時候,不用每次都編寫提交的事務的代碼,可以使用spring的AOP來管理事務 AOP其實就是一個動態代理的實現

聲明式事務和編程式事務

11.mybatis的優缺點?

優點:SQL寫在XML中,便於統一管理和優化

提供映射標籤,支持對象和數據庫的orm字段關係映射

可以對SQL進行優化

缺點: SQL工作量大

mybagtis移植姓不好

不支持級聯

12.談談SSH整合?

struts(表示層)+spring(業務層)+hibernate(持久層)

struts是一個表示層的框架,主要用於接收請求,分發請求。struts其實屬於MVC中的VC層次的

hibernate是一個持久層的框架,主要負責與關係數據庫的操作

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

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

是一個項目管理、構建工具

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

14.WEB 前端優化?

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

利用瀏覽器的緩存機制

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

把CSS文件放在HTML開頭

把javascript文件放在HTML結尾

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

使用javascript壓縮

減少DNS查找

避免重定向

使用ajax

15.安全性測試

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

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

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

Repeatable Read(可重複讀):一個事務在執行過程中可以看到其它事務已經提交的新插入的記錄,但是不能看到其它事務對已有記錄的更新

Read Commited(讀已提交數據):一個事務在執行過程中可以看到其它事務已經提交的新插入的記錄,而且能看到其它事務已經提交的對已有記錄的更新。

Read Uncommitted(讀未提交數據):一個事務在執行過程中可以看到其它事務沒有提交的新插入的記錄的更新,而且能看其它事務沒有提交到對已有記錄的更新

17.MYSQL存儲引擎(4種)

MyISAM它不支持事務,也不支持外鍵,尤其是訪問速度快,對事務完整性沒有要求或者以SELECT、INSERT為主的應用基本都可以使用這個引擎來創建表。

每個MyISAM在磁盤上存儲成3個文件,其中文件名和表名都相同,但是擴展名分別為:.frm(存儲表定義) ,YD(MYData,存儲數據) , MYI(MYIndex,存儲索引),InnoDB,InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比MyISAM的存儲引擎,InnoDB寫的處理效率差一些並且會佔用更多的磁盤空間以保留數據和索引。

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

MEMORY

memory使用存在內存中的內容來創建表。每個MEMORY表實際對應一個磁盤文件,格式是.frm。MEMORY類型的表訪問非常快,因為它到數據是放在內存中的,並且默認使用HASH索引,但是一旦服務器關閉,表中的數據就會丟失,但表還會繼續存在。

MERGE

merge存儲引擎是一組MyISAM表的組合,這些MyISAM表結構必須完全相同,MERGE表中並沒有數據,對MERGE類型的表可以進行查詢、更新、刪除的操作,這些操作實際上是對內部的MyISAM表進行操作。

18.事務傳播特性

1. PROPAGATION_REQUIRED: 如果存在一個事務,則支持當前事務。如果沒有事務則開啟

2. PROPAGATION_SUPPORTS: 如果存在一個事務,支持當前事務。如果沒有事務,則非事務的執行

3. PROPAGATION_MANDATORY: 如果已經存在一個事務,支持當前事務。如果沒有一個活動的事務,則拋出異常。

4. PROPAGATION_REQUIRES_NEW: 總是開啟一個新的事務。如果一個事務已經存在,則將這個存在的事務掛起。

5. PROPAGATION_NOT_SUPPORTED: 總是非事務地執行,並掛起任何存在的事務。

6. PROPAGATION_NEVER: 總是非事務地執行,如果存在一個活動事務,則拋出異常

7. PROPAGATION_NESTED:如果一個活動的事務存在,則運行在一個嵌套的事務中. 如果沒有活動事務,。

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

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

關閉鏈接:四次揮手保證可靠

21.shiro 是什麼

Apache Shiro 是一個強大易用的java安全框架,提供了認證、授權、加密和會話管理等功能。

認證 :驗證用戶來核實他們的身份

授權:會話管理

22. 項目技術

前臺:面向的客戶

前端:css div js jquery

後端:springmvc spring mybatis

使用的優化技術:

1.頁面靜態化(Freemarker)

2.緩存

2.1 頁面緩存(OSCache)

2.2 分佈式緩存(memcached)

3. 圖片分離(服務器)

4.負載均衡(解決高併發終極策略)

後臺:(管理對象)

前端:css html js jquery

後端:springmvc spring mybatis

數據庫:mysql

圖片分離框架:jersey

23.什麼RESTful(表現層狀態轉化)架構?

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

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

(3)客戶端通過四個HTTP動詞,對服務器端資源進行操作,實現”表現層狀態轉化”。

以上內容只做了簡單總結以及引導,具體內容大家可以根據自己的情況詳細總結。

喜歡對你有幫助的話可以轉發分享,記得加個關注不迷路哦

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

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

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

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

相關推薦

推薦中...