高頻面試題---持續更新

  1. HashMap爲何是線程不安全的?哪一個方法形成的?如何把它變爲線程安全的?
    1 HashMap在put的時候,插入的元素超過了容量(由負載因子決定)的範圍就會觸發擴容操做,就是rehash,這個會從新將原數組的內容從新hash到新的擴容數組中,在多線程的環境下,存在同時其餘的元素也在進行put操做,若是hash值相同,可能出現同時在同一數組下用鏈表表示,形成閉環,致使在get時出現死循環,因此hashMap是線程不安全的。
    2 經過Collections.synchronizedMap()來封裝HashMap的方法
    查看答案
  2. 列舉線程池的基本參數有哪些?說說線程池的工做流程
  3. spring框架的IOC基本實現原理,BeanFactory和FactoryBean有什麼區別?
  4. 下面是一道阿里巴巴的題目,請問代碼輸出結果是什麼?
  5. 關於list<?>,list<T>,list<Object>,list<? extend Object>以及list<? super T>的區別是什麼?
  6. 有一個表t1,列爲abc,現創建索引爲ac,如今select xx from table where c=xx and a=xx有沒有用到索引?
  7. 手寫一個單例模式,並分析過程。(懶漢式、餓漢式,雙重檢測鎖)
  8. foreach與正常for循環效率對比哪一個高?各自的適應場景是什麼?
  9. 一張表,裏面有ID自增主鍵,當insert了5條記錄以後,刪除了第3,4,5條記錄後,再把Mysql重啓,再insert一條記錄,這條記錄的ID是6仍是3?
  10. @Transactional在哪些狀況下會致使事務失效?列舉出來~
  11. 算法題: 給你一串連續的數字,1到10000,隨機除去兩個數,怎樣快速找到這兩個數?它的時間複雜度是多少?
  12. mybatis的xxMapper,只有接口,沒有實現類,它是怎麼實現具體的查詢操做的?原理是什麼?
  13. mysql的查詢,or和in哪一個效率更高?爲何?
  14. Java併發編程包中的CountDownLatch類在多線程中有什麼做用?
  15. http和https協議的區別是什麼?兩種協議分別適合用在哪裏?
  16. jvm如何判斷一個對象是否能夠被回收?垃圾回收算法都有哪些?
  17. ThreadLocal如何解決線程不安全的問題,內部原理是怎樣的?它的使用場景有哪些?
  18. 如下代碼執行後,會輸出什麼結果?
  19. 請畫出微服務框架dubbo消費者調用生產者的順序圖,並說出它是如何工做的
  20. 如圖,多線程狀況判斷,應該選擇哪一個選項?
  21. 對於mysql來講,Hash索引的時間複雜度是O(1),而B+樹的時間複雜度是log(2N),爲何mysql不選擇用Hash做爲底層結構?
  22. 寫出你遇到的Exception,並解釋他們會在哪些狀況下出現?
  23. 解釋一下同步和異步,阻塞和非阻塞是什麼?並舉例說明
  24. 如下代碼輸出什麼?java是值傳遞仍是引用傳遞,二者區別是什麼?
  25. 隊列適用於哪些開發場景,何時你會考慮使用隊列?常見的隊列,你會如何選擇前端

  26. Spring裏用到了哪些常見的設計模式?請詳述使用場景。java

  27. java的引用強度都有哪些類型?在GC過程當中都是如何表現的?
  28. 詳解TCP三次握手,四次揮手的過程?並解釋爲何握手須要三次,揮手卻須要四次?
  29. 爲何 Java 中的 String 類是不可變的?使用final有什麼好處?
  30. java中i++和++i知足原子性嗎,爲何?若是不是,怎麼保持其原子性
  31. 同步方法和同步代碼塊的區別是什麼?
  32. String對象的intern()方法做用是什麼?實現原理是什麼?
  33. linux下如今cpu佔用率太高,如何排查是哪一個或者哪些線程引發的?
  34. 事務的隔離級別有哪些,分別會引發哪一種異常讀取?
  35. Http狀態碼有哪些,分別表示什麼含義?
  36. mysql的like語法和Locate函數哪一個效率更高?爲何?
  37. redis是單線程的,使用它須要加鎖嗎?爲何它依然那麼快?
  38. 後端如何防止前端的重複請求,如何保證請求的冪等?
  39. 使用隨機算法產生一個數,要求將1-1000W之間這些數所有生成出來。(考察高效率,解決產生衝突的問題)
  40. spring中如何解決循環依賴問題?
  41. CAS的原理是什麼?適用場景有哪些?有什麼優勢和缺點?
  42. 說一說Nio爲何要比IO流快,它的底層原理是什麼?
  43. Stringbuffer和StringBuilder和String.format()的區別是什麼?都適合用在什麼樣的場景下
  44. Java中Linkedlist也實現了List接口,也存在一個get( int index)方法獲取角標處元素。爲何ArrayList的get(n)時間複雜度爲O(1),而Linkedlist的get(n)時間複雜度爲O(n)?增刪呢?能夠從數據結構或Java源碼實現兩方面回答。
  45. 併發和並行分別指什麼?對於單核CPU,有必要開多線程嗎?解釋下緣由
  46. 討論redis與memcached的區別?
  47. 什麼是線程局部變量?它存儲在哪裏?是線程安全的嗎?
  48. Mybatis在拼接sql的時候,#和$符號的區別是什麼?
  49. SimpleDateFormat是線程安全的嗎?爲何?
  50. 說說你認識的軟件設計模型層級劃分是怎樣的?controller、service、dao、job、接口調用、微服務等等
  51. synchronized的底層原理是什麼?
  52. 在分佈式系統中,如何保證生成的id惟一?
  53. rpc和http區別是什麼?哪一個效率更高?
  54. mysql有如下數據(假設爲student表的score字段):1.1,1.8,5.3,2.2,1.1,1.8,6.7,3.9。要求用sql排序,數據同樣,排名同樣~
  55. 一個TCP鏈接能夠發多少Http請求?
  56. 爲何HashMap會在併發下出現環形鏈表?
  57. 理論上講,兩臺主機之間同時能有多少條 tcp連接?
  58. java.sql.Date和java.util.Date的聯繫和區別是什麼?
  59. 快速失敗(fail-fast)和安全失敗(fail-safe)的原理和區別分別是什麼?
  60. servlet是線程安全的嗎?解釋一下爲何?
  61. 消息隊列如何保證發送的消息不會丟失(以kafka或者rabbitmq爲例說明)
  62. 高併發,執行耗時短的任務,還有低併發,執行耗時長的任務,各自選取什麼樣的線程池比較合理?爲何?若是業務場景是高併發,且任務耗時長時,有什麼解決思路?
  63. forward 和redirect的區別是什麼?各自適用於什麼狀況下?
  64. redis的內存回收策略有哪些?分別用於什麼場景?
  65. 說一下concurrentHashMap的put方法的操做原理?
  66. 解釋一下redis集羣中是如何分配key的?
  67. 設計實現一個掃碼登陸功能
  68. sql語句的關鍵詞執行的順序是什麼?
  69. 若是是傳兩個參數,int 和 string 類型的,mybatis是如何接受的?
  70. 什麼是接口的冪等性,如何保證接口的冪等?
  71. 都知道反射的性能不好,那麼反射的意義在哪裏?哪些場景最適合用反射?
  72. 如何提升mysql的吞吐量?實現每秒超過50000+的寫入?
  73. 如何將一個很的長url,轉化爲短url,你能想到的方法有哪些
  74. 如何在20億個整數中判斷一個任意指定的整數是否存在?
  75. bitmap的原理是什麼?使用場景是什麼
  76. mysq中字符編碼集UTF8和UTF8mb4的區別是什麼?建議用哪一個?緣由是什麼?
  77. 分別寫一個oracle和mysql的分頁sql語句,並分析其過程~
  78. 說說你知道的spring的註解有哪些,做用都是什麼?
  79. 如何保證緩存和數據庫的數據一致性?
  80. 介紹一下java的雙親委派模型以及雙親委派被破壞的3種狀況?
  81. 兩張一樣的表,分別是innodb和myisam引擎,它們的查詢方式有什麼不一樣,底層索引存儲有什麼不一樣?
  82. 聚簇索引和非聚簇索引的區別是什麼?
  83. 先後端分離採用的原理是什麼?怎樣實現先後端分離?
  84. 解釋一下jdk1.8中concurrentHashmap類的put和get方法過程
  85. jvm的內存模型是什麼?並解釋一下jdk1.7和1.8的變化有哪些
  86. 談一下jvm的垃圾回收機制,算法演變過程?以及如今jvm採用的是哪一種回收算法?
  87. 說一下垃圾回收器都有哪些,有什麼不一樣?目前jdk1.8採用哪一種?爲何?
  88. 假如我有個對外開放的接口,這個接口對於任一ip只容許調用一次,第二次調用直接拒絕?如何作到?
  89. 常見的分流算法有哪些?分別都是什麼原理
  90. volatile關鍵字的做用是什麼?
  91. 有一張訂單表,訂單號是雪花id,純18位的數字。表內有1000w數據,如今要進行分庫分表,拆分紅20個庫,100個表,應該如何劃分?每一個表存放多少數據?
  92. 線程工做內存和主內存之間同步交互的指令有哪些?
  93. 談談你對觀察者模式的認識?
  94. jdk1.9相比於1.8有哪些變更和新特性?
  95. HashMap的indexFor方法源碼以下:static int indexFor(int h, int length) { 
    return h & (length-1); 
    } 
    這裏爲何要採起位運算?
  96. @Autowired和@resource的區別是什麼?推薦使用哪一個?
  97. mysql數據索引結構爲何不採用二叉樹和紅黑樹?
  98. 編寫代碼,實現生產者-消費者模型功能,內容自由發揮,只須要表達思想
  99. 設計一個微信搶紅包算法,根據你平時的搶紅包體驗,注意幾點: 一、最小分配金額爲一分錢 二、每一個人不管前後順序搶到的紅包金額在機率上是大體均勻的 
    三、適應搶紅包的喜悅氣氛,現實中不會出現紅包金額分配太極端的狀況,好比10我的搶100元,第一個紅包就被搶了99元
  100. 介紹一下快速排序,有沒有什麼排序算法時間複雜度可以小於nlogn的?
  101. volatile是絕對線程安全的嗎?爲何
  102. 解釋一下cap理論,Zookeeper符合哪些?Eureka符合哪些?
  103. 設計一個秒殺架構,會遇到哪些須要解決的問題?
  104. concurrentHashMap爲何要使用紅黑樹?好處是什麼?
  105. 線程都有哪些狀態?生命週期是怎樣的?
  106. websocket與http請求的不一樣是什麼?二者適用場景有什麼不一樣?
  107. select count(*)from xx,在innodb和myisam中查詢哪一個更快?爲何?
  108. fullgc和minorgc的區別是什麼?fullgc的頻率大概多久一次比較好?
  109. TreeSet和HashSet的區別是什麼?
  110. 說一說你知道的linux命令有哪些?
  111. Tcp和Udp的區別有哪些?Udp適用於那些場景
  112. 回答代碼中的問題:
  113.  線程爲何不是以run方法運行,而是start方法?mysql

  114. concurrentHashMap的size()方法原理是什麼?1.7和1.8分別說明。
  115. 什麼是緩存僞共享?如何解決僞共享問題?
  116. 如何判斷鏈表中是否有環?
  117. 用戶從瀏覽器輸入一個url開始到看到內容,中間會經歷什麼樣的過程?
  118. mysql的drop、delete、truncate的區別是什麼?
  119. 來自抖音後端的一個面試題:什麼是用戶態,什麼是內核態?
  120. 爲何 wait,notify 和 notifyAll 方法是在 Object 類中定義的而不是在 Thread 類中定義?
  121. 數據庫三大範式是什麼,具體是什麼含義?
  122. 樂觀鎖和悲觀鎖是什麼?哪一個效率更高?
  123. ReadWriteLock讀寫鎖相比較ReentrantLock有什麼不一樣?它更適合用在什麼樣的場景中?
  124. QQ或者微信的消息撤回怎麼實現?
  125. static修飾的字段是能夠被序列化的嗎?爲何?
  126. jdk的阻塞隊列有哪些?分別有什麼不一樣?
  127. 用阻塞隊列實現生產者、消費者模式。
  128. java有多少種建立對象的方式?列舉出來
  129. mysql中group by name的時候,若是數據庫存在不少name爲null的值,會怎麼樣?若是要避免這樣的狀況,怎麼處理?
  130. BIO、NIO和AIO的區別是什麼?簡單說明一下BIO
  131. ThreadLocal的使用場景有哪些?
  132. 你所知道的負載均衡策略都有哪些?各自適合的場景是什麼?
  133. 編碼實現三個線程依次循環打印XYZ,一共打印10次
  134. redis有哪些數據類型?使用場景都是什麼?
  135. mysql的主鍵id是自增的好仍是uuid好?爲何
  136. 給定一個單鏈表的頭節點 head,實現一個調整單鏈表的函數,使得每K個節點之間爲一組進行逆序,而且從鏈表的尾部開始組起,頭部剩餘節點數量不夠一組的不須要逆序。(不能使用隊列或者棧做爲輔助)例如:鏈表:1->2->3->4->5->6->7->8->null, K = 3。那麼 6->7->8,3->4->5,1->2各爲一組。調整後:1->2->5->4->3->8->7->6->null。其中 1,2不調整,由於不夠一組。
  137. 要求用zookeeper實現分佈式鎖,說出原理便可。
  138. 簡述一下epoll的工做原理。
  139. http請求中get和post請求的區別是什麼?
  140. 爲何要重寫equals和hashcode方法?
  141. 用redis如何實現分佈式鎖?
  142. spring的aop的原理是什麼?使用場景有哪些?
  143. select * from table limit 999999,5(主鍵爲id)查詢是很慢的,如何優化這個sql?
  144. 用linkedHashMap實現一個lru緩存。
  145. 動態代理爲何須要傳入類加載器?爲何只能代理接口?
  146. 如何防止緩存擊穿和雪崩?
  147. BeanA依賴B,B依賴C,C依賴於A,spring在bean初始化的時候,如何解決這種循環依賴的問題?
  148. 簡述AQS的基本原理
  149. zookeeper的zab協議是什麼,具體是如何工做的?
  150. count(1)中的1是什麼含義?count(*)和count(1)和count(列名)哪一個效率高?
  151. mysql是如何執行一條sql的,流程是怎樣的?
  152. 線程池中當某個線程執行過程當中異常了,線程池會怎麼樣?如何處理?
  153. 簡述觀察者模式以及適用場景~
  154. 如何保證隊列消息不被重複消費,或者說,如何保證消息消費的冪等性?
  155. 爲何索引符合最左匹配原則,而不是最右原則?(從B+底層結構分析)
  156. ArrayList爲何不是線程安全的?具體緣由是什麼?
  157. jdk1.8的jvm結構模型是什麼樣的?每一個區域的做用是什麼?
  158. 如何保證消息隊列的順序性?
    例子:假如binlog發送給消息隊列是增、改、刪,結果沒有控制好順序成了刪、增、改,這樣就是有問題的
  159. 分庫分表後部署上線有哪幾種方案?
  160. springmvc運行流程是什麼?
  161. jvm垃圾回收器都有哪些?各自的特色是什麼?
  162. Spring中@Async註解實現異步調用的實現原理?
  163. redis有哪些集羣模式?各自的優缺點是什麼?
    1 1.主從模式:可進行讀寫分離,可分擔同步的壓力,可用性不過高,master宕機須要手動配置從節點轉爲master
    2 2.cluter模式: 引入了主從模式,每一個節點存儲不一樣的內容
    3 3.哨兵模式:主從模式升級版,主節點掛掉會自動將從節點轉爲主節點,可用性更高
    參考答案
  164. 如何把htttp請求升級爲https?
    1 1:申請SSL證書
    2 2:讓本身的服務器支持SSL,nginx須要配置SSL模塊和https的跳轉
    3 3:開放443端口
    參考答案
相關文章
相關標籤/搜索