金三銀四背後,一個JAVA程序員的面試心得

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

圖片描述

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

阿里面試題

圖片描述

  1. 多個線程同時讀寫,讀線程的數量遠遠大於寫線程,你認爲應該如何解決併發的問題?你會選擇加什麼樣的鎖?
  2. JAVA的AQS是否瞭解,它是幹嗎的?
  3. 除了synchronized關鍵字以外,你是怎麼來保障線程安全的?
  4. Tomcat自己的參數你通常會怎麼調整?
  5. 你有沒有用過Spring的AOP? 是用來幹嗎的? 大概會怎麼使用?
  6. 若是一個接口有2個不一樣的實現, 那麼怎麼來Autowire一個指定的實現?
  7. 若是想在某個Bean生成並裝配完畢後執行本身的邏輯,能夠什麼方式實現?
  8. SpringBoot沒有放到web容器裏爲何能跑HTTP服務?
  9. SpringBoot中若是你想使用自定義的配置文件而不只僅是application.properties,應該怎麼弄?
  10. SpringMVC若是但願把輸出的Object(例如XXResult或者XXResponse)這種包裝爲JSON輸出, 應該怎麼處理?
  11. 若是有不少數據插入MYSQL 你會選擇什麼方式?
  12. 若是查詢很慢,你會想到的第一個方式是什麼?索引是幹嗎的?
  13. 查詢死掉了,想要找出執行的查詢進程用什麼命令?找出來以後通常你會幹嗎?
  14. 讀寫分離是怎麼作的?你認爲中間件會怎麼來操做?這樣操做跟事務有什麼關係?
  15. 分庫分表有沒有作過?線上的遷移過程是怎麼樣的?如何肯定數據是正確的?
  16. 你知道哪些或者大家線上使用什麼GC策略? 它有什麼優點,適用於什麼場景?
  17. JAVA類加載器包括幾種?它們之間的父子關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處?
  18. 如何自定義一個類加載器?你使用過哪些或者你在什麼場景下須要一個自定義的類加載器嗎?
  19. 堆內存設置的參數是什麼?
  20. HashMap和Hashtable的區別。
  21. 實現一個保證迭代順序的HashMap。
  22. 說一說排序算法,穩定性,複雜度。
  23. 說一說GC。
  24. JVM如何加載一個類的過程,雙親委派模型中有哪些方法?
  25. TCP如何保證可靠傳輸?三次握手過程?

京東面試題

圖片描述

  1. java經常使用的數據結構有哪些?哪些是線程安全的?是怎麼保證線程安全的?
  2. Redis中的Lua有沒有使用過? 能夠用來作什麼? 爲何能夠這麼用?
  3. 線程池內部工做原理能夠說一下麼?
  4. 死鎖是什麼意思,造成條件是什麼?出現死鎖是能夠經過什麼方式去排查。
  5. 在交易過程當中如何放在用戶在支付時的重複支付(交叉支付),請寫出你瞭解的方案或使用的過的方案。
  6. 數據庫索引有哪幾種,他們之間的區別。
  7. 程序開發時經過開發工具DeBug調試時,控制檯顯示的內容都包含什麼?哪些內容能夠幫助你發現問題和解決問題。
  8. RPC通訊過程當中,假設A系統提供了一個方法入參是一個JavaBean,出參也是一個JavaBean。另外兩個系統B系統、C系統調用接口,調用方B想讓提供方A增長一個返回參數,假設服務提供方A增長了返回參數,請問C系統調用方須要作什麼處理?
  9. 瞭解哪些設計模式,用僞代碼實現一個你熟悉的設計模式。
  10. 講一下怎麼使用分佈式鎖。
  11. 說說HashMap的原理, 以及HashMap如何擴充bucket的大小。
  12. Redis的Pipeline是用來幹什麼的?
  13. Mysql索引的分類(Btree, hash),各自使用什麼狀況 。
  14. 說說Myisam, Innodb區別。
  15. 知道哪些負載均衡算法。
  16. 說一下Btree的查找原理。
  17. 簡述三次握手,若是c端發起握手請求,s端沒法馬上創建鏈接應該回應什麼?

去哪兒網面試題

圖片描述

  1. 自我介紹,項目介紹。
  2. mysql數據庫調優。
  3. sql優化。
  4. like能用索引嗎?
  5. java對象四種引用。
  6. GC原理。
  7. jvm內存結構。
  8. 說一下你學過jvm 在書寫代碼上對你有什麼幫助和提升。
  9. 千萬數據量的查詢你會怎麼作?
  10. HashMap在jdk1.7和1.8的區別,爲何引入這個概念?hash碰撞怎麼解決,爲何1.8要比1.7更好,好在哪?
  11. 關於你的項目,若是併發很大,你會怎麼改造。
  12. 方法區裏什麼樣的對象有可能被回收。
  13. 線上cpu飆升100%你怎麼處理。
  14. 頻繁FullGC怎麼處理。
  15. 線程池建立有幾種,爲何建立定長的線程池個數最好是5,10,15這樣的數字。
  16. linux命令。
  17. 伊甸區和倖存區可動態變化嗎?
  18. redis和memcached區別。
  19. 說幾個jdk命令,jmap是什麼意思。
  20. 若是併發很大,你對數據的正確性怎麼保證。

餓了麼面試題

圖片描述

  1. http和https的區別,https原理,http2.0與1.0的區別。
  2. Java的垃圾回收機制,Java文件加載機制,tomcat類加載機制,鎖機制,jvm原理及線上調優,jvm內存模型。
  3. 多線程,有哪些能夠保持進程同步的方法,建立線程的幾種方法,對i++多線程訪問你會怎麼作。
  4. Java的設計模式,單例有什麼模式,懶漢爲何加volotile,volotile的內存屏障,如何避免死鎖。
  5. 考慮單例模式的編寫,要線程安全且內存消耗小(劍指offer原題)。
  6. String、StringBuilder、StringBuffer區別;String類能被繼承嗎?爲何?
  7. 在白紙上手寫二分法排序算法(lintcode上原題);二分查找的思想。
  8. 查找單鏈表中倒數第k個節點的算法,手寫(lintcode上原題);最多見的排序算法你見過哪些,快排的基本思想及時間複雜度。
  9. 常見的數據結構有哪些。
  10. hashmap、hashcode同樣,不equals怎麼處理;hashcode實現原理,currentHashMap原理,實現細節,怎麼實現同步的;類爲何要有hascode方法,是否是主要在集合類中都要實現hashcode方法;equals方法怎麼實現;兩個不一樣的對象可能有相同的hashcode值嗎;經常使用集合有哪些。
  11. tcp三次握手,四次揮手協議。
  12. 架構設計一個開發性問題,設計一個Nginx管理的中間件,怎麼設計。
  13. 全部的類都繼承與object,你用過object類的直接子類有哪些,object類經常使用的方法有哪些。
  14. Java會出現內存泄漏嗎,若是回,在哪一種狀況下?
  15. 抽象類和接口的區別。
  16. 平時怎麼擴展本身的專業知識水平。

百度面試題

圖片描述

  1. 什麼是 Java 的反射機制。
  2. Cookie 和 Session的區別。
  3. get 和 post請求的區別。
  4. IOC的優勢是什麼。
  5. IO 和 NIO的區別,NIO優勢。
  6. JRE、JDK、JVM 及 JIT 之間有什麼不一樣。
  7. Hashcode 的做用。
  8. 簡述一致性 Hash 算法。
  9. 爲何在重寫 equals 方法的時候須要重寫 hashCode 方法?equals與 hashCode 的異同點在哪裏。
  10. 爲何 Map 接口不繼承 Collection 接口。
  11. 說出幾點 Java 中使用 Collections 的最佳實踐?
  12. GC是什麼?爲何要有GC。
  13. 何時會致使垃圾回收。
  14. GC 有幾種方式?怎麼配置。
  15. 何時一個對象會被GC? 如何判斷一個對象是否存活。
  16. 垃圾回收器的基本原理是什麼?
  17. Serial 與 Parallel GC之間的不一樣之處。
  18. JVM 中一次完整的 GC 流程是怎樣的? 對象如何晉升到老年代。
  19. 吞吐量優先和響應優先的垃圾收集器選擇。
  20. 說說你知道的幾種主要的jvm 參數。
  21. Java中存在內存泄漏問題嗎?請舉例說明。
  22. 什麼是線程,多線程的優勢是什麼?以及簡單說一下多線程的幾種實現方式。
  23. ThreadLocal 用途是什麼,原理是什麼,用的時候要注意什麼?
  24. 線程池是什麼?爲何要使用它?如何建立一個Java線程池?
  25. ThreadPool用法與優點能夠說一下麼?
  26. synchronized 的原理是什麼?synchronized 和 ReentrantLock 有什麼不一樣?
  27. 有T1,T2,T3三個線程,怎麼確保它們按順序執行?怎樣保證T2在T1執行完後執行,T3在T2執行完後執行同步塊內的線程拋出異常會發生什麼?
  28. 什麼是樂觀鎖(Optimistic Locking)?如何實現樂觀鎖?如何避免ABA問題。
  29. Java中活鎖和死鎖有什麼區別?
  30. Executors類是什麼? Executor和Executors的區別?
  31. 什麼是設計模式(Design Patterns)?你用過哪一種設計模式?用在什麼場合?
  32. 你能寫出三種單例模式實現麼?
  33. 你知道Google是如何在一秒內把搜索結果返回給用戶?
  34. 高併發下,如何作到安全的修改同一行數據?
  35. 如何避免瀏覽器緩存。
  36. 大型網站在架構上應當考慮哪些問題?
  37. 最近有在看什麼書麼,印象最深入的是什麼?
  38. 大家線上應用的 JVM 參數有哪些?
  39. 能簡單說下你對算法的理解麼?

面試心得

  1. 準備要充分,知識面要儘可能的廣,同時深度也要夠。
  2. 面試安排上,若是不着急,儘可能給本身留多時間,兩天一家,及時作總結和補充。
  3. 心態要放平,當作一次技術交流,面試要看一部分的運氣,也要看一些眼緣,有的面試官一張嘴你就能感受到你此次面試完了。想去的公司沒有面試好,不要氣餒,繼續加油準備。
  4. 簡歷投遞方面,拉勾上投了不少常常不匹配,多是我學歷問題(自考本),有一些打擊自信心,若是有一樣感覺的,不妨換BOSS或者其餘平臺。避免打擊自信心。
  5. 寫簡歷必定要體現本身的優點,最好能體現相似於,用到了什麼技術,解決了什麼問題。簡歷上寫到的必定要成竹在胸。
  6. 相似於你的優點是什麼,你以爲你項目中作的比較好的地方有哪些,你能給公司帶來什麼,這種問題內心要先想一些,省得臨場發揮容易緊張說很差。
  7. 我所經歷的面試,通常技術面最少是兩輪。若是一輪後讓你走了,而你還自我感受良好,那我以爲你有必要回顧一下面試內容,並一條一條找找該問題的相關內容,大部分問題就在於你沒有答到點子上,多是深度不夠,也多是擴展不夠,繼續加油。

如今外面面試問的的確比較多,要求也挺高的,行情很差,薪資也很差要,因此心態必定要放好,找好本身的定位,心態必定要好。linux

本文是由做者一位好友把他的面試心得分享而得,有着5年工做經驗,目前在上海一家阿里系公司就任。但願這些面試題對你們有所幫助,再此表示,答案會在做者的交流羣裏與你們分享交流。【做者交流羣:552391552 羣內每晚都會有阿里技術大牛講解的最新Java架構技術。並會錄製錄播視頻分享在羣公告中,做爲給廣大朋友的加羣的福利——分佈式(Dubbo、Redis、RabbitMQ、Netty、RPC、Zookeeper、高併發、高可用架構)/微服務(Spring Boot、Spring Cloud)/源碼(Spring、Mybatis)/性能優化(JVM、TomCat、MySQL)。 】web

在這,也祝你們在金三銀四面試的道路上,都可以找到你們心儀的下家。面試

相關文章
相關標籤/搜索