三年java面試題

前言: 樓主畢業三年,從大學時期就開始一直從事java web方面的開發。我在去年的今天有一篇帖子:兩年java面試經驗。經歷了一年的上班,成長了不少。今年由於某些緣由辭職了。從2月底辭職,到3月初,大概花了半個月的時間,面試了不少家公司,其中包括:阿里、京東、去哪兒、美團、攜程等互聯網公司,在此分享一下面試的經驗,整理一下三年的java web的開發面試經驗,但願能給廣大的網友朋友一些參考,你們共同進步:java

1:手寫一個單例模式(雙重檢查鎖機制)mysql

2:volatile是如何實現變量可見的?用到了哪些指令?工做內存和主內存解決了什麼問題?以及他們之間的交互過程web

3:jvm如何調優?寫幾個參數出來?嘗試設計一個本身的JVM,你會如何設計?面試

4:dubbo的group怎麼用?超時時間設置的做用域有哪些?優先級是什麼?redis

5:ThreadLocal底層如何實現?map中的key是什麼?vlaue是什麼?須要解決什麼問題?哪一個方法能夠防止內存泄露算法

6:講一下currentHashMap的get方法過程,如何鏈表轉紅黑樹?spring

7:有一個表t1,列爲ABC,索引爲AC,如今select xx from table where c=xx a =xx有沒有用到索引?sql

8:cas是什麼?給你筆畫一下具體的實現過程?cas何時結束?數據庫

9:java的鎖存儲在哪?佔幾個比特位?鎖是如何升級的?設計模式

10:redis的緩存淘汰策略有哪些?LRU和LFU區別,手寫一個LRU

11:寫出線程池的核心參數,並解釋,而後說明線程池是有哪些放棄策略?

12:http屬於什麼層協議?與https的區別是什麼?Tcp協議屬於那一層?OSI七層網絡模型有哪些?三次握手和四次揮手的過程?爲何握手要三次,揮手要四次?

13:線上cpu佔用率高怎麼辦?如何排查這個問題,用哪些命令

14:spring使用了哪些設計模式?BeanFactory和Factory的區別是什麼?

15:策略模式的使用場景?說一下它的優勢和缺點?

16:給你一個秒殺場景,如何應對短期的高峯請求問題?數據庫如何防止併發問題?秒殺如何實現不一樣的客戶端的時間一致性?

17:redis的基本數據類型有哪些?hash的使用場景?如何經過redis實現一個阻塞隊列?

18:畫出dubbo的調用關係圖?並舉例說明調用鏈

19:cas是什麼?解釋一下cas的原理。並用筆畫出來,aba問題怎麼解決?

20:大家的線程池是如何配比的?默認的線程數是多少?寫出線程池的幾個參數,並結合大家的項目解釋一下是如何調優的?

21:sring的事務用過嗎?簡述一下如何使用?當方法A使用了事務,方法B也使用了事務,他們的事務策略都是:若是沒有新的事務就開啓一個事務,問調用過程當中事務是如何傳播的?

22:給你一串連續的數字,1到10000,隨機除去兩個數,怎樣快速找到這兩個數?

23:tomcat的IO框架經歷了怎樣的變化?談談你對NIO流的理解?

24:redis的緩存策略有哪些?手動寫一下LRU的實現方法,並介紹一下LFU

25:redis的集羣是如何找到具體的key的?大家的集羣採用哪一種持久化策略?爲何?集羣搭建模式是什麼?

26:一串有負數和正數的數字,用算法實現連續的數字加起來的和最大的一串數字?

27:hashmap爲何是線程不安全的?線程安全的有哪些集合?講一下集合框架,包括map和list

28:秒殺場景下如何實現分佈式鎖?redis搭建的集羣會存在併發問題嗎?怎麼解決?

29:目前jdk用的垃圾回收器是什麼?講一講垃圾回收的內存劃分?引用鏈可達是從哪裏開始回收的?擴展:職責鏈模式

30:java有哪些加載器?Java的類加載機制是什麼?雙親委派機制是什麼?有什麼好處?我若是想自定義一個名爲Object的類,如何加載它?

31:你知道哪些設計模式?在項目中用到了哪些設計模式?講一講具體的應用場景和實現方式

32:redis集羣是把數據存儲在全部節點嗎?若是是存儲一個節點?它怎麼知道存儲到哪一個節點?當master節點掛了,緩存是否是就刪除了?增長一個節點或者刪除一個節點,集羣會怎麼處理?

33:方法前若是不聲明private、public,那麼是什麼?它的級別是什麼?

34:有沒有線上調優JVM的經驗?如何打印gc細節?

35:把你知道的GC算法都說一下,虛擬機經歷了怎樣的變化才發展到今天?

36:你作了什麼項目?有哪些功能?有什麼優點?解決了什麼問題?你認爲還有那些優化的點?

37:什麼是可重入鎖?假如我一個線程申請了可重入鎖,那麼子線程能夠再次用到可重入鎖嗎?

3八、jvm的內存結構是什麼樣的?請畫出來而且是哪些是線程共享的?哪些是線程私有的?

3九、雙向升序鏈表的插入和刪除(筆試)

40、二維數組的遍歷和賦值(筆試)

4二、算法:一個公司找獵頭拿簡歷 1000份,每一個獵頭須要的佣金同樣,但每一個獵頭擁有的簡歷數不相同(可能重複) ,問公司如何能僱傭最少的獵頭找到更多的簡歷

4二、 接口限流策略有哪些

4三、微服務雪崩後怎麼處理的?

4四、多線程環境,線程如何同步?

4五、用多線程統計1到1000000之間有多少個素數,並輸出素數(假設cpu有四核)(機試)

4六、用java實現各訂單生成器,須要考慮可讀、併發、不可重複(機試)

4七、歸併排序(機試)

4八、rabbitmq消息重複和丟失如何處理?

4九、一個部分有序的數組,如何找到一個指定的數字?要求時間複雜度不能超過log(n)

50: hystrix如何實現服務降級、治理、熔斷,講一講微服務中服務熔斷的過程?大家都是怎麼處理的?

 51:mysql的limit查詢如何進行優化?索引遵循什麼原則?

52:ElasticSearch瞭解嗎?ElasticsSearch如何計算評分?評分公式寫出來,有哪些查詢命令?

53:微服務的事務大家用什麼解決?事務的傳播機制,方法A調用方法B,方法A有事務,問調用方法B還會有事務嗎?

總結: 看一下兩年的面試和三年的面試,有一個很明顯的變化是:目前市場對三年的要求不只重視深度,而且重視廣度。大公司對於的算法的重視程度基本是首位的。如今的面試都不只僅讓你回答,更是讓你用筆寫出來,給面試官解釋清楚問題。因此若是是很模糊的話,就基本沒戲了。也包括一些機試題,三年的技術總結更加劇視於高併發的處理,包括不限於消息隊列、鎖、redis、mysql、jvm、事務、微服務的考察都是互聯網公司必面試的,因此不只要臨時抱好佛腳,更要重視平時在工做中的積累。2019年是個行情不好的年份,不少人出去找工做好幾個月最終都無功而返。但我不唱衰行業,任什麼時候候都是優勝略汰制,就業環境差了,可是做爲一名開發,技術纔是考量你的第一因素(固然個人意思不是惟技術論,情商和素質、與同事相處也同等重要),路漫漫其修遠兮,你們共勉加油吧。

再次送上福利:加java技術羣:618626589 ,羣資料裏有,隨時可下載(羣內無任何廣告和推銷培訓,博主是自學過來的,推薦自學的朋友一塊兒交流技術)ps:爲何我要建本身的羣:博主也加了不少羣,大部分都是在閒扯,鬥圖,無聊的話題,我選擇本身建立一個純技術交流羣,旨在建立一個乾淨的交流環境,歡迎各位高手或者新手加入!

相關文章
相關標籤/搜索