阿里面試的經歷(Java崗總結),2020目標阿里的你準備好了嗎?細節如下

爲記錄阿里的電面經歷,特與大家分享,崗位是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的認識和自己的技術成長曆程。

###################################################################################

1.Java基礎

ArrayList,HashMap等集合框架類,重要基礎類String等的處理。HashMap的底層存儲結構等。

(也可以順帶考察下對接口,繼承,重載重寫的基本理解;以及異常處理的注意事項)。

2. 數據結構與算法

常見的查找算法及時間複雜度。

常見的排序算法及時間複雜度。

比較重要的數據結構,如鏈表,隊列,棧的基本理解及大致實現。

3. 多線程問題

1)線程安全問題。 HashMap 是否線程安全,爲何不安全。 ConcurrentHashMap,線程安全,爲何安全。底層實現是怎麼樣的。

2)J.U.C下的常見類的使用。 ThreadPool的深入考察; BlockingQueue的使用。(take,poll的區別,put,offer的區別);原子類的實現。

4)各種常見鎖使用

如果上面這些掌握很好,還可以看看更深一點的 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)看下是否瞭解最新的技術,哪些最新的技術呢?這裏我給大家看看,目前網上沒有系統的全面的併發編程學習大綱,我搜集了很多資料總結出來一個最全面的學習大綱:

JVM性能調優

性能一直是讓程序員比較頭疼的問題。當系統架構變得複雜而龐大之後,性能方面就會下降,特別是阿里巴巴這樣的一線互聯網公司最爲注重,因此想進入阿里,性能優化一定是要去深入學習與理解的一環,本屌在性能優化這一塊雖然不能算專家,也可以自信的說是精通了(注意:自己的簡歷上一定不要寫精通xxxx,要不然面試官會懟死你。好在小編這一塊還算自信)

網絡編程和高效IO

Tomcat進階解析

MySQL深度優化,Linux基礎及進階以及設計模式實戰

開源框架解析專題

閱讀、分析源碼是程序員最基本的碼代碼能力也是碼農的根本所在,學習經典源碼中所用到的經典設計思想及常用設計模式,能夠幫你瞭解大牛是如何寫代碼的,從而吸收大牛的代碼功力。在阿里面試中,MyBatis,Spring等框架的底層原理是經常會被問到的

高性能架構專題

阿里巴巴有很多大團隊,這種大團隊裏有很多小團隊,到小團隊之後,做的業務都不相同,如果想立足成爲一線互聯網公司中的萬能選手,最主流的分佈式架構中有很多知識都是必須要去了解與學習的。並且在阿里面試過程中,面試官會問到實際應用場景的問題:比如微服務化、用戶量、併發量、業務複雜度以及可擴展程度等,這裏不多贅述。小編提供一個分佈式架構的學習思路也是自己目前還在學習中的體系:

微服務專題

微服務是現在互聯網架構技術中最火熱的話題之一,也是本屌目前正在學習研究的方向。在阿里面試過程中,面試官很少會問到關於微服務相關的問題。但作爲一名開發者,一名有技術夢想的程序員微服務架構是現在必須要去了解的主流技術

(1)springboot,springcould,Docker虛擬化技術

(2)dubbo應用及源碼解讀,RPC原理

可以Si Xin即可免費領取。

大型電商項目實戰

現在給大家分享分享幾個月來講解的一些架構視頻資料還有一些架構文檔以及電子書。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章