前言
一直有小夥伴要我分享面經,說自己想面互聯網公司,無奈經驗太少想多看看其他人是怎麼面的。我這兩天剛好和一個剛拿到猿輔導offer的朋友吃了個飯,他向我說了說自己的面試經歷。粉絲朋友是末流211畢業的,工作了兩年了!然後五月份左右的時候辭職的,辭職之後問我要了面試資料進行學習,對自己的知識點進行梳理,查漏補缺!在上個月先是去面了螞蟻金服,不得不說的是螞蟻金服上市之後門檻是真的高!他面到了第三面被拒了。被拒之後找我一起吃了個飯,我給他重新規劃了一下。直到前兩天他又找到了我,說自己已經拿到了猿輔導的offer,下面我把他的面試題以及他的一些經驗總結都分享給大家!
螞蟻金服一面
首先是他螞蟻金服的面試題,是第一面到第三面的!
1、當前讀與快照讀的區別?
2、類加載過程?
3、聚簇和非聚簇索引。
4、HashMap&ConcurrentHashMap。
5、再談談一致hash算法
6、樂觀鎖&悲觀鎖?
7、雙親委派機制及使用原因?
8、線程池的核心參數和基本原理。
9、線程池的調優策略。
10、可重入鎖&Synchronize?
11、用自己的實踐經歷說一下索引的使用場景
12、說說GC算法
13、Http&Https的區別。
(1)https協議需要到CA申請證書,一般免費證書較少,因而需要一定費用。
(2)http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl/tls加密傳輸協議。
(3)http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
(4)http的連接很簡單,是無狀態的;HTTPS協議是由SSL/TLS+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
一面面的並不難,都是一些基礎知識,問題不大
螞蟻金服二面
1、說說自己參與的項目,技術難度在哪裡?
2、Collections.sort底層排序方式?
3、排序穩定性?
4、具體場景的排序策略?
5、Http請求過程,DNS解析過程。
6、三次握手四次揮手。
7、簡述線程池和併發工具的使用?
8、數據庫索引原理。
9、頻繁老年代回收怎麼分析解決?
10、Spring IOC、AOP?
11、講講SpringBoot/SpringCloud的一些應用?
12、阻塞隊列不用java提供的自己怎麼實現,condition和wait不能用
13、擁塞窗口講一講,為什麼要用慢啟動算法
14、負載均衡的原理?
15、Redis的數據一致性問題
16、講講docker容器?
17、如向實現何高併發下的削峰,限流?
18、你有什麼職業規劃?
二面其實重點就是在於自己參與的項目這一塊,現在互聯網公司招人想要的是你能有自己參與項目的經驗和自己處理項目問題的能力,如果你在第一問項目這裡卡了殼,其實後面的也就基本不會問到了!
螞蟻金服三面
1、項目中用的中間件的理解(Dubbo、MQ、Redis、kafka、zk)
2、服務器雪崩是怎麼造成的?之前有這樣的經歷嗎?怎麼防備?
3、高併發架構的設計思路。
4、以前項目中遇到的最大問題和解決策略。
5、生活中遇到的最大的挫折。
6、生活中遇到的最大的令你最有成就感的事情。
7、你有什麼職業規劃?
三面問的最多的也是項目這一塊,可見有自己項目經驗能在面試中有多大的優勢,粉絲朋友在我的梳理中這一塊問題並不大!然後三面其實就是和HR面問的差不多了,然後問的是去留問題,粉絲可能在面試中表露了自己不想待在上海的念頭,然後並沒有接到意向書!
項目經驗
上面說到了面試互聯網公司的重點,項目這一塊。我相信很多讀者並沒有這一方面的經驗,其實他在這一塊方面的經驗也不多,是拿著我那份突擊面試寶典上推薦的15個新手都能看懂的java教程方向的開源項目看了很久在把這一塊知識補充上去的,具體如下:
我這份突擊面試寶典,不僅包含了開源項目的學習,還涵蓋:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、
Linux 這些所有技術棧的知識點!有需要的朋友可以關注我的公眾號:前程有光免費獲取
猿輔導一面
下面接著說他在猿輔導的面試經驗,他是上個月去面的,下面是一面面試題
1. JVM的內存模型,那幾個區容易發生OOM
2. JVM的垃圾回收算法,優點缺點比較
3. JVM中的垃圾回收器(重點介紹CMS,G1)
4. JVM中發生FullGC的情況,old區引用young區對象怎麼辦?(卡表記錄)
5. Java線程池(7大參數)
- 當有任務提交時,線程池的運行原理
- 線程池中的是怎麼根據keepalive時間來回收線程的
- 怎麼來保證線程之間的安全運行
9. Java中實現鎖的方式(顯示鎖和Synchronized的區別)
10. Synchronized底層的原理(鎖池和等待池)
11. JUC中的ReentrantLock底層(AQS)
12. TCP的可靠連接怎麼保證
13. TCP和UDP的區別
- 數據庫的底層的B+數結構,為什麼要使用B+,而不是AVL
15. Mysql的4個隔離級別,對應解決了哪些問題
- 隔離級別中RR問題是怎麼解決的
- 數據庫中的MVCC實現機制
- 數據庫中怎麼解決緩讀問題的—間隙鎖
19. HashMap的擴容機制。加入都1億個數據,是一次性rehash完麼?
- 漸進式的rehash,實現原理
- 算法題---DP找矩陣中的最小路徑
其實猿輔導的一面並不比螞蟻問的簡單,有的知識點甚至比螞蟻問的還要深,他在我的突擊面試寶典的衝擊下對這些問題並沒有什麼難度,一面簡單通過
猿輔導二面
- 雙親委派機制。有哪些好處。怎麼打破。JAVA中哪些東西打破了雙親委派機制。
2. Java可以自己重新寫lang包下的類麼?
- 線程池中的線程的狀態。狀態之間的轉換關係
4. Yield()方法有什麼用
- 為什麼要廢棄suspend和stop方法
- 怎麼去停止一個正在運行中的線程
- 線程池中為什麼要使用workqueue?
8. Java中的直接內存
9. Java中的NIO和BIO
10. NIO底層實現(分析三種實現方式)
11. CopyOnwriteArraylist和ConcurrentLinkedList底層實現
12. AQS底層
13. Redis中的持久化機制
14. Redis的集群說一說
- 一致性Hash的好處與缺點(偏環)
- 算法題:判斷一個字符串是否是累加和字符串:
eg:”11235813”是一個累加和字符串
eg:”10099199” 100 + 99 = 199 也是一個累加和字符串
其實總的來說二面難度並不大,只要你把我的預計面試寶典吃透了,並沒有什麼太大的問題!主要是最後的那道算法題,一定要認真,不然就容易出錯!
猿輔導三面
1.聊比賽,聊項目
2. Java中的NIO和BIO區別
3. Java中的直接內存
- 直接內存產生OOM怎麼辦?
- 項目中有遇到這種情況麼?怎麼解決的
6. Redis中RDB持久化的具體過程
- 操作系統的進程通信方法
8. JVM中各個區具體存放哪些數據
- 項目中遇到了哪些問題
- 算法題: 多個有序鏈表合併成一個有序的鏈表
果然,該來的總會來的。問項目!問了一些項目經驗和自己以往參加過什麼比賽的經歷,主要聊的最多的還是一些處理項目問題經歷和經驗,他在這方面完美過關!再補充一下對項目沒什麼經驗的同學可以往上面翻一下,有我給大家推薦的15個新手也能上手的項目!
猿輔導四面
四面其實就是HR面,就是聊了一些你的職業規劃和你現在都有哪些offer以及你以後想在哪裡居住這些問題,只要你靈活一點的回答都不會有什麼問題的!
總結
以上就是粉絲朋友的面經分享了,希望對你們能有幫助!然後向大家分享一下我在文中多次提到的突擊面試寶典,這份寶典不僅涵蓋了項目推薦還涵蓋:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 這些所有技術棧的知識點!
具體內容如下:
這份突擊面試寶典將近500頁,幾乎涵蓋了面試能問到的所有知識點,大家拿到後可以跟我那個粉絲朋友一樣把自己的知識點重新梳理一次,查漏補缺!相信你把這份寶典吃透了再去面試,你絕對不會面的比他差!
最後強調:這份突擊面試寶典只要你關注我的公眾號:前程有光就可以免費獲取