2018 JAVA 面試題
1.String 是可變的嗎? 還知道哪些是不可變的類,哪些是可變的類?
String是不可變的,因為String的所有屬性都被final修飾 不可變類:jdk的java.lang包中 Boolean, Byte, Character, Double, Float, Integer, Long, Short, String 可變類 :StringBuffer, java.util.Date
2.Servlet執行分為哪幾步?
構造方法,init(),doGet()或者doPost(),Destroy();
3.Servlet是單例還是多例?
單例項多執行緒
4.說下java類集都哪些? 及它們底層實現及優缺點?
5.jdk1.8和jdk1.7的HashMap有什麼不同?
jdk1.7中的HashMap採用的是位桶+連結串列的方式 jdk1.8中的HashMap採用的是位桶+連結串列/紅黑樹的方式
6.說下SQL注入
所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令
7.說下樂觀鎖和悲觀鎖
樂觀鎖:總是認為不會產生併發問題,每次去取資料的時候總認為不會有其他執行緒對資料進行修改,因此不會上鎖,但是在更新時會判斷其他執行緒在這之前有沒有對資料進行修改,一般會使用版本號機制或CAS操作實現。 悲觀鎖:總是假設最壞的情況,每次取資料時都認為其他執行緒會修改,所以都會加鎖(讀鎖、寫鎖、行鎖等),當其他執行緒想要訪問資料時,都需要阻塞掛起。可以依靠資料庫實現,如行鎖、讀鎖和寫鎖等,都是在操作之 前加鎖,在Java中,synchronized的思想也是悲觀鎖。
8.String底層怎麼實現的?
String類的一個最大特性是不可修改性,而導致其不可修改的原因是在String內部定義了一個常量陣列,因此每次對字串的操作實際上都會另外分配分配一個新的常量陣列空間(這片空間位於jvm的靜態方法區)
9.Oracle分頁怎麼實現的?
ROWNUM 示例程式碼: SELECT * FROM (SELECT ROW_.*, ROWNUM ROWNUM_ FROM (SELECT * FROM TABLE1 WHERE TABLE1_ID = XX ORDER BY GMT_CREATE DESC) ROW_ WHERE ROWNUM <= 20) WHERE ROWNUM_ >= 10;
10.什麼時候需要建索引?
較頻繁地作為查詢條件的欄位
11.SQL效能優化知道哪些?
常用查詢欄位建索引 避免在where中使用or 避免在where子句中使用區域性變數 萬用字元查詢也容易導致全表掃描 避免在where子句中對欄位進行表示式操作 避免在where子句中對欄位進行函式操作
12.500M的視訊存資料庫怎麼存?
資料庫 表字段使用二進位制型別 MEDIUMBLOB.然後就可以把以二進位制的方式存進去. 不過一般沒人這麼做. 資料庫會搞崩的. 一般只是存路徑. 然後把直接存到硬盤裡,資料庫記錄下路徑就行了. 取的時候自然可以找到了.
13.分散式系統中檔案如何儲存?
MongoDB的分散式檔案儲存系統 (NoSql資料庫) HDFS分散式檔案儲存系統
14.重寫 過載分別是什麼?
1.重寫方法名、引數、返回值相同;過載引數型別、個數、順序至少有一個不相同。
2.重寫存在於父類和子類之間;過載存在於父類和子類、同類中。
3.重寫發生在一個類中;過載發生在繼承類中。
4.被重寫的方法不能擁有更嚴格的許可權;過載對許可權沒有要求。
15.Jquery選擇器有哪些? 1. 基本選擇器 2. 層級選擇器 3. 過濾選擇器 4. 基礎過濾選擇器 5. 內容過濾選擇器 6. 可見度過濾選擇器 7. 屬性過濾選擇器 8. 子元素過濾選擇器 9. 表單物件屬性過濾選擇器