阿里P7面試經歷JAVA總結,技術面,HR面
為記錄阿里的電面經歷,特與大家分享,崗位是JAVA研發工程師。
一面主要問題如下:
1)首先自我介紹
2)資料結構演算法的基本問題,如排序演算法,二叉樹遍歷,後序遍歷非遞迴,圖的最短路徑問題
3)對一個數組進行絕對值排序的演算法
4)java中hashmap的底層實現
5)java中垃圾回收機制GC原理等
6)介紹自己的專案,資料庫中用到的資料結構資料模型,死鎖的概念(問的應該是資料庫的死鎖),如何避免死鎖?
7)樂觀鎖和悲觀鎖?
8)一致性hash演算法
9)專案中業務物件的關聯關係/關聯方式,談談左外連線及如何實現多對多關係模型
10)spring的IOC和AOP
11)sping如何實現(保證)事務一致性完整性,spring中事務傳播機制型別
12)談談WEB的架構(應該指的是j2ee開發架構模型)、專案中的使用者場景使用場景
13)對分散式架構的瞭解,如分散式儲存 分散式快取 分散式計算
14)談談對阿里的哪些開源專案有所瞭解?
15)對淘寶技術是否有了解?
16)對其杭州資訊平臺事業部其主要業務是否瞭解(其主要是java方面的開發,另可以重點關注看看工作流引擎)
二面主要問題如下:
1)首先仍然是先自我介紹
2)有過競賽經歷?獎項?專業排名?平時都看些什麼書籍?是否參加了學校社團活動?哪個部門?主要工作?時間安排?
3)對哪些技術最熟悉最擅長?我說的是java WEB框架那些,然後就開始問java了
4)介面和抽象類的區別 實現有哪些不同?
5)序列化如何實現?用程式碼描述。writeObject? objectWrite?ObjectOutputStream.writeObject(). ObjectInputStream.readObject()
6)IO框架 集合框架的描述。如何判斷檔案是否存在?如何讀取一個目錄下面的所有檔案和子目錄?程式碼描述。
7)廣度優先遍歷目錄下面的所有子目錄和檔案?程式碼實現?List和Map的不同?HashMap的實現?如何解決雜湊衝突?
8)多執行緒機制?執行緒休眠10秒?sleep()與wait()的區別。
9)緩衝流buffer的用途?原理?
10)linux下如何檢視CPU負載和IO埠的使用情況?如何建立目錄?如何搜尋一個指定的字元?
11)考察資料庫的sql操作,給定了一個具體的業務表,如何對不同型別的資料進行統計。
12)事務的概念?髒讀?如何避免?如何在程式碼中實現?
13)sql程式碼中如何使用如何定義一個事務?應該是如何定義一個事務的隔離級別?
14)專案中遇到的問題?解決方式?
15)SSI框架?spring如何定義一個bean?程式碼描述。Bean的生命週期?Bean的scope?
16) 對淘寶技術架構的瞭解?從哪裡獲取到的?自己今後的職業規劃?技術發展方向?
17)最後,對來杭州和阿里工作的意向?然後詢問我自己有啥想問的?談了下 資訊平臺事業部的主要業務?工作流和ERP?
總體上來看,還是比較注重基礎的 尤其是java的多執行緒和併發安全性及資料庫相關,另外對有關開源框架的具體底層實現需要多閱讀原始碼並進行總結。
下面是網上參考到的阿里java面試題目,同樣作為借鑑。
-################################################################################
1 hashmap,hashtable區別。
2 是否瞭解過hashmap的原始碼?
3 jvm相關,主要是記憶體分配的過程,何時出發GC,用什麼工具或者命令來進行監控?
4 類載入,類隔離機制。
5 spring的ioc,aop,事物,然後順便提到了資料庫的事物,兩階段提交,資料庫鎖的級別,MySQL資料庫鎖的特殊之處(頁級鎖)
6 java執行緒池裡面的arrayblockingqueue,linkedblockingqueue的用途和區別。
7 設計模式相關,主要講解用途
8 如何保證資料庫叢集中ID的唯一性,假設每秒鐘併發20萬次。
9 設計十萬併發級別的網站後臺,如何計算使用的ecs數目(雲伺服器(Elastic Compute Service, ECS 如阿里ECS)是一種處理能力可彈性伸縮的計算伺服器,
基於BGP最優路由演算法構架多線網路,雲伺服器可以幫助構建更加安全穩定的應用)。
10 memcached和redis的異同和用途。
11 nosql資料庫相關,主要講了mongodb
12 10G的整數中,取出最大的一個(不光是使用高效的排序演算法,還需要考慮記憶體大小)
13 synchronized,volatile,可重入鎖的用途和優缺點。
14 java nio相關核心的api基本瞭解和應用
15 一致性hash
16 在一個大系統中存在哪些單點失效的問題
17 hadoop優化相關
#########################################################################
一面,主要注重基礎,問得很深很廣,壓力面試。
1.hashmap、concurrenthashmap底層實現和區別
2.spring框架的原理
3.如何寫一個orm框架
4.hibernate一級快取和二級快取,hibernate其他快取
5.hibernate事務傳播行為種類
6.springmvc原理
7.restful的好處
8.restful有幾種請求,表單如何提交put請求
9.web中安全性問題的考慮,如何防止
10.web系統整體架構
11.hibernate如何實現宣告式事務
12.java併發包
13.volatile
14.平常都看哪些書
15.spring底層資料結構
16.如何進行反射,如何提高反射的效能
17.如何實現java的代理,為什麼需要實現介面
18.TCP協議三次握手
19.springmvc用過哪些註解
20.springAOP可以使用哪些代理,有什麼區別
21.為什麼要分三層
22.mybatis與hibernate有什麼區別,為什麼不用hibernate直接寫sql語句?
這面沒有準備好,廣度和深度壓力很大,建議大家多看看三大框架原始碼、原理,併發包。
二面注重於專案
1.什麼是restful web service?
2.併發集合包?
3.專案中使用了哪些資料結構?
4.TCP中斷連線四次揮手?
5.MD5加鹽
6.https
7.支付寶介面開發
8.知道哪些鎖,有什麼區別?
9.依舊JDK原始碼
10.專案遇到什麼問題,怎麼解決?
11.JDK1.8有什麼新特性?
也許是覺得一面已經問了很多了,這面又答得比較不錯,20分鐘就結束了,30分鐘出了結果。
三面聊人生
leader人very nice,給了一些建議,可能是覺得技術差不多,這面基本沒怎麼問技術,主要是職業發展、IBM的實習內容之類,我想大家可能也都有自己的想法,18分鐘。
hr面聊成長經歷:聊了一下對B2B的認識和自己的技術成長曆程。
###################################################################################
關注我:私信回覆“資料”獲取往期Java高階架構資料、原始碼、筆記、視訊
Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、
高併發等架構技術
1.Java基礎
ArrayList,HashMap等集合框架類,重要基礎類String等的處理。HashMap的底層儲存結構等。
(也可以順帶考察下對介面,繼承,過載重寫的基本理解;以及異常處理的注意事項)。
2. 資料結構與演算法
常見的查詢演算法及時間複雜度。
常見的排序演算法及時間複雜度。
比較重要的資料結構,如連結串列,佇列,棧的基本理解及大致實現。
3. 多執行緒問題
1)執行緒安全問題。 HashMap 是否執行緒安全,為何不安全。 ConcurrentHashMap,執行緒安全,為何安全。底層實現是怎麼樣的。
2)J.U.C下的常見類的使用。 ThreadPool的深入考察; BlockingQueue的使用。(take,poll的區別,put,offer的區別);原子類的實現。
3)各種常見鎖使用
如果上面這些掌握很好,還可以看看更深一點的 False Sharing,Cache Line,可見性與原子性等;
4. JVM
Java記憶體分代模型,GC演算法,JVM常見的啟動引數; CMS演算法的過程。
這塊回答較好,也可以只是看畢玄的Java分散式開發或網上文章的學習, 可以結合JVM啟動引數常見配置,jstat等命令,看下動手能力,意願;以及實際線上問題排查。
5.Linux使用與問題分析排查
1). grep,awk,sed; 是否自己寫過shell指令碼;
2). 常見的cpu load過高,us過高,一般是什麼問題。引申出是否用過top,jstat,jstack等。
常見的記憶體問題一般有哪些。 引申出是否用過free,top, jmap等。
6. 框架使用
spring aop的底層實驗原理。 aop與cglib,與asm的關係。
spriong ioc的生命週期,(init-method,intilizingbean介面方法afterPropertiesSet的先後順序)等。
Hibernate對一二級快取的使用,Lazy-Load的理解;
7. 資料庫相關:
1. mysql儲存引擎中索引的實現機制;
2.資料庫事務的幾種粒度;
3.行鎖,表鎖;樂觀鎖,悲觀鎖
8.網路協議:
HTTP協議;
HTTPS協議,SSL協議及完整互動過程;
9. redis
redis,memcache底層客戶端使用一致性Hash,看是否瞭解;
redis的事件驅動多路複用底層實現;引申到NIO程式設計, 看對Netty,或mina是否瞭解。
如果候選者同時用過memcache,redis,看下是否瞭解兩者在使用場景上的區別。以考察使用深度,以及是否有好奇精神。
10. 設計模式與重構
常見設計模式,如singlen,factory,abstract factory,strategy,chain,adaptor,decorator,composite,template,absever等。
重構:重構書籍
11. 學習與進取心
最近上過上哪些技術站點; 最近在看哪些書。
12. 抗壓能力及抗壓意願
瞭解加班情況,瞭解是否願意在一段時間996等;
13 穩定性考察
瞭解家庭婚姻狀況, 瞭解購房及居住地,籍貫情況,瞭解目前薪資,評估穩定性;
=======
1.程序和執行緒的區別
2.什麼叫執行緒安全?舉例說明
3.OSI七層模型,包括TCP,IP的一些基本知識
4.資料庫的鎖
5.DFS,BFS演算法
6.還有一些諸如collection framework的Java基礎
7、http中,get post的區別
其他的面試,感覺問的很有代表性:
第一面(只記得這麼多了)
1、筆試題第四題實現又口述了下
2、有個每秒鐘5k個請求,查詢手機號所屬地的筆試題(記得不完整,沒列出),如何設計演算法?請求再多,比如5w,如何設計整個系統?
3、比較熟悉什麼技術?我說jvm和oracle,就讓我畫jvm的體系結構,畫了之後說各個部分的職責,並扯到執行期優化。
第二面(沒有技術細節,都是泛泛的,但是我回答的比較保守,只覺得能滔滔不絕的說上半小時才敢說看過或瞭解)
1、是否願意去杭州
2、熟悉各種技術框架麼?原始碼讀過麼?
3、資料庫瞭解什麼?mysql瞭解麼
4、前臺技術,看我用的ExtJS,就問是否瞭解JQuery
5、進現在的公司,覺得對技術是否有提升?
第三面,此面沒有技術問題
第四面HR(感覺這面問題回答的有點扯,畢竟是這麼幾年來首次面HR,之前面過2、3個公司,要麼很早就掛了,要麼感覺流程太長,自己不願意面下去)
1、願意去杭州發展麼?我說要考慮,hr就問主要考慮什麼問題
2、從技術角度來說,你覺得你跟你同學比怎麼樣
3、你的父母怎麼看待你的
1、jvm效能調優都做了什麼
2、高併發情況下,我們系統是如何支撐大量的請求的
3、叢集如何同步會話狀態
4、負載均衡的原理
5、資料庫事務屬性
6、二叉樹的遍歷演算法
7、hashtable和hashmap的區別
8、併發、同步的介面或方法
9、string、stringbuilder、stringbuffer區別
10、https處理的一個過程,對稱加密和非對稱加密
11、執行緒的幾種狀態
12、瞭解手機開發麼
13、個人優勢
14、與同事溝通的時候,如果遇到衝突瞭如何解決
15、工作中覺得哪方面欠缺?
16、有問題要問麼?
17、期望薪水
18、為什麼要離開現在的公司
* struts1.2和webwork的區別
* hibernate和ibatis的區別
* spring工作機制,IOC容器
* servlet的一些相關問題
* webservice相關
* java基礎:jvm,HashSet等等
* 考察學習新技術的能力
其他:
1. 店鋪相關的業務特點決定,有前後端知識是加分項。 如果候選者熟悉javascript。
可以考察:
1) 前後端優化的基本常識,比如js放在後面不阻塞等;原生js的理解,正則,時間冒泡等。
2)firebug,fiddle等除錯工具;
3)如果是基本使用,看下ext框架,jquery等熟悉程度。jquery外掛機制,sizzle選擇器。
如果以上都不錯,可以再深入考察
1)作用域鏈, 閉包的理解。
2)看下是否瞭解最新的技術。 augularJS, nodejs,cmd規範,amd規範等。
阿里HR面相關問題分享如下:
1、為什麼選擇該部門?因為在校招個人資訊的開放問題中,有一個問題是:你最期望在阿里巴巴實習的部門或專案是什麼?請介紹下你對該部門的瞭解和希望實習的原因?而我只是寫了個部門名稱,並未展開說明,所以hr才有此一問。
2、之前有參加過其他公司的招聘嗎?為什麼沒有通過?
3、阿里實習招聘被拒的原因?什麼問題沒有回答好?對該問題下來自己有無總結?
4、對阿里的印象或者同學中的評價?
5、參與的課外活動?社團?除了學習,有其他的活動嗎?
6、為什麼選擇讀研?讀研和本科的不同?讀研後最大的不同是?
7、問有沒有實習經歷或者工作經驗 怎麼看待?可否提前去實習?
8、最近有沒有自己感覺沮喪的事情?談一談。最近遇到最困難的事情是?
9、為什麼選擇去杭州工作?
10、本週結束內推流程,8月15號前出結果通知。最後,是否有啥想問的?
整體上感覺hr態度還是很不錯的,相互交流的還挺輕鬆。
主要用到的技術棧總結:
關注我:私信回覆“資料”獲取往期Java高階架構資料、原始碼、筆記、視訊
Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、
高併發等架構技術
架構師築基專題:
開源框架解析專題:
高效能架構專題:
微服務架構專題:
團隊協作開發專題:
B2C專案實戰:
併發程式設計專題:
最後送波福利。現在加群即可獲取Java工程化、高效能及分散式、高效能、高架構、zookeeper、效能調優、Spring、MyBatis、Netty原始碼分析和大資料等多個知識點高階進階乾貨的直播免費學習許可權及相關資料,群號:835638062 點選連結加入群聊【Java高階架構學習交流】:https://jq.qq.com/?_wv=1027&k=5S3kL3v