騰訊面試題0804

2022-08-14 08:12:11 字數 2375 閱讀 5554

function

parent() ;

this.show = function

() }

function

child()

}child.prototype = new

parent();

var parent = new

parent();

var child1 = new

child();

var child2 = new

child();

child1.a = 11;

child2.a = 12;

parent.show();

//1 [1,2,1] 5

child1.show(); //

11 [1,2,1] 5

child2.show(); //

12 [1,2,1] 5

child1.change();

child2.change();

parent.show();

//1 [1,2,1] 5

child1.show(); //

5 [1,2,1,11,12] 5

child2.show(); //

6 [1,2,1,11,12] 5

記住1 每個建構函式 都有乙個原型[[prototype]]屬性 指向建構函式的原型物件

2 每個例項生成的時候 都會在記憶體中產生一塊新的堆記憶體

3 每例項都有乙個隱式原型__proto__ 指向建構函式的原型物件

4 this的指向 取決於this呼叫時的位置, 在這道題中, 也可以簡單理解為, 誰呼叫方法, this就指向哪個物件

5 陣列和字面量物件 都是 引用

6 原型鏈的查詢規則: 就近原則

當例項上存在屬性時, 用例項上的

如果例項不存在,順在原型鏈,往上查詢,如果存在,就使用原型鏈的

如果原型鏈都不存在,就用object原型物件上的

如果object原型物件都不存在, 就是undefined

解題思路

首先 來看parent的方法 一共有 a b c show 四個方法

parent a=1 b=[1,2,1] c.demo=5

然後 child的方法 a change兩個方法 繼承來自parent的b c show

child a=2 b=[1,2,1] c.demo=5

parent.show() 因為parent = new parent() 所以輸出 1 [1,2,1] 5

child1.show() 因為child1 = new child()且child1.a = 11 所以輸出 11 [1,2,1] 5

child2.show() 因為child2 = new child()且child2.a = 12 所以輸出 12 [1,2,1] 5

child.change() 改變了b a c.demo的值 然而在child中並沒有b c.demo的存在 所以順著原型鏈往上找 在parent上找到了 b=[1,2,1] c.demo=5

child上面的b = [1,2,1] c.demo = 5

change改變的child上的b c.demo 且是永久性的改變

child1.change()

this.a = 11 this.b.push(this.a) //

b=[1,2,1,11]

this.a = this.b.length //

a=4

this.c.demo = this.a++ //

c.demo=4 a=5

child1的 a = 5

此時 child上

b=[1,2,1,11] c.demo=4

child2.change()

this.a = 12 this.b.push(this.a) //

b=[1,2,1,11,12]

this.a = this.b.length //

a=5this.c.demo = this.a++ //

c.demo=5 a=6

child2的a = 6

此時 child上

b=[1,2,1,11,12] c.demo=5

child1.show() 要輸出 a b c.demo,a是自身有的 b c.demo自身沒有往上找

a = 5 b = [1,2,1,11,12] c.demo = 5

child2.show() 同上 a是自己的

a = 6 b = [1,2,1,11,12] c.demo = 5

騰訊面試題

題目 class aaa aaa pa 0x10000000 問1 pa 10 問2 char pa 10 問3 int pa 10 回答 1 0x10000000 10 16 雙位元組對齊 2 0x10000000 10 3 0x10000000 10 4 題目二 有乙個集合,由0 1000的數字...

騰訊面試題

版上看到的,好東西得記下來。1.有1到10w這10w個數,去除2個並打亂次序,如何找出那兩個數。不准用位圖!關鍵 x y 1 2 3 10w a 0 a 1 a 2 a 10w 1 根據qq號做hash,整個登入時間戳。3.有乙個江洋大盜,他每次寫信都是從一張報紙上剪下單詞,再把單詞貼在信上。假如某...

騰訊面試題

題目 兩個陣列a n b n 其中a n 的各個元素值已知,現給b i 賦值,b i a 0 a 1 a 2 a n 1 a i 要求 1.不准用除法運算 2.除了迴圈計數值,a n b n 外,不准再用其他任何變數 包括區域性變數,全域性變數等 3.滿足時間複雜度o n 空間複雜度o 1 pack...