在大廠工做了6年,當了3年的前端面試官,把大廠常問的面試題與答案彙總在個人Github中。但願對你們有所幫助,助力你們進入本身理想的企業。javascript
項目地址是: https://github.com/airuikun/W...
若是你在大廠面試的時候遇到了什麼不懂的問題,歡迎給我提issue,我會把答案和考點都列出來,公佈在下一期的面試週刊裏。前端
你們若是去大廠面試過,就會發現,在網上刷了不少的前端面試題,可是去大廠面試的時候仍是一頭霧水,那是由於那些在網上一搜就能搜出來的題,大廠的面試官基本看不上,他們都會問一些開放題,在回答開放題的過程當中,就能摸清你知識技能的廣度和深度,因此本期會加入幾道我在面試候選人經常使用的開放題,供你們學習和思考。java
我把下面每道題的難度高低,和對標了大廠的多少職級,都寫上去了,你們能夠參考一下本身是什麼職級。node
不少人在google上搜索「前端面試 + https詳解」,把答案滾瓜爛熟,可是問到如何劫持https請求的時候就一臉懵逼,是由於仍是停留在https理論性階段。nginx
想告訴你們的是,就算是https,也不是絕對的安全,如下提供一個本地劫持https請求的簡單思路。git
模擬中間人攻擊,以百度爲例github
openssl s_client -connect www.baidu.com:443
sslscan -tlsall www.baidu.com:443
sslscan -show-certificate --no-ciphersuites www.baidu.com:443
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
若是你有更好的想法或疑問,歡迎在這題目對應的github下留言:https://github.com/airuikun/W...web
若是你有更好的答案或想法,歡迎在這題目對應的github下留言:https://github.com/airuikun/W...面試
若是你有更好的答案或想法,歡迎在這題目對應的github下留言:https://github.com/airuikun/W...算法
async 函數的實現原理,就是將 Generator 函數和自動執行器,包裝在一個函數裏
function spawn(genF) { return new Promise(function(resolve, reject) { const gen = genF(); function step(nextF) { let next; try { next = nextF(); } catch (e) { return reject(e); } if (next.done) { return resolve(next.value); } Promise.resolve(next.value).then( function(v) { step(function() { return gen.next(v); }); }, function(e) { step(function() { return gen.throw(e); }); } ); } step(function() { return gen.next(undefined); }); }); }
若是你有更好的答案或想法,歡迎在這題目對應的github下留言:https://github.com/airuikun/W...
一次性插入1000個div,如何優化插入的性能
var fragment = document.createDocumentFragment(); fragment.appendChild(elem);
向1000個並排的div元素中,插入一個平級的div元素,如何優化插入的性能
若是你有更好的答案或想法,歡迎在這題目對應的github下留言:https://github.com/airuikun/W...
你面試阿里和騰訊,可否上p7和t31,就看你對開放題能答有多深和多廣。
這題目考察你如何在瀏覽器端中進行大數據的存儲優化和檢索優化。
若是你僅僅只是答用數組對象存儲了2萬個小球信息,而後用for循環去遍歷進行索引,那是遠遠不夠的。
這題要往深一點走,用特殊的數據結構和算法進行存儲和索引。
而後進行存儲和速度的一個權衡和對比,最終給出你認爲的最優解。
我提供幾個能觸及阿里p7和騰訊t31級別的思路:
這種開放題答案不惟一,也不會要你現場手敲代碼去實現,可是思路必定要行得通,而且是能打動面試官的思路,若是你們有更好的idea,歡迎你們到個人github裏補充:https://github.com/airuikun/W...
這題考察對大數據的動畫顯示優化,固然方法有不少種。
可是你有沒有用到瀏覽器的高級api?
你還有沒有用到瀏覽器的專門針對動畫的引擎?
或者你對3D的實踐和優化,均可以給面試官展現出來。
提供幾個思路:
若是你們有更好的idea,歡迎你們到個人github裏補充:https://github.com/airuikun/W...
這題是考察算法和實際問題結合的一個問題
衆所周知,騰訊玩的是社交,用戶量極大。不少場景的數據量都是百億甚至千億級別。
那麼如何對這些數據進行高效的操做呢,能夠經過這題考察出來。
之前老據說不少人問,前端學算法沒有用,考算法都是垃圾,面不出候選人的能力
其實。。。老哥實話告訴你,當你在作前端須要用到crc3二、並查集、字典樹、哈夫曼編碼、LZ77之類東西的時候
已是涉及到框架實現和極致優化層面了
那時你就已經到了另一個前端高階境界了
因此不要抵觸算法,可能只是咱們目前的眼界和能力,還沒觸及到那個層級
我前面已經公佈了兩道開放題的答案了,相信你們已經有所參悟。我以爲在思考開放題的過程當中,會有不少意想不到的成長,因此我建議這道題你們能夠嘗試本身思考一下。本題答案會在週五公佈到個人github上。
對應的github地址爲:https://github.com/airuikun/W...
別看這題,題目上每一個字都能看懂,可是裏面涉及到的知識,暗藏殺雞
這題要往深處走,會涉及ast抽象語法樹、編譯原理、v8內核對原生js實現問題
直接對標阿里p7 ~ p7+和騰訊t31 ~ t32職級,我以爲這個題是這篇文章裏最難的一道題,因此我放在了開放題中的最後一題
你們多多思考,本題答案會在週五公佈到個人github上
對應的github地址爲:https://github.com/airuikun/W...
如今大廠,已經所有都是用git了,基本沒人使用svn了
不少面試候選人對git只會commit、pull、push
可是有沒有使用過reflog、cherry-pick等等,這些都很能體現出來你對代碼管理的靈活程度和代碼質量管理。
針對git時光機經典問題,我專門寫了一個文章,輕鬆搞笑通俗易懂,你們能夠看一下,放鬆放鬆,同時也能學到對git的時光機操做《git時光機》
本人還寫了一些前端進階知識的文章,若是以爲不錯能夠點個star。
blog項目地址是: https://github.com/airuikun/blog
我是小蝌蚪,高級前端工程師,跟着我一塊兒每週攻克幾個前端技術難點。但願在小夥伴前端進階的路上有所幫助,助力你們進入本身理想的企業。