螞蟻金服java架構師面試分享,阿里的offer真的不難,3位朋友所有offer

導讀

這篇文章呢,整合了一下三位朋友面試阿里螞蟻金服所有offer的經歷,時間段分別是7月初,7月中旬,8月中旬。如下也是我整合起來的面試題,和麪試經驗,我但願這些能幫到你們面試這些大廠能有所幫助,其實講白了,面試經驗只是一個借鑑,不能做爲具體參考,但這些經驗能從重考慮大體方向,接下來講說下4面阿里面試(三面加HR面)java

一面

開頭仍是先來自我介紹,完了面試官就開始發問,通常是40分鐘到1個小時不等。不過值得注意的是,他們那邊通常不直接回答對仍是錯,最終發現呢,阿里的幾輪面試,都是這樣,他們通常只聽,偶爾追問。程序員

首先確認對阿里的意向度;其次面試官會針對你曾經作過的項目來作具體技術的交流,你對項目細節是否是掌握到位,以及java技術基礎和原理掌握程序,好比並發編程以及數據庫和JVM三個方面,也會交流到分佈式、線程池的實現等等(重點考察有沒有深刻鑽研技術和技術上的亮點);web

  1. 首先,針對崗位問一些專業性問題,所以你要把該崗位要求的專業技能基礎看一遍。
  2. 而後,針對你的簡歷,問作過的一些具體的case,所以你要把本身寫在簡歷上的case都覆盤一遍,對本身作過的工做內容進行總結,好好分析不足點和須要進步的地方,而且梳理出本身的優點。(若是帶上你之前工做的數據和做品等等,會加不少分)
  3. 再而後,問你對公司、行業的瞭解,所以你要在面試以前經過各類渠道盡量的瞭解公司的歷史,業務、當前發展階段和規劃,瞭解行業的歷史、遠景和競爭對手。
  4. 再再而後,問你對該崗位的理解和職業規劃,所以你要儘可能瞭解你的崗位,而且提早作好將來大體的職業和人生規劃。
  5. 最後,就是瞎聊,他會跟你很隨意的聊一些話題,來觀察你的性格特質和待人接物,確保你能很好的融入他的團隊。

不知道的直接說答不上來,就會繼續一個題。面試

一面完了,叫你等消息,基本涼涼,不少公司,等消息基本就是沒消息。正則表達式

二面

主管面:根據項目深刻的瞭解技術實力,瞭解你的知識面、問題解決能力以及技術靈活運用能力,也經過這一過程考察團隊合做能力、學習主動性和創新性,能夠挑選2-3個作過的有典型性的項目作一個仔細技術回顧和本身獨到的理解(這是加分項,重要);redis

總結:算法

其實講白了主管是你TL(直接領導)的上級,他對具體的業務並不瞭解,因此都是問一些基礎,來幫TL把把關。基本上只要TL想要你,主管都是放行的。並且只要你能把上一輪面試的東西準備好,這一輪就沒什麼問題,只要你對人家表示尊重。spring

三面

高管複試,會涉及到相關的技術問題,大部分是對你的總體價值觀作宏觀的把控(好比上進心,責任心,心態,工做激情等);sql

整個過程要長一些,大約一個小時,完了還聊了一些我的及生活狀況。數據庫

總結:

整個技術面下來,感受好像面試有跡可循。

一面通常是基礎問題。二面偏向於作的項目與框架。三面比較全面,都會問到。若是會聊天,現場面還會聊技術以外的一些東西。

順便說一下,有開源項目或者技術博客,熟悉源碼加分。

四面HR面

HR最終面,進入最後一面,通常這種狀況反而有些緊張,一方面非技術類的問題是你們並不擅長的,再者應該你們早有耳聞阿里HRBP有"一票否決權"!因此仍是打起了十二分的精神認真對待,其實過程比想象中的順暢不少,就是從大方向瞭解一下面試者的心態、抗壓能力、將來規劃以及對阿里的意向度(用阿里的話說,即價值觀的匹配度);

總結

HR面: 這輪面試是薪酬福利面試,就是跟HR博弈,爭取在該級別範圍內拿到最高的薪水。這些就好商量了,(價值觀匹配度達到過關什麼都好說)整體的來講HR面是最容易的。健談的人通常都很容易。固然小瓜哥不是一個健談的人,當時第一次是倒在第三面,第二次差點在HR面翻車,由於實在不健談。哈哈。面試阿里第二次纔拿到offer實在有些慚愧。

接下來是我總結的部分問的方向和問題,但願對你們能有所幫助!

Java基礎:

  1. hashmap結構;什麼對象能作爲key
  2. hashtable,concurrentHashMap,hashtable比較
  3. String,StringBuilder,StringBuffer
  4. 對象的深淺複製
  5. 一個十進制的數在內存中是怎麼存的? Java支持的數據類型有哪些?什麼是自動拆裝箱? int 和 Integer 有什麼區別 ? 何時使用int 何時使用Integer?
  6. ==比較的是什麼?
  7. hashCode()和equals()方法有什麼聯繫? 爲何重寫equals還要重寫hashcode? Object若不重寫hashCode()的話,hashCode()如何計算出來的?若對一個類不重寫,它的equals()方法是如何比較的?
  8. 一個十進制的數在內存中是怎麼存的?
  9. Java語言中float和double數據類型的精度是多少?它們在內存中是怎麼存儲的?和Decimal有什麼區別?
  10. 爲啥有時會出現4.0-3.6=0.40000001這種現象?
  11. 不借助四則運算如何實現加法
  12. char能夠存漢字嗎,底層怎麼存的
  13. Java的字符集是什麼
  14. 什麼是值傳遞和引用傳遞?
  15. 數組(Array)和列表(ArrayList)有什麼區別?何時應該使用Array而不是ArrayList?
  16. StringBuilder 和StringBuffer的區別 ? 底層實現上呢?
  17. String爲何要設置成final類型?String是不變的嗎?String爲何不可變?怎麼實現不變的?
  18. &和&&的區別?
  19. 在Java中,如何跳出當前的多重嵌套循環?
  20. 簡述正則表達式及其用途。Java中是如何支持正則表達式操做的?
  21. 講一講Java裏面的final關鍵字怎麼用的?
  22. Java 8 如何實現的函數式編程?
  23. 如何保證方法的冪等性
  24. Java中的序列化的做用,serialVersionUID做用? 各類序列化器,序列化協議,爲何這個序列化那麼快

多線程:

  1. wait,sleep分別是誰的方法,區別
  2. countLatch的await方法是否安全,怎麼改造
  3. 線程池參數,整個流程描述
  4. 背後的底層原理aqs,cas
  5. ThreadLocal原理,注意事項,參數傳遞
  6. 還有Java的鎖,內置鎖,顯示鎖,各類容器
  7. 及鎖優化:鎖消除,鎖粗化,鎖偏向,輕量級鎖
  8. 多線程的好處
  9. 線程安全的定義? 如何保證線程安全?
  10. 多線程中的i++線程安全嗎?爲何?多個線程訪問i++ , 怎樣設計保證線程安全
  11. 建立線程有幾種不一樣的方式?你喜歡哪種?爲何?Java中有幾種方式啓動一個線程?
  12. 原子類的底層原理?Atomic在高併發場景下有什麼問題,缺點?
  13. CAS和ABA原理
  14. Jdk中哪裏用到了cas? CAS check的字段是哪裏,set到哪裏去? cas有什麼問題? jdk中是如何改進的? 若是不少個線程經過cas操做數據,如何提升效率?
  15. 如何線程安全的實現一個計數器?
  16. 請說出你所知道的線程同步的方法
  17. 線程數和內核數量的關係
  18. 線程中哪些是私有的?哪些是共享的
  19. 線程有多少狀態,畫出狀態圖,狀態之間如何轉換
  20. 同步方法和同步代碼塊的區別是什麼?
  21. runnable和callable有什麼區別?
  22. 爲何 object的方法 notify 和wait方法必須在synchronized裏使用?

web方面:

  1. servlet是否線程安全,如何改造
  2. session與cookie的區別,get和post區別,tcp3次握手,文件上傳用post仍是get
  3. session的存儲
  4. 如何防止表單重複提交
  5. 如何設置請求的編碼以及響應內容的類型?
  6. Servlet相關接口 , Servlet裏面有哪些方法 ? Servlet執行時通常實現哪幾個方法?
  7. Servlet 3中的異步處理指的是什麼?
  8. servlet生命週期?servlet是單例模式麼?爲何是單例?Servlet和cgi有什麼區別?
  9. 服務器收到用戶提交的表單數據,究竟是調用Servlet的doGet()仍是doPost()方法?
  10. servlet寫過麼,底層是怎麼處理前臺傳來的請求的
  11. 是否單例,爲何是單例。
  12. 如何在基於Java的Web項目中實現文件上傳和下載?
  13. 緩存的優勢?
  14. 說說MVC的各個部分都有那些技術來實現?如何實現?
  15. 什麼是DAO模式?
  16. 請問Java Web開發的Model 1和Model 2分別指的是什麼?
  17. 如何保存會話狀態,有哪些方式、區別如何

jvm:

  1. jvm內存模型,
  2. jvm問題工具,jps,jinfo,jmap...
  3. String a=「a」;String b=「b」; 問"a" "b"等不等於a b
  4. Java中堆棧的區別。堆棧的增加方向有哪些不一樣?
  5. jvm最大內存限制多少 ? 在一臺16G內存的機器上,JVM默認內存空間多大?
  6. jvm是如何實現線程?
  7. 瞭解過字節碼的編譯過程嗎
  8. eden區,survial區?
  9. 垃圾回收器的基本原理是什麼?垃圾回收器能夠立刻回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收?(垃圾回收)
  10. JVM回收算法和回收器,CMS採用哪一種回收算法,怎麼解決內存碎片問題? 爲何年輕代要用複製算法?併發標記階段處理速度慢的緣由多是什麼。怎麼進行優化
  11. 闡述GC算法 , 那併發量很高時,使用哪一種算法?
  12. GC如何調優?
  13. 垃圾回收觸發條件 ? 是須要回收就當即回收,仍是怎麼辦?一般哪些設爲安全點?
  14. GC中如何判斷對象須要被回收? 一個方法中有A a = new A();這麼一條語句,方法執行完後A的實例化對象在GC時可否被回收掉
  15. GCRoot能夠是哪些對象
  16. 何時會觸發full gc? FullGC是否停頓用戶線程?發生Full GC的時候,必定會發生stop the world嗎?怎麼避免full gc ? 頻繁出現full gc應該如何排查?
  17. minor gc若是運行的很頻繁,多是什麼緣由引發的,minor gc若是運行的很慢,多是什麼緣由引發的?
  18. 對象怎麼分配內存,基於什麼原則;
  19. 類加載過程 ? 初始化階段是幹什麼的?
  20. 雙親委派模型的好處是什麼?

數據庫:

  1. 最重要的索性及底層實現
  2. 索性失效的場景
  3. 最左原則
  4. 查看執行計劃
  5. 及carndiation
  6. 而後是鎖的類型,行級表級
  7. 悲觀樂觀鎖
  8. 解釋數據庫事物及特性
  9. 隔離級別
  10. 及實現,redo log .undo log
  11. bin log主從複製
  12. mvcc,Next-Key Lock
  13. delete truncate 區別
  14. SQL 中select…limit and offset 會有什麼問題,怎麼解決
  15. 一條SQL語句在MySQL中會通過怎樣的過程
  16. 數據庫兩種引擎 InnoDB和MyISAM的區別?介紹一下何時用Innodb何時用MyISAM。
  17. 平時有查看過sql的執行計劃嗎
  18. 怎麼去監控MySQL的性能問題?怎麼查看一個sql語句的執行效率?

分佈式:

  1. 問了CAP,跟base
  2. zookeeper知足了CAP的哪些特性,paxos
  3. 緩存穿透怎麼解決
  4. redis的io模型
  5. 若是保證redis高可用
  6. redis是單線程仍是多線程
  7. 線上cpu佔比太高怎麼排查
  8. 一致性hash
  9. 分庫分表
  10. 怎麼熱拷貝,給一個思路,好比一個ES集羣在創建索引,咱們怎麼樣在它還在持續創建索引的狀況下,將當時的狀態給dump下來
  11. 若是緩存雪崩,大量請求直接打到數據庫怎麼辦?
  12. 服務限流,服務隔離。
  13. 當庫存預加載之後,庫存再次發生變化該如何解決?
  14. 實現限流怎麼實現?若讓你設計一個限流器,你會怎麼設計(令牌桶算法的思路)
  15. 2PC 和 3PC
  16. raft協議介紹,raft的日誌須要有什麼特色 , 網絡分區怎麼解決,raft一致性如何實現

spring:

  1. ioc,aop原理
  2. ioc初始化流程
  3. springmvc的流程
  4. springboot,spring cloud相關組件
  5. 介紹一下bean的生命週期
  6. Spring裏面註解用過沒有?autowired 和resource區別?
  7. Spring中BeanFactory和ApplicationContext的區別?
  8. 請問Spring中Bean的做用域有哪些?
  9. Spring加載Bean的過程? Spring框架xml文件中配置bean的實例化過程?瞭解Spring是怎麼遞歸地加載Bean的嗎?BeanFactory和FactoryBean有什麼區別?
  10. Spring getBean的整個流程
  11. 談談Spring中自動裝配的方式有哪些?
  12. 說一下IOC和AOP? DI的方式有幾種?哪幾種?
  13. spring怎麼解決循環引用的問題,好比,A對象構造時須要B對象;B對象構造時須要A對象
  14. springIOC原理?說說Ioc容器的加載過程Spring IOC底層存儲結構 ? 本身實現IOC要怎麼作,哪些步驟?
  15. aop的應用場景?
  16. AOP的原理是什麼? 除了動態代理還有什麼?
  17. 攔截器和AOP的關係 Spring攔截器的底層是怎麼實現的

項目

友情提醒一下,對於作過的項目,最好梳理清理,可能會叫你畫各類圖。

總結

能問的基本就是這幾個大體方向,若是你方面掌握的很不錯了,同時又是個很健談的人,我相信阿里面試對你而言也就是日常遇到BUG征服了就行了。

不過阿里的確是程序員的金字塔呀,在這種地方,你會以爲本身真的如此眇小,之前引以自豪的能力,在這裏面一切都像新手同樣,什麼 寫個框架無壓力的人不少,隨意修改JVM無壓力,數據庫也是。不過也是學習聖地,毫無疑問!

健談是一個很實用的技能,可能在你實力並無理想那種那種水平,能幫你得到更好的資源。一個會說話的人和一個不會說話的人,最終的高度絕對不會是同樣的(有實力的狀況),若是實力和健談你都有,就是一個閃閃發光的金子。在哪,都有你的一席之地。

再多提一句,最近網上流傳BAT等一線互聯網公司不招人了,沒錯這是謠言。

我也整理了如下資料給各位朋友喜歡能夠幫到你們




最後

還有更多的面試題我都是整理在一塊兒了,我但願我把這些問題,資料、面試題都分享給你們。讓你們能多多提高本身,歡迎作Java的程序員朋友們關注個人公衆號「java小瓜哥的分享平臺」發送「資料」!免費分享這些資料。其中覆蓋了互聯網的方方面面,期間碰到各類產品各類場景下的各類問題,但願能夠幫助你們擴展本身的技術廣度和知識面。謝謝。!

相關文章
相關標籤/搜索