阿里校園招聘前端面試


  2014年9月24日,懷着激動(必須是激動啊,第一次面試)的心情來到了杭州阿里安排的面試地點,進去簽完到后就進入了休息室進行焦急的等待。等待了大概20分鍾,就輪到我的面試了。進入了面試大廳,在工作人員(美女喲)的帶領下,來到了面試我的面試官面前,跟他握個手后就叫我坐下了。

  面試官第一眼看着就很友好,讓我感覺也不是那么緊張了。首先作了個短暫的自我介紹,然后面試官就看我簡歷上的實習經驗,讓我說說項目上的事情。我就按照我的思路跟他說着我做的項目,中途他碰到感興趣的東西,也會問點小問題。項目介紹完后,他問我平常都在哪學習前端知識,我說自己看書,網上看博客。我知道前端招聘挺看重能有自己的github項目和博客的,但我當時自己確實沒有自己的小項目,他問我有沒有自己寫博客,我只能回答我平常有做筆記,有寫博客的打算,很想分享自己的一些見解,和大家一起學習討論(這也是我真實想法,所以今天就以這篇博客起手了),就這樣跟面試官聊了一會兒后,他說這是前端面試,還是得問我點前端的東西。

  接着他問我項目上用到了哪些前端技術,由於我實習的公司是給企業做后台開發的,前后台開發工作基本是一起的,所以真正前端用到的技術確實不牛,規范上也差了很多,維護起來較難,所以我就差不多如實說了(現在想想是不是不應該說太多實話),但說了自己會經常的去學習更深的知識,學習前端的新知識,當我我說到了項目上有mouseover事件,然后會彈出下拉框的地方,整個面試,前端技術問題主要就是這個問題了。

  他問我當鼠標在幾個菜單上快速移動時,怎樣解決移動時不彈出下拉框,只到停留時才會彈出下拉框,55555555項目上沒有實現這個功能,當時腦袋有點亂了,其實感覺想到了用setTimeout(),但沒說出來,后來他先說出來了,我就只能認真聽着了。最后還問道mouseover時可能會多次觸發事件,問我怎么解決,我說有mouseenter()事件,哎,平常一直都是用jquery,js好多原生的都不會寫。他就說這只是jquery的自己的方法,用原生的解決我也沒回答好。

  最后再聊了一些家常便飯的事情,整個過程感覺還是蠻輕松加愉快的,面試官對我印象貌似也還是不錯的,但可能沒達到他心目中的水平,因此沒能讓我進入前端的二面(PS. 面試官看我簡歷項目上有很多java后台的東西,最后居然反饋說建議去java再面試,雖然現在后台已經招完了,以后補招還不確定,但我還是要很感謝他,其他跟我一起如果沒過一面的貌似都沒這個待遇)。

  感謝阿里給我的這次面試,讓我人生又多了一份經歷,我也感覺到面試其實也不是太恐怖,只要自己准備充分了,就和平常的聊天差不多。阿里這次前端還是有點可惜的,感覺是准備時間晚了,沒有准備的太好,其實js、html5很多東西我都准備了,但這次面試都沒有考到,而我忽略了一些基本的問題。今后要找出自己的不足,后面還有很多機會再等着我,加油吧,騷年!在此還要恭喜一下跟我一起去面試的實驗室同學(志在成為前端大牛的人,以后要向他多學習學習,報他大腿了),他今天收到了阿里offer的通知。

 

回來后查閱資料,找出的mouseover多次觸發的解決辦法

為了阻止mouseover和mouseout的反復觸發,這里要用到event對象的一個屬性relatedTarget,這個屬性就是用來判斷mouseover和mouseout事件目標節點的相關節點的屬性。簡單的來說就是當觸發mouseover事件時,relatedTarget屬性代表的就是鼠標剛剛離開的那個節點,當觸發mouseout事件時它代表的是鼠標移向的那個對象。由於MSIE不支持這個屬性,不過它有代替的屬性,分別是fromElement和toElement。

 

 1 var obj = document.getElementById(id); 
 2 obj.onmouseover = fucntion(e) {
 3     var e = window.event || e ;  
 4     var s = e.fromElement || e.relatedTarget ;       
 5     if(this.contains){     
 6         if( !this.contains(s) ){     
 7             console.log('觸發over');     
 8         }     
 9      }else{     
10          var res= this.compareDocumentPosition(s) ;       
11          if(!(s == this || res == 20 || res == 0 )){      
12              console.log('觸發over');     
13          }       
14      }    
15 }
16 
17 obj.onmouseout = fucntion(e) {
18     var e = window.event || e ;  
19     var s = e.toElement || e.relatedTarget ;       
20     if(this.contains){     
21         if( !this.contains(s) ){     
22             console.log('觸發out');     
23         }     
24      }else{     
25          var res= this.compareDocumentPosition(s) ;       
26          if(!(res == 20 || res == 0 )){      
27              console.log('觸發out');     
28          }       
29      }  
30 }
View Code

 菜單欄連續滑動延遲處理,用setTiemout解決

 1 var overtime,outtime;
 2 $(selector).hover(function(){
 3     clearTimeout(outtime);
 4     overtime = setTimeout(function(){
 5         //some code
 6     },300);    
 7 },function(){
 8     clearTimeout(overtime);
 9     outtime = setTimeout(function(){
10         //some code
11     },300);  
12 });
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM