好獵頭網(wǎng)-中高級(jí)人才獵頭網(wǎng)站!服務(wù)熱線:400-1801-668 好獵頭   |   登錄 注冊(cè)

      阿里巴巴java研發(fā)工程師沈陽(yáng)面試經(jīng)歷分享

      添加時(shí)間:2017-11-27 00:00:00
      瀏覽次數(shù): 0

      職位類(lèi)型:Java研發(fā)工程師
      面試地點(diǎn):沈陽(yáng)
      招聘公司:阿里巴巴

      昨天中午接到阿里巴巴的面試通知,心中喜憂參半,喜的是終于能夠有機(jī)會(huì)進(jìn)入阿里巴巴,憂的事自己真是一點(diǎn)準(zhǔn)備都沒(méi)有,完全沒(méi)有信心啊~!但是既然機(jī)會(huì)已經(jīng)來(lái)了,我還是要去試一試的。

      今天上午9點(diǎn)到了裕寧酒店在等待區(qū)沒(méi)等多久就被領(lǐng)去面試了。阿里的一面是在大廳中分組一對(duì)一單面的。面試我的是一個(gè)二十七八歲的帥哥,面試過(guò)程也很友善。進(jìn)去后,他首先看了我的簡(jiǎn)歷,然后問(wèn)我能不能說(shuō)一下自己的特長(zhǎng)優(yōu)勢(shì)什么的(都沒(méi)有讓自我介紹)。我簡(jiǎn)單的把在校三年來(lái)自己學(xué)習(xí)的技術(shù)和參加的項(xiàng)目介紹了下,然后拿出了自己準(zhǔn)備好的《項(xiàng)目回顧表》以及自己做的《作品回顧》光盤(pán)和已經(jīng)出版發(fā)行的兩張光盤(pán)給他看。他看了說(shuō)不錯(cuò),然后就問(wèn)我項(xiàng)目的事兒。

      他說(shuō)自己對(duì)3D開(kāi)發(fā)不太了解,然后問(wèn)我感覺(jué)在做《山海關(guān)虛擬博物館》的時(shí)候有沒(méi)有什么技術(shù)難點(diǎn)和重點(diǎn)。我說(shuō)重點(diǎn)是在尋路上(囧,說(shuō)完我心里就哇涼哇涼的了,不應(yīng)該說(shuō)這個(gè)),然后他就問(wèn)我是怎么實(shí)現(xiàn)尋路的,我給他畫(huà)了下場(chǎng)景地圖,然后解釋了下我的做法(主要是用狀態(tài)機(jī))他可能不太滿意,然后問(wèn)我能不能用算法來(lái)描述。我沒(méi)太明白他想要什么,然后他開(kāi)始引導(dǎo)我回答這個(gè)問(wèn)題,先問(wèn)我學(xué)沒(méi)學(xué)過(guò)圖論,我說(shuō)在數(shù)據(jù)結(jié)構(gòu)和離散數(shù)學(xué)中學(xué)過(guò),然后我明白了他想要什么了,我說(shuō)可以用圖存儲(chǔ)各個(gè)目標(biāo)點(diǎn),然后通過(guò)判斷各點(diǎn)之間的連通性來(lái)判斷點(diǎn)是否可以到達(dá),可以通過(guò)深度優(yōu)先搜索來(lái)完成(說(shuō)完我心里又是哇涼的,根本就沒(méi)準(zhǔn)備圖這一塊兒的數(shù)據(jù)結(jié)構(gòu))。

      然后他說(shuō)讓我寫(xiě)下深度優(yōu)先搜索程序(= =,這個(gè)鄙視我吧,我真忘記了)。我想了會(huì)兒說(shuō)記不清楚了,他問(wèn)我圖是怎么存儲(chǔ)的,我說(shuō)用臨接表和臨接矩陣,然后他讓我給他畫(huà)下,我就畫(huà)完(這些還是會(huì)的)。他說(shuō)再試試呢,我思考了下說(shuō)記不清了(我怕寫(xiě)完他在讓我寫(xiě)廣度程序的和優(yōu)化查找,這塊兒真心沒(méi)準(zhǔn)備)。然后他讓我寫(xiě)下自己用過(guò)的設(shè)計(jì)模式,我說(shuō)有策略模式、單例模式、工廠模式、狀態(tài)模式、適配器模式。然后他讓我寫(xiě)下單例模式,我用了最簡(jiǎn)單的方式,static變量new自身對(duì)象。他說(shuō)有沒(méi)什么問(wèn)題,比如變量被賦值呢。我說(shuō)在C#中可以用訪問(wèn)控制符禁止set,在java中也可以用靜態(tài)方法來(lái)屏蔽。他又問(wèn)那你的類(lèi)被別的類(lèi)實(shí)例化,我說(shuō)構(gòu)造方法我用private的。(總之是沒(méi)寫(xiě)全,寫(xiě)全他就不會(huì)問(wèn)了。)

      設(shè)計(jì)模式談完,他說(shuō)來(lái)說(shuō)下你的網(wǎng)站項(xiàng)目吧,我的簡(jiǎn)歷里有寫(xiě)“系統(tǒng)架構(gòu)”,他讓我解釋下,我就畫(huà)了下MVC圖,jsp頁(yè)面作為視圖,servelt作為控制層,然后建立model,建立service和dao,以及他們的作用。他說(shuō)SSH和這些有什么不同嗎?我說(shuō)Struts2代替了servlet,hibernate代替了dao,spring貫穿他們,注入對(duì)象。他說(shuō)那你說(shuō)下spring的核心思想吧。我說(shuō)主要是IoC,AOP,DI。他說(shuō)說(shuō)下IoC和AOP吧,我提到了IoC控制反轉(zhuǎn),通過(guò)配置文件將對(duì)象注入到程序中,他說(shuō)你寫(xiě)下配置文件吧(又要寫(xiě),= =,Spring半年沒(méi)搞了早忘了)我說(shuō)平時(shí)都是copy,忘記了。他可能以為我不會(huì)spring,然后問(wèn)我那你都知道各個(gè)元素的作用嗎,我說(shuō)知道。(但是真心的忘記bean標(biāo)簽中都有哪些了,我發(fā)誓看見(jiàn)之后都知道有什么用,抓狂啊。)

      SSH告一段落(回答的太爛了,這些初級(jí)的學(xué)者都會(huì),最主要的是很多都沒(méi)記住),我有一個(gè)項(xiàng)目寫(xiě)的是已經(jīng)上線了,他讓我寫(xiě)下那個(gè)URL,我有點(diǎn)蒙,就寫(xiě)了域名,他說(shuō)你們就用這個(gè)嗎,我不知道他想要什么,我就又寫(xiě)了127.0.0.1:port,他問(wèn)我用戶(hù)可以訪問(wèn)?(當(dāng)我是小白了- - ,哎前面回答的太爛了)我說(shuō)當(dāng)然不可以,我們的申請(qǐng)的IP是172.168.XX.XX:80這個(gè)是給用戶(hù)的。他說(shuō)服務(wù)器用的什么,我說(shuō)tomcat,他問(wèn)tomcat的端口號(hào)在哪里配置,我說(shuō)在web.xml(說(shuō)順嘴了,其實(shí)我知道在server.xml中配置)。他說(shuō)都可以配置什么,我說(shuō)可以配置端口號(hào),虛擬主機(jī)。他說(shuō)還有嗎,我說(shuō)還可以配置一個(gè)監(jiān)聽(tīng)端口號(hào)。他說(shuō)默認(rèn)的都多少,我說(shuō)8080,他問(wèn)我另外一個(gè),我說(shuō)不記得了。然后他讓我寫(xiě)下JSP頁(yè)面的標(biāo)準(zhǔn)頭部是什么。我把page標(biāo)簽寫(xiě)上去了,我提到了頁(yè)面編碼,他問(wèn)我用什么編碼我說(shuō)UTF-8,他說(shuō)還知道其他的編碼嗎,我說(shuō)還有GBK。然后他問(wèn)我UTF-8和GBK的區(qū)別,我只說(shuō)了表面的,他讓我從計(jì)算機(jī)組成原理的角度說(shuō)下GBK和UTF-8,我說(shuō)我們專(zhuān)業(yè)沒(méi)開(kāi)計(jì)算機(jī)組成原理,然后他看了下我的簡(jiǎn)歷。然后讓我寫(xiě)下平時(shí)都看什么書(shū),我大概寫(xiě)了下。最后他問(wèn)我有什么要問(wèn)他的嗎,我讓他點(diǎn)評(píng)了下。點(diǎn)評(píng)了啥就不說(shuō)了,反正都在意料之中。

      總結(jié):今天阿里的面試非常爛,問(wèn)題很簡(jiǎn)單,但是因?yàn)楹芫脹](méi)搞Java了(有半年多了)所以很多都忘記了。基礎(chǔ)太不扎實(shí),這也是很多應(yīng)屆生的缺點(diǎn)吧。想要進(jìn)大中型公司應(yīng)該具備以下素質(zhì),留給各位準(zhǔn)備面試和將來(lái)面試的人吧。

      1.數(shù)據(jù)結(jié)構(gòu),這個(gè)不是懂了就行,剛學(xué)完數(shù)據(jù)結(jié)構(gòu),各種算法自己也可以很快寫(xiě)出來(lái)的,但是很久沒(méi)寫(xiě)了都忘記了。數(shù)據(jù)結(jié)構(gòu)這個(gè)東西必須能信手拈來(lái),隨手就能寫(xiě)出各種樹(shù)、圖的遍歷以及排序、查找等算法,以及二叉樹(shù),B-樹(shù)、堆的概念和程序(最好做到能當(dāng)場(chǎng)寫(xiě)程序)。

      2.明白Java API的源代碼實(shí)現(xiàn),比如LinkedList和ArrayList,不只是數(shù)據(jù)結(jié)構(gòu)的區(qū)別(這個(gè)大家都清楚)還要能從源代碼的角度,比如線程安全性,內(nèi)部擴(kuò)充方式,每次擴(kuò)充的長(zhǎng)度等等來(lái)表達(dá)。(你可以想想自己能不能說(shuō)出String、StringBuffer、StringBuilder的區(qū)別;HashTable、HashMap、TreeMap的區(qū)別呢?屬性類(lèi)的安全性?等等,別查文檔,也別說(shuō)你知道,面試的時(shí)候不會(huì)聽(tīng)你啰嗦的,就說(shuō)重點(diǎn)區(qū)別)。

      3.設(shè)計(jì)模式,要明白各個(gè)設(shè)計(jì)模式的優(yōu)缺點(diǎn),應(yīng)用場(chǎng)景,最好能說(shuō)出哪些框架應(yīng)用了這些設(shè)計(jì)模式。對(duì)于簡(jiǎn)單的設(shè)計(jì)模式,如單例等可能會(huì)被現(xiàn)場(chǎng)寫(xiě)。

      4.SSH框架,只要搞Java的都會(huì)被問(wèn)這三個(gè)框架的很多東西,Spring的IoC,DI,AOP,配置;Struts2的創(chuàng)建過(guò)程,F(xiàn)ilter,配置;Hibernate的O/R Mapping,映射的配置,樂(lè)觀鎖、悲觀鎖等等。緊緊在項(xiàng)目中用還不行,最好要明白內(nèi)部原理。

      5.操作系統(tǒng)的一些知識(shí),筆試的時(shí)候有考到LRU算法(差一點(diǎn)就忘了)。

      總之大公司考的范圍很廣,絕大部分都學(xué)過(guò),但是很多我們?cè)趯W(xué)校中學(xué)一次就很可能不會(huì)再用(比如頁(yè)面置換算法,存儲(chǔ)過(guò)程等,學(xué)生項(xiàng)目不會(huì)涉及這么復(fù)雜底層的東西)。還有就是平時(shí)我們依賴(lài)IDE慣了,很多我們知道的東西,比如標(biāo)簽都有哪些屬性什么的,當(dāng)場(chǎng)寫(xiě)我們可能就寫(xiě)不出來(lái)了(比如各種配置文件,使用自動(dòng)提示慣了,讓自己寫(xiě)都不會(huì)了,這是平時(shí)注意自己敲吧)。

      感想:其實(shí)阿里巴巴的技術(shù)面反映出來(lái)的最主要的問(wèn)題不是自己的技術(shù)問(wèn)題,而是自己真正想要做什么。

      今天問(wèn)的這些問(wèn)題,如果放在大三上學(xué)期問(wèn)的話,我能很自如的答出來(lái),但是從專(zhuān)業(yè)實(shí)習(xí)之后自己一直就在研究Unity3D和Photon,這些很久都沒(méi)看了,忘了很自然。自己現(xiàn)在真正應(yīng)該思考的是到底想不想要做Java開(kāi)發(fā),做Java開(kāi)發(fā)的話就要用SSH框架,自己又不太喜歡基于SSH框架的網(wǎng)站開(kāi)發(fā)。(= =真是個(gè)糾結(jié)的問(wèn)題,男怕入錯(cuò)行,如果你了解的也比較多還是慎重考慮吧,雖然招聘Java的很多,但是面試Java的比招聘的還多,Java發(fā)展了這么多年,想要說(shuō)你精通Java要有一定實(shí)力哦,要不然隨便一個(gè)細(xì)節(jié)問(wèn)題,比如Java反射、序列化、反序列化等都可能問(wèn)死你,不是你不行,是這個(gè)太細(xì)了)有側(cè)重的復(fù)習(xí)面試很重要。想要深入游戲開(kāi)發(fā),又怕自己沒(méi)學(xué)過(guò)C 和圖像處理算法和別人差距太大。這幾天要反思下。