進入主題之前,開篇先閒談幾句,我是直接投的簡歷,以為沒戲了,這次的面試來得意外,所以心裡上是沒有準備的,這次肺炎對我們的學習、工作和生活都造成了非常大的影響,很多學校延期開學,企業也延期返工,實際上在閉關的這段時間裡,我們正好可以好好利用這段時間,為自己之後想要做得事情充分做好準備,也希望肺炎趕快過去,我們的生活恢復正常。
當前環境,很多公司都採取了遠程辦公,遠程面試。我想這次疫情很多也是初次視頻面試吧,有一說一,我也是第一次遠程面試,當時還是比較緊張的。
餘額寶一面:(遠程視頻一面)
- 自我介紹一下
- JVM 內存分哪幾個區,每個區的作用是什麼?JVM有哪些回收算法,對應的收集器有哪些?
- GC 的兩種判定方法 ?CMS 收集器與 G1 收集器的特點。
- hashmap源碼問題
- HashMap、HashMap如何保證線程安全、ConcurrentHashMap
- HashMap底層結構 put操作講一下
- GC 的兩種判定方法 ?CMS 收集器與 G1 收集器的特點。
- java線程同步都有哪幾種方式,在 Java 中 CycliBarriar 和 CountdownLatch 有什麼區別?
- cas的原理,變量要用哪個關鍵字修飾,volatile實現的原理。
- 你在多線程環境中遇到的常見的問題是什麼?你是怎麼解決它的?
- MYSQL 數據庫服務器性能分析的方法命令有哪些?
- 什麼是通用 SQL 函數?
- 手撕代碼:按層次遍歷二叉樹?
- Java 配置的方式配置 Spring
- spring中用到了什麼, 簡述 AOP 和 IOC 概念,aop是怎麼實現的?
餘額寶二面(遠程視頻二面)
- 自我介紹&項目
- 項目用 Spring 比較多,有沒有了解 Spring 的原理?AOP 和 IOC 的原理
- 分佈式鎖原理
- CAS 算法,CAS 與 synchronized 的使用情景
- 簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
- 分別解決什麼問題?
- dubbo有哪些模塊,底層通信的原理?Dubbo 集群的負載均衡有哪些策略?
- 如果讓你實現一個https,你會怎麼實現?
- 常用的負載均衡,該怎麼用,你能說下嗎?
- 常見的分佈式事務方案有哪些?
- Dubbo 的核心功能?如何從0到1設計一個類似Dubbo的RPC框架?
餘額寶三面(遠程視頻三面)
- 再談談一致hash算法(redis)?
- 數據庫索引,B+樹的特性和建樹過程。
- mysql相關的行鎖,表鎖;樂觀鎖,悲觀鎖
- 分佈式鎖的方案,redis和zookeeper哪個個好,如果是集群部署,高併發情況下哪個性能更好。
- activeMQ 發送消息的方式有哪些?activeMQ 如何調優
- 設計模式與重構,談談你對重構的理解
- Collections.sort底層排序方式
- 說說 Redis 哈希槽的概念?Redis 集群如何選擇數據庫?
- spring cloud的服務註冊與發現是怎麼設計的?
餘額寶四面(遠程視頻四面)
- 自己參與的項目,技術難度高的有哪些?
- 線上有實際的性能優化經驗?
- 從SQL、JVM、架構、數據庫四個方面講講優化思路,以及如何優先排序?
- redis的持久化方式,redis3.0原生集群和redis讀寫分離+哨兵機制區別
- Redis 的 list zset 的底層實現
- 如果讓你實現一個mq,怎麼樣保證消息不丟失
- 你熟悉哪些中間件,談談你對他們的理解,以及對應的使用場景區別?
- 最後,你有什麼想問我的?
遠程面試後,我總結了下,問的都不算很難,雖然不是很順暢,但問題也都一一回答上了,就是通過視頻的形式來面試,總感覺有種說不出的感覺。本以為已經涼涼了,誰知道幾天後竟然收到通知,竟然過了!心情也是有點無法平靜
當然,大廠的面試,是一個系統規範化的流程,除了Spring、Redis、MQ這些必備品外,每一個簡歷都會有一句你Java基礎紮實(有沒有被說中),那麼,到底怎麼樣算Java基礎紮實?
1、集合,例如 List、Map的原理,HashMap基本必問這個不用我多說
2、併發,例如線程、線程池,鎖相關,這些也基本必問
3、JVM,例如垃圾回收器,垃圾回收算法,OOM處理,jvm參數及調優
那麼專業技能怎麼寫?
先問一下你自己會什麼,然後看看你意向的公司需要什麼。我說的是一般HR可能並不太懂技術,(當然內部人員來面試就不一樣了)所以他在篩簡歷的時候可能就盯著你專業技能的關鍵詞來看。對於公司有要求而你不會的技能,你可以提前花幾天時間學習一下,然後在簡歷上可以寫上自己瞭解這個技能。比如你可以這樣寫(下面這部分內容摘自我的簡歷,大家可以根據自己的情況做一些修改和完善):
- 計算機網絡、數據結構、算法、操作系統等課內基礎知識:掌握
- Java 基礎知識:掌握
- JVM 虛擬機(Java內存區域、虛擬機垃圾算法、虛擬垃圾收集器、JVM內存管理):掌握
- 高併發、高可用、高性能系統開發:掌握
- Struts2、Spring、Hibernate、Ajax、Mybatis、Redis、JQuery :掌握
- SSH 整合、SSM 整合、 SOA 架構:掌握
- Dubbo: 掌握
- Zookeeper: 掌握
- 常見消息隊列: 掌握
- Linux:掌握
- MySQL常見優化手段:掌握
- Spring Boot +Spring Cloud +Docker:瞭解
- Hadoop 生態相關技術中的 HDFS、Storm、MapReduce、Hive、Hbase :瞭解
- Python 基礎、一些常見第三方庫比如OpenCV、wxpy、wordcloud、matplotlib:熟悉
上面說的這些,是面試基本的標配了。
首先來說下對於簡歷的準備。MQ、Redis這兩個是標配沒跑的了。為啥?你要突出你的核心競爭力,無非圍繞高併發、高可用、海量數據這幾個點出發。
其次,核心競爭力也體現在分佈式解決方案的真實落地實踐,但是這些分佈式解決方案,也很大程度上依賴 Redis和 MQ。
以下主要分享面經和個人學習方法,會包括很多PDF文檔,如面試題庫(含答案+解析)、學習筆記、實戰文檔和腦圖等等,個人可以免費分享,關注+私信我【面試】即可領取~
由於文章的篇幅有限,所以把這次的面試題答案整理在了PDF文檔裡
如果簡歷上只是做的項目不同,但是實質都是簡單的CRUD,那麼沒面試之前,已經給淘汰得差不多了。
通過數十家面試的觀察,對於Redis和MQ,考察的方向,其實也是有跡可循的。首先他們的高可用是怎麼保證的,原理是怎麼樣的,幾乎必問(不信你可以自己觀察)。當然還會根據你的回答往下繼續拓展問題,每個人回答得不一樣,自然拓展的問題也不一樣。
- Java核心知識整理
- Java面試彙總整理
Spring系列(實戰)
性能優化(JVM+Tomcat+MySQL)答案解析整理
分佈式(限流+緩存+通訊)答案解析整理:
提示自身的軟實力(知識和技術)
第二個關鍵就要自己的自身實力過硬了,無論是你應屆生,還是工作好幾年,無論是校招還是社招,企業招聘的永遠是自身實力過硬的,也就是你的知識儲備,你的技術水平要達到要求,而提升自身軟實力的唯一辦法就是:不斷學習。
以下分享一些我個人的學習文檔,有需要的朋友自行選擇獲取:
刷題:
既然是要面試,那麼就少不了刷題,實際上春節回家後,哪兒也去不了,我自己是刷了不少面試題的,所以在面試過程中才能夠做到心中有數,基本上會清楚面試過程中會問到哪些知識點,高頻題又有哪些,所以刷題是面試前期準備過程中非常重要的一點。
感言
很多人感嘆“學習無用”,實際上之所以產生無用論,是因為自己想要的與自己所學的匹配不上,這也就意味著自己學得遠遠不夠。無論是學習還是工作,都應該有主動性,所以如果擁有大廠夢,那麼就要自己努力去實現它。
閱讀更多 Java編碼碼農 的文章