java初級面試題(個人總結)
java基礎
1、String、StringBuffer以及StringBuild的區別?
答:這三個類之間的區別主要是在兩個方面,即執行速度和執行緒安全這兩方面
執行速度:StringBuilder > StringBuffer > String
執行緒安全性:StringBuffer > StringBuilder
String最慢的原因:
String為字串常量,而StringBuilder和StringBuffer均為字串變數,即String物件一旦建立之後該物件是不可更改的,但後兩者的物件是變數,是可以更改的。
總結:
String:適用於少量的字串操作的情況
StringBuilder:適用於單執行緒下在字元緩衝區進行大量操作的情況
StringBuffer:適用多執行緒下在字元緩衝區進行大量操作的情況
2、知道哪些集合?List與Map的區別以及遍歷方式有哪些?
https://www.cnblogs.com/LittleHann/p/3690187.html
答:1.Interface Iterable
1.1 Interface Collection
1.1.1 Interface List(ArrayList、Vector、LinkedList)
1.1.2 Interface Set(HashSet、SortedSet(TreeSet)、EnumSet)
1.1.3 Interface Queue(PriorityQueue、Deque)
1.2 Interface Map(HashMap、Hashtable、SortedMap、WeakHashMap、IdentityHashMap、EnumMap)
HashSet集合判斷兩個元素相等的標準是兩個物件通過equals()方法比較相等,並且兩個物件的hashCode()方法的返回值相等
LinkedHashSet元素輸出順序總是與新增順序一致,由於LinkedHashSet是HashSet的子類,不允許新增重複元素
TreeSet是SortedSet介面的實現類,TreeSet可以確保集合元素處於排序狀態
LinkedList同時表現出了雙端佇列、棧的用法
hashMap允許key為null,value為null,key允許重複
3、物件與引用的關係,分別存放在哪裡?
一個引用可以指向多個物件
一個物件也可以被多個引用所指
物件存放在堆記憶體中
引用存放在棧記憶體中
4、物件在哪些情況下會被當做垃圾回收掉?
1.沒有引用指向
2.只有弱引用指向並且不回收弱引用物件的話儲存區無空間
3.虛引用指向的物件
滿足以上任意條件則在gc時會回收
javaWeb
1、spring事務傳播行為
1、PROPAGATION_REQUIRED:如果當前沒有事務,就建立一個新事務,如果當前存在事務,就加入該事務,該設定是最常用的設定。
2、PROPAGATION_SUPPORTS:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就以非事務執行。‘
3、PROPAGATION_MANDATORY:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就丟擲異常。
4、PROPAGATION_REQUIRES_NEW:建立新事務,無論當前存不存在事務,都建立新事務。
5、PROPAGATION_NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
6、PROPAGATION_NEVER:以非事務方式執行,如果當前存在事務,則丟擲異常。
7、PROPAGATION_NESTED:如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與PROPAGATION_REQUIRED類似的操作。
---------------------
作者:hsgao_water
來源:CSDN
原文:https://blog.csdn.net/hsgao_water/article/details/52860380
版權宣告:本文為博主原創文章,轉載請附上博文連結!
2、spring控制事務的方式
1、程式設計式事務管理(基於Java程式設計控制,很少使用)
2、宣告式事務管理(基於Spring的AOP配置控制)
3、基於XML配置(經常使用)
4、基於註解(配置簡單,經常使用)
https://blog.csdn.net/m0_37354861/article/details/70212548
事務的四個特性:
原子性:指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。
一致性:指事務前後資料的完整性必須保持一致。
隔離性:指多個使用者併發訪問資料庫時,一個使用者的事務不能被其他使用者的事務所幹擾,多個併發事務之間資料要相互隔離。
永續性:指一個事務一旦被提交,它對資料庫中資料的改變就是永久性的,即時資料庫發生故障也不應該對其有任何影響。
事務隔離級別:(五種)
DEFAULT--使用後端資料庫預設的隔離級別(Spring中的選擇項)
READ_UNCOMMITED--允許你讀取還未提交的改變了的資料。可能導致髒、幻、不可重複讀
READ_COMMITTED--允許在併發事務已經提交後讀取。可防止髒讀,但幻讀和不可重複讀仍可發生
REPEATABLE_READ--對相同欄位的多次讀取是一致的,除非資料被事務本身改變。可防止髒、不可重複讀,但幻讀仍可能發生
SERIALIZABLE--完全服從ACID的隔離級別,確保不發生髒、幻、不可重複讀。這在所有的隔離級別中是最慢的,它是典型的通過完全鎖定在事務中涉及的資料表來完成的
其中,MySQL預設採用REPEATABLE_READ隔離級別;Oracle預設採用READ_COMMITTED隔離級別
3、springboot中用到了哪些註解
@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@ComponentScan
@Repository
@Service
@Controller
@ResponseBody
@RestController
@Component
@ComponentScan
@Bean
@AutoWired
@RequestMapping
4、spring是什麼?
spring是一個輕量級開源的設計層面的框架。主要用於業務邏輯和其他層的解耦問題。
一.Spring能幫我們根據配置檔案建立及組裝物件之間的依賴關係。
二.Spring 面向切面程式設計能幫助我們無耦合的實現日誌記錄,效能統計,安全控制。
三、在傳統應用程式當中,我們如何來完成資料庫事務管理?需要一系列“獲取連線,執行SQL,提交或回滾事務,關閉連線”,
而且還要保證在最後一定要關閉連線,多麼可怕的事情,而且也很無聊;如果採用Spring,我們只需獲取連線,執行SQL,
其他的都交給Spring來管理了,簡單吧。所以,Spring能非常簡單的幫我們管理資料庫事務。
四、Spring還提供了與第三方資料訪問框架(如Hibernate、JPA)無縫整合,而且自己也提供了一套JDBC訪問模板,來方便資料庫訪問。
五、Spring還提供與第三方Web(如Struts、JSF)框架無縫整合,而且自己也提供了一套Spring MVC框架,來方便web層搭建。
六、Spring能方便的與Java EE(如Java Mail、任務排程)整合,與更多技術整合(比如快取框架)
---------------------
作者:HDDLJJ
來源:CSDN
原文:https://blog.csdn.net/HDDLJJ/article/details/83004840
版權宣告:本文為博主原創文章,轉載請附上博文連結!
5、spring的工作原理
IOC
AOP
6、什麼是IOC?
控制反轉
7、什麼是AOP?
面向切面程式設計
8、什麼是DI?
依賴注入,IOC的具體實現
9、什麼是GC?
垃圾回收
10、springBoot介面請求方式?
get
post
RESTful API
請求 header 獲取
11、分散式是什麼?
12、叢集又是什麼,如何實現,正向代理反向代理的優缺點?
13、SpringMvc用過沒有?
用過
14、springboot的熱部署
springboot底層實現就是springmvc
15、xml的理解
資料庫
1、索引有哪些種類?
Mysql目前主要有以下幾種索引型別:FULLTEXT,HASH,BTREE,RTREE。
https://www.cnblogs.com/yuan-shuai/p/3225417.html
2、內聯接、外聯接含義是什麼?
內聯求交集
左外連結
右外連線
交叉連線求笛卡爾積
3、delete與drop