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(存儲表定義)
  • MYD(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
         
          注意:div table 區別  為什么前台使用div 而非table標簽   div可以一塊一塊進行加載
 
 
23.什么RESTful(表現層狀態轉化)架構?

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM