- 相關(guān)推薦
2017阿里巴巴前端實(shí)習生在線(xiàn)筆試總結
寫(xiě)在前面:還是太年輕,第一次在線(xiàn)筆試有些緊張了。下面是2017阿里巴巴前端實(shí)習生在線(xiàn)筆試總結,為大家提供參考。
一、2017題目
我遇到的題目:6個(gè)選擇其中3個(gè)多選,1個(gè)填空,6個(gè)大題?头憬阏f(shuō)題目是隨機給的(因為給了一個(gè)時(shí)段考試,而不是統一時(shí)間點(diǎn)開(kāi)考),不過(guò)題型應該是固定的。
1.單選:一個(gè)數組,兩個(gè)引用,相互賦值,問(wèn)輸出眩暈抗性-30%
2.單選:?jiǎn)?wèn)一個(gè)return匿名函數的函數的執行結果,內部還有apply眩暈抗性再-69%
3.單選:?jiǎn)?wèn)字符串替換結果是什么,當然,又是套了幾層,繞了幾圈眩暈抗性再-1%,嗯,做完這道給徹底繞暈了
4.多選:移動(dòng)端,如果A按鈕上覆蓋了一個(gè)B按鈕,給B按鈕的touchstart事件處理器中添加什么處理能讓A觸發(fā)click
按鈕被擋住了,要想恢復交互性,隱藏遮擋物就好了,只敢選了visible一個(gè),因為不確定題目是不是要在本次交互中觸發(fā)click,不清楚display:none和從DOM中刪除會(huì )不會(huì )影響冒泡,沒(méi)敢選經(jīng)過(guò)測試,發(fā)現本題根本不存在冒泡(好吧,當時(shí)可能沒(méi)睡醒),順便再測試了一下有冒泡的情況,發(fā)現不影響冒泡,即便remove掉了,還是會(huì )冒泡
測試代碼如下:
5.多選:前端優(yōu)化,下列哪一個(gè)可以減少HTTP請求數最近正在翻譯Yahoo!的30幾條前端優(yōu)化原則,壓力不大
6.多選:題目忘記了記得除了前端優(yōu)化的,其它兩道都沒(méi)有絕對把握
7.填空:個(gè)人博客地址想了下填了cnblogs,因為個(gè)人網(wǎng)站做得還不完善,拿不出手
8.大題:生成10個(gè)10-100之間的隨機數,并降序排列隱約記得書(shū)上說(shuō)Math.random返回(0, 1]值
查證之后發(fā)現JS高程中文版135頁(yè)說(shuō)(0, 1),而網(wǎng)上的普遍說(shuō)法是[0, 1),后一種就和C里面的一樣。以前看書(shū)記得js的隨機數和C的不一樣。經(jīng)過(guò)測試發(fā)現書(shū)上是錯的,確實(shí)含0不含1?偨Y如下:
1.獲取[a, b]:Math.round(Math.random()*(b-a)+a)//四舍五入
2.獲取(a, b]:Math.ceil(Math.random()*(b-a)+a)//向上取整(天花板)
3.獲取[a, b):Math.floor(Math.random()*(b-a)+a)//向下取整(地板
4.獲取(a, b):好奇怪的需求,不如直接用第一種吧
測試random范圍的代碼如下:
var x = parseInt((Math.random()*90+10 + '').split('.')[0]);//取整數部分
9.大題:實(shí)現IOS風(fēng)格的switch按鈕,要求用多種方式實(shí)現花了太多時(shí)間,“實(shí)現”是要用嘴實(shí)現還是用代碼?用代碼寫(xiě)了個(gè)小實(shí)現,七八分鐘就過(guò)去了,劃不來(lái)
10.大題:給String添加原型方法,實(shí)現簡(jiǎn)單的模版替換考原型和正則表達式,不會(huì )在原型方法中獲取字符串的值,書(shū)中說(shuō)一般不要給原型加自定義屬性,會(huì )污染環(huán)境,就沒(méi)太在意這方面,只注重了去理解原型,構造函數,作用域鏈的本質(zhì)及其關(guān)系,結果。。
查了一下,發(fā)現this就是原字符串的值,阿席巴思密達~~~代碼如下:
function strcat(str){
return this + str;
}
String.prototype.strcat = strcat;
alert('xi'.strcat(' ba'));
11.大題:如何在畫(huà)布上畫(huà)出任意多個(gè)邊界不相交的圓,考慮時(shí)間和空間的平衡后半句感覺(jué)是要寫(xiě)代碼,前半句又不像,最后沒(méi)時(shí)間了,就賣(mài)了個(gè)萌——“最簡(jiǎn)單的方法是畫(huà)同心圓”,好吧,希望能讓改卷的大大心情愉快
12.大題:實(shí)現loadScript(url, callback)異步加載腳本,完成之后執行回調函數,要求支持IE非要支持IE嗎,時(shí)間不夠了,只好寫(xiě)出步驟注釋
整理的代碼庫里收藏了xhr,如下:
/*獲取HttpRequest對象,可以兼容各個(gè)瀏覽器 包括IE5.5+*/
function getHttpObject(){
if(typeof XMLHttpRequest == "undefined"){//如果該對象未定義,則自定義該對象
XMLHttpRequest = function(){
try{
return new ActiveXObject("Msxml2.XMLHTTP.6.0");
}catch(e){}
try{
return new ActiveXObject("Msxml2.XMLHTTP.3.0");
}catch(e){}
try{
return new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){}
try{//老版本的 Internet Explorer (IE5 和 IE6)
return new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
return false;
}
}
return new XMLHttpRequest();
}
var xhr = getHttpObject();
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304){
//執行callback
}
else{
//請求失敗
}
}
}
xhr.open('get', url, true);//準備異步請求,get是為了響應速度
xhr.send(null);//發(fā)送請求,null是為了兼容性
在線(xiàn)筆試讓人寫(xiě)這種東西真的好嗎?
根據園友@李明夕和@老樓在評論中的分析,我應該是理解錯題意了,不過(guò)沒(méi)關(guān)系,代碼如下:
白色變紅色
用script標簽動(dòng)態(tài)加載(并執行)腳本需要注意以下幾點(diǎn)問(wèn)題:
1.IE8-支持readystatechange和async;Chrome和FF不支持readystatechange,支持load,支持async;IE9/10、Opera同時(shí)支持readystatechange,load和async
2.雖然readystatechange是HTML5事件,不過(guò)FF和Chrome至今都沒(méi)有實(shí)現它
3.詭異的是IE6先ok再向下執行再ok再ERROR,IE7/8先ERROR再向下執行再ok,IE9+未知。而FF和Chrome正常,先向下執行,再ok。
4.需要注意IE9/10和Opera兩者都支持的,所以不要用類(lèi)似于elem.onload=elem.onreadystatechange=handler;的代碼,因為在IE9/10和Opera中會(huì )觸發(fā)多次,本來(lái)onload里面并沒(méi)有各個(gè)狀態(tài)值(都是undefined),不會(huì )觸發(fā)多次,但IE的實(shí)現很詭異,所以,有風(fēng)險
5.為了避免IE中多次觸發(fā)回調函數,應該在ok之后移除onreadystatechange事件處理器,保證只觸發(fā)一次
13.大題:實(shí)現JQuery中的html方法看時(shí)間緊迫,過(guò)于緊張了,看到題目的時(shí)候眼睛羅圈了,理解成了實(shí)現JQuery中把字符串轉HTML元素的方法,過(guò)于復雜,簡(jiǎn)單的寫(xiě)了思路。交了卷才發(fā)現看錯題了。。。
JQuery中還有比html方法更容易實(shí)現的嗎?代碼如下:
function html(elem){
return elem.innerHTML;
}
//此處沒(méi)有完全實(shí)現,因為JQ的html方法有三種形式:html(), html(str), html(fun),分別用來(lái)獲取/設置/用函數設置innerHTML
查看了JQuery內部,發(fā)現差不多就是這樣實(shí)現的,效果一樣,測試代碼如下:
var $div = $('#div');
alert($div.html());
alert($div[0].innerHTML);
//在IE中標簽都是大寫(xiě)的,其它瀏覽器中是小寫(xiě)
二.是好是壞,都是一場(chǎng)旅行
被KO是因為自己積累不夠,比如,如果讀過(guò)JQuery源碼,Ajax就能輕松拿下;如果心態(tài)平和,認真讀題,最后一題也能瞬間搞定。。。
在線(xiàn)筆試最大的特點(diǎn)是很難集中精力,網(wǎng)頁(yè)很容易分散你的注意力,稍微發(fā)會(huì )兒呆,幾分鐘就沒(méi)了
總結一下這次筆試的失敗點(diǎn):
1.時(shí)間安排不合理。中間的小題浪費了太多時(shí)間
2.心里素質(zhì)不夠。過(guò)于緊張,好吧,可能是因為高考過(guò)去很久了,和考試不熟了
3.基本功不夠扎實(shí)。比如原型,學(xué)習的時(shí)候太偏重理論了,忽略了這樣簡(jiǎn)單實(shí)際的問(wèn)題
4.答題順序不對。先給代碼執行結果的題目繞暈了,這種東西絕對不能先答
5.沒(méi)洗臉就開(kāi)始答題了。昨晚和朋友聊到很晚才睡,自作孽。。
阿里走遠了,那我的收獲呢?
1.參加了生平第一次在線(xiàn)筆試
2.發(fā)現了自身知識網(wǎng)絡(luò )的漏洞(對理論爛熟,卻不知道this就是字符串的值)
3.更清楚地認識了自我,套用前輩的一句話(huà):雖然自認為比身邊的人要強一點(diǎn),但離阿里需要的實(shí)習生還是有一段距離的。。
題目難嗎?
說(shuō)實(shí)話(huà)不難,除了畫(huà)圓和xhr的題目,其它的應該沒(méi)什么難點(diǎn)。做的這么差的原因有很多,不單單是沒(méi)有經(jīng)驗這一條可以搪塞過(guò)去的,一句話(huà):底子還是太薄。
后話(huà)
計劃3,4月份找實(shí)習,結束之后繼續潛心積攢經(jīng)驗?纪暧魫炓粫(huì )會(huì )兒就好了,怪不了別人。沒(méi)關(guān)系,Tencent我正在來(lái)~
【阿里巴巴前端實(shí)習生在線(xiàn)筆試總結】相關(guān)文章:
現場(chǎng)筆試與在線(xiàn)筆試的問(wèn)題11-21
海航在線(xiàn)筆試10-19
阿里巴巴筆試題201502-19
筆試需要改成在線(xiàn)考11-19
阿里巴巴校招筆試題11-29
在線(xiàn)筆試題答案補充02-25
阿里巴巴校招筆試題目11-29
卡夫在線(xiàn)測筆試試超給力02-25