1. 程式人生 > >Java高階程式設計師面試題(個人建議收藏+分享)

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學習群:527999065 群內每天都會分享java最新業內資料,共同交流學習,讓學習變(編)成(程)一種習慣!