Java面試題3(jsp)

1.JSP的常用指令?
    1)page指令
功能: 設置整個JSP網頁的靜態屬性
 <!-- 將html文件轉換爲jsp文件 -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
   2) include指令
         功能: include 指令用來向當前頁面插入一個靜態文件內容,
                   這個文件可以是JSP.HTML文本或者是java程序
         語法:<%@ include file=“filename” %> 比如 <%@ include file=“111.txt” %>
                       標籤元素: file
  3) taglib指令
  功能: 使用標籤庫定義新的自定義標籤,
          在JSP頁面中啓動定製行爲頁面引用了用戶自定義標籤時,
           taglib指令應用引用自定義標籤庫,並指定標籤的前綴
<!-- 導入jsp標籤庫-->
<%@ taglib prefix="s" uri="/struts-tags"%>
 
  <!-- spring提供的標籤庫 -->
 <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
2. == 與 equals有什麼區別?
               ==: 比較兩個數據內存地址是否相等
           equals: 比較兩個數據值是否相等
3.  ++i 和 i++ 的區別?
              ++i: 先賦值,後迅運算
               i++: 先運算,後賦值
4. final,finally, finalize的區別?  final關鍵字的用法?
      final: 修飾符(關鍵字)
               如果一個類被聲明爲final,意味着它不能再派生出新的子類,不能作爲父類被繼承
                一個類不能即被聲明爲abtract,又被聲明爲final
               被聲明爲final的方法也同樣只能使用,不能重載
     finally: 異常處理時,提供finally塊來執行操作
                  finally塊是無論異常是否發生,都會執行finally塊的內容
     finalize:方法名
                  finalize()方法是在垃圾收集器刪除對象之前對這個對象調用的
                 它是在object 類中定義的,所有的類都繼承它
  final用法:
        1.修飾類: 表示該類不能被繼承
        2.修飾方法: 表示方法不能被重寫
        3.修飾變量: 表示變量這隻能一次賦值以後值不能被修改(常量)
4.一個漢字幾個字節? 一個char類型的變量,能存儲一個漢字嗎?
             兩字字節.  前提是漢字必須是Unicode編碼
5.談談你對MVC的理解?
       MVC:是一個框架設計模式
         M: 模型,表示業務數據和業務處理.
               屬於數據模型,如: entity, jdbc, hibernate, mybatis
         V:視圖, 視圖向用戶顯示相關數據,並接受用戶的輸入,視圖不進行任何業務邏輯處理
                如: JSP, HTML等
        C: 控制器 接收響應用戶信息
              如: servlet    action  controller
6.用戶在瀏覽器中輸入URL之後,發生了什麼?寫出請求和響應流程?
        1)域名解析
        2)TCP三次握手
        3)瀏覽器向服務器發送hTTP請求
        4)瀏覽器發送請求頭信息
        5)服務器處理請求
        6)服務器做出應答
        7)服務器發送應答頭信息
        8)服務器發送數據
        9)TCP連接關閉
7.JSP的作用域有哪些?
          page: 當前頁面有效
          request: 一次會話請求有效
          session: 瀏覽器進程,只要瀏覽器不關閉,則一直有效
          application: 服務器只要運行,則有效
8.  sleep和wait的區別?
    sleep: 
          1.屬於Thread類,表示讓一個線程進入睡眠狀態,
              等待一定時間之後,自動醒來進入可運行狀態
         2.sleep方法沒有釋放鎖
         3.sleep必須捕獲異常
    wait:
        1.屬於object,一旦一個對象調用了wait方法,必須採用notify()和notifyAll()方法後本線程進入對象鎖定池準備獲取對象鎖進入運行狀態
       2.wait方法釋放了鎖
       3.wait不需要捕獲 異常  
9.java接口的修飾符有哪些?
         public   final   abstract
10.構造器(constructor)是否可被重寫(Override)?是否可被重載?是否可被繼承?
    構造器不能被繼承,因此不能重寫Overvide,但可以被重載Overload
11.關係型數據庫和非關係型數據庫的區別?
            關係型數據庫(Mysql和Oracle):
                   表和表,表和字段,數據和數據庫存在着關係
       優點: 
             1.數據之間有關係,進行數據的增刪改查時非常方便
             2.關係型數據庫時有事務存在的,保證數據的完整性和一致性
      缺點:
            1.因爲數據和數據之間是有關係的,底層是運行了大量的算法
               大量的算法會降低系統的效率,會降低性能
           2.面對海量的數據的增刪改查變得無能爲力
           3.海量數據對數據進行維護變得非常的無力
    使用場景: 適合處理一般量級的數據(銀行轉賬和錢)
       非關係型數據庫:(redis和MangDB):
        優點:
              1.海量數據的增刪改查是可以的
             2.海量數據的維護和處理非常輕鬆
       缺點:
             1.數據和數據之間沒有關係,它們之間是單獨存在的
             2.沒有強大的事務關係,沒有保證數據的完整性和安全性
   使用場景:統計數據,例如微博數據
                   適合處理海量數據,保證效率,不一定安全
12.Git和SVN的區別?
     1.Git是分佈式的,SVN不是
       分佈式好處:
           (1)跟其他同事不會有太多的衝突,自己寫的代碼放在自己的電腦上,
               一段時間後在提交合  並,也可以不用聯網的本地提交
           (2)GIT和SVN有自己的集中式版本庫或服務器.
              GIT更傾向於分佈式模式,每個開發人員從中心版本庫/服務器上
              chect out代碼後會在自己的機器上克隆一個自己的版本庫.
              當沒有網絡時,仍然可以提交文件,查看歷史記錄,創建項目分支等
    2.GIT把內容按照元數據方式存儲,而SVN是按文件
             Git是處於你的機器上的一個克隆版的版本庫,
             它擁有中心伴版本庫上的所有東西,例如:標籤,分支,版本記錄等
    3.Git沒有一個全局版本號,而SVN有
    4.Git的內容完整性要優於SVN:
       GIT的內容存儲使用的是SHA-1哈希算法,確保代碼內容的完整性,
       確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞
   5.Git下載下來後,在OffLine狀態下可以看到所有的Log,SVN不行
   6.SVN必須先Update才能Commit,忘記合併就會出問題.Git出現這種情況很很少
   7.提交(Commit)在SVN,當你提交你的完成品時,它將直接記錄都中央版本庫,
      當發現完成品出現問題,你無法阻止事情的發生.如果網絡中斷,沒辦法提交!
     Git的提交完全屬於本地版本庫的活動,只需"推"(Git push)到主要版本庫即可.
     Git的"推"其實是在執行"同步"(Sync)
 8.SVN特點:簡單,只需要一個放代碼的地方時用是OK的
    Git特點: 版本控制可以不依賴網絡做任何事情,對分支和合並有更好的支持.
13. SVN
        項目上有*號,代表有sVN操作未做
               ?代表文件未提交
      提交 commit   將本地沒有在SVN上的資源上傳到svn服務器上
     更新 update   將服務器上新的資源更新到本地
     檢出  checkout(co)  將服務器上的項目導出到本地倉庫
     添加  add  一般是? 先add 再提交
     刪除  delete 從服務器刪除資源
    1.公共資源交個一個人管理(配置文件,靜態資源)
    2.在修改公共資源之前,進行更新操作,在小組中告訴其他成員,你要做的操作
    3.提交後及時通知同組人員更新
    4.刪除某些資源之後,先不要提交,確定之後再提交
    5.產生衝突之後,將衝突的資源備份一份,接着還原,更新。
    6.每天走之前,將項目備份一份。
       6.1.主幹:目前正在開發的版本
       6.2分支:要添加新功能,在分支中添加功能完成,合併到主幹
       6.3標記:項目某個版本已經開發完成(發佈),將此項目放在標記位置
14.端口被只能用解決方案(mac):
              lsof  -i:8080                   [查看8080端口被什麼進程佔用]

               kill  -9  18747                  [結束進程,18747爲佔用8080端口的進程號]

         cmd命令裏輸入: netstat -ano|findstr 8080  找到相應的8080進程數字串 
              taskkill /pid  數字串 /f   就ok了。

15.設置數據庫訪問權限
       use mysql
       update user set host = '%' where  user='root';
       flush privileges;
       select user,host from user;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章