都說程式設計師應該多出去面試,不然不知道自己有多菜,本著我是菜雞我怕誰的鐵頭精神,這兩天也積極投遞簡歷,尋求面試機會,但是因為經驗不足的問題,很多大公司連簡歷都過不了,只有一些創業公司給了面試機會,不過創業公司問的也挺具代表性的,不敢苟藏,分享出來。
首先自我介紹一下,我叫XXX,武漢某211小本,18年6月畢業,剛畢業的時候寫了三個月的java(Ctrl C + Ctrl V);三個月前,前端基礎很薄弱,連引用型別和值型別都傻傻分不清楚,是一個24k如假包換的菜雞。經過三個月的學習,自我感覺長進了不少(或許是錯覺),結果面試下來還是覺得,嗯,果然還是菜雞。
因為是創業公司,就不報公司名字了(反正沒人聽過),是一家做區塊鏈的。
一面:
- 一道演算法題,大意如下:1由一個1組成(1 = 1),2由一個2或兩個1組成(2 = 1 + 1; 2 = 2),3由一個3,3個一,一個1和一個2組成(3 = 3; 3 = 1+1+1; 3=1+2),問n有幾種組成方式。(dp,找出dp表示式即可)
- 說一下陣列去重的方式(這個芽羽大神的部落格上講的很清楚,想了解的可以去看一下,set和O(n^2)複雜度的這兩個方法肯定不是面試官想聽的,排序去重,indexOf,es6等是比較好的答案,為了裝逼,我還說了一個字首樹去重)
- 你說到字首樹去重,那你講一下怎麼做(裝逼成功,想了解字首樹的自己百度去吧,很多資料)
- 說一下vue雙向繫結的原理(這裡從原始碼層面講了十多分鐘,效果應該還不錯)
- 平時用過哪些es6的特性(let,const,模板字串,promise,箭頭函式等等)
- promise是解決什麼的
- 如果要你實現一個promise,你該怎麼實現(這個因為看過promise的實現方法,也答得不錯)
- 有了解async,await嗎(generator的語法糖,使非同步程式碼表現得像同步)
- 那你說說generator呢
- 講一下XSS(對不起,只知道是安全方面的,瞭解的不多)
- 有了解過weex,rn這些嗎(沒,目前只做過pc端)
- node呢(沒)
- 說說跨域吧(瀏覽器有個同源策略,巴拉巴拉,解決方案是,後端設定cors,前後端配合jsonp,個人覺得最好的方案是修改nginx配置)
- 講一下閉包(這個要講的東西很多,能夠把作用域,作用域鏈,執行上下文棧講清楚即可)
- 如何實現一個居中佈局(老生常談了)
- 各種奇奇怪怪的css,具體題目忘了,反正css答得不好
一面大概面了一個多小時,我以為掛了,結果讓我等一下,所以又苟到了二面:
- 講一下vue資料驅動原理
- 講一下vNode,為什麼要用vNode,講一下diff演算法
- 講一下let和var的區別
- 你剛剛說到暫時性死區,講一下暫時性死區呢
- 箭頭函式和普通函式的區別(this?)
- 怎麼實現promise的all方法
- 講一下瀏覽器的快取
- js的繼承機制
- 說一下閉包
- 瞭解過哪些設計模式
- 怎麼實現一個單例
- 平時獲取知識的渠道(掘金,github,公眾號,微信群?)
- 有做過weex,rn這些嗎(沒有)
- 怎麼沒去試試大廠(因為菜啊)
- 前端打包工具有了解嗎(webpack只跟著官網配過,沒在專案中實操過)