「摸爬滾打」多年,從月薪3K到18K,一個JAVA程序員的面試心得

回顧一下本身這段時間的經歷,去年十二月份的時候,公司通知了裁人,我匆匆忙忙地出去面了幾家,但最終都沒有拿到offer,我感受今年的寒冬有點冷。後續的面試過程我作了一些準備,基本都能走到hr面,後面我也順利地拿到了offer,我給你們分享下個人求職體會,但願能給你們一些參考。java

下面說一下本身面試過程遇到的一些具體題目和麪試心得。mysql

阿里面試題

  • 多個線程同時讀寫,讀線程的數量遠遠大於寫線程,你認爲應該如何解決併發的問題?你會選擇加什麼樣的鎖?linux

  • JAVA的AQS是否瞭解,它是幹嗎的?web

  • 除了synchronized關鍵字以外,你是怎麼來保障線程安全的?面試

  • Tomcat自己的參數你通常會怎麼調整?redis

  • 你有沒有用過Spring的AOP? 是用來幹嗎的? 大概會怎麼使用?算法

  • 若是一個接口有2個不一樣的實現, 那麼怎麼來Autowire一個指定的實現?sql

  • 若是想在某個Bean生成並裝配完畢後執行本身的邏輯,能夠什麼方式實現?數據庫

  • SpringBoot沒有放到web容器裏爲何能跑HTTP服務?設計模式

  • SpringBoot中若是你想使用自定義的配置文件而不只僅是application.properties,應該怎麼弄?

  • SpringMVC若是但願把輸出的Object(例如XXResult或者XXResponse)這種包裝爲JSON輸出, 應該怎麼處理?

  • 若是有不少數據插入MYSQL 你會選擇什麼方式?

  • 若是查詢很慢,你會想到的第一個方式是什麼?索引是幹嗎的?

  • 查詢死掉了,想要找出執行的查詢進程用什麼命令?找出來以後通常你會幹嗎?

  • 讀寫分離是怎麼作的?你認爲中間件會怎麼來操做?這樣操做跟事務有什麼關係?

  • 分庫分表有沒有作過?線上的遷移過程是怎麼樣的?如何肯定數據是正確的?

  • 你知道哪些或者大家線上使用什麼GC策略? 它有什麼優點,適用於什麼場景?

  • JAVA類加載器包括幾種?它們之間的父子關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處?

  • 如何自定義一個類加載器?你使用過哪些或者你在什麼場景下須要一個自定義的類加載器嗎?

  • 堆內存設置的參數是什麼?

  • HashMap和Hashtable的區別。

  • 實現一個保證迭代順序的HashMap。

  • 說一說排序算法,穩定性,複雜度。

  • 說一說GC。

  • JVM如何加載一個類的過程,雙親委派模型中有哪些方法?

  • TCP如何保證可靠傳輸?三次握手過程?

京東面試題

  • 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端沒法馬上創建鏈接應該回應什麼?

去哪兒網面試題

  • 自我介紹,項目介紹。

  • 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是什麼意思。

  • 若是併發很大,你對數據的正確性怎麼保證。

餓了麼面試題

  • 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 的反射機制。

  • Cookie 和 Session的區別。

  • get 和 post請求的區別。

  • IOC的優勢是什麼。

  • IO 和 NIO的區別,NIO優勢。

  • JRE、JDK、JVM 及 JIT 之間有什麼不一樣。

  • Hashcode 的做用。

  • 簡述一致性 Hash 算法。

  • 爲何在重寫 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或者其餘平臺。避免打擊自信心。

寫簡歷必定要體現本身的優點,最好能體現相似於,用到了什麼技術,解決了什麼問題。簡歷上寫到的必定要成竹在胸。

相似於你的優點是什麼,你以爲你項目中作的比較好的地方有哪些,你能給公司帶來什麼,這種問題內心要先想一些,省得臨場發揮容易緊張說很差。

我所經歷的面試,通常技術面最少是兩輪。若是一輪後讓你走了,而你還自我感受良好,那我以爲你有必要回顧一下面試內容,並一條一條找找該問題的相關內容,大部分問題就在於你沒有答到點子上,多是深度不夠,也多是擴展不夠,繼續加油。

相關文章
相關標籤/搜索