java基礎
- 八種基本數據類型的大小,以及他們的封裝類
- 引用數據類型
- Switch可否用string作參數
- equals與==的區別
- 自動裝箱,常量池
- Object有哪些公用方法
- Java的四種引用,強弱軟虛,用到的場景
- Hashcode的做用
- HashMap的hashcode的做用
- 爲何重載hashCode方法?
- ArrayList、LinkedList、Vector的區別
- String、StringBuffer與StringBuilder的區別
- Map、Set、List、Queue、Stack的特色與用法
- HashMap和HashTable的區別
- JDK7與JDK8中HashMap的實現
- HashMap和ConcurrentHashMap的區別,HashMap的底層源碼
- ConcurrentHashMap能徹底替代HashTable嗎
- 爲何HashMap是線程不安全的
- 如何線程安全的使用HashMap
- 多併發狀況下HashMap是否還會產生死循環
- TreeMap、HashMap、LindedHashMap的區別
- Collection包結構,與Collections的區別
- try?catch?finally,try裏有return,finally還執行麼
- Excption與Error包結構,OOM你遇到過哪些狀況,SOF你遇到過哪些狀況
- Java(OOP)面向對象的三個特徵與含義
- Override和Overload的含義去區別
- Interface與abstract類的區別
- Static?class?與non?static?class的區別
- java多態的實現原理
- foreach與正常for循環效率對比
- Java?IO與NIO
- java反射的做用於原理
- 泛型經常使用特色
- 解析XML的幾種方式的原理與特色:DOM、SAX
- Java1.7與1.8,1.9,10 新特性
- AOP是什麼
- OOP是什麼
- AOP與OOP的區別
- 什麼是多態
- 什麼是面向對象
- 類與對象的關係
- java中的包裝類都有哪些?
- 一個java類中包含那些內容?
- ++i與i++的區別
- Java中各類數據默認值
- Java最頂級的父類是哪一個?
- java中有沒有指針?
- 假設數組內有5個元素,若是對數組進行反序,該如何作?
- 構造方法能不能顯式調用?
- 內部類與靜態內部類的區別?
多線程
- 併發編程三要素?
- 實現可見性的方法有哪些?
- 多線程的價值?
- 建立線程的有哪些方式?
- 建立線程的三種方式的對比?
- 線程的狀態流轉圖
- Java線程具備五中基本狀態
- 什麼是線程池?有哪幾種建立方式?
- 四種線程池的建立:
- 線程池的優勢?
- 經常使用的併發工具類有哪些?
- CyclicBarrier和CountDownLatch的區別
- synchronized的做用?
- volatile關鍵字的做用
- 什麼是CAS
- CAS的問題
- 什麼是Future?
- 什麼是AQS
- AQS支持兩種同步方式:
- ReadWriteLock是什麼
- FutureTask是什麼
- synchronized和ReentrantLock的區別
- 什麼是樂觀鎖和悲觀鎖
- 線程B怎麼知道線程A修改了變量
- synchronized、volatile、CAS比較
- sleep方法和wait方法有什麼區別?
- ThreadLocal是什麼?有什麼用?
- 爲何wait()方法和notify()/notifyAll()方法要在同步塊中被調用
- 多線程同步有哪幾種方法?
- 線程的調度策略
- ConcurrentHashMap的併發度是什麼
- Linux環境下如何查找哪一個線程使用CPU最長
- Java死鎖以及如何避免?
- 死鎖的緣由
- 怎麼喚醒一個阻塞的線程
- 不可變對象對多線程有什麼幫助
- 什麼是多線程的上下文切換
- 若是你提交任務時,線程池隊列已滿,這時會發生什麼
- Java中用到的線程調度算法是什麼
- 什麼是線程調度器(Thread Scheduler)和時間分片(Time Slicing)?
- 什麼是自旋
- Java Concurrency API中的Lock接口(Lock interface)是什麼?對比同步它有什麼優點?
- 單例模式的線程安全性
- Semaphore有什麼做用
- Executors類是什麼?
- 線程類的構造方法、靜態塊是被哪一個線程調用的
- 同步方法和同步塊,哪一個是更好的選擇?
- Java線程數過多會形成什麼異常?
Mysql
- Mysql中有哪幾種鎖?
- Mysql中有哪些不一樣的表格?
- 簡述在MySQL數據庫中MyISAM和InnoDB的區別
- Mysql中InnoDB支持的四種事務隔離級別名稱,以及逐級之間的區別?
- CHAR和VARCHAR的區別?
- 主鍵和候選鍵有什麼區別?
- 你怎麼看到爲表格定義的全部索引?
- LIKE聲明中的%和_是什麼意思?
- 如何在Unix和Mysql時間戳之間進行轉換?
- 列對比運算符是什麼?
- BLOB和TEXT有什麼區別?
- mysql_fetch_array和mysql_fetch_object的區別是什麼?
- Mysql如何優化DISTINCT?
- 如何顯示前50行?
- 可使用多少列建立索引?
- 若是一個表有一列定義爲TIMESTAMP,將發生什麼?
- 列設置爲AUTO INCREMENT時,若是在表中達到最大值,會發生什麼狀況?
- 怎樣才能找出最後一次插入時分配了哪一個自動增量?
- NOW()和CURRENT_DATE()有什麼區別?
- 什麼是非標準字符串類型?
- 什麼是通用SQL函數?
- MYSQL支持事務嗎?
- mysql裏記錄貨幣用什麼字段類型好
- mysql有關權限的表都有哪幾個?
- 列的字符串類型能夠是什麼?
- MySQL數據庫做發佈系統的存儲,數據量增大的狀況,怎麼優化?
- 鎖的優化策略
- 索引的底層實現原理和優化
- 什麼狀況下設置了索引但沒法使用
- 實踐中如何優化MySQL
- 優化數據庫的方法
- 簡單描述mysql中,索引,主鍵,惟一索引,聯合索引的區別,對數據庫的性能有什麼影響(從讀寫兩方面)
- 數據庫中的事務是什麼?
- SQL注入漏洞產生的緣由?如何防止?
- 對於關係型數據庫而言,索引是至關重要的概念,請回答有關索引的幾個問題
- 解釋MySQL外鏈接、內鏈接與自鏈接的區別
- Myql中的事務回滾機制概述
- SQL語言包括哪幾部分?每部分都有哪些操做關鍵字?
- 完整性約束包括哪些?
- 什麼是鎖?
- 什麼是存儲過程?用什麼來調用?
- 如何通俗地理解三個範式?
- NULL是什麼意思
- 主鍵、外鍵和索引的區別?
- 你能夠用什麼來確保表格裏的字段只接受特定範圍裏的值?
- 說說對SQL語句優化有哪些方法?
Redis
- Redis支持哪幾種數據類型?
- Redis主要有哪些功能?
- Redis是單進程單線程的?
- Redis爲何是單線程的?
- 其它開源軟件採用的模型
- 使用Redis的優點?
- Redis單點吞吐量
- Redis相比memcached有哪些優點?
- Redis有哪幾種數據淘汰策略?
- Redis集羣方案應該怎麼作?都有哪些方案?
- Redis讀寫分離模型
- Redis數據分片模型
- Redis提供了哪幾種持久化方式?
- 如何選擇合適的持久化方式?
- Redis常見性能問題和解決方案?
- Redis支持的Java客戶端都有哪些?官方推薦用哪一個?
- Redis哈希槽的概念?
- Redis集羣最大節點個數是多少?
- Redis集羣的主從複製模型是怎樣的?
- Redis集羣會有寫操做丟失嗎?爲何?
- Redis集羣之間是如何複製的?
- Redis如何作內存優化?
- Redis回收進程如何工做的?
- Redis回收使用的是什麼算法?
- Redis有哪些適合的場景?
JVM
- gc`的概念,若是A和B對象循環引用,是否能夠被GC?
- jvm gc如何判斷對象是否須要回收,有哪幾種方式?
- Java中能不能主動觸發GC
- JVM的內存結構,堆和棧的區別
- JVM堆的分代
Java
中的內存溢出是什麼,和內存泄露有什麼關係
- Java的類加載機制,什麼是雙親委派
- ClassLoader的類加載方式
- jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點講講對象如何晉升到老年代,幾種主要的jvm參數等
- 你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms
- 當出現了內存溢出,你怎麼排錯
- JVM內存模型的相關知識瞭解多少
- 簡單說說你瞭解的類加載器
- JAVA的反射機制
- JVM調優的常見命令行工具備哪些?
- 介紹一下CMS,G1收集器
- Minor Gc和Full GC 有什麼不一樣呢?
- 垃圾收集有哪些算法,各自的特色?
- HotSpot爲何要分爲新生代和老年代?
- 簡單說說類加載過程,裏面執行了哪些操做?
- 描述一下 JVM 加載 Class 文件的原理機制?
- 什麼是類加載器?
- 類加載器有哪些?
- 什麼是tomcat類加載機制?
- 類加載器雙親委派模型機制?
- Java 內存分配?
- Java 堆的結構是什麼樣子的?
- 簡述各個版本內存區域的變化?
- 說說各個區域的做用?
- Java 中會存在內存泄漏嗎,簡述一下?
- Java 類加載過程?
- 什麼是GC? 爲何要有 GC?
- 簡述一下Java 垃圾回收機制?
- 如何判斷一個對象是否存活?
- 垃圾回收的優勢和原理,並考慮 2 種回收機制?基本原理是什麼?
- 深拷貝和淺拷貝?
- 什麼是分佈式垃圾回收(DGC)?它是如何工做的?
- 在 Java 中,對象何時能夠被垃圾回收?
- 簡述Minor GC 和 Major GC?
- Java 中垃圾收集的方法有哪些?
- 講講你理解的性能評價及測試指標?
- 經常使用的性能優化方式有哪些?
- 說說分佈式緩存和一致性哈希?
- 什麼是GC調優?
- 什麼是jvm?Java虛擬包含什麼?
分佈式:
- 什麼是CAP定理?
- 說說CAP理論和BASE理論?
- 什麼是最終一致性?最終一致性實現方式?
- 什麼是一致性Hash?
- 講講分佈式事務?
- 如何實現分佈式鎖?
- 如何實現分佈式 Session?
- 如何保證消息的一致性?
- 負載均衡的理解?
- 正向代理和反向代理?
- CDN實現原理?
- 怎麼提高系統的QPS和吞吐?
- Dubbo的底層實現原理和機制?
- 描述一個服務從發佈到被消費的詳細過程?
- 分佈式系統怎麼作服務治理?
- 消息中間件如何解決消息丟失問題?
- Dubbo的服務請求失敗怎麼處理?
- 對分佈式事務的理解?
- 如何實現負載均衡,有哪些算法能夠實現?
- Zookeeper的用途,選舉的原理是什麼?
- 講講數據的垂直拆分水平拆分?
- zookeeper原理和適用場景?
- zookeeper watch機制?
- redis/zk節點宕機如何處理?
- 分佈式集羣下如何作到惟一序列號?
- 用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎?
- MQ系統的數據如何保證不丟失?
- 列舉出能想到的數據庫分庫分表策略?
經常使用框架:
spring:
- 什麼是 Spring 框架?Spring 框架有哪些主要模塊?
- 使用 Spring 框架能帶來哪些好處?
- 什麼是控制反轉(IOC)?什麼是依賴注入?
- 請解釋下 Spring 框架中的 IoC?
- BeanFactory 和 ApplicationContext 有什麼區別?
- Spring 有幾種配置方式?
- 如何用基於 XML 配置的方式配置 Spring?
- 如何用基於 Java 配置的方式配置 Spring?
- 怎樣用註解的方式配置 Spring?
- 請解釋 Spring Bean 的生命週期?
- Spring Bean 的做用域之間有什麼區別?
- 什麼是 Spring inner beans?
- Spring 框架中的單例 Beans 是線程安全的麼?
- 請舉例說明如何在 Spring 中注入一個 Java Collection?
- 如何向 Spring Bean 中注入一個 Java.util.Properties?
- 請解釋 Spring Bean 的自動裝配?
- 請解釋自動裝配模式的區別?
- 如何開啓基於註解的自動裝配?
- 請舉例解釋@Required 註解?
- 請舉例解釋@Autowired 註解?
- 請舉例說明@Qualifier 註解?
- 構造方法注入和設值注入有什麼區別?
- Spring 框架中有哪些不一樣類型的事件?
- FileSystemResource 和 ClassPathResource 有何區別?
- Spring 框架中都用到了哪些設計模式
springboot:
- 什麼是 Spring Boot?
- Spring Boot 有哪些優勢?
- 什麼是 JavaConfig?
- 如何從新加載 Spring Boot 上的更改,而無需從新啓動服務器?
- Spring Boot 中的監視器是什麼?
- 如何在 Spring Boot 中禁用 Actuator 端點安全性?
- 如何在自定義端口上運行 Spring Boot 應用程序?
- 什麼是 YAML?
- 如何實現 Spring Boot 應用程序的安全性?
- 如何集成 Spring Boot 和 ActiveMQ?
- 如何使用 Spring Boot 實現分頁和排序?
- 什麼是 Swagger?你用 Spring Boot 實現了它嗎?
- 什麼是 Spring Profiles?
- 什麼是 Spring Batch?
- 什麼是 FreeMarker 模板?
- 如何使用 Spring Boot 實現異常處理?
- 您使用了哪些 starter maven 依賴項?
- 什麼是 CSRF 攻擊?
- 什麼是 WebSockets?
- 什麼是 Apache Kafka?
- 咱們如何監視全部 Spring Boot 微服務?
Mybatis:
- #{}和${}的區別是什麼?
- Mybatis是什麼
- Mybatis 中一級緩存與二級緩存的區別?
- 使用 MyBatis 的 mapper 接口調用時有哪些要求?
- MyBatis實現一對多有幾種方式,怎麼操做的?
- Mybatis 與Spring MVC的整合 ?
計算機網絡
1.http1.0和http1.1有什麼區別java
2.TCP三次握手和四次揮手的流程,爲何斷開鏈接要4次,若是握手只有兩次,會出現什麼mysql
3.TIME_WAIT和CLOSE_WAIT的區別linux
4.說說你知道的幾種HTTP響應碼redis
5.當你用瀏覽器打開一個連接的時候,計算機作了哪些工做步驟算法
6.Linux下IO模型有幾種,各自的含義是什麼spring
7.TCP/IP如何保證可靠性,數據包有哪些數據組成sql
8.架構設計與分佈式:數據庫
9.tomcat如何調優,各類參數的意義編程
10.常見的緩存策略有哪些,大家項目中用到了什麼緩存系統,如何設計的,Redis的使用要注意什麼,持久化方式,內存設置,集羣,淘汰策略等設計模式
11.如何防止緩存雪崩
12.用java本身實現一個LRU
13.分佈式集羣下如何作到惟一序列號
14.設計一個秒殺系統,30分鐘沒付款就自動關閉交易
15.如何作一個分佈式鎖
16.用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎
17.MQ系統的數據如何保證不丟失
18.分佈式事務的原理,如何使用分佈式事務
19.什麼是一致性hash
20.什麼是restful,講講你理解的restful
21.如何設計創建和保持100w的長鏈接?
22.解釋什麼是MESI協議(緩存一致性)
23.說說你知道的幾種HASH算法,簡單的也能夠
24.什麼是paxos算法
數據結構:
-
數組和鏈表的區別。
-
簡述快速排序過程
-
快速排序的改進
-
各種排序算法對比
-
用循環比遞歸效率高嗎?
-
KMP算法
-
二叉樹
-
什麼是數據結構
-
java數據結構有哪些?
設計模式:
- 請列舉出在 JDK 中幾個經常使用的設計模式?
- 什麼是設計模式?你是否在你的代碼裏面使用過任何設計模式?
- Java 中什麼叫單例設計模式?請用 Java 寫出線程安全的單例模式
- 在 Java 中,什麼叫觀察者設計模式(observer design pattern)?
- 使用工廠模式最主要的好處是什麼?在哪裏使用?
- 舉一個用 Java 實現的裝飾模式(decorator design pattern)?它是做用於對象層次仍是類
- 在 Java 中,何時用重載,何時用重寫?
- 舉例說明什麼狀況下會更傾向於使用抽象類而不是接口。
Linux:
- 簡述raid0 raid1 raid5 三種工做模式的工做原理及特色
- LVS、Nginx、HAproxy有什麼區別?工做中你怎麼選擇?
- Squid、Varinsh和Nginx有什麼區別,工做中你怎麼選擇?
- Tomcat和Resin有什麼區別,工做中你怎麼選擇?
- 如何看當前Linux系統有幾顆物理CPU和每顆CPU的核數?
- 查看系統負載有兩個經常使用的命令,是哪兩個?這三個數值表示什麼含義呢?
- linux系統裏,您知道buffer和cache如何區分嗎?
- 如何實時查看網卡流量爲多少?如何查看歷史網卡流量?
- 如何查看當前系統都有哪些進程?
- 如何查看系統都開啓了哪些端口?
- 如何查看網絡鏈接情況?
- 想修改ip,須要編輯哪一個配置文件,修改完配置文件後,如何重啓網卡,使配置生效?
- 如何查看當前主機的主機名,如何修改主機名?要想重啓後依舊生效,須要修改哪一個配 置文件呢?
- 設置DNS須要修改哪一個配置文件?
- 如何能夠把系統中不用的服務關掉?