爲記錄阿里的電面經歷,特與你們分享,崗位是JAVA研發工程師。
一面主要問題以下:javascript
1)首先自我介紹java
2)數據結構算法的基本問題,如排序算法,二叉樹遍歷,後序遍歷非遞歸,圖的最短路徑問題node
3)對一個數組進行絕對值排序的算法mysql
4)java中hashmap的底層實現jquery
5)java中垃圾回收機制GC原理等linux
6)介紹本身的項目,數據庫中用到的數據結構數據模型,死鎖的概念(問的應該是數據庫的死鎖),如何避免死鎖?web
7)樂觀鎖和悲觀鎖?面試
8)一致性hash算法redis
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的認識和本身的技術成長曆程。
1.Java基礎
ArrayList,HashMap等集合框架類,重要基礎類String等的處理。HashMap的底層存儲結構等。
(也能夠順帶考察下對接口,繼承,重載重寫的基本理解;以及異常處理的注意事項)。
常見的查找算法及時間複雜度。
常見的排序算法及時間複雜度。
比較重要的數據結構,如鏈表,隊列,棧的基本理解及大體實現。
1)線程安全問題。 HashMap 是否線程安全,爲什麼不安全。 ConcurrentHashMap,線程安全,爲什麼安全。底層實現是怎麼樣的。
2)J.U.C下的常見類的使用。 ThreadPool的深刻考察; BlockingQueue的使用。(take,poll的區別,put,offer的區別);原子類的實現。
4)各類常見鎖使用
若是上面這些掌握很好,還能夠看看更深一點的 False Sharing,Cache Line,可見性與原子性等;
Java內存分代模型,GC算法,JVM常見的啓動參數; CMS算法的過程。
這塊回答較好,也能夠只是看畢玄的Java分佈式開發或網上文章的學習, 能夠結合JVM啓動參數常見配置,jstat等命令,看下動手能力,意願;以及實際線上問題排查。
5.Linux使用與問題分析排查
1). grep,awk,sed; 是否本身寫過shell腳本;
2). 常見的cpu load太高,us太高,通常是什麼問題。引伸出是否用過top,jstat,jstack等。
常見的內存問題通常有哪些。 引伸出是否用過free,top, jmap等。
spring aop的底層實驗原理。 aop與cglib,與asm的關係。
spriong ioc的生命週期,(init-method,intilizingbean接口方法afterPropertiesSet的前後順序)等。
Hibernate對一二級緩存的使用,Lazy-Load的理解;
2.數據庫事務的幾種粒度;
3.行鎖,表鎖;樂觀鎖,悲觀鎖
8.網絡協議:
HTTP協議;
HTTPS協議,SSL協議及完整交互過程;
redis,memcache底層客戶端使用一致性Hash,看是否瞭解;
redis的事件驅動多路複用底層實現;引伸到NIO編程, 看對Netty,或mina是否瞭解。
若是候選者同時用過memcache,redis,看下是否瞭解二者在使用場景上的區別。以考察使用深度,以及是否有好奇精神。
常見設計模式,如singlen,factory,abstract factory,strategy,chain,adaptor,decorator,composite,template,absever等。
重構:重構書籍
最近上過上哪些技術站點; 最近在看哪些書。
瞭解加班狀況,瞭解是否願意在一段時間996等;
13 穩定性考察
瞭解家庭婚姻情況, 瞭解購房及居住地,籍貫狀況,瞭解目前薪資,評估穩定性;
=======
1.進程和線程的區別
2.什麼叫線程安全?舉例說明
3.OSI七層模型,包括TCP,IP的一些基本知識
4.數據庫的鎖
5.DFS,BFS算法
6.還有一些諸如collection framework的Java基礎
七、http中,get post的區別
其餘的面試,感受問的頗有表明性:
第一面(只記得這麼多了)
一、筆試題第四題實現又口述了下
二、有個每秒鐘5k個請求,查詢手機號所屬地的筆試題(記得不完整,沒列出),如何設計算法?請求再多,好比5w,如何設計整個系統?
三、比較熟悉什麼技術?我說jvm和oracle,就讓我畫jvm的體系結構,畫了以後說各個部分的職責,並扯到運行期優化。
第二面(沒有技術細節,都是泛泛的,可是我回答的比較保守,只以爲能口若懸河的說上半小時纔敢說看過或瞭解)
一、是否願意去杭州
二、熟悉各類技術框架麼?源碼讀過麼?
三、數據庫瞭解什麼?mysql瞭解麼
四、前臺技術,看我用的ExtJS,就問是否瞭解JQuery
五、進如今的公司,以爲對技術是否有提高?
第三面,此面沒有技術問題
第四面HR(感受這面問題回答的有點扯,畢竟是這麼幾年來首次面HR,以前面過二、3個公司,要麼很早就掛了,要麼感受流程太長,本身不肯意麪下去)
一、願意去杭州發展麼?我說要考慮,hr就問主要考慮什麼問題
二、從技術角度來講,你以爲你跟你同窗比怎麼樣
三、你的父母怎麼看待你的
一、jvm性能調優都作了什麼
二、高併發狀況下,咱們系統是如何支撐大量的請求的
三、集羣如何同步會話狀態
四、負載均衡的原理
五、數據庫事務屬性
六、二叉樹的遍歷算法
七、hashtable和hashmap的區別
八、併發、同步的接口或方法
九、string、stringbuilder、stringbuffer區別
十、https處理的一個過程,對稱加密和非對稱加密
十一、線程的幾種狀態
十二、瞭解手機開發麼
1三、我的優點
1四、與同事溝通的時候,若是遇到衝突瞭如何解決
1五、工做中以爲哪方面欠缺?
1六、有問題要問麼?
1七、指望薪水
1八、爲何要離開如今的公司
其餘:
能夠考察:
1) 先後端優化的基本常識,好比js放在後面不阻塞等;原生js的理解,正則,時間冒泡等。
2)firebug,fiddle等調試工具;
3)若是是基本使用,看下ext框架,jquery等熟悉程度。jquery插件機制,sizzle選擇器。
若是以上都不錯,能夠再深刻考察
1)做用域鏈, 閉包的理解。
2)看下是否瞭解最新的技術。 augularJS, nodejs,cmd規範,amd規範等。
最後是我總結的Java方面的架構資料,有須要的朋友能夠直接加羣828545509免費獲取,同時羣內有一羣志同道合的人,和開發多年的架構師大牛在線答疑解惑。
點擊連接加入羣聊【Java高級架構師學習羣】:https://jq.qq.com/?_wv=1027&k...