java程序員最難面試之“今日頭條”

序言

今日頭條的面試不是一般的難.

前面兩面還好。

一面

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的可以加我。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容