1. 程式人生 > >京東面試題分析

京東面試題分析

昨天有幸去京東面試,做了一套面試題,考察的都是很基礎的東西,但也暴露出了不少問題。今天就抽時間總結一下,避免下次遇見時再出錯。

1、PNG8格式圖片的顏色模式是:(索引)顏色,在修改前要先更改顏色模式為RGB顏色。

2、已知這樣一段HTML:<p class="a"></p>,應用這樣一段css: .a{font:12px/2 arial;},則這個p元素的line-height的值是(24)px.
分析:font:12px/2 這是縮寫形式,font-size為12px,line-height位font-size的2倍,24px。

3、已知var obj = Object.create({a:1}),則obj.hasOwnproperty(‘a’)返回的結果是:(false).

分析:Object.create(proto [, propertiesObject ]) 是E5中提出的一種新的物件建立方式,第一個引數是要繼承的原型,如果不是一個子函式,可以傳一個null,第二個引數是物件的屬性描述符,這個引數是可選的。hasOwnproperty方法是判斷一個屬性是否是定義在物件本身,如果是則返回true,否則返回false。很顯然obj是在原型的基礎上建立的。

4、已知這樣一段HTML,<div class="a"><div class="b"></div></div>,如果應用了這樣一段css,

.a{width:100
px
;padding:10px;box-sizing:border-box;}
.b{width:100%;height:10px;background-color:red}

那麼紅色區域的寬度為:B

A. 90px
B. 80px
C. 110px
D. 100px

分析:box-sizing:border-box;是怪異盒模型,border、padding不會撐開盒子的大小。預設是content-box,標準盒模型,border、padding會撐開盒子的大小.所以b的寬度就是100-10x2=80px。

5、以下程式碼執行後a、b的值分別是(c)
var a=0;
var b=false || a++;
A、1,1
B、0,0
C、1,0
D、0,false

分析:在運算過程中,首先js 會將 && 或|| 兩邊的值轉成Boolean 型別,然後再算值 ,&&運算如果返回true,則取後面的值,如果|| 返回true,則取前面的值 。而其中數值轉換成boolean 的規則 是:

物件、非零整數、非空字串返回true,

其它為false ;
在本題中a++結果是0,a是1。||兩邊都為false,所以結果也就是false。按照上面所說的如果||返回true,則取前面的值。所以b的值就取後面的值0,故選c。

6、以下表達式返回的結果:B
“1”-null+true
A.NaN
B.2
C.1
D.0
分析:這道題考察資料的隱式轉換,字串1預設轉化成數字1,null轉化成0,true轉換成1,所以結果就是2.

7、以下程式碼執行時兩個alert分別輸出值是(B)
(function(){
a=5;
alert(window.a);
var a=10;
alert(a);
})();
A.5,5
B.undefined,10
C.undefined,5
D.10,10

分析:本題考察變數提升,var a=10 提前宣告並把a=5頂替掉,所以執行alert(window.a)就返回undefined。

8、以下表達式中返回結果是true的有:ABC
A. false == ‘0’
B. ‘123’ ==123
C. new String(‘123’) == ‘123’
D.null == false

分析:這道題考察的是==的用法,==比較,先進行型別轉換,再進行值比較。===的比較,如果資料型別不相同,就直接返回false。

9、下列瀏覽器對應的hack方式正確的有:A
A. IE6: _property:value
B. IE6/7/8: *property:value
C. IE8: *property:value
D. IE9: property:value\9

分析:這道題考察的是css hack。css hack的目的就是使你的css程式碼相容不同的瀏覽器,一般有兩種方式,條件註釋法、類內屬性註釋法。 本題顯然是運用的類內屬性註釋法 : _ ie6識別 * ie6/7識別 \9 ie6-10都能識別。

10、css實現單行文字超出顯示….
overflow:hidden;
text-overflow:ellipsis;
white-space: nowrap;

11、已知父容器和子容器,寬度均不固定。用css實現子容器水平居中。

    <div class="parent">
        <div class="child">jd.com</div>
    </div>

方法1:.parent{
text-align:center;
}

方法2:.parent{
position:absolute;
left:50%;
transform:translateX(-50%);
}