前言:剛剛更了一面的內容,問到的問題都是前端技術相關的,而這次二面問到js的問題就一個,上來第一個問題就是算法,然后又是計算機網絡,計網我之前有刷過一次書,但是時間已經是1個多月前,所以我本身的知識已經有遺忘,而且當時的心態也被各種打擊慘了,所以計網的問題也是答得很不好,總體表現就是差。但是這次面試經歷對我也非常的重要,它讓我清晰明白的知道了我技能的薄弱的一塊——算法,同時也激起了我的斗志,接下來的學習重點就是算法啦~真的很痛苦,但是這次再也不要退讓了,不把算法啃下來,我就啃我自己,哼
正文:
二面面試題目
1.自我介紹
思路:個人信息+應聘崗位+相關技能+實踐經歷
2.簡單介紹一下做過的項目
思路:就像我一面總結文里說的,盡量不要啰嗦,言簡意賅就是最高境界,更詳細的思路可以看我上一篇文 (鏈接在此:http://www.cnblogs.com/zllwebstudy/p/5839518.html)
3.表達驗證,異步,文件上傳(這些是我說到的實現的功能,然后就引發了下一個問題)
4.如何實現大文件上傳,如幾百M或者幾G的文件
思路:當時是懵掉了,因為我們做的項目有要求文件大小不超過多少,所以沒有考慮過大文件上傳,只能扯了半天,說不知道了。總結時,去網上找了很多文來看,但是基本是一個調調,在此真的要感慨一 下,網上的文在很多網站都是一模一樣,也不知道是誰抄誰的,希望抄襲的網站能夠注明原著,不要讓人家的心血白費。所以我之后看到這個文(鏈接在此:http://blog.csdn.net/sinat_29804751/article/details/46876061)還不錯,但不知是不是原創,希望不是又一個傷害原作者的網站。還沒有具體實現過,但是原理感覺應該是對的,之后會去實踐,如果有錯再來改正。
5.冒泡排序的時間復雜度是多少?
思路:很不確定的說是nlogn(完全是亂蒙),面試官很耐心的引導我,我想起出來,說是n²(答案是n²)
6.那簡單說說快速排序的實現思路。
思路:沒答上來,總結看書是知道了,簡述如下:首先選擇一個軸值,將待排序記錄划分為獨立的兩部分,左側記錄的關鍵碼均小於或等於軸值,右側記錄的關鍵碼均大於或等於軸值,然后分別對着兩部分 重復上述操作(即選取軸值,然后小於或等於軸值的放到左邊,大於或等於軸值的放在右邊),直到整個序列有序。
7.在對話框里5分鍾寫出冒泡排序算法(當時用的qq開視頻)
思路:沒答上來,在此寫js的代碼實現:
function bubbleWay(arr,n){//arr為排序的數組,n為需要排序的元素個數 var exchange = n; //排序從1-n while(exchange != 0){//用0來作為邊界判定條件 var bound = exchange;//當前需要從1-bound進行交換 exchange = 0;//初始化exchange為0,表示還沒有進行交換 for(var j=0;j<bound;j++){//遍歷需要交換的元素 if(arr[j]>arr[j+1]){//如果當前元素大於其后元素,則兩者交換 var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; exchange = j;//exchange記錄當前交換發生的位置 } } } }
8.一個人走100個階梯,他可以走1步或者走2步,問一共有多少種走法。
思路:依然是沒答上來,哎,心塞,題思路解如下:
(1)當要走的階梯為0階時,有0種走法。(選1步或2步都不能到達)
(2)當要走的階梯為1階時,有1種走法。(選1步)
(3)當要走的階梯為2階時,有2種走法。(走1步兩次或者走2步)
(4)當要走的階梯大於等於3時,有fn=f(n-1)+f(n-2)種走法。(想象一下,這個人現在站在第n階梯,他只可能從n-1或者從n-2階梯走過來,由此再往前推,n-1階梯只可能從n-1-1或者n-1-2階 梯走來,所以這是一個遞歸調用)
綜上所述,100階梯的走法為f100=f99+f98=....種走法。(寫了算法准備算一算的,然而被卡死機了。。。反正大家就知道原理好了,應該不至於變態要算出結果來。。。。)
9.http狀態碼中200代表什么?304代表什么?
思路:200代表成功,304代表緩存可用。
10.http報文表頭里指示緩存的字段有哪些?
思路:cache-Control,pragma,Expires,網上找了一篇文,寫得挺好的(鏈接在此:http://www.codeceo.com/article/http-cache-control.html)
11.tcp連接時需要幾次握手?斷開需要幾次揮手?敘述一下斷開時的情況。
思路:3次握手4次揮手。(ps:我的WiFi名就是這個~)斷開時,(1)由客戶端發出連接釋放報文,並停止發生數據,主動關閉tcp連接。
(2)服務器端發出確認,這時的tcp處於瓣關閉狀態,客戶端不能發生數據,當任然能接受服務器端發送的數據
(3)服務器端發出連接釋放報文,等待客戶端的確認
(4)客戶端返回確認,等待一段時間后,斷開連接
12.tcp的MTU是多少?(此處面試官說的是這個問題,但是之后有大牛指出,MTU是鏈路層的概念,所以特別說明,MTU是鏈路層概念,MSS是tcp的概念)
思路:1500字節 這里有個和MTU相關的概念是MSS,看到一篇文講得挺好的(鏈接在此:http://blog.csdn.net/yygydjkthh/article/details/7359281)
13.什么是閉包?什么是原型?
思路:又是經典的必考問題,閉包和原型是js里面很重要的概念,面試被考到4次的3次,不會的小伙伴在網上搜文來看,講得很詳細,不再贅述。
14.看你用過gulp,主要是用來做什么?(答:壓縮圖片)除了壓縮圖片還做過什么?(壓縮js,css,添加前綴)那為什么要壓縮js文件?
思路:gulp教程很多,我放一個我自己很喜歡的(鏈接在此:https://github.com/nimojs/gulp-book)至於為何壓縮js文件,主要說到兩點:(1)減少js文件大小,方便傳輸,提高傳輸速率(2)保護 源碼,不被竊取原創知識,保護原創從我做起。
15.對於前端工程師的看法。
思路:有事兒說事兒,無事退朝。
16.還有沒有什么想問的。
思路:看過很多面經,總結一點就是,別問敏感問題,敏感問題的關鍵字有:工資,加班等等。
后話:
這次是視頻面試,比起一面的電話面試會有更多的打擾因素,所以大家在面試的時候更要注意面試時的環境,不然真的會很打擾面試時的心情,但是對於那些不能改變的部分(我面試時,網速不穩定,面試官說話的聲音很卡頓,很嘈雜)就要調整心態,也當是一次身心的修行吧。這次面試的表現不怎么樣,但是也是一次很不錯的經歷,一面讓我增加的信心,二面讓我深刻的明白自己的不足,我相信待得校招還有更好的表現。最后,各位要面臨校招的戰友們,一起加油吧~希望大家都能簽到自己滿意的公司~加油~