⑴ 2019阿里前端面試題
干開發也有不少年頭了,其實每個開發人員應該都有總結和寫技術點的習慣,俗言說得好「好記性不如一個爛筆頭」。
我是一枚女程序猿,很少發文章,並且我深知這是不對的,不管好與壞分享出來大家一起討論,總會把不好的變成好的,窄路變成寬路。哎,可能個人使然,但是發表出來的還是很少,都是在自己的工作筆記里每次記錄著技術心得和一些總結。總覺得發表出來萬一不好,被人取笑了怎麼辦。總之是一個愛多想的女程序員。
最近我以前一個同事在找工作,她面試了阿里,然後跟我聊了聊,說讓我多發表自己的文章,建立自己的社區,最好再多參與一些開源項目或者在git上多建一些自己的項目。這話我以前也聽過,但是就是執行上不徹底啊。
這不,我現在必須把自己以前寫好的或者接下來的每一點技術總結也好 經驗總結也好,都想寫出來,就當不為別人看,為自己也行!
話不多說了,她給我發了一道她面試阿里的題。我自己做了做。這是我目前想到的思路和寫法。歡迎有更好更優的方案發出來。我也可以學習。謝謝~
題目:
篩選筆試題 (請在半小時內完成):
var arr = [
{name:'小米1', value: 1, type: 2, date: '2018-06-07T08:00:01.589Z' },
{name:'錘子T1', value: 1, type: 2, date: '2018-06-07T08:10:01.589Z' },
{name:'小米2', value: 1, type: 4, date: '2018-06-07T20:00:01.589Z' },
{name:'小米2', value: 4, type: 4, date: '2018-06-07T20:10:21.189Z' },
{name:'小米4', value: 1, type: 4, date: '2018-06-07T08:00:01.560Z' },
{name:'小米4', value: 2, type: 4, date: '2018-06-07T08:10:31.584Z' },
{name:'小米6', value: 1, type: 3, date: '2018-06-07T08:00:01.589Z' },
{name:'小米5s',value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
{name:'錘子T2', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
{name:'錘子T1', value: 4, type: 4, date: '2018-06-07T08:06:01.589Z' },
{name:'魅藍note5', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
{name:'魅藍note2', value: 5, type: 4, date: '2018-06-02T08:07:01.589Z' },
{name:'魅藍note2', value: 6, type: 4, date: '2018-06-07T08:00:01.589Z' },
{name:'魅藍note3', value: 1, type: 4, date: '2018-06-05T08:00:01.589Z' },
{name:'魅藍note', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
{name:'oppor9', value: 7, type: 4, date: '2018-06-04T08:04:01.588Z' },
{name:'華為p9', value: 1, type: 4, date: '2018-06-02T08:00:01.577Z' },
{name:'華為p9', value: 2, type: 4, date: '2018-06-07T08:00:01.110Z' },
{name:'華為p10', value: 1, type: 1, date: '2018-06-07T08:00:01.534Z' }
];
/**
* 請用您認為最優化的方式,將arr中的type為4的數據過濾出來,
* 然後按相同的 name + date(按天)合並value(value累加),
* 然後按 value 降序(從大到小)排序,
* 最後每行按照 "${name},${本地日期},售出${sum(value)}部" 的格式,如:"小米2,2017年06月08日,售出5部", 列印(console.log)出來。
* 可以使用第三方js庫,可以使用es6。
* 請在半小時內完成。
要求最後輸出結果樣例如下:
oppor9,2017年06月04日,售出7部
魅藍note2,2017年06月07日,售出6部
魅藍note2,2017年06月02日,售出5部
小米2,2017年06月08日,售出5部
......
*/
function printArray(arr){
}
我的解答:
function printArray(arr){
const res = arr.filter(function(item, index, arr){
item.date = item.date.split('T')[0]
return item.type === 4
})
console.log(res)
const newArr = []
const temp = {}
for(const i in res) {
const key = `${res[i].name}@${res[i].date}`
if (temp[key]) {
temp[key] += res[i].value
} else {
temp[key] = res[i].value
}
}
console.log(temp)
for (const key in temp) {
const tempObj = {}
tempObj.name = key.split('@')[0]
tempObj.date = key.split('@')[1]
tempObj.value = temp[key]
newArr.push(tempObj)
}
console.log(newArr)
function compare(prop) {
return function(a, b){
const value1 = a[prop]
const value2 = b[prop]
return value2 - value1
}
}
newArr.sort(compare('value'))
console.log(newArr)
newArr.forEach((item, index) => {
const printStr = `${item.name},${item.date.split('-')[0]}年${item.date.split('-')[1]}月${item.date.split('-')[2]}日,售出${item.value}部`
console.log(printStr)
})
}
printArray(arr)
我有注意到時間那有點差異,題目數組里給的是2018,讓最後列印出來是2017年,我自己覺得是列印錯了。如果在現場我估計我會再問一下面試官這里是否不一樣。如果真不一樣,程序里在處理一下就行了
好了,此題完結。
⑵ 阿里 qiankun 微前端框架實踐
qiankun ——— 一套完整的微前端解決方案: https://github.com/umijs/qiankun
如圖所示,在qiankun框架中,有主程序與子程序。主程序會留出指定的DOM作為子程序的容器,並且通過主程序里的路由轉發載入子應用。
修改主程序main.js注冊子應用
修改主程App.vue注冊子應用的容器
main.js
Demo: github.com/justworkhar…
與傳統的父子組件通信一樣,父程序通過props向子程序傳遞信息。子程序通過回調函數向父程序傳遞信息。
qiankun框架說白了就是通過在主程中添加一個展示子程序的DOM,經過路由判斷做轉發載入子程序。
⑶ 一個c++的作業題,沒看懂,求解
Java零基礎的小夥伴,我建議看Java的在線教程去學習。
第一:先學習Java的核心庫(JavaSE)
JavaSE的內容包括:環境搭建、基礎語法、面向對象、數組、集合、常用類、IO流、反射機制、網路編程……..
第二:MySQL資料庫
搞定一門資料庫相關的課程,例如:MySQL、Oracle,搞定一個就可以了,目前互聯網公司,例如:京東、阿里等,他們都在使用MySQL,所以建議大家學習MySQL資料庫,小巧輕盈,免費。
由於互聯網公司的項目訪問量比較大,所以一般會搭建資料庫的集群,可以一個資料庫不夠,所以需要搭建資料庫集群,為了應付高並發。(搭建的比較多的時候,免費就很重要了。)
第三:WEB前端
以後從事Java開發,從事JavaEE開發,主要開發的系統結構是B/S結構的,B指的是Browser,S指的是Server。要開發這種系統,B端要會,S端也要精通。WEB前端的學習就是學習B端技術。
包括:HTML 、CSS、JavaScript(JS)、jQuery框架(底層對JS進行了封裝)…
第四:JavaWEB
WEB後端其實可以是很多種不同的編程語言,例如:PHP、C、C++、Java,他們都可以進行WEB後端的開發,我們既然選擇了比較火爆的Java,那麼我們學習的後端一定是基於Java語言實現的。
包括:Servlet、Filter、Jsp、EL、JSTL、MVC架構模式、資料庫連接池(阿里巴巴的Druid連接池)、代理模式(動態代理)。另外後端學習了之後,還要學習一個非同步編程技術AJAX。(完成網頁的局部刷新,AJAX其實不屬於後端,是前端瀏覽器上的程序。)
學習到這里為止,表示Java基本/基礎的技術已經學完了。但是這些最基層的技術在實際的開發中不會使用的,一般為了開發效率,都會使用大量的提前封裝好的框架。
第五:最好能夠停留下來,做一個項目。
這個項目最好能將之前所學全部串起來。(對以前的知識點進行鞏固。)
這個項目最好是基於:Servlet + Jsp+AJAX+jQuery+MySQL….
在這個項目的開發過程中:大家一定要記住,目前比較好的項目自動構建工具:Maven是一定要精通的。還有一個就是團隊協作開發:Git/SVN是一定要會用的。(目前使用Git比較多一些。)
第六:學習高級框架
Spring、SpringMVC、MyBatis(持久層框架,這個框架互聯網公司使用比較多,因為互聯網項目需要進行SQL優化,MyBatis的SQL優化很方便,所以大部分都是使用MyBatis)
Struts2(很少使用了,使用這個的肯定是很老的項目)、Hibernate(傳統企業,還有政府等可能會使用Hibernate。)
SpringBoot(新項目大部分使用的都是boot了。所以在項目中遇到還在使用SSM的一般都是遺留項目。)
當你走到這里之後局啟,基本上你可以出山了。(去找工作應該問題不大,但前提是你學得好。學習的深度夠了,廣度夠了。)
第七:最好能有一個大型項目是使用框架來完成的。
SpringBoot做一個項目。
Spring SpringMVC MyBatis做一個項目。
這個項目最好是找幾個人搭夥做一下。體驗一下團隊協作。(尤其是使用一些協作的工具。怎麼溝通,怎麼寫日報,怎麼開會,怎麼使用Git,等等….)
第八:如果你的薪資想達到15K的話,你可能需要還要學習一些分布式相關的一些技術。
能夠應付高並發的一些技術,例如:分布式框架Dubbo、SpringCloud、MQ、Nginx、Redis…..
最後在啰嗦一下,一叢臘橘定要形成自己的編程思想。
編程思想的形成很難。需要大量代碼的堆積才可以。怎麼形成編程思想呢?
千萬別死抄代碼。不要像行屍走肉般的抄代碼,沒有用。只能提高指法速度,無法形成編程思路。
1、打好基礎是重中之重
基礎部分可能很枯燥,但是一定要耐心堅持下去。因為打基礎好比是在造輪子造汽車,沒有打好基礎在後面的學習就好比走路,可以說後面遇到的百分之七八十的問題都是基礎沒學好造成的。
2、多看官滲團方文檔多讀源碼
一定要看JDK相關類庫、常用框架各種功能的源碼,去了解其底層實現的原理。總的來說這個也是在打基礎的部分,Java基礎非常扎實才能看懂,在我們學習一個類的源碼時,肯定會衍生出其他各種各樣的問題,供我們來了解和學習,這也就是我們下一步學習的目標和方向。慢慢的,我們就會學習更多的知識,並積累更多的經驗。
3、系統性學習,循序漸進
不要急於求成,每個知識點都要看,並且每個知識點都要勤加練習。有的同學在學習過程中覺得這個知識點簡單,就跳著學習,其實這是個很大的問題,知識點細節必須要了解。我們學習Java需要循序漸進,一步一步來,不能操之過急。
4、遇到問題
遇到不會做的問題,當然不能置之不理。先在網上查,目前網路上針對很多問題都有完美的解決方案,如果網上沒有類似的問題,那可能是你犯了什麼小錯誤。也不要在這個問題上花費太多時間,這需要一定的學習技巧。Java中的知識有很強的相關性,有不懂的地方,可以用其他周邊相關知識再回過頭來理解,這樣既不會耽誤學習進度,又能理解自己不懂的地方
1)jvm有很多種,其實jvm是一個標准,sun做的那個叫hotspot,作者就是後來v8的作者lars bak,其他公司也做過jvm,其中做得比較好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在內,都做得不行,所以jvm主要是整合淘汰掉這些做得不好的jvm(s),整合成一個統一的openjdk。
2)java是典型的oop語言,其執行效率的優化,最早就是lars bak等人從smalltalk等長期優化的經驗中總結出來並apply到hotspot上去滴,而smalltalk在早期apple機上搞出了那種拖拖拽拽就開發出app的做法,後來vc,delphi之類的其實都是抄襲或者說借鑒apple的smalltalk的做法,jobs說微軟從頭到尾都在抄襲apple是空穴來風,這里空穴來風跟王垠使用的空穴來風是一個意思,有趣的是,java的gui並沒有繼承這種搞法,反而對這種拖拖拽拽就作出app的做法批判有加,到今天,其實java的gui都還不能真正做到拖拖拽拽就作出來,問題很多,個人建議對於純java的gui開發,還是以寫代碼為主。
3)jee也是一個或者說是一堆標准,知乎上有些人把maven,jenkins都算做jee是不對滴,jee的標准核心是ejb,其實就是一個xml配置化的java文件,這個標准在4的時候,達到了頂峰狀態,幾乎所有的挨踢大廠都主動支持該標准,之後開始走下坡路,支持的廠越來越少。
4)java和javascript的關系比很多人認為的要密切,javascript裡面的java這四個字母可不是白叫的,比如js的版權和商標都控制在oracle手裡,oracle對於js的支持甚至超過其對java的支持,並且喜歡捆綁銷售,比如jvm裡面就有一個js引擎。
5)jvm裡面除了js engine以外還有一個瀏覽器排版引擎webkit,就是apple safari和google chrome用的那個那個。
6)java支持絕大多數腳本語言,你能叫得上名字的腳本語言,幾乎都可以在jvm上執行,比如常見的js,ruby,python,甚至php,lua,只不過除了js以外你需要找到相關的腳本引擎。
7)spring的版權被控制在vmware手裡,其實spring的那一大堆東西,本質上是一個非標準的jee實現,比如在jee裡面用的inject,在spring裡面就是autowire,當然spring曾經深刻滴影響了jee,所以有些東西比如di標准,是spring影響下制定出來的,所以spring的做法會比較特例一點。
8)maven上的jars數量前兩天突破800萬,其他語言的類庫,排名第二的是npm,大概數量是maven的十分之一,也就是幾十萬,不知道現在突破100萬沒有,然後是gem,也就是ruby那個,大概是十幾萬,下來是python的mole,大概數量級是幾萬,沒突破十萬。
9)java的標準是由一個叫做jcp的組織制定的,所有標准需要經過jcp的執行委員會通過方可執行,jcp幾乎包括了你所知道的絕大多數知名挨踢公司和組織,比如google,apple,ibm,intel,arm,red hat,twitter等,還有一些教育機構,比如我國的北京大學,阿里最近一次申請jcp執行委員會成員資格,似乎投票不通過,最近一次執行委員會新增兩個成員是arm和jetbrains。
10)微軟也曾經是jcp甚至是java的主要貢獻者,但是利益驅使下,想擴展java,從而破壞java跨平台的特性,所以跟sun鬧翻,其本質原因就是想讓客戶寫的java代碼跟windows綁定,sun堅決不同意,鬧翻,今天回頭看這個結果,只能說:雙輸,sun掛了,微軟的ria也離掛不太遠了,silverlight已經放棄了,比起當年ie自帶有jvm的支持來說,那完全就是兩回事。
11)除了微軟以外,jcp還缺少一個重要組織apache,因為apache跟oracle也鬧翻了,oracle似乎並不在乎開源組織,而更在意商業公司的支持。
12)java曾經有一個內置的資料庫,9之後被剝離。
13)j2me是j2se的子集。
14)vert.x作者tim fox最早在vmware做spring時候看到了node.js,萌生出了製作支持多核的node.x的想法,並在離開vmware後加入red hat將其實現,vmware看到後開始耍無賴,claim node.x後來改叫vert.x的版權,不惜跟red hat打官司,後來各方妥協,將其交給eclipse foundation。
15)oracle在收購bea之前,一開始的目標並不是bea和bea的weblogic,而是jboss,但是jboss表現出了極為有種的一面,在oracle收購成功之前,投入了red hat的懷抱,因為都是開源組織,從此jboss成了red hat的一個子部門,oracle收購jboss失敗之後,轉向bea,庄思浩氣死了,但是沒用,最後還是被惡意收購。
16)sun在玩不下去之前最早嘗試接觸的目標是ibm,ibm嫌太貴,放棄之後,被轉手給了oracle。(Java學習交流QQ群:589809992 我們一起學Java!)
17)vert.x的作者tim fox在離開red hat之前曾經發過twitter抱怨,外人比如我們,猜測是因為red hat內部已經有了一個jboss,所以跟vert.x在應用上有了重疊,所以導致tim fox的出走,但是出走之後,red hat答應對vert.x做持續性的戰略投入,所以vert.x core的幾個developers,其實拿的是red hat的工資,但是vert.x的版權並不在red hat手裡,而在eclipse foundation手裡。
18)vert.x的幾個核心開發人員都是google summer of code的導師,每年年初時候會招收在校大學生搞項目。
19)教育機構相關:scala的作者馬丁是德國人,eth的博導,groovy的主要領導人是法國人,jruby背後是東京大學,jboss的作者是法國大學校x的校友,x就是伽羅瓦考不進去的那所大學,伽羅瓦進不了x,所以改讀巴黎高師,tim fox畢業於帝國理工,主席去的那個,netty作者trustin lee是acm銀牌,現在line工作,畢業於sky裡面的延世大學,kotlin是毛子公司jetbrains的作品,看linkedin,很多人畢業自聖彼得堡大學,spring作者rod johnson是悉尼大學的音樂博士,hibernate作者gavin king是澳洲莫那什大學的數學本科畢業生,james gosling這種cmu和calgory的估計爛大街了,sun是斯坦福大學網路的意思,夾帶兩個私貨,aspectj有一個維護小組在mcgill,hbase跟waterloo關系密切。
20)java早期被人認為慢,跟java堅持不用硬體加速渲染有關,死活就是不肯接入directx和opengl,7之後總算開竅,搞了一個圖形引擎接入了directx/opengl。
21)casssandra是facebook做失敗的項目,被貢獻給了apache之後老樹開花。
22)groovy被貢獻給了apache,現在叫做apache groovy,ceylon被貢獻給了eclipse,現在叫做eclipse ceylon。
23)netflix現在是java shop,之前是用.net的。
先想到這么多,有空再寫。
⑷ 阿里p6前端面經
本科畢業,學校既不是211也不是985,我也沒有一畢業就進入大廠工作的經歷。我的職業生涯里一共有10多次面試經歷,阿里我面試了5次,失敗了4次,屢戰屢敗,屢敗屢戰。每當我聽到別人傳奇的經歷,會羨慕別人開掛的人生,也會有小失落,感嘆自己當初沒有做太多的努力,甚至自我懷疑和自我否定。人生中主動裸辭,被動裁員的經歷,曾經讓我在無數的黑夜裡,真的以為人生就這樣了。
在第四次面試阿里失敗後,我開啟了為期2年的自我重塑計劃,梳理 體系化的知識結構 、刻意練習 知識結構化表達 ,學習參考了吸引力法則完善自己的 簡歷人設 。最後在2020.1入職阿里巴巴,成為AE國際體驗技術團隊的P6前端工程師。
在這一段經歷中,我梳理了當時自己的幾個問題,大家看看是否有跟我相似的處境呢?
自我重塑的前提是自我覺醒,意識到自己存在問題,再讓自己走出舒適區,不斷地打碎自己,然後在這個過程中把碎掉的東西重新收拾起來,變成身體的一部分。 這個過程會讓你很痛苦,但如果你克服了,你就蛻變了。薛兆豐教授說過一句話,「生活不會在你都准備好了以後才開始」。面試也一樣,面試考驗的不是那幾輪的面試表現,而是你在長期生活、工作中積累的 硬技能和軟技能 ,這些包括:你的專業能力,框架能力,思維能力,性格和心態,溝通能力,價值觀等等。你只是剛好在這幾輪的面試里表現出了你的這些積累,吸引到了對方,最後拿到了Offer。如果臨時抱佛腳,光背概念和知識點,沒有結合項目深入思考,那麼面試的時候會表現的很空洞,給人的印象只是在堆砌一些關鍵詞,這樣面試掛掉的可能性就很高。
傳說有人問泰勒斯:「何事最難為?」 泰勒斯回答說:「認識你自己。」 隨著年齡的增長,閱歷的豐富,你會漸漸發現,無論是生活還是工作,很多的事情本質是與自己相處,了解自己的性格,發現自己的優缺點,知道自己從哪來,到哪去,最後想成為一個什麼樣的人。
舉個例子,我了解自己的性格是內向性格,而且原生家庭在我童年成長的過程中,讓我有些自卑,甚至我一度懷疑內向是一種性格缺陷。直到我看了一本書,書名叫《內向性格的競爭力》,開始漸漸明白我 自卑的點,來源於我根本不了解自己是什麼 。我也不了解外向性格、內向性格的優勢。外向性格的優勢在於它性格非常開朗,很容易給人一種親和力,自來熟。內向的性格優勢在於它的敏感度,洞察他人情緒,感知他人情緒的能力。內向性格的人都有一個共同的特點,叫做你需要提前充電。比如我們去參加一個面試,內向性格的人像一塊電池,需要提前充電,然後呢,這塊電池只能維持大概1個小時,但是一旦過了1個小時,電池電量用完,你就受不了,你在後半程的面試會感受不太舒服,因為你的性格里就是不太喜歡這樣的環境。
如果大家意識到這一點,在面試的時候你可以更好的去利用。
膽怯的心態,這個是最難克服的。我曾經是膽怯的人,我會把自己包裹起來,裹上一層堅硬的外殼。
這些會直接影響你在他人心中的形象,像阿里P6前端工程師,是一個獨擋一面的角色。如果自己性格膽怯,表現出畏縮畏尾的樣子,那麼即使進阿里了,你在推進項目的時候,會遇到很大的阻礙。這個阻礙一方面來自於你內心的膽怯,另一方面來自於外部壓力。所以這個是必須要克服的。
我克服膽怯的方法很粗暴。利用周末的時間刷了杭州城20多個恐怖密室(漆黑的密室環境,而且有NPC出來嚇人),慢慢把膽子練起來。後來我膽子大到什麼程度呢,我一個人跑到臨安挑戰極限,坐上飛機從10000英尺的高度自由降落,高空跳傘。
所以性格它不是一成不變的,你發現了,克服了,最後你的心態會越來越好,這個就是我想分享的。
這個是最核心的一個能力,同時也是可以讓你快速進入一門新領域的方法。以我現在的認知水平, 知識可以分為三層:知識點、理論、體系。 我們需要可以通過學習知識點 -> 整理理論 -> 形成體系。
輸入: 我們平時信息輸入的渠道,可以是通過看源碼、看書、他人分享的得到關鍵詞,通過關鍵詞搜索可以讓我們更廣泛地獲取信息。在搜索關鍵詞的過程中,我們往往會得到更多的關鍵詞,它可以是A、是B、是C。
構建: 我們需要這些ABC進行分類,構建我們的思維導圖。如果你沒有自己的思維導圖,網上有很多前端的知識圖譜,可以照著學習和搜索,理解每一個知識節點承載的內容,慢慢去構建屬於你自己的思維導圖。前期構建腦圖的過程挺痛苦的,意味你要把每一個知識點去摸清楚,但是一旦你建立好了,往後只需要在現有的腦圖里添加你新的知識節點,學習會越來越輕松。
解釋: 思維導圖構建好了以後,就是輸出,如何向別人解釋一個知識。
以上學習的方法,是我對費曼技巧的個人實踐,費曼技巧也被稱作是終極的學習方法。簡單說它是 「以教為學」,在學習的知識的時候,以別人聽得懂為目標,用最簡單的話把自己的意思表達出來。
關於學習的方法,我還要分享的是,在構建腦圖知識點的時候,我們不妨問自己5個問題?
理清楚了這5個問題,相信你會對這塊知識了解的很全面了。往往在面試的時候,面試官不會這么一板一眼的提問,有時候會問一些開放式的題目,或者一些刁鑽的技術問題,不要慌,他有可能是考察是否能用學到的知識來解釋一下新的例子。所以我們學習還要做最後一步, 把所學的知識都忘掉,剩下的思維能力才是你的。
掌握學習的方法還不夠,我們還要常常做一些階段性回顧,以一個項目為周期或者以半年為周期(周期時間可以自己把握),把人生當中的關鍵節點梳理出來,這不只是為了面試時快速反應,也是為了更加幫助你認識自己。
我們投遞簡歷失敗,有一部分原因在於,我們對自己定位不夠清晰。當前 P6 水平投遞 P7 崗位,那麼掛掉的概率就更高了。我們需要了解阿里崗位職級是怎麼樣的。阿里巴巴社招一般層級是從P6開始,往往工作經驗3年是一個分界點。
了解崗位職級,可以幫助我們認清當前水平處在哪一個層次,知道通往一下層次需要掌握哪些技能。比如我是P6,那麼我在寫簡歷或者面試的時候,盡可能在展示當前層次水平之外,會額外展示掌握的P7的一些能力,讓面試官看到你的潛力和亮點,你是具備快速通往下一層次的能力的。
阿里的面試按流程來的,你開始面試就會進入流程,在流程里的簡歷,除了面試官其他人是看不到。每個流程通常有5輪面試,4輪技術面和1輪HR面,面試官會根據你的水平層級和個人情況,決定要不要安排筆試和交叉面。面試的前兩輪是電話面試,後幾輪是現場面試。在投遞的簡歷的時候,盡量找人內推,內推的優勢在於內推人可以給你做信用背書,查看你的面試進度。如果不是走內推渠道,是阿里員工主動采蜜打電話邀請你面試,說明你的簡歷或者過去的歷史評價,是具有一定吸引力的,不然也不會打電話給你。接到電話後,可以跟面試官確認電話面試的時間,你可以在這段時間內,開始面試前的准備。
面試前需要做哪些准備呢?
形象建設分為 聲音形象、外在形象、內在形象 。
聲音形象: 為什麼我要講聲音形象呢?因為前幾輪的面試都是電話面試,面試官看不到你,你的語速、語調、語氣,都會影響電話那頭對你的判斷。
聲音影響面試的問題有哪些呢?
那我們要做的是盡可能的讓我們的語速保持勻速的水平,一分鍾200字左右,然後用胸腔偏下的位置發聲,用氣息推動喉嚨,這樣的發出的聲音雄渾有力,不會顯得沉悶,反而有些磁性。
外在形象: 針對現場面試的,簡單、干練、不邋遢就好。
內在形象: 聲音形象,外在形象都是淺層的吸引,最致命的吸引是人格吸引,是你的內在形象。我們在自我認識的環節,梳理過了「關鍵」信息,在面試的時候,就派上用場了,把那些能夠呈現你內在形象的案例展示給面試官,通過例子證明自己,你就是這樣的一個人,簡單說就是:「 我不要我覺得,我要你覺得 」。內在形象有哪些呢?自信、踏實、皮實、樂觀等等
簡歷為避免排版混亂,使用PDF格式。書寫原則: 可以適度包裝,但是不要造假 。造假涉及到誠信問題,你在技術面混過去了,後面第三方背景調查的時候,會驗證你說的情況,一旦打上不誠信的標簽,你就永遠進不了阿里了。在寫簡歷的時候,多關注一下對方招聘崗位的JD,崗位職責和需要的技術棧是什麼。了解這些後,盡可能在書寫簡歷的時候,展示你和招聘崗位所需重合的技能。如果當前掌握的技能和目標崗位有一定差距,那需要花時間提升不足,補齊這塊差距。不同公司的前端崗位的職責或技術方向不同,往往要准備多份簡歷去匹配不同公司崗位的情況。
我的簡歷的內容排版很簡潔,寫了基本信息,專業技能、項目經歷,最後才是教育背景。對於社招來說,你在大學期間發生的事情已經不是那麼重要了。重要的是你目前 掌握的技能和項目經歷 ,這兩塊是要重點描寫的。專業技能按掌握、熟悉、了解程度依次羅列。亮點項目是之前你梳理過的,詳細寫,附帶數據描述成果更具說服力。其他不重要的項目可以簡單描述技術棧,一筆帶過。這么做的目的就是一眼讓面試官看到你的優勢和核心競爭力。推薦一些好的簡歷模板,比如 WonderCV、五百丁。簡歷不用太花里胡哨,簡單明了,能夠清晰的表達你的內容即可。
面試前自我模擬面試可以增加你的自信心,自我介紹、面試的一些的話術都可以提前准備好,然後可以講給別人聽、講給自己聽。或者找一個水平在你之上的前輩對你進行一次模擬面試,收集面試反饋,針對模擬面試時卡頓、忘詞的知識點,重新記憶和解釋,然後不斷的重復上面步驟,直到你能可以用自己的話說出知識點的核心內容。
溝通的原則: 客觀描述事實,不做主觀臆斷 。具體有哪些情況呢?三說和三不說。
面試的時候,可以嘗試引導面試官。 每個面試官的喜好,出題的角度都不一樣,這個我們是無法預測的,但是我們可以去引導對方問一些問題。比如他問到某一個知識點A的時候,我們在回答A的同時,引申出和A有聯系的知識點B或C。回答的重心放在知識點A上,B或C是你在回答A的時候順帶那麼一提,它就像一個魚鉤,來引導面試官來問我們擅長的、准備好的知識。
渲染情緒: 在面試的時候多感知對方的情緒,在適當的時候,用一些你准備好的事跡,引發對方共情。之前我們梳理過一些「關鍵信息」,有一些失敗經歷或高光時刻是很容易讓人產生共鳴的。
反問階段:如果你不知道問些什麼,有保守一點的問法是,去問問對方團隊的情況,團隊在組織定位是怎麼樣的、技術棧是什麼、有哪些人員梯度,當前遇到什麼痛點問題等等。這些問題你傳遞出來的信息是,我對當前崗位所處的團隊,所做的事情非常感興趣。之前我在一家公司現場面試的時候,就主動提出帶我在公司轉轉,了解公司的產品形態。這也是一個向對方表達興趣的技巧。
面試的時候考察什麼?技術一面,重點考察基礎和知識廣度,上探你的技術天花板,下探計算機底層原理。一面常見的考察點有哪些呢?
技術一面專業能力佔了80%,軟素質佔了20%。如果過了技術一面,說明你的基礎各方面是很不錯的。接下來技術二面會重點考察你的工程能力、設計能力、規劃能力。二面通常會從你的項目開始問,這個時候你梳理的亮點項目就派上用場了。二面常見的考察點有哪些呢?
這些都是考察范圍,技術二面專業佔了60%,軟素質佔了40%。到了技術三面的時候,會聊一聊技術格局、視野、人生規劃、軟技能考察,這部分多展示你的大局觀,比如業務上的大圖,技術上的大圖,你長期或短期的人生規劃等等。
2.2.6 描述項目(STAR法則)
我分享一個描述的、項目的方法,叫做STAR法則,他有五個要素,情境(situation)、目標(target)、行動(action)、結果(result),我把他擴展了一下,技術面或者hr面的時候描述項目的時候,可以按這個套路來。
2.2.6 面試復盤
面試後記得主動添加面試官的微信,這是免費的性價比很高的人脈。加完微信能做哪些事?
面試後還需要復盤, 復盤結果和情緒 。拿一張白紙記錄你在面試中答好的/不好的知識點,還有你的在情緒佔比,緊張、開心、嚴肅是不是佔了面試中大部分情緒。每一次面試都像一面鏡子,照出你的短板,然後你把短板改掉,就離目標越來越近了。擁有這種面試意識,面試的次數多了,你會從害怕面試變得愛上面試。
分享一本軟體能的書 《金字塔原理》 ,是麥肯錫咨詢公司第一位女性顧問:芭芭拉·明托,寫的一本關於邏輯思路的書。裡面介紹了一些方法,幫助我們怎麼去 自下而上的構建邏輯金字塔 ,或者是 自上而下的表達金字塔 。
書的內容介紹我不做具體的描述了,感興趣的同學可以自行搜索。
我們在提升硬技能的同時,也要注重提升軟技能。技術很重要,但是它是我們實現想法的語言工具。在這之上, 使用工具的方法,比工具本身更關鍵 ,我們要清楚真正的修煉是什麼? 永遠都是內在的東西,軟性的東西 。比如說你的思維能力,耐心,聰明,情商,遇到挫折時的內心復原力。這些技能是可以伴隨你漫長的一生的,終身受用的,那麼我們就應該為此投資。
我在工作前2年是處於一個迷茫的狀態,沒有自己的規劃。真正讓我發生改變的是,突然有一天我回家,父母的頭發都白了,那一刻我意識到自己該學會長大,該為未來做點什麼了。從那以後,我每天的狀態就是,白天公司工作謀生存,晚上自我提升謀發展。在工作第3年的時候,自我感覺准備差不多了,開始去阿裡面試,所以才有了那段裸辭的經歷。當然我摔的很慘,也重新認識了自己。
我們做一個時間切片,把過去的自己和現在的自己對比,你會我發現當時所經歷的,覺得很困難的事,現在看來都不是事。給自己的人生列個目標,知道自己想成為什麼樣的人,實現目標,自己的差距就會越來越小。
還有什麼想了解的可以
有想了解更多的小夥伴可以加Q群 鏈接 裡面看一下,應該對你們能夠有所幫助
⑸ 如果進阿里前端,代碼能力得達到什麼程度
因為之前淘寶或部分商業公司,代碼能力能夠滿足業務的需要可以勉強通過,現在要求,可以滿足未來業務的需要,至於未來的業務需求,它需要你有一定的商業思維,站在技術的角度尋找更多的可能性和結合點。例如,如果你需要能夠覆蓋你的業務,你必須能夠獨立地覆蓋它。一些新技術如果對業務有幫助,就可以集成。
我接下來的幾個項目,包括一個要求是視頻監控,之前的老師是用微軟的ActiveX,因此只能使用IE瀏覽器。我感覺很糟糕,所以老師推薦的「高級」技術越多,使用VLC構建視頻轉碼伺服器,然後使用WEB RTC進行處理,使用HTML 5視頻元素進行顯示,這種兼容性和可擴展性遠高於ActiveX。在此基礎上還對機會進行了研究,包括項目的信息傳遞,地理定位需求也盡可能地使用流行的方式。
⑹ 阿里巴巴的前端面試題到底有多可怕
1、 列舉web性能優化?
1)
減少http請求次數。合並文件、利用css sprite把零散的圖片整合到一張圖上。
2)
減少DNS查找。
3)
減少從定向。
4)
響應時間。使用AJAX進行緩存,減少http請求。
5)
延遲載入組件.
6)
預載入組件。
7)
減少節點的數量。
8)
切分組件到多個域。
9)
最小化iframe。
10)
杜絕http404錯誤。
2、 介紹一下XMLHttpRequest對象的常用方式和屬性?
open(「method」,」URL」) 建立對伺服器的調用,第一個參數是HTTP請求方式
可以為GET,POST或任何伺服器所支持的您想調用的方式。
第二個參數是請求頁面的URL。
send()方法,發送具體請求
abort()方法,停止當前請求
readyState屬性 請求的狀態 有5個可取值 0=未初始化 ,1=正在載入
2=以載入,3=交互中,4=完成
responseText 屬性 伺服器的響應,表示為一個串
reponseXML 屬性 伺服器的響應,表示為XML
status 伺服器的HTTP狀態碼,200對應ok 400對應not found
⑺ 阿里前端面試題(1)——解構/非同步/markdown語法解析
a. 不完全解構,也會成功,不會報錯
b. 只要支持 Iterator 介面,都可以被解構賦值
c. null 可以替代默認值,而成功的解構賦值
d. 解構中不定參數可以出現在除第一個以外的其他位置
e. 解構是先找到同名屬性,然後再賦給對應的變數
f. 默認值可以引用解構賦值的其他變數,但該變數必須已經聲明
(d)
迭代一個對象的屬性
不定參數只能放在最後一個位置
a. 在JavaScript中,任務被分為兩種,一種宏任務(MacroTask),一種叫微任務(MicroTask),setTimeout 屬於微任務
b. setTimeout(func, 500) 會精確的在 500ms 後執行 func
c. Promise、generator、async/await 都是非同步解決方案
d. process.nextTick、Promise 都屬於 node 中的微隊列
e. 瀏覽器的 Event Loop 和 node 的 Event Loop 是不同的,實現機制也不一樣
f. 在 node 中setTimeout 和 setImmediate 執行階段是一致的
(c,d,e)
解析:f 兩者的執行順序要根據當前的執行環境才能確定
(那怎麼知道主線程執行棧為空啊?js引擎存在monitoring process進程,會持續不斷的檢查主線程執行棧是否為空,一旦為空,就會去Event Queue那裡檢查是否有等待被調用的函數)
https://juejin.im/post/59e85eebf265da430d571f89
Markdown 是非常受技術人員喜歡的一種文本格式,請使用 JavaScript 來實現 marked 方法來進行 markdown 文本的 HTML 渲染,可以滿足以下需求:
function marked(str) {
// your code here
}
marked('@@whatever@@').trim() // <p><blink>whatever</blink></p >
marked(' abc @@def@@ ghi ').trim() // <p><em>abc</em> <blink>def</blink> <strong>ghi</strong></p >
marked('@@ cool @@').trim() // <p><blink><strong>cool</strong></blink></p >
可以實現題目中的要求,但是還不能滿足「@@abc」這樣缺少對應字元串的情況
⑻ 去阿里巴巴(北京)面試web前端高級開發工程師,月薪我應該要多少
15k~20k。
⑼ 阿里巴巴2019秋招客戶端開發工程師在線筆試題和面試題答案
一、單選題
1.“秘密”是一款在朋友圈內匿名交流的SNS平台。假定每個人只能看到朋友發的帖子,卻不知道具體是誰發的;並且朋友關系是對稱的,即如果A是B的朋友,那麼B也是A的朋友。某好事者希望知道一篇帖子具體是誰發的,他通過找幾個好友看看他們是否是這個帖子樓主的朋友,從而求“交集”,推斷樓主是誰。朋友圈是指彼此互為朋友的人群。什麼樣的樓主容易被發現真實身份?
A朋友很多的樓主。
B朋友很少的樓主。
C發負能量帖子的樓主。
D有很多個小朋友圈的樓主。
E發正能量帖子的樓主。
F只有一個大朋友圈的樓主。
2.有一個裝過食派拍鹽的瓶子,容積是w,在食鹽用完之後,還有一些食鹽粉末(體積可以忽略)殘留在瓶子壁上。現在要把該瓶子改裝糖,給你u體積的純凈水,用來清洗該瓶子。在每次清洗之後,瓶子里會殘留至少v體積的水(食鹽溶液,可以忽略鹽的體積)。假設w>u>v,請問下述哪種方式使用這些純凈水,能把瓶子洗得最干凈______?
A.把所有的純凈水全部倒入瓶子,然後把水倒掉。
B.將純凈水平均分為兩份,用每一份清水洗一遍瓶子。
C.每次注入體積為v的純凈水清洗瓶子,直到純凈水用盡。
D.每次注入體積為2v的純凈水清洗瓶子,直到純凈水用盡。
E.將用過的水重新注入瓶子,多次清洗。
F.以上方法清洗效果相同。
3.有一隻火雞出生在某年春天。從出生第一天起,主人就會每天給它餵食。這只火雞用一個模型來計算主人對它的愛的程度=吃到米的天數/(出生之後的總天數+1)。這只火雞發現這個愛的指數每天都在上升。有一天感恩節到了,火雞被主人殺掉了。關於火雞的愛的指數模型的說法正確的是:______?
A.火雞的模型之所以無效,是因為這個公式不是最大似然估計。
B.火雞的模型之所以無效,是因為這個愛的指數增長速度先快後慢。
C.火雞的模型之所以無效,是因為沒有計算這個愛的指數的方差。
D.火雞的模型之所以無效,是因為分母+1了。
E.火雞的模型之所以無效,是因為主人太壞了。
F.火雞的模型之所以無效,是因為統計的概率空間不完整。
4.下列方法中,______不可以用來程序調優 ?
A.改善數據訪問方式以提升緩存命中率
B.使用多線程的方式提高I/O密集型操作的效率
C.利用資料庫連接池替代直接的資料庫訪問
D.使用迭代替代遞歸
E.合並多個遠程調用批量發送
F.共享冗餘數據提高訪問效率
5.並發進程執行的相對速度是______。
A.由進程的程序結構決定
B.由進程本身來控制
C.進程被創建時決定
D.與進程調度策略有關
E.與進程的銷毀時間有關
F.由內存分配策略決定
6.動態內存分配(C語言中的malloc,C++中的new)得到的存儲區屬於內存中的:______。
A.靜態區
B.堆(heap)
C.棧(stack)
D.堆棧
E.內核內存
F.不確定
7.下列正則表達螞乎式不可以匹配” www.alibaba-inc.com”的是______。
A.^\w+\.\w+\-\w+\.\w+$
B.[w]{0,3}.[a-z\-]*.[a-z]+
C.[c-w.]{3,10}[.][c-w.][.][a]
D.[w][w][w][alibaba-inc]+[com]+
E.^\w.*com$
F.[w]{3}.[a-z\-]{11}.[a-z]{3}
8.關於IP地址下列說法錯誤的是______。
A.IP地址採用分層結構,它由網路號與主機號兩部分組成
B.根據不同的取值范圍IP地址可以分為五類
C.202.112.139.140屬於B類地址
D.每個C類網路最塵物羨多包含254台主機
E.IPv6採用128位地址長度
F.A類,B類和C類地址為內部私有地址
9.某團隊有 2/5的人會寫Java程序,有3/4的人會寫C++程序,這個團隊里同時會寫Java和C++的最少有______人。
A.3
B.4
C.5
D.8
E.15
F.20
10.計算三個稠密矩陣A、B、C的乘積ABC,假定三個矩陣的尺寸分別為m*n, n*p, p*q,且m
A.(AB)C
B.A(BC)
C.(AC)B
D.(BC)A
E.(CA)B
F.以上效率相同
11.棋盤上共有2020個格子,從1開始順序編號。棋子初始放在第1格,通過扔骰子決定前進格子數,扔出x點就前進x格。骰子有6面,分別對應1至6;質量均勻。當棋子到達2015或超過2015,游戲結束。那麼,棋子剛好到達2015的概率與______最接近。
A.2/3
B.1/2
C.1/3
D.2/7
E.1/6
F.1/7
12.H同學每天乘公交上學,早上睡過頭或遇到堵車都會遲到;H早上睡過頭概率為0.2,路上遇到堵車概率為0.5;若某天早上H遲到了,那麼以下推測正確的有______。
A.今天H早上睡過頭了
B.今天H早上睡過頭的概率為0.2
C.今天H早上睡過頭的概率大於0.2
D.今天H早上遇到堵車了
E.今天H早上遇到堵車的概率為0.5
F.今天H早上遇到堵車的概率小於0.5
13.個數約為50K的 數列需要進行從小到大排序,數列特徵是基本逆序(多數數字從大到小,個別亂序),以下哪種排序演算法在事先不了解數列特徵 的情況下性能大概率最優(不考慮空間限制)______。
A.冒泡排序
B.改進冒泡排序
C.選擇排序
D.快速排序
E.堆排序
F.插入排序
14.在以下操作中,數組比線性錶速度更快的是______。
A.原地逆序
B.頭部插入
C.返回中間節點
D.返回中間節點
E.返回頭部節點
F.選擇隨機節點
15.一個函數定義的返回值是float,它不能在
return語句中返回的值的類型是:______。
A.char
B.int
C.float
D.long
E.double
F.以上皆可以
16.某足球隊有四名外援,分別來自巴西、荷蘭、義大利和美國。他們分別擅長前鋒、後衛或守門,其中:
① 美國外援單獨擅長守門;
② 義大利外援不擅長前鋒;
③ 巴西外援和另外某個外援擅長相同的位置;
④ 荷蘭外援擅長的位置和巴西外援不同。
以上條件可以推出巴西外援擅長的位置是______。
A.前鋒
B.守門
C.後衛
D.前鋒或守門
E.後衛或守門
F.前鋒或後衛
17.以下屬性中,______不是m階B樹特性。
A.根節點至少2子女節點
B.非根節點包含的子女數j滿足:┌m/2┐ - 1 <= j <= m - 1
C.除根結點以外的所有內部結點度數為存儲關鍵字總數加2 D.常用於計算機磁碟文件組織
D.葉節點均位於同一層
E.B+也常用於計算機磁碟文件組織
18.在一個單鏈表中,q的前一個節點為p,刪除q所指向節點,則執行______。
A.delete q;
B.q->next=p->next;delete p;
C.p->next=q->next;delete p;
D.p->next=q->next;delete q;
E.delete p;
F.q->next=p->next;delete q
19.int main(){ fork()||fork();} 共創建幾個進程:______。
A.1
B.2
C.3
D.4
E.5
F.6
20.程序出錯在什麼階段______?
int main(void)
{
http://www.taobao.com;
cout<<“welcome to taobao";
}
A.預處理階段出錯
B.編譯階段出錯
C.匯編階段出錯
D.鏈接階段出錯
E.運行階段出錯
F.程序運行正常
二、附加題
1.針對無線互聯網的現狀和特殊性,請列舉可提升用戶體驗的網路相關優化措施。(優化點可包括客戶端、前端、服務端,甚至業務設計層面)
2.給定一個query和一個text,均由小寫字母組成。要求在text中找出以同樣的順序連續出現在query中的最長連續字母序列的長度。例如, query為“acbac”,text為“acaccbabb”,那麼text中的“cba”為最長的連續出現在query中的字母序列,因此,返回結果應該為其長度3。請注意程序效率。
3.寫一個函數,輸入一個二叉樹,樹中每個節點存放了一個整數值,函數返回這棵二叉樹中相差最大的兩個節點間的差值絕對值。請注意程序效率。
⑽ 阿里巴巴的招聘流程,技術崗位一般幾輪面試
阿里巴巴招聘技術崗位的流程:
依次進行三輪面試:初面、復面、以及hr面。
每通過一輪即可進入下一輪,三輪全過即為通過。
(10)阿里巴巴前端編程測驗擴展閱讀
面試技巧
招聘中的「經典七問」
招聘過程中常要問到的問題極其釋義總結如下:
以往工作中您的職責是什麼?――如果描述不清,可見即使有相關工作經驗,其系統性全面性也值得懷疑。
請講一下您以往的工作經歷。――考察應聘者的語言組織及表達能力,以及描述的條理化。
您以往的工作經歷中最得意最成功的一件事是什麼?您的長處是什麼?――從應聘者的回答中,可了解他是注重個人成功還是注重團隊協作。
您感覺還有哪方面的知識、技能或能力需要提升?――「提升」一詞比較委婉,一方面考察其態度是否坦誠,另一方面,也為日後的員工培訓增強針對性。
對於新的工作崗位您有什麼設想?如何開展工作?――這涉及到員工的職業生涯設計,更有關員工工作的穩定性。
您離職的原因是什麼?――這是必須要問的問題,涉及員工和組織的融合性。
您對薪金待遇和福利有什麼要求?――這個問題的重要性更是不必多言。