序言
今日頭條的面試不是一般的難.
前面兩面還好。
JS基本數(shù)據(jù)類型
說(shuō)說(shuō)ES6新規(guī)范,我說(shuō)了 let const 箭頭函數(shù) 還有promise, ES6 Module 。
怎么實(shí)現(xiàn)ES6 Module,我說(shuō)了用閉包實(shí)現(xiàn)一個(gè)模塊。
項(xiàng)目用到React,說(shuō)說(shuō)React。
React性能優(yōu)化
算法 問題之前筆試 ,求兩個(gè)整型數(shù)組的相同數(shù),當(dāng)時(shí)想到了用哈希表去掃描,然后比較下一個(gè)數(shù)組中是否有相同數(shù)字
常見的查找方式,順序表查找,二分查找,哈希查找,各自時(shí)間復(fù)雜度。 注意二叉樹的查找,時(shí)間復(fù)雜度是O(h),樹的高度!
AVL是O(lgN)
哈希表的實(shí)現(xiàn)方式: 哈希函數(shù)實(shí)現(xiàn)-除留余數(shù)法、直接定址法、數(shù)字分析法等。 解決沖突的方法:開放地址法(線性探測(cè)、平方探測(cè)、)、分離鏈接法、雙散列、再散列等
算法二 : 頭條很喜歡問這個(gè):
一個(gè)無(wú)序,不重復(fù)的數(shù)組,從中取出N個(gè)數(shù),求讓這個(gè)N個(gè)數(shù)和為M的組合有多少個(gè)?
簡(jiǎn)單的介紹了一下項(xiàng)目
1. 問我的項(xiàng)目,為什么使用背景滾動(dòng),如果是多個(gè)精靈對(duì)象來(lái)滾動(dòng)怎么處理?(還是一樣)
2. 還是問的另一個(gè)項(xiàng)目的一些細(xì)節(jié)(對(duì)自己的項(xiàng)目一定要熟悉)
3. 說(shuō)說(shuō)從輸入U(xiǎn)RL,發(fā)生了什么,以HTTPS的角度講,細(xì)講了一下SSL握手。 數(shù)字簽名 數(shù)字證書的作用。為什么我們需要HTTPS,為什么它是安全的?
4. 函數(shù)節(jié)流怎么設(shè)計(jì),拖動(dòng)事件,不需要頻繁觸發(fā),而且隔一段時(shí)間觸發(fā)一次。 函數(shù)節(jié)流的實(shí)現(xiàn)。
5. 設(shè)計(jì)一個(gè)認(rèn)證的方案,免登陸的方案。 一開始提出cookie+session,一直問我怎么產(chǎn)生這些信息,我說(shuō)在服務(wù)端產(chǎn)生,信息存到數(shù)據(jù)庫(kù)中,通過(guò)HTTP 響應(yīng)SET-Cookie返回一個(gè)cookie,設(shè)置了它的過(guò)期時(shí)間expire等,然后傳輸回客戶端,客戶端之后每次請(qǐng)求都會(huì)帶上這個(gè)cookie。后面安全性,我說(shuō)MD5,他說(shuō)不可逆不行。
后面面試官跟我說(shuō) 用token, 我們不需要實(shí)際把用戶的信息存在cookie里面,我們把用戶名等信息可以使用非對(duì)稱加密算法,加密后得到一個(gè)隨機(jī)字符串,這個(gè)就是token然后存在客戶端,你每次發(fā)送到服務(wù)端可以通過(guò)解密token來(lái)獲取這個(gè)信息。
6.React 的virtual DOM的dom diff算法細(xì)節(jié)。
兩道邏輯推理題
document.write怎么影響文檔的
比較它在onload中執(zhí)行和在文檔創(chuàng)建時(shí)不同時(shí)機(jī)的區(qū)別
3.設(shè)計(jì)一個(gè)彈幕,怎么優(yōu)化。 需要考慮RenderLayer,我跟他說(shuō)了一下canvas
寫KMP算法出來(lái)
請(qǐng)留言告訴我你會(huì)多少題?
在這里給大家提供一個(gè)java交流學(xué)習(xí)的地方,java進(jìn)階群:744642380,
1)具有1-5工作經(jīng)驗(yàn)的,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加我。
2)在公司待久了,過(guò)得很安逸,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修、跳槽拿高薪的可以加我。
3)如果沒有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí),對(duì)java工作機(jī)制,常用設(shè)計(jì)思想,常用java開發(fā)框架掌握熟練的可以加我。
4)想交流學(xué)習(xí)java的可以加我。