1. 程式人生 > >百度前端面試題目

百度前端面試題目

、    JavaScript包括哪些資料型別?

我回答的是有兩種:基本型別和物件,其中基本型別包括數字、字元串、布林和null;

物件(類似物件),包括陣列、函式、內建物件、自定義物件。不過按理說字串也有些

物件的特點。

我這個回答是參考的JavaScript權威指南的,有些小問題,第一類中缺少了undefined。

搜尋了下,網上還有幾種回答:

第一種:共九種類型:

1.未定義(undefined)

2.空(null)

3.布林(boolean)

4.字串(string)

5.數字(number)

6.物件(object)

7.引用(reference)

8.列表(list)

9.完成(completion)

reference,list,completion這3種類型是做為JavaScript執行時中間結果的資料型別 在

程式碼

中不能使用。

最後我確實沒見過。

第二種:javascript中包含6種資料型別:undefined、null、string、number、boolean

和object。其中,前5種是原始資料型別,object是物件型別。object型別中包括

Object、Function、String、Number、Boolean、Array、Regexp、Date、Globel、

Math、Error,以及宿主環境提供的object型別。

除去reference,list,completion不同外,這幾個回答其實大同小異。

2、<img>元素的alt和title有什麼異同?

這個我前幾天正好看到了一篇這樣的文章。這兩個屬性
是有些重複了。在不同瀏覽器

面表現有些不同。在alt和title同時設定的時候,alt作為圖片的替代文字出現,title

是圖片的解釋文字。

剛剛小小的實驗了一把,在沒有title的時候,alt會作為圖片的解釋,但是Firefox好像

不這樣做。完全測試的話要分圖片存不存在、只有title、只有alt,2*2*2,8種情況,

真複雜啊。

3、    border-color-left、marin-left、-moz-viewport改寫成JavaScript

格式


這個就是-後字元換大寫,沒什麼問題。第三個-moz的真不敢確定。(未完待續)

ps:剛接到了百度面試的電話,等了好久,以為沒希望了呢,小小高興一下吧。不過我


也沒有多大的優勢,不管是技術
方面還是經驗方面只有劣勢沒有優勢,只是rp還行(竊喜


一下)。筆試通過的有些僥倖,去百度的希望不大。


繼續:剛才試驗了一個-moz-border-radius確實是寫成MozBorderRadius。

4、 編寫一個JavaScript函式,實時顯示當前時間,格式“年-月-日 時:分:秒”

主要是用到了各種時間函式,setInterval(funtionName,Time),

firstChild.nodeValue。

setInterval函式名我好像寫錯了。我寫的是最普通最簡單的函式,每隔一秒鐘重新獲取

時間。有很多值得優化的地方。程式寫的不好看,就不獻醜了。

5、 用csshtml編寫一個兩列布局的網頁,要求右側寬度為200px,左側自動

展。


我主要的想法是右側絕對定位,左框右邊距200px,正好空出了右側的位置。

我寫的css如下:

  1. #right{
     
  2.   position:absolute;
     
  3.   right:0;
     
  4.   width:200px;
     
  5. }
     
  6. #left{
     
  7.   marin-right:200px;
     
  8. }
複製程式碼

另一種方法(試驗有效):

  1. #right{
     
  2.   float:right;
     
  3.   width:200px;
     
  4. }
     
  5. #left{
     
  6.   marin-right:200px;
     
  7. }
複製程式碼

HTML程式碼中#right必須寫在#left前面

  1. <body>
     
  2.   <div id=”right”>…</div>
     
  3.   <div id=”left”>…</div>
     
  4. </body>
複製程式碼

這好像是道經典面試題,在某次面試的時候,就被問過這個問題。還有一道經典的問題

是如何使固定寬度的div在頁面居中。

6、 使用JavaScript深度克隆一個物件?

JavaScript的物件賦值var anObj = anOtherObj 用的是傳址方式,不能用於複製物件。


用物件原型寫通用性更強些,但是當時對prototype沒有十分的把握,只寫了個克隆函

數。剛剛查了下,果然有貓膩,下面是實現程式碼:

  1. function Object.prototype.cloneObj()
     
  2. {
     
  3.   function NEWOBJECT(){};
     
  4.   NEWOBJECT. prototype = this;
     
  5.   var anObj = new NEWOBJECT();
     
  6.   for ( var ele in anObj )
     
  7.   {
     
  8.      if ( typeof anObj[ele] == “object” ) return anObj[ele]. cloneObj();
     
  9.   }
     
  10.   return anObj;
     
  11. }
複製程式碼

7.Linux題目:批量刪除當前目錄下字尾名為.c的檔案,如a.c、b.c

我的回答是rm *.c

幸虧我還有點點linux基礎,當然更得歸功於考前複習了幾個常用linux命令。

附加題是Flash的AS題,大概是比較AS2.0和AS3.0在面向物件方面的異同吧。我都有好久

好久沒有接觸過AS了,這題我沒答。