這次讓面試官非常滿意 手撕深拷貝 15行

2022-03-08 10:52:21 字數 1220 閱讀 6986

這次讓面試官非常滿意:手撕深拷貝

-------------人工分割線-------------

淺拷貝這裡不做介紹了,深拷貝的實現要點,除了一定要深!還要能相容各種型別,如函式,正則、date等等。

其實日常業務開發中,json.parse(json.stringfy(obj))已經能夠解決90%左右的轉殖需求。還有object.assign() object.create()都能滿足一定的轉殖需求。

但上班擰螺絲,面試造航母的精神不容小覷!本著專研精神去看待怎麼才能寫個牛逼、各種場合都能通用的轉殖方式?我做了不少功課。

在思考如何實現深拷貝之前,首先得弄明白:

實現思路:

直接上**:

待轉殖物件

let obj = ,

arr: [1,2,3],

reg: /abc\-001/,

regobj: new regexp(/abc/),

object:

},};

obj.loop = obj; // 迴圈引用

let sup =

}let objectsup =

}object.setprototypeof(obj, sup); // 根物件設定原型物件

object.setprototypeof(obj.object, objectsup); // 子物件設定原型物件

核心**

// 使用weakmap是便於**

function deepclone(obj, cachecurr = new weakmap()) ;

// 繼承原型

if(obj) object.setprototypeof(cloneobj,object.getprototypeof(obj));

// 普通引用型別及非引用型別轉殖,reflect.ownkeys能夠獲取自身所有屬性【非列舉也可】

for(let key of reflect.ownkeys(obj)) else

}return cloneobj;

}

**注釋感覺都寫的很清楚了。寫完這篇文章就可以安心的來一把無限火力了。

測試過挺多資料結構的都完美通過。如果有發現問題的同學幫忙指出來。感激不盡

讓面試官顫抖的Tomcat系統架構系列!

看懂了是一說法,理解又是一說法,能侃侃而談又是一說,好長時間不忘又是一說。今行健,以自強不息對於web開發的我們來說,與tomcat打交道,是非常的頻繁的,tomcat就是乙個小型的伺服器,我們可以訪問。目前同類中有jetty,做的比較好,它是採用nio,效能比較好。但是啊,tomcat已經進入市場...

讓面試官對你「一見鐘情」

都說管理是一門藝術而非技術,其實,道 和 術 在管理中總是相輔相成的,人才管理也不外乎此。利用 需求風格特徵 有針對性地做好員工的管理與激勵,是術的一種,更是道的體現。每年的這個時候,有很多同學已經走上工作的崗位,對於剛開始找工作的同學來說面試是個坎兒。其實這些問題無非歸類為兩種,一種是技能類的問題...

讓面試官顫抖的 HTTP 2 0 協議面試題

http協議,對於擁有豐富開發經驗的程式設計師來說簡直是信手拈來,家常便飯。雖然天天見,但是對於http協議的問題,可能很多人在沒有積極準備的情況下,不一定能很好的回答出來。今天,我們就來講講http 2.0和之前版本的區別。http協議 hypertexttransferprotocol,超文字傳...