爲記錄阿里的電面經歷,特與大家分享,崗位是JAVA研發工程師。
答案文末分享!!!!!答案文末分享!!!!!答案文末分享!!!!!
一面主要問題如下:
- 首先自我介紹
- 數據結構算法的基本問題,如排序算法,二叉樹遍歷,後序遍歷非遞歸,圖的最短路徑問題
- 對一個數組進行絕對值排序的算法
- java中hashmap的底層實現
- java中垃圾回收機制GC原理等
- 介紹自己的項目,數據庫中用到的數據結構數據模型,死鎖的概念(問的應該是數據庫的死鎖),如何避免死鎖?
- 樂觀鎖和悲觀鎖?
- 一致性hash算法
- 項目中業務對象的關聯關係/關聯方式,談談左外連接及如何實現多對多關係模型
- spring的IOC和AOP
- sping如何實現(保證)事務一致性完整性,spring中事務傳播機制類型
- 談談WEB的架構(應該指的是j2ee開發架構模型)、項目中的用戶場景使用場景
- 對分佈式架構的瞭解,如分佈式存儲 分佈式緩存 分佈式計算
- 談談對阿里的哪些開源項目有所瞭解?
- 對淘寶技術是否有了解?
- 對其杭州信息平臺事業部其主要業務是否瞭解(其主要是java方面的開發,另可以重點關注看看工作流引擎)
二面主要問題如下:
- 首先仍然是先自我介紹
- 有過競賽經歷?獎項?專業排名?平時都看些什麼書籍?是否參加了學校社團活動?哪個部門?主要工作?時間安排?
- 對哪些技術最熟悉最擅長?我說的是java WEB框架那些,然後就開始問java了
- 接口和抽象類的區別 實現有哪些不同?
- 序列化如何實現?用代碼描述。writeObject? objectWrite?ObjectOutputStream.writeObject(). ObjectInputStream.readObject()
- IO框架 集合框架的描述。如何判斷文件是否存在?如何讀取一個目錄下面的所有文件和子目錄?代碼描述。
- 廣度優先遍歷目錄下面的所有子目錄和文件?代碼實現?List和Map的不同?HashMap的實現?如何解決散列衝突?
- 多線程機制?線程休眠10秒?sleep()與wait()的區別。
- 緩衝流buffer的用途?原理?
- linux下如何查看CPU負載和IO端口的使用情況?如何創建目錄?如何搜索一個指定的字符?
- 考察數據庫的sql操作,給定了一個具體的業務表,如何對不同類型的數據進行統計。
- 事務的概念?髒讀?如何避免?如何在代碼中實現?
- sql代碼中如何使用如何定義一個事務?應該是如何定義一個事務的隔離級別?
- 項目中遇到的問題?解決方式?
- SSI框架?spring如何定義一個bean?代碼描述。Bean的生命週期?Bean的scope?
- 對淘寶技術架構的瞭解?從哪裏獲取到的?自己今後的職業規劃?技術發展方向?
- 最後,對來杭州和阿里工作的意向?然後詢問我自己有啥想問的?談了下 信息平臺事業部的主要業務?工作流和ERP?
總體上來看,還是比較注重基礎的 尤其是java的多線程和併發安全性及數據庫相關,另外對有關開源框架的具體底層實現需要多閱讀源碼並進行總結。
下面是網上參考到的阿里java面試題目,同樣作爲借鑑。
- hashmap,hashtable區別。
- 是否瞭解過hashmap的源碼?
- jvm相關,主要是內存分配的過程,何時出發GC,用什麼工具或者命令來進行監控?
- 類加載,類隔離機制。
- spring的ioc,aop,事物,然後順便提到了數據庫的事物,兩階段提交,數據庫鎖的級別,MySQL數據庫鎖的特殊之處(頁級鎖)
- java線程池裏面的arrayblockingqueue,linkedblockingqueue的用途和區別。
- 設計模式相關,主要講解用途
- 如何保證數據庫集羣中ID的唯一性,假設每秒鐘併發20萬次。
- 設計十萬併發級別的網站後臺,如何計算使用的ecs數目(雲服務器(Elastic Compute Service, ECS 如阿里ECS)是一種處理能力可彈性伸縮的計算服務器,
- 基於BGP最優路由算法構架多線網絡,雲服務器可以幫助構建更加安全穩定的應用)。
- memcached和redis的異同和用途。
- nosql數據庫相關,主要講了mongodb
- 10G的整數中,取出最大的一個(不光是使用高效的排序算法,還需要考慮內存大小)
- synchronized,volatile,可重入鎖的用途和優缺點。
- java nio相關核心的api基本瞭解和應用
- 一致性hash
- 在一個大系統中存在哪些單點失效的問題
- hadoop優化相關
一面,主要注重基礎,問得很深很廣,壓力面試。
- hashmap、concurrenthashmap底層實現和區別
- spring框架的原理
- 如何寫一個orm框架
- hibernate一級緩存和二級緩存,hibernate其他緩存
- hibernate事務傳播行爲種類
- springmvc原理
- restful的好處
- restful有幾種請求,表單如何提交put請求
- web中安全性問題的考慮,如何防止
- web系統整體架構
- hibernate如何實現聲明式事務
- java併發包
- volatile
- 平常都看哪些書
- spring底層數據結構
- 如何進行反射,如何提高反射的性能
- 如何實現java的代理,爲什麼需要實現接口
- TCP協議三次握手
- springmvc用過哪些註解
- springAOP可以使用哪些代理,有什麼區別
- 爲什麼要分三層
- mybatis與hibernate有什麼區別,爲什麼不用hibernate直接寫sql語句?
這面沒有準備好,廣度和深度壓力很大,建議大家多看看三大框架源碼、原理,併發包。
二面注重於項目
- 什麼是restful web service?
- 併發集合包?
- 項目中使用了哪些數據結構?
- TCP中斷連接四次揮手?
- MD5加鹽
- https
- 支付寶接口開發
- 知道哪些鎖,有什麼區別?
- 依舊JDK源碼
- 項目遇到什麼問題,怎麼解決?
- JDK1.8有什麼新特性?
也許是覺得一面已經問了很多了,這面又答得比較不錯,20分鐘就結束了,30分鐘出了結果。
三面聊人生
leader人very nice,給了一些建議,可能是覺得技術差不多,這面基本沒怎麼問技術,主要是職業發展、IBM的實習內容之類,我想大家可能也都有自己的想法,18分鐘。
hr面聊成長經歷:聊了一下對B2B的認識和自己的技術成長曆程。
- 進程和線程的區別
- 什麼叫線程安全?舉例說明
- OSI七層模型,包括TCP,IP的一些基本知識
- 數據庫的鎖
- DFS,BFS算法
- 還有一些諸如collection framework的Java基礎
- http中,get post的區別
其他的面試,感覺問的很有代表性:
第一面(只記得這麼多了)
- 筆試題第四題實現又口述了下
- 有個每秒鐘5k個請求,查詢手機號所屬地的筆試題(記得不完整,沒列出),如何設計算法?請求再多,比如5w,如何設計整個系統?
- 比較熟悉什麼技術?我說jvm和oracle,就讓我畫jvm的體系結構,畫了之後說各個部分的職責,並扯到運行期優化。
第二面(沒有技術細節,都是泛泛的,但是我回答的比較保守,只覺得能滔滔不絕的說上半小時纔敢說看過或瞭解)
- 是否願意去杭州
- 熟悉各種技術框架麼?源碼讀過麼?
- 數據庫瞭解什麼?mysql瞭解麼
- 前臺技術,看我用的ExtJS,就問是否瞭解JQuery
- 進現在的公司,覺得對技術是否有提升?
第三面,此面沒有技術問題
第四面HR(感覺這面問題回答的有點扯,畢竟是這麼幾年來首次面HR,之前面過2、3個公司,要麼很早就掛了,要麼感覺流程太長,自己不願意面下去)
- 願意去杭州發展麼?我說要考慮,hr就問主要考慮什麼問題
- 從技術角度來說,你覺得你跟你同學比怎麼樣
- 你的父母怎麼看待你的
- jvm性能調優都做了什麼
- 高併發情況下,我們系統是如何支撐大量的請求的
- 集羣如何同步會話狀態
- 負載均衡的原理
- 數據庫事務屬性
- 二叉樹的遍歷算法
- hashtable和hashmap的區別
- 併發、同步的接口或方法
- string、stringbuilder、stringbuffer區別
- https處理的一個過程,對稱加密和非對稱加密
- 線程的幾種狀態
- 瞭解手機開發麼
- 個人優勢
- 與同事溝通的時候,如果遇到衝突瞭如何解決
- 工作中覺得哪方面欠缺?
- 有問題要問麼?
- 期望薪水
- 爲什麼要離開現在的公司
那麼看到這裏的你肯定想問了,答案在哪?我把近一年經歷過的面試,和一些刷過的面試題都做成了PDF,PDF都是可以免費分享給大家的,只要關注我的wx公衆號:java小朔哥,就可以獲取免費領取方式!