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

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


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


下面說一下自己面試過程遇到的一些具體題目和麵試心得。

阿里面試題

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

  • 多個線程同時讀寫,讀線程的數量遠遠大於寫線程,你認為應該如何解決併發的問題?你會選擇加什麼樣的鎖?
  • JAVA的AQS是否瞭解,它是幹嘛的?
  • 除了synchronized關鍵字之外,你是怎麼來保障線程安全的?
  • Tomcat本身的參數你一般會怎麼調整?
  • 你有沒有用過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如何保證可靠傳輸?三次握手過程?

京東面試題

“摸爬滾打”多年,從月薪3K到18K,一個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端無法立刻建立連接應該回應什麼?

去哪兒網面試題

“摸爬滾打”多年,從月薪3K到18K,一個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是什麼意思。
  • 如果併發很大,你對數據的正確性怎麼保證。

餓了麼面試題

“摸爬滾打”多年,從月薪3K到18K,一個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會出現內存洩漏嗎,如果回,在哪種情況下?
  • 抽象類和接口的區別。
  • 平時怎麼擴展自己的專業知識水平。
“摸爬滾打”多年,從月薪3K到18K,一個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或者其他平臺。避免打擊自信心。

寫簡歷一定要體現自己的優勢,最好能體現類似於,用到了什麼技術,解決了什麼問題。簡歷上寫到的一定要胸有成竹。

類似於你的優勢是什麼,你覺得你項目中做的比較好的地方有哪些,你能給公司帶來什麼,這種問題心裡要先想一些,免得臨場發揮容易緊張說不好。

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

號外:小編為讀者蒐集了幾份最新教程,覆蓋了Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化等還有個大廠的面試問題和資料。

獲取方式:關注小編,並回復【資料】 領取。

合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!


分享到:


相關文章: