關於java基礎
- String,StringBuilder,StringBuffer區別是什么?底層數據結構是什么?分別是如何實現的?
- HashSet的底層實現是什么?它與HashMap有什么關系?
- Java 的並發包里面有那些知識點?
- HashCode與HashMap的關系?
- 哈希函數的理解?
- map在put()的做了哪些事?
- 如果發生hash碰撞,有什么方法可以解決?
- 各種類型的鎖?
- synchronize和lock?
- hashTable的數據結構?
- 線程安全的map即HashTable和CurrentHashMap,底層的線程安全是如何實現的?
- hashCode的原理?
- 什么情況下需要重寫類的hashCode()方法?什么時候需要重寫equals()方法?
- hashmap添加元素,如果通過hash值得到的位置如果有元素,哪一種情況會取代所在的元素?
- HashMap添加元素,如果是所得的桶數組的位置有值。該值則被添加到鏈表尾端,為什么會是尾端?
- ArrayList和hashmap底層結構,以及CurrentHashMap解決了什么問題;
- Hashmap的是否線程安全?為什么是安全或者不安全?
- HashMap、HashTable以及ConcurrentHashMap的區別;
- volatile關鍵字的理解;用在哪些場景?
- 線程的理解以及其實現方式;
- 線程池的參數有哪些?實現原理;
- 線程同步方法有哪些?
- 緩存的原理?為什么要用緩存?為什么會比數據庫查詢快?
- 反射機制的理解;
- Object中的方法;
- String的toString()方法的實現?底層原理?
- NIO與IO的異同;
- 垃圾回收機制的理解;
- java8的新特性有哪些?如何使用?
- static關鍵字的場景和意義;(拓展:final)
- 如何理解事務?
- 虛擬機的內存結構;
- 動態代理的兩種實現方式;
- 悲觀鎖和樂觀鎖的區別
- 如何解決跨域問題?
- xml文件解析方式有幾種
- synchronize的鎖的類型
- 秒殺系統的設計
- 分庫分表
- Spring底層是如何實現的;
- Tomcat容器啟動的時候,spring的啟動流程;
- SpringAop除了動態代理,還用了其余的什么原理?
- rpc框架
- 事務的隔離級別和傳播機制
- docker
- 高峰期如何進行分流
高並發
- 造成線程安全的主要因素有哪些:
- 互斥鎖是什么?java鎖如何分類?
- 關於鎖名詞的分類
- 線程的創建方式;
- 三種創建方式分別有什么區別?(最終可以追究到最底層)
- 線程池的核心參數是哪些?分別表示什么意義?
- 通過線程池創建線程的流程是什么?
- Lock接口;
- synchronize和volitile的區別?
- 設計一個高並發的網站通用的技術有哪些?
- CAS是什么?
- JUD是什么?
分布式
- 關於分布式的一些基本概念
- springboot與spring相比優勢是什么?
- springboot自動配置的原理是什么?
- 如果自己集成一個jar包到springboot中,該如何做?
- 如何解決分布式事務問題?
web
-
servlet的實現以及其中的方法;
-
token生成的原理;
常用的設計模式
關於前端
- 閉包的理解;
- js函數的理解;
- 如何優化前端?
關於框架
spring
-
springIOC的理解;
-
spring是如何通過xml配置或者注解配置生成實例對象的?
-
springIOC的java底層原理;
反射
-
springAOP的理解;
-
springAOP的底層的實現原理;
-
spring如何解析視圖;
-
spring的常用注解;
-
springmvc和Struts2的差異;
-
如何控制事務;
-
事物的隔離級別和傳播機制;
-
Spring BeanFactory與FactoryBean的區別;
-
springAOP的應用場景;
mybatis
-
mybatis的結構?
-
配置文件如何配置?
-
mybatis處理多個參數的幾種方式?
-
占位符有幾種?區別是什么?
-
一級緩存和二級緩存的區別?
-
Mybatis的類型轉換器?
-
mybatis接口沒有實現類,他是如何操作數據庫的?
hibernate
- mybatis 與hibernate的對比;優勢,劣勢,原理,如何選擇;
項目 | Mybatis | Hibernate |
---|---|---|
開發效率 | 較容易上手;需要手動管理sql | 較難上手;無需管理sql,專注業務 |
入門 | 簡單 | 較難 |
靈活性 | sql更加靈活 | 幾乎不用寫sql,封裝性較大 |
性能 | 相對較高 | 相對較低 |
日志系統 | 除了基本記錄功能外,功能薄弱很多 | 志系統非常健全,涉及廣泛,包括:sql記錄、關系異常、優化警告、緩存提示、臟數據警告等 |
優化 | 更容易 | 更難 |
自動性 | 半自動 | 全自動 |
緩存 | 有更好的二級緩存機制 | |
移植性 | 移植性低(綁定了sql) | 移植性高 |
適用場合 | 1.有復雜的查詢業務;2.無hibernate實踐經驗的 | 1.無復雜的查詢業務;2.能夠熟練應用hibernate的 |
SpringBoot
- springboot與springmvc最大的優勢在哪?
- 一個加了事務注解的“新增方法”,拋出異常,數據有沒有添加成功?
關於工具的使用
- git和svn的區別以及各自優勢
- Jenkins的搭建和配置;
- maven是如何管理jar包版本的;
關於數據庫
關系型數據庫
-
limit關鍵字從0到10與從100000到200000效率相差幾個數量級,為什么?
-
mysql的架構;
-
索引的原理;
-
索引的選取原則(通用):
-
為什么索引導致查詢效率高?操作數據效率低?
-
索引的底層結構是什么?是如何實現的?
-
哪些查詢會用到索引?哪些查詢用不到索引?
-
索引類型?
-
聚集索引和非聚集索引
-
聚集索引的優缺點
-
mysql索引的數據結構
-
數據庫的隔離級別分別是什么?
-
sql的優化方案;
-
left join 與 inner join的差別;
-
mysql的存儲引擎MyIsam和InnoDB的區別;
-
主鍵和唯一索引有啥區別?
-
唯一索引能不能為空?
非關系型數據庫
- 常用哪些非關系型數據庫?哪些場景會用到?
- redis如何進行持久化?
關於網絡協議
- UDP與TCP的異同;
- http的理解;
- webSocket編程;
- 什么是ajax?原生的ajax如何寫?
- 比較get請求和post請求的異同;
關於linux操作
- 常用的文件操作命令;
- 查看線程信息的命令;
- 查看內存的命令;
- 部署項目的命令;
- mac與Linux服務器文件傳輸命令;
關於算法
- 常用的排序算法有哪些,分別如何實現(原理)?
- java中有哪些排序方式?原理是什么?
- 兩個按降序排序的數組,用效率最高的算法組合成一個按降序排列的新數組;
- 回文字符串的個數;
- 一個若干字符串中括號的對數;
- 斐波那契的實現;
- 單向鏈表反轉?
- 台階問題?
- 輸入一個字符串,輸出一出現頻率最高的字符,如果出現頻率相同,則輸出第一個字符;
關於數據結構
-
常用的數據結構;
-
hashmap是什么數據結構?
-
堆、棧、隊列的特性是什么?
-
樹的應用場景是什么?
-
二叉樹與紅黑樹的理解;
關於所做項目
-
讀寫如何設置同步和異步;
-
如何處理排他處理?
思路:數據庫中存一個時間戳字段,每次加載頁面的時候將時間戳帶到頁面隱藏域。向后台發送請求的時候將該時間戳與數據庫中所存的時間戳對比,如果一致的話說明該數據沒有被他人更新,如果不一致說明數據被他人更新了。
-
如何判斷用戶是否重復操作;
可以有如下幾種方案:
1) 數據庫層面:添加唯一性約束,通過賬號、名稱等信息進行唯一性約束;
2) 頁面層面:可以對操作按鈕進行點擊限制;
3) 后端層面:提交時生成的token(一般是時間戳),存與session,提交到后端與之對比;
-
如何實現實時顯示大計算的結果?
-
如何防止重復支付或者重復退款?
-
項目中如防止重復生成訂單?
-
項目中遇到什么難題?是如何解決的?
-
下單時,如果在支付的時候,反饋給用戶的是失敗,然而調用第三方是成功,如何處理?
-
首先要縷清所有的流程,然后再拿出對應的數據表結構
關於分布式
-
分布式框架有哪些?
-
dubbo和spring cloud的比較;
-
Restful風格的接口的理解;
-
rpc框架有哪些?如何使用?
-
rpc和http的對比;
-
負載均衡的理解;
-
常用的mq的種類;(補充)
-
RabbitMQ的作用?
PS(SongLea)
- 一個字符串里有多個左右括號 如何判斷這些括號都是一一對應的
- 手寫一個單例模式的代碼
- 手寫實現一個blockingqueue的實現
- 線程池的數量怎么確定,設多少?
- 手寫怎樣實現一個LRU的緩存
- lru:最少未使用算法
- redis與rabbitmQ部分知識
- 手寫代碼去實現一個讀寫鎖
- 代理模式有什么好處,怎么實現的
- Linux常用命令,如查看磁盤空間,內存大小,CPU利用率,機器信息,Jvm上的內存占用信息。。。
- btree樹,線程池,數據連接池,秒殺系統設計,回文字符串個數,線程如何變成運行態,事務的兩種方式,垃圾回收機制,索引,hashmap,concurrenthashmap的結構
- 緩存穿透如何解決
- object有哪些方法,hashmap線程安全不
- hash一致性,JUC包與sync關鍵字鎖的區別與理解
- aba的問題;
- 什么是樂觀鎖?什么是重入鎖?
- CAS操作;
- 常用的集合框架的底層實現;
- 樂觀鎖和重入鎖;