回顧一下本身這段時間的經歷,去年十二月份的時候,公司通知了裁人,我匆匆忙忙地出去面了幾家,但最終都沒有拿到offer,我感受今年的寒冬有點冷。後續的面試過程我作了一些準備,基本都能走到hr面,後面我也順利地拿到了offer,我給你們分享下個人求職體會,但願能給你們一些參考。java
金三銀四背後,一個JAVA程序員的面試心得mysql
下面說一下本身面試過程遇到的一些具體題目和麪試心得。linux
阿里面試題程序員
金三銀四背後,一個JAVA程序員的面試心得web
多個線程同時讀寫,讀線程的數量遠遠大於寫線程,你認爲應該如何解決併發的問題?你會選擇加什麼樣的鎖?面試
JAVA的AQS是否瞭解,它是幹嗎的?redis
除了synchronized關鍵字以外,你是怎麼來保障線程安全的?算法
Tomcat自己的參數你通常會怎麼調整?sql
你有沒有用過Spring的AOP? 是用來幹嗎的? 大概會怎麼使用?數據庫
若是一個接口有2個不一樣的實現, 那麼怎麼來Autowire一個指定的實現?
若是想在某個Bean生成並裝配完畢後執行本身的邏輯,能夠什麼方式實現?
SpringBoot沒有放到web容器裏爲何能跑HTTP服務?
SpringBoot中若是你想使用自定義的配置文件而不只僅是application.properties,應該怎麼弄?
SpringMVC若是但願把輸出的Object(例如XXResult或者XXResponse)這種包裝爲JSON輸出, 應該怎麼處理?
若是有不少數據插入MYSQL 你會選擇什麼方式?
若是查詢很慢,你會想到的第一個方式是什麼?索引是幹嗎的?
查詢死掉了,想要找出執行的查詢進程用什麼命令?找出來以後通常你會幹嗎?
讀寫分離是怎麼作的?你認爲中間件會怎麼來操做?這樣操做跟事務有什麼關係?
分庫分表有沒有作過?線上的遷移過程是怎麼樣的?如何肯定數據是正確的?
你知道哪些或者大家線上使用什麼GC策略? 它有什麼優點,適用於什麼場景?
JAVA類加載器包括幾種?它們之間的父子關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處?
如何自定義一個類加載器?你使用過哪些或者你在什麼場景下須要一個自定義的類加載器嗎?
堆內存設置的參數是什麼?
HashMap和Hashtable的區別。
實現一個保證迭代順序的HashMap。
說一說排序算法,穩定性,複雜度。
說一說GC。
JVM如何加載一個類的過程,雙親委派模型中有哪些方法?
TCP如何保證可靠傳輸?三次握手過程?
京東面試題
金三銀四背後,一個JAVA程序員的面試心得
java經常使用的數據結構有哪些?哪些是線程安全的?是怎麼保證線程安全的?
Redis中的Lua有沒有使用過? 能夠用來作什麼? 爲何能夠這麼用?
線程池內部工做原理能夠說一下麼?
死鎖是什麼意思,造成條件是什麼?出現死鎖是能夠經過什麼方式去排查。
在交易過程當中如何放在用戶在支付時的重複支付(交叉支付),請寫出你瞭解的方案或使用的過的方案。
數據庫索引有哪幾種,他們之間的區別。
程序開發時經過開發工具DeBug調試時,控制檯顯示的內容都包含什麼?哪些內容能夠幫助你發現問題和解決問題。
RPC通訊過程當中,假設A系統提供了一個方法入參是一個JavaBean,出參也是一個JavaBean。另外兩個系統B系統、C系統調用接口,調用方B想讓提供方A增長一個返回參數,假設服務提供方A增長了返回參數,請問C系統調用方須要作什麼處理?
瞭解哪些設計模式,用僞代碼實現一個你熟悉的設計模式。
講一下怎麼使用分佈式鎖。
說說HashMap的原理, 以及HashMap如何擴充bucket的大小。
Redis的Pipeline是用來幹什麼的?
Mysql索引的分類(Btree, hash),各自使用什麼狀況 。
說說Myisam, Innodb區別。
知道哪些負載均衡算法。
說一下Btree的查找原理。
簡述三次握手,若是c端發起握手請求,s端沒法馬上創建鏈接應該回應什麼?
去哪兒網面試題
金三銀四背後,一個JAVA程序員的面試心得
自我介紹,項目介紹。
mysql數據庫調優。
sql優化。
like能用索引嗎?
java對象四種引用。
GC原理。
jvm內存結構。
說一下你學過jvm 在書寫代碼上對你有什麼幫助和提升。
千萬數據量的查詢你會怎麼作?
HashMap在jdk1.7和1.8的區別,爲何引入這個概念?hash碰撞怎麼解決,爲何1.8要比1.7更好,好在哪?
關於你的項目,若是併發很大,你會怎麼改造。
方法區裏什麼樣的對象有可能被回收。
線上cpu飆升100%你怎麼處理。
頻繁FullGC怎麼處理。
線程池建立有幾種,爲何建立定長的線程池個數最好是5,10,15這樣的數字。
linux命令。
伊甸區和倖存區可動態變化嗎?
redis和memcached區別。
說幾個jdk命令,jmap是什麼意思。
若是併發很大,你對數據的正確性怎麼保證。
餓了麼面試題
金三銀四背後,一個JAVA程序員的面試心得
http和https的區別,https原理,http2.0與1.0的區別。
Java的垃圾回收機制,Java文件加載機制,tomcat類加載機制,鎖機制,jvm原理及線上調優,jvm內存模型。
多線程,有哪些能夠保持進程同步的方法,建立線程的幾種方法,對i++多線程訪問你會怎麼作。
Java的設計模式,單例有什麼模式,懶漢爲何加volotile,volotile的內存屏障,如何避免死鎖。
考慮單例模式的編寫,要線程安全且內存消耗小(劍指offer原題)。
String、StringBuilder、StringBuffer區別;String類能被繼承嗎?爲何?
在白紙上手寫二分法排序算法(lintcode上原題);二分查找的思想。
查找單鏈表中倒數第k個節點的算法,手寫(lintcode上原題);最多見的排序算法你見過哪些,快排的基本思想及時間複雜度。
常見的數據結構有哪些。
hashmap、hashcode同樣,不equals怎麼處理 ;hashcode實現原理,currentHashMap原理,實現細節,怎麼實現同步的;類爲何要有hascode方法,是否是主要在集合類中都要實現hashcode方法;equals方法怎麼實現;兩個不一樣的對象可能有相同的hashcode值嗎;經常使用集合有哪些。
tcp三次握手,四次揮手協議。
架構設計一個開發性問題,設計一個Nginx管理的中間件,怎麼設計。
全部的類都繼承與object,你用過object類的直接子類有哪些,object類經常使用的方法有哪些。
Java會出現內存泄漏嗎,若是回,在哪一種狀況下?
抽象類和接口的區別。
平時怎麼擴展本身的專業知識水平。
百度面試題
金三銀四背後,一個JAVA程序員的面試心得
什麼是 Java 的反射機制。
Cookie 和 Session的區別。
get 和 post請求的區別。
IOC的優勢是什麼。
IO 和 NIO的區別,NIO優勢。
JRE、JDK、JVM 及 JIT 之間有什麼不一樣。
Hashcode 的做用。
簡述一致性 Hash 算法。
創一個小羣,供你們學習交流聊天
若是有對學JAVA方面有什麼疑惑問題的,或者有什麼想說的想聊的你們能夠一塊兒交流學習一塊兒進步呀。
也但願你們對學JAVA可以鍥而不捨
JAVA愛好羣,
若是你想要學好JAVA最好加入一個組織,這樣你們學習的話就比較方便,還可以共同交流和分享資料,給你推薦一個學習的組織:快樂學習JAVA組織 能夠點擊組織二字,能夠直達
爲何在重寫 equals 方法的時候須要重寫 hashCode 方法?equals與 hashCode 的異同點在哪裏。
爲何 Map 接口不繼承 Collection 接口。
說出幾點 Java 中使用 Collections 的最佳實踐?
GC是什麼?爲何要有GC。
何時會致使垃圾回收。
GC 有幾種方式?怎麼配置。
何時一個對象會被GC? 如何判斷一個對象是否存活。
垃圾回收器的基本原理是什麼?
Serial 與 Parallel GC之間的不一樣之處。
JVM 中一次完整的 GC 流程是怎樣的? 對象如何晉升到老年代。
吞吐量優先和響應優先的垃圾收集器選擇。
說說你知道的幾種主要的jvm 參數。
Java中存在內存泄漏問題嗎?請舉例說明。
什麼是線程,多線程的優勢是什麼?以及簡單說一下多線程的幾種實現方式。
ThreadLocal 用途是什麼,原理是什麼,用的時候要注意什麼?
線程池是什麼?爲何要使用它?如何建立一個Java線程池?
ThreadPool用法與優點能夠說一下麼?
synchronized 的原理是什麼?synchronized 和 ReentrantLock 有什麼不一樣?
有T1,T2,T3三個線程,怎麼確保它們按順序執行?怎樣保證T2在T1執行完後執行,T3在T2執行完後執行同步塊內的線程拋出異常會發生什麼?
什麼是樂觀鎖(Optimistic Locking)?如何實現樂觀鎖?如何避免ABA問題。
Java中活鎖和死鎖有什麼區別?
Executors類是什麼? Executor和Executors的區別?
什麼是設計模式(Design Patterns)?你用過哪一種設計模式?用在什麼場合?
你能寫出三種單例模式實現麼?
你知道Google是如何在一秒內把搜索結果返回給用戶?
高併發下,如何作到安全的修改同一行數據?
如何避免瀏覽器緩存。
大型網站在架構上應當考慮哪些問題?
最近有在看什麼書麼,印象最深入的是什麼?
大家線上應用的 JVM 參數有哪些?
能簡單說下你對算法的理解麼?
面試心得
準備要充分,知識面要儘可能的廣,同時深度也要夠。
面試安排上,若是不着急,儘可能給本身留多時間,兩天一家,及時作總結和補充。
心態要放平,當作一次技術交流,面試要看一部分的運氣,也要看一些眼緣,有的面試官一張嘴你就能感受到你此次面試完了。想去的公司沒有面試好,不要氣餒,繼續加油準備。
簡歷投遞方面,拉勾上投了不少常常不匹配,多是我學歷問題(自考本),有一些打擊自信心,若是有一樣感覺的,不妨換BOSS或者其餘平臺。避免打擊自信心。
寫簡歷必定要體現本身的優點,最好能體現相似於,用到了什麼技術,解決了什麼問題。簡歷上寫到的必定要成竹在胸。
相似於你的優點是什麼,你以爲你項目中作的比較好的地方有哪些,你能給公司帶來什麼,這種問題內心要先想一些,省得臨場發揮容易緊張說很差。
我所經歷的面試,通常技術面最少是兩輪。若是一輪後讓你走了,而你還自我感受良好,那我以爲你有必要回顧一下面試內容,並一條一條找找該問題的相關內容,大部分問題就在於你沒有答到點子上,多是深度不夠,也多是擴展不夠,繼續加油。
我本身收集了一些Java資料,裏面就包涵了一些BAT面試資料,以及一些 Java 高併發、分佈式、微服務、高性能、源碼分析、JVM等技術資料
因爲平臺規則限制,須要獲取資料的朋友們能夠關注小編,後臺私信「架構資料」獲取。
合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!