前端实习生笔试_2016春网易前端暑期实习生笔试面经(二面已挂)
筆試
選擇題忽略
問答題:
用原生JS實現一個接口,能夠用Ajax上傳文件并顯示上傳進度,上傳完成后接收一個來自服務器的json數據
實現一個三列布局
如何防范CSRF(跨站請求偽造)
請列舉減少HTTP請求數和資源文件大小的方法
列舉實現跨域請求的方法
一面
一上來先是自我介紹,在這個過程中,面試官會看你的簡歷
Q:CSS和JS熟悉哪個?
A:JS
Q:瀏覽器端的JS包含哪幾個部分?
A:ECMAScript+DOM
Q:DOM包含哪些對象?
A:Node對象,然后繼承下來的有Document,Element,Text,還有想不起來了
Q:JS有哪些基本類型?
A:Number,String,undefined,null,還有引用類型的 //這里我少答了Boolean,然后我以為問的是數據類型
Q:基本類型和引用類型有什么區別?
A:賦值的時候基本類型按值,引用類型按引用,就是基本類型會復制一份,引用類型就是一個新的指針。
函數傳參的時候都是按值傳遞
Q:
var obj = {a : 1}; (function (obj){ obj = {a : 2}; })(obj); //問obj怎么變?
A:外面的obj不變,因為里面等于讓局部的obj指向了一個新的對象
//下面兩題是因為我簡歷有寫我會C++
Q:C++的引用類型是怎么樣的?
A:C++里面的引用相當于一個變量的別名,對引用做操作也會影響該變量
Q:JS和C++有什么區別?
A:面向對象不一樣,C++是類式繼承,JS是原型鏈式。C++在函數式方面沒有JS來的強。
JS沒有C++的一些高級特性,比如模板、泛型。
Q:實現一個左邊定寬右邊自適應的兩列布局,要求使用浮動和flex兩種方法
A:
.left { float: left; width: 320px; //這個是面試官給的,面試官畫了圖 } //下面這段我少寫了,然后面試官就問你上面這樣能夠讓右邊自適應嗎?囧 .right { margin-left: 320px; } //flex憋了很久沒寫出來。。。
Q:position有哪些屬性?各自有什么特點?
A:
static:正常文檔流
relative:相對于正常文檔流中的位置定位
absolute:相對于第一個不是static的父元素定位
fixed:相對于瀏覽器定位
Q:畫一下標準盒模型
A://感覺這里已經質疑我CSS是不是一點不會了,囧
Q:閉包是什么?有什么用?
A://這里我講得很不清楚,大致說了就是函數里面套函數,可以保存變量
Q:ES5中,除了函數,什么能夠產生作用域?
A:對象?
//然后被回問對象有作用域嗎?然后我說對象里面this會變。。。完全把作用域和執行環境弄混了
Q:函數有哪幾種調用方式?
A:
直接調用
作為對象的方法調用
apply,call
Q:
var obj = { a : 1, func : function (){ (function (){ a = 2; }(); } }; obj.func();
問a怎么變,匿名函數里的this是什么?怎么改變里面的this?匿名函數不能傳參怎么改變obj.a的值?
A: obj.a不變,匿名函數里的this指向全局對象(window),相當于給window加了一個名為a的屬性。
(function (){ this.a = 2; }).call(this); //或者apply //或者 func: function (){ var self = this; (function (){ self.a = 2; })(); }
Q:描述一下事件模型?IE的事件模型是怎樣的?事件***是什么?事件***中怎么定位實際事件產生的目標?
A:捕獲->處于目標->冒泡,IE應該是只有冒泡沒有捕獲。
事件***就是在父元素上綁定事件來處理,通過event對象的target來定位。
Q:JS動畫有哪些實現方法?
A:不太清楚
Q:那你知道還有什么實現動畫的方法?
A:CSS3的animation,還有用canvas做的算嗎?
Q:你最近有用過什么框架或庫?
A:用React Native做安卓,還在學 //然后面試官說那你現在還是主要在原生JS的層面咯
Q:你主要有哪些學習渠道?
A:MDN,Udacity,慕課網
Q:node.js有用過嗎?
A:有,主要用一些工具,比如gulp
Q:你有用過什么代碼管理工具?
A://然后面試官看到簡歷上有GitHub就不問了
Q:你還有什么問題嗎?
A://這里我問了這個部門主要是面向技術人員還是普通用戶開發,回答是都有,還回問了我一句你想做哪方面
最后面試官說你先去休息一下,待會兒還有個二面 //意思是一面居然過了。。。
二面
二面沒讓自我介紹,直接看到簡歷上有寫項目經歷就開問了
Q:說說你做過的項目以及從項目中學到了什么
A://balabala… 感覺很緊張,說得不是很清楚
Q:函數聲明和函數表達式有什么區別?
A:函數聲明會將那個函數提升到最前面,成為全局函數。函數聲明要指定函數名,而函數表達式不用,可以用作匿名函數。
Q:作用域鏈是什么?
A://說的不是很清楚
Q:面向對象有哪幾個特點?
A:繼承、多態。。。想不起來了
Q:JS怎么實現繼承?
A:將父對象的一個實例賦值給子對象的原型
Q:怎么判斷屬性來自對象自身還是原型鏈?
A:hasOwnProperty
Q:雙向鏈表怎么找中點?
A:頭尾指針都往中間走,兩個指針相等或交替的時候為中點
Q:單向鏈表呢?
A:先走到尾記下有幾個元素,然后再走到一半的地方
//面完查了下可以用快慢指針,一個指針每次走一步,另外個走兩步,快指針到尾部時慢指針在中點
Q:上次筆試之后有沒有學到什么?
A:了解了下跨域安全和性能相關的問題
Q:那你描述一下跨域安全問題吧
A://balabala…最后發現根本講不清楚,我還說考完之后去翻了《HTTP權威指南》,囧
Q:怎么實現跨域請求?
A:JSONP,http自定義origin頭部
Q:只寫origin就夠了嗎?
A:不太清楚
Q:解釋下TCP三次握手
A:客戶端發一個SYN,服務器回一個ACK,客戶端再回一個ACK
Q:HTTP頭中哪些是和緩存相關的?
A:ETag,***-control。。。想不起來了
Q:cookie和session有什么區別?
A:cookie在客戶端,session在服務端
Q:瀏覽器在發送cookie時會發送哪幾個部分?
A:不太清楚
Q:那你知道cookie有哪幾個組成部分嗎?
A:不太清楚
Q:你有用開發者工具看過cookie嗎?
A:有
Q:那cookie有哪幾個組成部分?
A://已死,我的內心是崩潰的
Q:我沒有問題了,你還有什么問題嗎?
A://崩潰的我居然問了剛剛那個cookie的問題可以告訴我答案嗎。。。估計被定位成伸手黨了
面完之后去前臺問被告知二面掛了,然后愉快(誤)地滾回了學校
總結
一面比較注重基礎知識,這方面聽到有的面試官建議多看幾遍《JavaScript高級程序設計》的,現場也有看到有人隨身帶著這本書
(我算是粗略地讀過三遍左右,也確實大多數上面問到的問題都能在書中找到答案)
二面注重能力考查,無論是學習能力(問項目,問筆試收獲),和后端的合作(問很多網絡原理),還是編程能力(會問算法,聽到有人說問二叉樹翻轉的)都有涉及。
面試官也明顯更高端了,應該是Team Leader級別的
表達能力很重要,有些概念知道卻沒法清楚地表達出來,影響會很大
不要把話題引向自己不那么有自信的地方(比如上面的跨域問題)
總結
以上是生活随笔為你收集整理的前端实习生笔试_2016春网易前端暑期实习生笔试面经(二面已挂)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 果冻是什么?
- 下一篇: excel判断字符串包含另一个字符串_【