一、前言
Redis 提供了5種數據類型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每種數據類型的特點對于redis的開發和運維非常重要。
備注: 按照分析順序,本節應該說道有序集合對象了,但是考慮到有序集合對象的底層實現中使用到了跳躍表結構,避免在分析有序集合時造成突兀,所以本節先來看看 redis 中跳躍表結構的具體實現。
分享第一份Java基礎-中級-高級面試集合
- Java基礎(對象+線程+字符+接口+變量+異常+方法)
- Java中級開發(底層+Spring相關+Redis+分布式+設計模式+MySQL+高并發+鎖+線程)
- Java高級“程序猿”(高并發+Redis緩存+分布式+消息隊列+高可用+微服務+分庫分表+讀寫分離)
- 高并發系列(經典面試題:如何設計一個高并發系統?)
- Redis緩存系列
- 分布式系列
- 消息隊列系列
- 高可用系列
- 微服務系列
- 分庫分表系列
- 讀寫分離系列
- …? …
Java高分面試指南-25分類227頁1000+題50w+字解析
題目太多,我就不一一列舉了,舉例部分大家最感興趣的
第一分類 JavaOOP面試題
第二分類 Java集合/泛型面試題
- 1、ArrayList和linkedList的區別
- 2、 HashMap和HashTable的區別
- 3、Collection包結構,與Collections的區別
- 4、泛型常用特點 (待補充)
- 5、說說List,Set,Map三者的區別
- 6、Array與ArrayList有什么不一樣?
- 7、Map有什么特點
- 8、集合類存放于 Java.util 包中, 主要有幾 種接口
- 9、什么是list接口
- 10、說說ArrayList(數組)
- 11、Vector( 數組實現、 線程同步)
- 12、說說LinkList(鏈表)
- 13、什么Set集合
- 14、HashSet( Hash 表)
- 15、什么是TreeSet(二叉樹)
- 16、說說LinkHashSet( HashSet+LinkedHashMap)
- 17、HashMap(數組+鏈表+紅黑樹)
- 18、說說ConcurrentHashMap
- 19、HashTable(線程安全)
- 20、TreeMap(可排序)
- 21、LinkHashMap(記錄插入順序)
- 22、泛型類
- 23、類型通配符?
- 24、類型擦除
第三分類 Java中的IO與NIO面試題
第四分類 Java反射面試題
第五分類 Java序列化面試題
第六分類 Java注解面試題
第七分類 多線程&并發面試題
- 1、Java中實現多線程有幾種方法
- 2、繼承 Thread 類
- 3、實現 Runnable 接口。
- 4、ExecutorService、 Callable、 Future 有返回值線程
- 5、基于線程池的方式
- 6、4 種線程池
- 7、如何停止一個正在運行的線程
- 8、notify()和notifyAll()有什么區別?
- 9、sleep()和wait() 有什么區別?
- 10、volatile 是什么?可以保證有序性嗎?
- 11、Thread 類中的start() 和 run() 方法有什么區別?
- 12、為什么wait, notify 和 notifyAll這些方法不在thread類里面?
- 13、為什么wait和notify方法要在同步塊中調用?
- 14、Java中interrupted 和 isInterruptedd方法的區別?
- 15、Java中synchronized 和 ReentrantLock 有什么不同?
- 16、有三個線程T1,T2,T3,如何保證順序執行?
- 17、SynchronizedMap和ConcurrentHashMap有什么區別?
- 18、什么是線程安全
- 19、Thread類中的yield方法有什么作用?
- 20、Java線程池中submit() 和 execute()方法有什么區別?
- 21、說一說自己對于 synchronized 關鍵字的了解
- 22、說說自己是怎么使用 synchronized 關鍵字,在項目中用到了嗎synchronized關鍵字最主要的三種使用方式
- 23、什么是線程安全?Vector是一個線程安全類嗎?
- 24、volatile關鍵字的作用?
- 25、簡述一下你對線程池的理解
- 26、線程生命周期(狀態)
- 27、新建狀態(NEW)
- 28、就緒狀態(RUNNABLE)
- 29、運行狀態(RUNNING)
- 30、阻塞狀態(BLOCKED)
- 31、線程死亡(DEAD)
- 32、終止線程 4 種方式
- 33、start 與 run 區別
- 34、JAVA 后臺線程
- 35、什么是樂觀鎖
- 36、什么是悲觀鎖
- 37、什么是自旋鎖
- 38、Synchronized 同步鎖
- 39、ReentrantLock
- 40、Condition 類和 Object 類鎖方法區別區別
- 41、tryLock 和 lock 和 lockInterruptibly 的區別
- 42、Semaphore 信號量
- 43、Semaphore 與 ReentrantLock 區別
- 44、可重入鎖(遞歸鎖)
- 45、公平鎖與非公平鎖
- 46、ReadWriteLock 讀寫鎖
- 47、共享鎖和獨占鎖
- 48、重量級鎖(Mutex Lock)
- 49、輕量級鎖
- 50、偏向鎖
- 51、分段鎖
- 52、鎖優化
- 53、線程基本方法
- 54、線程等待(wait)
- 55、線程睡眠(sleep)
- 56、線程讓步(yield)
- 57、線程中斷(interrupt)
- 58、Join 等待其他線程終止
- 59、為什么要用 join()方法?
- 60、線程喚醒(notify)
- 61、線程其他方法
- 62、進程
- 63、上下文
- 64、寄存器
- 65、程序計數器
- 66、PCB-“切換楨”
- 67、上下文切換的活動
- 68、引起線程上下文切換的原因
- 69、同步鎖
- 70、死鎖
- 71、線程池原理
- 72、線程復
- 73、線程池的組成
- 74、拒絕策略
- 75、Java 線程池工作過程
- 76、JAVA 阻塞隊列原理
- 77、Java 中的阻塞隊列
- 78、ArrayBlockingQueue(公平、非公平)
- 79、LinkedBlockingQueue(兩個獨立鎖提高并發)
- 80、PriorityBlockingQueue(compareTo 排序實現優先)
- 81、DelayQueue(緩存失效、定時任務 )
- 82、SynchronousQueue(不存儲數據、可用于傳遞數據)
- 83、LinkedTransferQueue
- 84、LinkedBlockingDeque
- 85、在 java 中守護線程和本地線程區別
- 86、線程與進程的區別?
- 87、什么是多線程中的上下文切換?
- 88、死鎖與活鎖的區別,死鎖與饑餓的區別?
- 89、Java 中用到的線程調度算法是什么?
- 90、什么是線程組,為什么在 Java 中不推薦使用?
- 91、為什么使用 Executor 框架?
- 92、在 Java 中 Executor 和 Executors 的區別?
- 93、如何在 Windows 和 Linux 上查找哪個線程使用的 CPU 時間最長?
- 94、什么是原子操作?在 Java Concurrency API 中有哪些原子類(atomic classes)?
- 95、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?對比同步它有什么優勢?
- 96、什么是 Executors 框架?
- 97、什么是阻塞隊列?阻塞隊列的實現原理是什么?如何使用阻塞隊列來實現生產者-消費者模型?
- 98、什么是 Callable 和 Future?
- 99、什么是 FutureTask?使用 ExecutorService 啟動任務。
- 100、什么是并發容器的實現?
- 101、多線程同步和互斥有幾種實現方法,都是什么?
- 102、什么是競爭條件?你怎樣發現和解決競爭?
- 103、為什么我們調用 start()方法時會執行 run()方法,為什么我們不能直接調用 run()方法?
- 104、Java中,你怎樣喚醒一個阻塞的線程?
- 105、在 Java 中 CycliBarriar 和 CountdownLatch 有什么區別?
- 106、什么是不可變對象,它對寫并發應用有什么幫助?
- 107、Java 中用到的線程調度算法是什么?
- 108、什么是線程組,為什么在 Java 中不推薦使用?
第八分類 面試之JVM
第九分類 Mysql面試題
- 1、數據庫存儲引擎
- 2、InnoDB(B+樹)
- 2、TokuDB( Fractal Tree-節點帶數據)
- 3、MyIASM
- 4、Memory
- 5、數據庫引擎有哪些
- 6、InnoDB與MyISAM的區別
- 7、索引
- 8、常見索引原則有
- 9、數據庫的三范式是什么
- 10、第一范式(1st NF - 列都是不可再分)
- 11、第二范式(2nd NF- 每個表只描述一件事情)
- 12、第三范式(3rd NF- 不存在對非主鍵列的傳遞依賴)
- 13、數據庫是事務
- 14、SQL優化
- 15、簡單說一說drop、delete與truncate的區別
- 16、什么是視圖
- 17、什么是內聯接、左外聯接、右外聯接?
- 18、并發事務帶來哪些問題?
- 19、事務隔離級別有哪些?MySQL的默認隔離級別是?
- 20、大表如何優化?
- 21、水平分區
- 22、分庫分表之后,id 主鍵如何處理
- 23、存儲過程(特定功能的 SQL 語句集)
- 24、存儲過程優化思路
- 25、觸發器(一段能自動執行的程序)
- 26、數據庫并發策略
- 27、MySQL 中有哪幾種鎖?
- 28、MySQL 中有哪些不同的表格?
- 29、簡述在 MySQL 數據庫中 MyISAM 和 InnoDB 的區別
- 30、MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
- 31、CHAR 和 VARCHAR 的區別?
- 32、主鍵和候選鍵有什么區別?
- 33、myisamchk 是用來做什么的?
- 34、MyISAM Static 和 MyISAM Dynamic 有什么區別?
- 35、如果一個表有一列定義為 TIMESTAMP,將發生什么?
- 36、你怎么看到為表格定義的所有索引?
- 37、LIKE 聲明中的%和_是什么意思?
- 38、列對比運算符是什么?
- 39、BLOB 和 TEXT 有什么區別?
- 40、MySQL_fetch_array 和 MySQL_fetch_object 的區別是什么?
- 41、MyISAM 表格將在哪里存儲,并且還提供其存儲格式?
- 42、MySQL 如何優化 DISTINCT?
- 43、如何顯示前 50 行?
- 44、可以使用多少列創建索引?
- 45、NOW()和 CURRENT_DATE()有什么區別?
- 46、什么是非標準字符串類型?
- 47、什么是通用 SQL 函數?
- 48、MySQL 支持事務嗎?
- 49、MySQL 里記錄貨幣用什么字段類型好
- 50、MySQL 有關權限的表都有哪幾個?
- 51、列的字符串類型可以是什么?
- 52、MySQL 數據庫作發布系統的存儲,一天五萬條以上的增量,預計運維三年,怎么優化?
- 53、鎖的優化策略
- 54、索引的底層實現原理和優化
- 55、什么情況下設置了索引但無法使用
- 56、實踐中如何優化 MySQL
- 57、優化數據庫的方法
- 58、簡單描述 MySQL 中,索引,主鍵,唯一索引,聯合索引的區別,對數據庫的性能有什么影響(從讀寫兩方面)
- 59、數據庫中的事務是什么?
- 60、SQL 注入漏洞產生的原因?如何防止?
- 61、為表中得字段選擇合適得數據類型
- 62、存儲時期
- 63、對于關系型數據庫而言,索引是相當重要的概念,請回答有關索引的幾個問題
- 64、解釋 MySQL 外連接、內連接與自連接的區別
- 65、Myql 中的事務回滾機制概述
- 66、SQL 語言包括哪幾部分?每部分都有哪些操作關鍵
- 67、完整性約束包括哪些?
- 68、什么是鎖?
- 69、什么叫視圖?游標是什么?
- 70、什么是存儲過程?用什么來調用?
- 71、如何通俗地理解三個范式?
- 72、什么是基本表?什么是視圖?
- 73、試述視圖的優點?
- 74、NULL 是什么意思
- 75、主鍵、外鍵和索引的區別?
- 76、你可以用什么來確保表格里的字段只接受特定范圍里的值?
- 77、說說對 SQL 語句優化有哪些方法?(選擇幾條)
- 78、什么是樂觀鎖
- 79、什么是悲觀鎖
- 80、什么是時間戳
- 81、什么是行級鎖
- 82、什么是表級鎖
- 83、什么是頁級鎖
第十分類 Redis面試題
- 1、什么是 Redis?
- 2、Redis 與其他 key-value 存儲有什么不同?
- 3、Redis 的數據類型?
- 4、使用 Redis 有哪些好處?
- 5、Redis 相比 Memcached 有哪些優勢?
- 6、Memcache 與 Redis 的區別都有哪些?
- 7、Redis 是單進程單線程的?
- 8、一個字符串類型的值能存儲最大容量是多少?
- 9、Redis持久化機制
- 10、緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級等問題
- 11、熱點數據和冷數據是什么
- 12、單線程的redis為什么這么快
- 13、redis的數據類型,以及每種數據類型的使用場景
- 14、redis的過期策略以及內存淘汰機制
- 15、Redis 常見性能問題和解決方案?
- 16、為什么Redis的操作是原子性的,怎么保證原子性的?
- 17、Redis事務
- 18、Redis 的持久化機制是什么?各自的優缺點?
- 19、Redis 常見性能問題和解決方案:
- 20、redis 過期鍵的刪除策略?
- 21、Redis 的回收策略(淘汰策略)?
- 22、為什么 edis 需要把所有數據放到內存中?
- 23、Redis 的同步機制了解么?
- 24、Pipeline 有什么好處,為什么要用 pipeline?
- 25、是否使用過 Redis 集群,集群的原理是什么?
- 26、Redis 集群方案什么情況下會導致整個集群不可用?
- 27、Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- 28、Jedis 與 Redisson 對比有什么優缺點?
- 29、Redis 如何設置密碼及驗證密碼?
- 30、說說 Redis 哈希槽的概念?
- 31、Redis 集群的主從復制模型是怎樣的?
- 32、Redis 集群會有寫操作丟失嗎?為什么?
- 33、Redis 集群之間是如何復制的?
- 34、Redis 集群最大節點個數是多少?
- 35、Redis 集群如何選擇數據庫?
- 36、怎么測試 Redis 的連通性?
- 37、怎么理解 Redis 事務?
- 38、Redis 事務相關的命令有哪幾個?
- 39、Redis key 的過期時間和永久有效分別怎么設置?
- 40、Redis 如何做內存優化?
- 41、Redis 回收進程如何工作的?
- 42、都有哪些辦法可以降低 Redis 的內存使用情況呢?
- 43、Redis 的內存用完了會發生什么?
- 44、一個 Redis 實例最多能存放多少的 keys?List、Set、Sorted Set 他們最多能存放多少元素
- 45、MySQL 里有 2000w 數據,redis 中只存 20w 的數據,如何保證 redis 中的數據都是熱點數據?
- 46、Redis 最適合的場景?
- 47、假如 Redis 里面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如果將它們全部找出來?
- 48、如果有大量的 key 需要設置同一時間過期,一般需要注意什么?
- 49、使用過 Redis 做異步隊列么,你是怎么用的?
- 50、使用過 Redis 分布式鎖么,它是怎么回事?
線程、數據庫、算法、JVM、分布式、微服務、框架、Spring相關知識
一線互聯網P7面試集錦+各種大廠面試集錦
資料領取方式:戳這里
學習筆記以及面試真題解析
48、如果有大量的 key 需要設置同一時間過期,一般需要注意什么?
49. 49、使用過 Redis 做異步隊列么,你是怎么用的?
50. 50、使用過 Redis 分布式鎖么,它是怎么回事?
線程、數據庫、算法、JVM、分布式、微服務、框架、Spring相關知識
[外鏈圖片轉存中…(img-FWRfPZog-1622454293372)]
一線互聯網P7面試集錦+各種大廠面試集錦
[外鏈圖片轉存中…(img-h9RezKQy-1622454293373)]
資料領取方式:戳這里