淘寶UED招聘題(前端開發部分含參考答案和麪試官評語)

題目1:JavaScript方面小賢是一條可愛的小狗(Dog),它的叫聲很好聽(wow),每次看到主人的時候就會乖乖叫一聲(yelp)。從這段描述可以得到以下對象:

function Dog() {
this.wow = function() {
alert(’Wow’);
}
this.yelp = function() {
this.wow();
}
}
小芒和小賢一樣,原來也是一條可愛的小狗,可是突然有一天瘋了(MadDog),一看到人就會每隔半秒叫一聲(wow)地不停叫喚(yelp)。請根據描述,按示例的形式用代碼來實現(提示關鍵字: 繼承,原型,setInterval)。

function MadDog() {
this.yelp = function() {
var self = this;
setInterval(function() {
self.wow();
}, 500);
}
}
MadDog.prototype = new Dog();
//for test
var dog = new Dog();
dog.yelp();
var madDog = new MadDog();
madDog.yelp();

淘寶招聘官評語:
以上是較爲規範的一個解法,我們希望通過此題,檢查應聘者對JS的語言基礎及的面向對象開發的理解程度。其中的難點在於閉包的應用。

題目2:CSS方面使用純CSS實現未知尺寸的圖片(但高寬都小於200px)在200px的正方形容器中水平和垂直居中。

參考答案:

<!DOCTYPE html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="簡單的XHTML頁面" />
<meta name="Description" content="這是一個簡單的XHTML頁面" />
<title>簡單的XHTML頁面</title>
</head>
<body>
<style type="text/css">
.box {
display: table-cell;
vertical-align:middle;
width:200px;
height:200px;
text-align:center;

*display: block;
*font-size: 175px;

border: 5px solid red;
}
.box img {
vertical-align:middle;
}
</style>
<div class="box">
<img src="http://justinyoung.cnblogs.com/images/cnblogs_com/justinyoung/2007/tb_m.PNG" alt="" />
</div>
</body>
</html>
淘寶招聘官評語:
很遺憾,這個解法用到了css hack。我們也不理解爲什麼設置font-size可以讓IE顯示垂直居中的效果。根據我們的計算,高度/字體大小的比值爲1.14左右時IE可實現垂直居中。
當然還有很多其他的實現方案,但需要引入額外的標籤。對於流量超大的淘寶網而言,我們經過權衡,傾向於在此問題上合理的使用hack。



題目3:XHMTL方面在不使用 border 樣式的情況下,畫出一條一px高的橫線,在不同瀏覽器的Quirksmode和CSSCompat模式下都保持同一效果。
<!DOCTYPE html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="簡單的XHTML頁面" />
<meta name="Description" content="這是一個簡單的XHTML頁面" />
<title>簡單的XHTML頁面</title>
</head>
<body>
<div style="height:1px;overflow:hidden;background:#000"></div>
</body>
</html>
淘寶招聘官評語:
此題要點是要求在瀏覽器的 QuirksMode 和 CSSCompat 模式下效果一致。解法有很多,以上是我們認爲的最爲合理的一種。

題目4:JavaScript方面請給Array本地對象增加一個原型方法,它的用途是刪除數組條目中重複的條目(可能有多個),返回值是一個包含被刪除的重複條目的新數組。

  1. Array.prototype.distinct = function() {
  2. var ret = [];
  3. for (var i = 0; i < this.length; i++) {
  4. for (var j = i+1; j < this.length;) {
  5. if (this[i] === this[j]) {
  6. ret.push(this.splice(j, 1)[0]);
  7. } else {
  8. j++;
  9. }
  10. }
  11. }
  12. return ret;
  13. }
  14. //for test
  15. alert(['a','b','c','d','b','a','e'].distinct());

淘寶招聘官評語:
這是最爲普通的解法。在數組元素數量不高的情況下,它的性能是可以接受的。相信一定有不少朋友有更好的解法,請告訴我們。

題外話:
從taobao的這次的考題來看,對web前臺職位的技能要求,已經很明顯——web標準設計。從4道題目來看,考結構的佔了一題,考表現的佔了一題,考行爲的佔了兩題。從這個比重來看,JavaScript的重要性,不言而喻。但是恰恰現在很多的學習web標準設計的朋友,都一頭扎進css的研究當中,甚至誤以爲css就是web標準設計的全部。這點還是比較值得思考的。

提到JavaScript,很多做前臺的都比較恐懼。美工、頁面都可以做到很漂亮,但是就是JavaScript的基礎比較差。我想這個也是比較值得反思的點。頁面的配色、風格、圖片等設計應該屬於美工的事情,而後面兩層(以三層架構爲例)又是程序員的事情,所以,如果將自己定位爲一個“Frontend Software Engineer”的時候,我們到底應該學習和掌握一些什麼。我想淘寶的這個份試卷,還是比較有指導意義的。(當然,如果能力和精力比較好的話,全能是最好的。)


當然,我的意思也不是說,作爲FSE(Frontend Software Engineer),只要掌握這三個方面就可以了。其實還需要一些其他的相關知識,例如SEO(搜索引擎優化)、UE(用戶體驗)等方面,甚至軟件設計模式等方面也需要一定的能力,才能建設出好的(強壯、易維護、易擴展)網站。對待知識,我認爲:第一:要廣,只要和自己的職業定位相關的,都要有一定的瞭解。第二:要深,對自己憑着喫飯的技能一定要深入。掌握一些別人沒有掌握的知識和能力,才能更好地體現自己的價值。

 

http://blog.sina.com.cn/s/blog_7005188101018150.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章