阿里巴巴面試題

前端面試題目javascript

1. div和span的區別?css

div是塊級標籤,span是行級標籤html

 

2. 在html中,position取值有哪幾種,默認值是什麼?前端

取值:static、relative、fixed、absolutehtml5

默認值:staticjava

 

3. 前端頁面由哪三層構成,分別是什麼?做用是什麼?jquery

前端頁面構成:結構層、表示層、行爲層git

 

結構層(structural layer)github

由 HTML 或 XHTML之類的標記語言負責建立。標籤,也就是那些出如今尖括號裏的單詞,對網頁內容的語義含義作出了描述,但這些標籤不包含任何關於如何顯示有關內容的信息。例如,P標籤表達了這樣一種語義:「這是一個文本段。」web

 

表示層(presentation layer)

由 CSS 負責建立。 CSS對「如何顯示有關內容」的問題作出了回答。

 

行爲層(behaviorlayer)

負責回答「內容應該如何對事件作出反應」這一問題。這是 Javascript 語言和 DOM主宰的領域。

 

4. 如何居中一個浮動元素?

   方式1:設置容器的浮動方式爲相對定位,而後肯定容器的寬高好比寬500 高 300 的層,而後設置層的外邊距。

<!DOCTYPEHTML>

<html>

<head>

<styletype="text/css">

        div{ 

            width: 500px; 

            height: 300px; 

            margin: -150px 0 0 -250px; 

            position: absolute; 

            left: 50%; 

            top: 50%; 

            background-color: yellow;  

        } 

</style>

</head>

<body>

<div>

        元素居中 

</div>

</body>

</html>

  

 

 

方式2:須要position:absolute;絕對定位。而層的定位點,使用外補丁margin負值的方法。負值的大小爲層自身寬度高度除以二。

<styletype="text/css">

<!--

div {

position:absolute;

top:50%;

left:50%;

margin:-150px 0 0 -200px;

width:400px;

height:300px;

border:1px solid #008800;

}

-->

</style>

<div>讓層垂直居中於瀏覽器窗口</div>

  

        

5. 請簡述HTML和XHTML最重要的4點不一樣?

不一樣:

                   XHTML要求正確嵌套
                   XHTML 全部元素必須關閉
                   XHTML 區分大小寫
                   XHTML 屬性值要用雙引號
                   XHTML 用 id 屬性代替 name 屬性
                   XHTML 特殊字符的處理

 

6. 頁面佈局中常據說的「結構與表現」分離,「結構」是指?「表現」是指?

「結構」:HTML

「表現」:CSS

 

7. 怎麼樣從web前端方面優化性能?至少列舉5點?

 

1)        HTML部分

 

u 語義化HTML:好處在於可使代碼簡潔清晰,支持不一樣設備,利於搜索引擎,便於團隊開發;

u 減小DOM節點:加速頁面渲染;

u 給圖片加上正確的寬高值:這能夠減小頁面重繪,同時防止圖片縮放;

u 防止src屬性和link的href屬性爲空:當值爲空時,瀏覽器極可能會把當前頁面當成其屬性值加載;

u 正確的閉合標籤:如避免使用<div/>,瀏覽器會多一個將它解析成<div\></div\>的過程;

u 連接爲目錄或首頁的地址後面加」/」,如http://www.5icool.org/;

u 用LINK而不用@import方式導入樣式;

u 樣式放在頁頭,JS放在頁尾;

u 縮小favicon.ico並緩存;

 

2)        CSS部分

u 避免使用CSS Expressions(CSS表達式):如background-color: expression( (newDate()).getHours()%2 ? 「#B8D4FF」 : 「#F08A00″ ) ;

u 避免使用CSS Filter(CSS濾鏡);

u 使用CSS縮寫,減小代碼量;

u 經過CSSSprites把同類圖片合成一張,減小圖片請求;

u 減小查詢層級:如.header .logo要好過.header .top .logo;

u 減小查詢範圍:如.header>li要好過.header li;

u 避免TAG標籤與CLASS或ID並存:如a.top、button#submit;

u 刪除重複的CSS;

 

3)        Javscript部分

u 儘可能少用全局變量;

u 使用事件代理綁定事件,如將事件綁定在body上進行代理;

u 避免頻繁操做DOM節點;

u 不使用EVAL;

u 減小對象查找,如a.b.c.d這種查找方式很是耗性能,儘量把它定義在變量裏;

u 類型轉換:把數字轉換成字符串使用」」 + 1,浮點數轉換成整型使用Math.floor()或者Math.round();

u 對字符串進行循環操做,譬如替換、查找,應使用正則表達式;

u 刪除重複的JS;

 

4)        服務器部分

u 儘可能合併CSS、JS文件,或將其直接寫在頁面上,減小HTTP請求;

u 壓縮CSS、JS文件,縮短文件傳輸時間;

u 避免404錯誤:特別要避免給404指定一個停擺頁面,不然全部404錯誤都將會加載一次頁面;

u 通常要求減小DNS查詢次數,如同一個頁面的請求資源儘可能少的使用不一樣的主機名,這能夠減小網站並行下載的數量,但不少網站爲了加速下載資源實際上是特地用了多個主機名,這裏要作一個權衡;

u 使用CDN加速,使用戶從離本身最近的服務器下載文件;

u 減小Cookie的大小,使用無cookie的域,客戶端請求靜態文件的時候,減小 Cookie 的反覆傳輸對主域名的影響;

u 爲文件頭指定Expires,使內容具備緩存性;

u 使用gzip壓縮內容;

 

8. JavaScript中哪些方法獲取元素?

getElementById

getElementsByClassName

getElementsByTagName

getElementsByName

 

9. 描述CSS hack技巧?

條件註釋:僅適用於IE

特定符號:適用於能識別特定符號的瀏覽器

內核符號:針對不一樣瀏覽器內核

 

10.用JS截取字符串,asdfgh,要fgh;?

方式1: ‘asdfgh’.substr(3,3)

方式2: ’asdfgh’.substring(3,5) 或者 ‘asdfgh’.substring(3)

 

11.IE6的雙倍邊距BUG指的是什麼?怎麼解決?

雙邊距:當塊級元素有浮動樣式的時候,給元素添加margin-left和margin-right樣式,在ie6下就會出現雙倍邊距。

 

解決方案:給當前元素添加樣式,使當前元素不爲塊,如:display:inline;display:list-item

 

12. 若是製做一個訪問量很大的網站,對css,js和圖片應該怎麼處理?

方法1:資源文件按模塊進行放置,有利於團隊開發

方法2:圖片儘可能採起聚合技術

方法3:精簡壓縮css和js文件,減小文件大小

方法4:類庫、媒體使用CDN加速,減輕服務器壓力

 

13.述ajax原理,什麼是同步異步(主觀題,答案不惟一)?

Ajax的工做原理:至關於在用戶和服務器之間加了—箇中間層,使用戶操做與服務器響應異步化。這樣把之前的一些服務器負擔的工做轉嫁到客戶端,利於客戶端閒置的處理能力來處理,減輕服務器和帶寬的負擔,從而達到節約ISP的空間及帶寬租用成本的目的。

 

同步異步:

14. 平時有沒有使用xml和json,在ajax交互中,哪種更易於開發和維護,js中怎麼序列化JSON字符串?

 

有,json相比xml可讀性和可擴張性好、編碼及解碼難度較低、在數據交互中帶寬佔用少,而且在當下是最流行的數據交互格式。

 

序列化JSON字符串:eval() 或者 JSON.parse()

 

15. JS怎麼建立一個類?

方式1 : var obj = new Object();

方式2 : var obj = {};

  

 

16.JS的typeof返回哪些數據類型?

string、number、object、boolean、function、undefined

  

 

17. HTTP請求有哪幾種?

post、get

 

18. 完成下面佈局(兼容IE6-10以及FF、谷歌、蘋果瀏覽器)?

 

<!DOCTYPEhtml>

<htmllang="en">

<head>

    <metahttp-equiv="Content-Type" content="text/html;charset=utf-8"/>

    <title></title>

    <style>

        body {

            margin: 0;

            padding: 0;

        }

 

        #body {

            background-color: #0099CB;

            width: 100%;

            float: left;

        }

 

        #header {

            height: 60px;

            background-color: #999999;

        }

 

        #content {

            background-color: #006766;

            margin-left: 180px;

        }

 

        #sidebar {

            width: 180px;

            float: left;

        }

 

        #footer {

            clear: both;

            height: 60px;

            background-color: #999999;

        }

    </style>

</head>

<body>

<divid="header"></div>

<divid="body">

    <divid="sidebar"></div>

    <divid="content"></div>

</div>

<divid="footer"></div>

</body>

</html>

  

 

19.閉包是什麼?有什麼特性?請簡單書寫一個簡單事例?

必包:閉包是指能夠包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在這個代碼塊內或者任何全局上下文中定義的,而是在定義代碼塊的環境中定義(局部變量)

 

特性:閉包是可以讀取其餘函數內部變量的函數,即在外面能夠調用函數中的函數的變量,其實他就是將函數內外部鏈接起來的橋樑

 

事例:

<scripttype=’text/javascript’>

function a(){

var i = 99;

iAdd = function(){

i++;

}

function b(){

alert(i);

}

return b;

}

var result = a();

result();//結果爲99

iAdd();

result();//結果爲100

</script>

  

20.  解釋jsonp的原理,以及爲何不是真正的ajax(主觀題)?

JSONP是一種非正式傳輸協議,該協議的一個要點就是容許用戶傳遞一個callback參數給服務端,而後服務端返回數據時會將這個callback參數做爲函數名來包裹住JSON數據,這樣客戶端就能夠隨意定製本身的函數來自動處理返回數據了。

 

21.  js延遲加載的方式有哪些?

defer和async、動態建立DOM方式(用得最多)、按需異步載入js

 

22. 對WEB標準以及W3C的理解與認識?
標籤閉合、標籤小寫、不亂嵌套、提升搜索機器人搜索概率、使用外 鏈css和js腳本、結構行爲表現的分離、文件下載與頁面速度更快、內容能被更多的用戶所訪問、內容能被更普遍的設備所訪問、更少的代碼和組件,容易維 護、改版方便,不須要變更頁面內容、提供打印版本而不須要複製內容、提升網站易用性;

 

23. xhtml和html有什麼區別?
HTML是一種基本的WEB網頁設計語言,XHTML是一個基於XML的置標語言
最主要的不一樣:
XHTML 元素必須被正確地嵌套。
XHTML 元素必須被關閉。
標籤名必須用小寫字母。
XHTML 文檔必須擁有根元素。

 

24. Doctype? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義?
用於聲明文檔使用那種規範(html/Xhtml)通常爲嚴格 過分 基於框架的html文檔
加入XMl聲明可觸發,解析方式更改成IE5.5 擁有IE5.5的bug

 

25.    行內元素有哪些?塊級元素有哪些?CSS的盒模型?

塊級元素:div p h1 h2 h3 h4 form ul
行內元素: a b br i span input select
Css盒模型:內容,border ,margin,padding

 

26.CSS引入的方式有哪些?link和@import的區別是?
內聯 內嵌 外鏈 導入
區別 :同時加載
前者無兼容性,後者CSS2.1如下瀏覽器不支持
Link 支持使用javascript改變樣式,後者不可

 

27.CSS選擇符有哪些?哪些屬性能夠繼承?優先級算法如何計算?內聯和important哪一個優先級高?
標籤選擇符 類選擇符 id選擇符
繼承不如指定 Id>class>標籤選擇
後者優先級高

 

28.前端頁面有哪三層構成,分別是什麼?做用是什麼?
結構層 Html 表示層 CSS 行爲層 js

29.css的基本語句構成是?
選擇器{屬性1:值1;屬性2:值2;……}

30.你作的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什麼?
Ie(Ie內核)火狐(Gecko)谷歌(webkit) opear(Presto)

31.寫出幾種IE6 BUG的解決方法?
1.雙邊距BUG float引發的使用display
2.3像素問題使用float引發的使用dislpay:inline-3px
3.超連接hover 點擊後失效使用正確的書寫順序link visited hover active
4.Ie z-index問題給父級添加position:relative
5.Png 透明使用js代碼改
6.Min-height 最小高度!Important解決’
7.select 在ie6下遮蓋使用iframe嵌套
8.爲何沒有辦法定義1px左右的寬度容器(IE6默認的行高形成的,使用over:hidden,zoom:0.08 line-height:1px)

32.<img>標籤上title與alt屬性的區別是什麼?
Alt 當圖片不顯示是用文字表明。
Title 爲該屬性提供信息

33.描述css reset的做用和用途?
Reset重置瀏覽器的css默認屬性瀏覽器的品種不一樣,樣式不一樣,而後重置,讓他們統一

34.解釋css sprites,如何使用?
Css 精靈把一堆小的圖片整合到一張大的圖片上,減輕服務器對圖片的請求數量

35.瀏覽器標準模式和怪異模式之間的區別是什麼?
盒子模型渲染模式的不一樣
使用 window.top.document.compatMode 可顯示爲何模式

36.你如何對網站的文件和資源進行優化?期待的解決方案包括:
文件合併
文件最小化/文件壓縮
使用CDN託管
緩存的使用

37.什麼是語義化的HTML?
直觀的認識標籤對於搜索引擎的抓取有好處

38.清除浮動的幾種方式,各自的優缺點?
1.使用空標籤清除浮動 clear:both(理論上能清楚任何標籤,,,增長無心義的標籤)
2.使用overflow:auto(空標籤元素清除浮動而不得不增長無心代碼的弊端,,使用zoom:1用於兼容IE)
3.是用afert僞元素清除浮動(用於非IE瀏覽器)

39.javascript的typeof返回哪些數據類型?
Object number function boolean underfind

40.例舉3種強制類型轉換和2種隱式類型轉換?
強制(parseInt,parseFloat,number)
隱式(== – ===)

41.split() join() 的區別?
前者是切割成數組的形式,後者是將數組轉換成字符串

42.數組方法pop() push() unshift() shift()?
Push()尾部添加 pop()尾部刪除
Unshift()頭部添加 shift()頭部刪除

43.14.JS中的call()和apply()方法的區別?

例子中用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,因此運行結果爲:alert(4);

注意:js 中的函數實際上是對象,函數名是對 Function 對象的引用。

function add(a,b)

{

   alert(a+b);

}

 

function sub(a,b)

{

   alert(a-b);

}

 

add.call(sub,3,1);

  

44.IE和DOM事件流的區別?
1.執行順序不同、
2.參數不同
3.事件加不加on
4.this指向問題

45.IE和標準下有哪些兼容性的寫法?

Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target

  

46.ajax請求的時候get 和post方式的區別?
一個在url後面一個放在虛擬載體裏面
有大小限制
安全問題
應用不一樣一個是論壇等只須要請求的,一個是相似修改密碼的

47.call和apply的區別?

Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)

  

48.ajax請求時,如何解釋json數據?
使用eval parse 鑑於安全性考慮使用parse更靠譜


49.new操做符具體幹了什麼呢?

 一、建立一個空對象,而且 this 變量引用該對象,同時還繼承了該函數的原型。

 二、屬性和方法被加入到 this 引用的對象中。

 三、新建立的對象由 this 所引用,而且最後隱式的返回 this 。

 

   var obj  = {};

   obj.__proto__ = Base.prototype;

    Base.call(obj);

  

50.寫一個獲取非行間樣式的函數?

functiongetStyle(obj,attr,value)
{
if(!value)
{
if(obj.currentStyle)
{
return obj.currentStyle(attr)
}
else
{
obj.getComputedStyle(attr,false)
}
}
else
{
obj.style[attr]=value
}
}

  

51.事件委託是什麼?
讓利用事件冒泡的原理,讓本身的所觸發的事件,讓他的父元素代替執行!
http://www.webasily.com/?p=78 例子可見此連接

52.閉包是什麼,有什麼特性,對頁面有什麼影響?
閉包就是可以讀取其餘函數內部變量的函數。
http://blog.csdn.net/gaoshanwudi/article/details/7355794 此連接可查看(問這個問題的不是一個公司)

53.如何阻止事件冒泡和默認事件?
canceBubble return false

54.添加刪除替換插入到某個接點的方法?
obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild

55.解釋jsonp的原理,以及爲何不是真正的ajax?
動態建立script標籤,回調函數
Ajax是頁面無刷新請求數據操做

56.javascript的本地對象,內置對象和宿主對象?
本地對象爲array obj regexp等能夠new實例化
內置對象爲gload Math 等不能夠實例化的
宿主爲瀏覽器自帶的document,window 等

57.document load 和document ready的區別?
Document.onload 是在結構和樣式加載完才執行js
Document.ready原生種沒有這個方法,jquery中有 $().ready(function)

58.」==」和「===」的不一樣?
前者會自動轉換類型
後者不會

59.javascript的同源策略?
一段腳本只能讀取來自於同一來源的窗口和文檔的屬性,這裏的同一來源指的是主機名、協議和端口號的組合

60.編寫一個數組去重的方法?

function oSort(arr)

{

varresult ={};

varnewArr=[];

for(vari=0;i<arr.length;i++)

{

if(!result[arr])

{

newArr.push(arr)

result[arr]=1

}

}

returnnewArr

}

 

  

61.Doctype做用? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義?

(1)、<!DOCTYPE> 聲明位於文檔中的最前面,處於 <html>標籤以前。告知瀏覽器的解析器,用什麼文檔類型 規範來解析這個文檔。

(2)、嚴格模式的排版和 JS 運做模式是 以該瀏覽器支持的最高標準運行。

(3)、在混雜模式中,頁面以寬鬆的向後兼容的方式顯示。模擬老式瀏覽器的行爲以防止站點沒法工做。

(4)、DOCTYPE不存在或格式不正確會致使文檔以混雜模式呈現。

62.行內元素有哪些?塊級元素有哪些?空(void)元素有那些?

(1)CSS規範規定,每一個元素都有display屬性,肯定該元素的類型,每一個元素都有默認的display值,好比div默認display屬性值爲「block」,成爲「塊級」元素;span默認display屬性值爲「inline」,是「行內」元素。 

(2)行內元素有:a b span img input select strong(強調的語氣) 塊級元素有:div ul ol li dl dt dd h1 h2 h3 h4…p 

(3)知名的空元素: <br> <hr> <img> <input> <link><meta>

不爲人知的是: <area><base> <col> <command> <embed> <keygen><param> <source> <track> <wbr>

63.CSS的盒子模型?

(1)兩種, IE 盒子模型、標準 W3C 盒子模型;IE 的content部分包含了border 和 pading;

(2)盒模型: 內容(content)、填充(padding)、邊界(margin)、 邊框(border).

64.link 和@import 的區別是?

(1)、link屬於XHTML標籤,而@import是CSS提供的;

(2)、頁面被加載的時,link會同時被加載,而@import引用的CSS會等到頁面被加載完再加載;

(3)、import只在IE5以上才能識別,而link是XHTML標籤,無兼容問題;

(4)、link方式的樣式的權重 高於@import的權重.

65.CSS 選擇符有哪些?哪些屬性能夠繼承?優先級算法如何計算? CSS3新增僞類有那些?

1.id選擇器( # myid)

2.類選擇器(.myclassname)

3.標籤選擇器(div, h1, p)

4.相鄰選擇器(h1 + p)

5.子選擇器(ul < li)

6.後代選擇器(li a)

7.通配符選擇器( * )

8.屬性選擇器(a[rel = "external"])

9.僞類選擇器(a: hover, li: nth - child)

可繼承: font-sizefont-family color, UL LI DL DD DT;

不可繼承 :border paddingmargin width height ;

優先級就近原則,樣式定義最近者爲準;

載入樣式以最後載入的定位爲準;

優先級爲:

!important >  id > class > tag 

important 比 內聯優先級高

CSS3新增僞類舉例:

p:first-of-type 選擇屬於其父元素的首個 <p> 元素的每一個 <p> 元素。

p:last-of-type  選擇屬於其父元素的最後 <p> 元素的每一個 <p> 元素。

p:only-of-type  選擇屬於其父元素惟一的 <p> 元素的每一個 <p> 元素。

p:only-child    選擇屬於其父元素的惟一子元素的每一個 <p> 元素。

p:nth-child(2)  選擇屬於其父元素的第二個子元素的每一個 <p> 元素。

:enabled、:disabled控制表單控件的禁用狀態。

:checked,單選框或複選框被選中。

66.如何居中div,如何居中一個浮動元素?

·      

  給div設置一個寬度,而後添加margin:0 auto屬性

·            div{

·                width:200px;

·                margin:0 auto;

·             } 

·        居中一個浮動元素

·              肯定容器的寬高 寬500 高 300 的層

·              設置層的外邊距

·         

·             .div {

·              Width:500px ; height:300px;//高度能夠不設

·              Margin: -150px 0 0 -250px;

·              position:relative;相對定位

·              background-color:pink;//方便看效果

·              left:50%;

·              top:50%;

·            }

  

67.瀏覽器的內核分別是什麼?常常遇到的瀏覽器的兼容性有哪些?緣由,解決方法是什麼,經常使用hack的技巧?

   * IE瀏覽器的內核Trident、 Mozilla的Gecko、google的WebKit、Opera內核Presto;

 

   * png24爲的圖片在iE6瀏覽器上出現背景,解決方案是作成PNG8.

 

   * 瀏覽器默認的margin和padding不一樣。解決方案是加一個全局的*{margin:0;padding:0;}來統一。

 

   * IE6雙邊距bug:塊屬性標籤float後,又有橫行的margin狀況下,在ie6顯示margin比設置的大。

 

     浮動ie產生的雙倍距離 #box{float:left; width:10px; margin:0 0 0 100px;}

 

    這種狀況之下IE會產生20px的距離,解決方案是在float的標籤樣式控制中加入 ——_display:inline;將其轉化爲行內屬性。(_這個符號只有ie6會識別)

 

     漸進識別的方式,從整體中逐漸排除局部。

 

     首先,巧妙的使用「\9」這一標記,將IE遊覽器從全部狀況中分離出來。

     接着,再次使用「+」將IE8和IE七、IE6分離開來,這樣IE8已經獨立識別。

 

     css

          .bb{

           background-color:#f1ee18;/*全部識別*/

          .background-color:#00deff\9; /*IE六、七、8識別*/

          +background-color:#a200ff;/*IE六、7識別*/

          _background-color:#1e0bd1;/*IE6識別*/

 

          }

 

   *  IE下,可使用獲取常規屬性的方法來獲取自定義屬性,

      也可使用getAttribute()獲取自定義屬性;

      Firefox下,只能使用getAttribute()獲取自定義屬性.

      解決方法:統一經過getAttribute()獲取自定義屬性.

 

   *  IE下,even對象有x,y屬性,可是沒有pageX,pageY屬性;

     Firefox下,event對象有pageX,pageY屬性,可是沒有x,y屬性.

 

   * (條件註釋)缺點是在IE瀏覽器下可能會增長額外的HTTP請求數。

 

   * Chrome 中文界面下默認會將小於 12px 的文本強制按照 12px 顯示, 可經過加入 CSS 屬性 -webkit-text-size-adjust: none; 解決.

 

   超連接訪問事後hover樣式就不出現了 被點擊訪問過的超連接樣式不在具備hover和active瞭解決方法是改變CSS屬性的排列順序:

   L-V-H-A :  a:link {} a:visited {}a:hover {} a:active {}

68.html5\CSS3有哪些新特性、移除了那些元素?如何處理HTML5新標籤的瀏覽器兼容問題?如何區分 HTML 和 HTML5?

·        HTML5 如今已經不是 SGML 的子集,主要是關於圖像,位置,存儲,地理定位等功能的增長。

·        * 繪畫 canvas 元素

·         

·          用於媒介回放的 video和 audio 元素

·         

·          本地離線存儲localStorage 長期存儲數據,瀏覽器關閉後數據不丟失;

·          sessionStorage 的數據在瀏覽器關閉後自動刪除

·         

·          語意化更好的內容元素,好比 article、footer、header、nav、section

·         

·          表單控件,calendar、date、time、email、url、search

·         

·          CSS3實現圓角,陰影,對文字加特效,增長了更多的CSS選擇器 多背景 rgba

·         

·          新的技術webworker,websockt, Geolocation

·      移除的元素

·        純表現的元素:basefont,big,center,font, s,strike,tt,u;

·         

·        對可用性產生負面影響的元素:frame,frameset,noframes;

·         

·        * 是IE8/IE7/IE6支持經過document.createElement方法產生的標籤,

·          能夠利用這一特性讓這些瀏覽器支持HTML5新標籤,

·         

·          瀏覽器支持新標籤後,還須要添加標籤默認的樣式:

·         

·        * 固然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架

·           <!--[if lt IE 9]>

·           <script>src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>

·           <![endif]-->

69.你怎麼來實現頁面設計圖,你認爲前端應該如何高質量完成工做? 一個滿屏品字佈局如何設計?

* 首先劃分紅頭部、body、腳部;。。。。。

 

 實現效果圖是最基本的工做,精確到2px;

 

 與設計師,產品經理的溝通和項目的參與

 

 作好的頁面結構,頁面重構和用戶體驗

 

 處理hack,兼容、寫出優美的代碼格式

 

 針對服務器的優化、擁抱 HTML5。

70.常使用的庫有哪些?經常使用的前端開發工具?開發過什麼應用或組件?

   * 使用率較高的框架有jQuery、YUI、Prototype、Dojo、Ext.js、Mootools等。尤爲是jQuery,超過91%。

 

 輕量級框架有Modernizr、underscore.js、backbone.js、Raphael.js等。

 (理解這些框架的功能、性能、設計原理)

 

   * Sublime Text 、Eclipse、Notepad、Firebug、HttpWatch、Yslow。

 

   * 城市選擇插件,汽車型號選擇插件、幻燈片插件。彈出層。(寫過開源程序,加載器,js引擎更好)

1.    JavaScript原型,原型鏈 ? 有什麼特色?

2.  *  原型對象也是普通的對象,是對象一個自帶隱式的 __proto__ 屬性,原型也有可能有本身的原型,若是一個原型對象的原型不爲null的話,咱們就稱之爲原型鏈。

3.  *  原型鏈是由一些用來繼承和共享屬性的對象組成的(有限的)對象鏈。

4.   

5.  * JavaScript的數據對象有那些屬性值?

6.   

7.    writable:這個屬性的值是否能夠改。

8.   

9.    configurable:這個屬性的配置是否能夠刪除,修改。

10.  

11.   enumerable:這個屬性是否能在for…in循環中遍歷出來或在Object.keys中列舉出來。

12.  

13.   value:屬性值。

14.  

15. * 當咱們須要一個屬性的時,Javascript引擎會先看當前對象中是否有這個屬性,若是沒有的話,就會查找他的Prototype對象是否有這個屬性。

16.  

function clone(proto) {


  function Dummy() { }

  Dummy.prototype = proto;

 Dummy.prototype.constructor = Dummy;

  return new Dummy(); //等價於Object.create(Person);
 }

       functionobject(old) {
       function F() {};
        F.prototype =old;
        return new F();
      }
   var newObj = object(oldObject);

  

71.列出display的值,說明他們的做用。position的值, relative和absolute定位原點是?

 1.    block 象塊類型元素同樣顯示。

 none 缺省值。向行內元素類型同樣顯示。

 inline-block 象行內元素同樣顯示,但其內容象塊類型元素同樣顯示。

 list-item 象塊類型元素同樣顯示,並添加樣式列表標記。

 

 2.

 *absolute

       生成絕對定位的元素,相對於 static 定位之外的第一個父元素進行定位。

 *fixed (老IE不支持)

       生成絕對定位的元素,相對於瀏覽器窗口進行定位。

 *relative

       生成相對定位的元素,相對於其正常位置進行定位。

 * static  默認值。沒有定位,元素出如今正常的流中

 *(忽略 top, bottom, left,right z-index 聲明)。

 * inherit 規定從父元素繼承 position 屬性的值。

72.頁面重構怎麼操做?

編寫 CSS、讓頁面結構更合理化,提高用戶體驗,實現良好的頁面效果和提高性能。

73.語義化的理解?

html語義化就是讓頁面的內容結構化,便於對瀏覽器、搜索引擎解析;

在沒有樣式CCS狀況下也以一種文檔格式顯示,而且是容易閱讀的。

搜索引擎的爬蟲依賴於標記來肯定上下文和各個關鍵字的權重,利於 SEO。

使閱讀源代碼的人對網站更容易將網站分塊,便於閱讀維護理解。

74.HTML5的離線儲存?

localStorage    長期存儲數據,瀏覽器關閉後數據不丟失;

sessionStorage  數據在瀏覽器關閉後自動刪除。

 

75.爲何要初始化CSS樣式。

·     由於瀏覽器的兼容問題,不一樣瀏覽器對有些標籤的默認值是不一樣的,若是沒對CSS初始化每每會出現瀏覽器之間的頁面顯示差別。

·     固然,初始化樣式會對SEO有必定的影響,但魚和熊掌不可兼得,但力求影響最小的狀況下初始化。

*最簡單的初始化方法就是: * {padding: 0;margin: 0;} (不建議)

   淘寶的樣式初始化:

   

body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li,pre, form, fieldset, legend, button, input, textarea, th, td { margin:0;padding:0; }

   body, button, input, select, textarea { font:12px/1.5tahoma, arial,\5b8b\4f53; }

   h1, h2, h3, h4, h5, h6{ font-size:100%; }

   address, cite, dfn, em, var { font-style:normal; }

   code, kbd, pre, samp { font-family:couriernew, courier, monospace; }

   small{ font-size:12px; }

   ul, ol { list-style:none; }

   a { text-decoration:none; }

   a:hover { text-decoration:underline; }

   sup { vertical-align:text-top; }

   sub{ vertical-align:text-bottom; }

   legend { color:#000; }

   fieldset, img { border:0; }

   button, input, select, textarea { font-size:100%; }

   table { border-collapse:collapse; border-spacing:0; }

  

76.(寫)描述一段語義的html代碼吧。

   (HTML5中新增長的不少標籤(如:<article>、<nav>、<header>和<footer>等)

    就是基於語義化設計原則) 

 

       < div id="header">

       < h1>標題< /h1>

       < h2>專一Web前端技術< /h2>

       < /div>

·    語義 HTML 具備如下特性:

·        文字包裹在元素中,用以反映內容。例如:

·        段落包含在<p> 元素中。

·        順序表包含在<ol>元素中。

·        從其餘來源引用的大型文字塊包含在<blockquote>元素中。

·        HTML 元素不能用做語義用途之外的其餘目的。例如:

·        <h1>包含標題,但並不是用於放大文本。

·        <blockquote>包含大段引述,但並不是用於文本縮進。

·        空白段落元素 (<p></p> ) 並不是用於跳行。

·        文本並不直接包含任何樣式信息。例如:

·        不使用<font> 或 <center> 等格式標記。

·        類或 ID 中不引用顏色或位置。

77.iframe有那些缺點?

   *iframe會阻塞主頁面的Onload事件;

 

   *iframe和主頁面共享鏈接池,而瀏覽器對相同域的鏈接有限制,因此會影響頁面的並行加載。

   使用iframe以前須要考慮這兩個缺點。若是須要使用iframe,最好是經過javascript

   動態給iframe添加src屬性值,這樣能夠能夠繞開以上兩個問題。

22.css定義的權重

如下是權重的規則:標籤的權重爲1,class的權重爲10,id的權重爲100,如下例子是演示各類定義的權重值:

 

/*權重爲1*/

div{

}

/*權重爲10*/

.class1{

}

/*權重爲100*/

#id1{

}

/*權重爲100+1=101*/

#id1 div{

}

/*權重爲10+1=11*/

.class1 div{

}

/*權重爲10+10+1=21*/

.class1 .class2 div{

}

 

若是權重相同,則最後定義的樣式會起做用,可是應該避免這種狀況出現

78.eval是作什麼的?

它的功能是把對應的字符串解析成JS代碼並運行;

避免使用eval,不安全,很是耗性能(2次,一次解析成js語句,一次執行)。

23.寫一個通用的事件偵聽器函數

`// event(事件)工具集,來源:https://github.com/markyun

markyun.Event = {

   // 頁面加載完成後

   readyEvent : function(fn) {

       if (fn==null) {

            fn=document;

       }

       var oldonload = window.onload;

       if (typeof window.onload != 'function') {

            window.onload = fn;

       } else {

            window.onload = function() {

                oldonload();

                fn();

            };

       }

   },

   // 視能力分別使用dom0||dom2||IE方式來綁定事件

   // 參數: 操做的元素,事件名稱 ,事件處理程序

   addEvent : function(element, type, handler) {

       if (element.addEventListener) {

            //事件類型、須要執行的函數、是否捕捉

            element.addEventListener(type,handler, false);

       } else if (element.attachEvent) {

            element.attachEvent('on' + type,function() {

                handler.call(element);

            });

       } else {

            element['on' + type] = handler;

       }

   },

   // 移除事件

   removeEvent : function(element, type, handler) {

       if (element.removeEnentListener) {

            element.removeEnentListener(type,handler, false);

       } else if (element.datachEvent) {

            element.detachEvent('on' + type,handler);

       } else {

            element['on' + type] = null;

       }

   },

   // 阻止事件 (主要是事件冒泡,由於IE不支持事件捕獲)

   stopPropagation : function(ev) {

       if (ev.stopPropagation) {

            ev.stopPropagation();

       } else {

            ev.cancelBubble = true;

       }

   },

   // 取消事件的默認行爲

   preventDefault : function(event) {

       if (event.preventDefault) {

            event.preventDefault();

       } else {

            event.returnValue = false;

       }

   },

   // 獲取事件目標

   getTarget : function(event) {

       return event.target || event.srcElement;

   },

   // 獲取event對象的引用,取到事件的全部信息,確保隨時能使用event;

   getEvent : function(e) {

       var ev = e || window.event;

       if (!ev) {

            var c = this.getEvent.caller;

            while (c) {

                ev = c.arguments[0];

                if (ev && Event ==ev.constructor) {

                    break;

               }

                c = c.caller;

            }

       }

       return ev;

   }

};

  

24.99%的網站都須要被重構是那本書上寫的?

* 網站重構:應用web標準進行設計(第2版)

79.什麼叫優雅降級和漸進加強?

優雅降級:Web站點在全部新式瀏覽器中都能正常工做,若是用戶使用的是老式瀏覽器,則代碼會檢查以確認它們是否能正常工做。因爲IE獨特的盒模型佈局問題,針對不一樣版本的IE的hack實踐過優雅降級了,爲那些沒法支持功能的瀏覽器增長候選方案,使之在舊式瀏覽器上以某種形式降級體驗卻不至於徹底失效.

 

漸進加強:從被全部瀏覽器支持的基本功能開始,逐步地添加那些只有新式瀏覽器才支持的功能,向頁面增長無害於基礎瀏覽器的額外樣式和功能的。當瀏覽器支持時,它們會自動地呈現出來併發揮做用。

80.Node.js的適用場景?

高併發、聊天、實時消息推送

81.WEB應用從服務器主動推送Data到客戶端有那些方式?

   html5 websoket

   WebSocket經過Flash

   XHR長時間鏈接

    XHR Multipart Streaming

   不可見的Iframe

   <script>標籤的長時間鏈接(可跨域)

 

82.js的幾種數據類型?

number,string,boolean,object,undefined

 

js的常見內置對象類:Date,Array,Math、Number、Boolean、String、Array、RegExp、Function...

·      一般能夠作一些小練習來判斷TA的水平,js 雖然很靈活,可是具體的代碼和實現方式能體現出一我的的全局觀,隨着代碼規模的增加,複雜度增長,如何合理劃分模塊實現功能和接口的能力比較重要。(下面例題)

·      

  ["1","2", "3"].map(parseInt)

·         

·        [typeof null, nullinstanceof Object]

·         

·        [ [3,2,1].reduce(Math.pow),[].reduce(Math.pow)] ]

·         

·         var val = 'smtg';

·         console.log('Value is ' + (val === 'smtg') ?'Something' : 'Nothing');

  

83.建立一個對象?

     function Person(name, age) {

       this.name = name;

       this.age = age;

       this.sing = function() { alert(this.name) }

     }

  

84.談談This對象的理解?

this是js的一個關鍵字,隨着函數使用場合不一樣,this的值會發生變化。

 

可是總有一個原則,那就是this指的是調用函數的那個對象。

 

this通常狀況下:是全局對象Global。 做爲方法調用,那麼this就是指這個對象

85.事件、IE與火狐的事件機制有什麼區別?如何阻止冒泡?

 1. 咱們在網頁中的某個操做(有的操做對應多個事件)。例如:當咱們點擊一個按鈕就會產生一個事件。是能夠被 JavaScript 偵測到的行爲。 

 2. 事件處理機制:IE是事件冒泡、火狐是 事件捕獲;

 3. ev.stopPropagation();

86.什麼是閉包(closure),爲何要用?

·      待完善

·      執行say667()後,say667()閉包內部變量會存在,而閉包內部函數的內部變量不會存在.使得Javascript的垃圾回收機制GC不會收回say667()所佔用的資源,由於say667()的內部函數的執行須要依賴say667()中的變量。這是對閉包做用的很是直白的描述.

·        

  function say667() {

·            // Local variable that ends up withinclosure

·            var num = 666;

·            var sayAlert = function() { alert(num); }

·            num++;

·            return sayAlert;

·        }

·         

·         var sayAlert = say667();

·         sayAlert()//執行結果應該彈出的667 

  

 

87.如何判斷一個對象是否屬於某個類?

使用instanceof (待完善)

      if(a instanceof Person){

           alert('yes');

      }

 

88.JSON 的瞭解?

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它是基於JavaScript的一個子集。數據格式簡單, 易於讀寫, 佔用帶寬小

{'age':'12', 'name':'back'}

89.ajax 是什麼?ajax 的交互模型?同步和異步的區別?如何解決跨域問題?

·              待完善

·          1. 經過異步模式,提高了用戶體驗

·         

·          2. 優化了瀏覽器和服務器之間的傳輸,減小沒必要要的數據往返,減小了帶寬佔用

·         

·          3. Ajax在客戶端運行,承擔了一部分原本由服務器承擔的工做,減小了大用戶量下的服務器負載。

·         

·          2. Ajax的最大的特色是什麼。

·         

·          Ajax能夠實現動態不刷新(局部刷新)

·          readyState屬性 狀態 有5個可取值: 0=未初始化 ,1=正在加載 2=以加載,3=交互中,4=完成

·      ajax的缺點

·          一、ajax不支持瀏覽器back按鈕。

·         

·          二、安全問題 AJAX暴露了與服務器交互的細節。

·         

·          三、對搜索引擎的支持比較弱。

·         

·          四、破壞了程序的異常機制。

·         

·          五、不容易調試。

·        跨域: jsonp、 iframe、window.name、window.postMessage、服務器上設置代理頁面

90.模塊化怎麼作?

當即執行函數,不暴露私有成員

var module1 = (function(){

    var _count = 0;

    var m1 = function(){

      //...

    };

    var m2 = function(){

      //...

    };

    return {

      m1 : m1,

      m2 : m2

    };

  })();

  

91.對Node的優勢和缺點提出了本身的見解?

   *(優勢)由於Node是基於事件驅動和無阻塞的,因此很是適合處理併發請求,

     所以構建在Node上的代理服務器相比其餘技術實現(如Ruby)的服務器表現要好得多。

     此外,與Node代理服務器交互的客戶端代碼是由javascript語言編寫的,

     所以客戶端和服務器端都用同一種語言編寫,這是很是美妙的事情。

 

   *(缺點)Node是一個相對新的開源項目,因此不太穩定,它老是一直在變,

      並且缺乏足夠多的第三方庫支持。看起來,就像是Ruby/Rails當年的樣子。

92.異步加載的方式?

 (1) defer,只支持IE

 (2) async:

 (3) 建立script,插入到DOM中,加載完畢後callBack

     documen.write和 innerHTML的區別

     document.write只能重繪整個頁面

     innerHTML能夠重繪頁面的一部分

93.告訴我答案是多少?

(function(x){

   delete x;

   alert(x);

})(1+5);

  

 

函數參數沒法delete刪除,delete只能刪除經過for in訪問的屬性。

固然,刪除失敗也不會報錯,因此代碼運行會彈出「1」。

94.Jquery與jQuery UI 有啥區別?

   *jQuery是一個js庫,主要提供的功能是選擇器,屬性修改和事件綁定等等。

 

   *jQuery UI則是在jQuery的基礎上,利用jQuery的擴展性,設計的插件。

    提供了一些經常使用的界面元素,諸如對話框、拖動行爲、改變大小行爲等等

95.jquery 中如何將數組轉化爲json字符串,而後再轉化回來?

jQuery中沒有提供這個功能,因此你須要先編寫兩個jQuery的擴展:

  

 $.fn.stringifyArray = function(array) {

       return JSON.stringify(array)

   }

 

   $.fn.parseArray = function(array) {

       return JSON.parse(array)

   }

 

  

   而後調用:

$("").stringifyArray(array)

  

 

 

 

96.前端開發的優化問題?

·          (1)減小http請求次數:CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網頁Gzip,CDN託管,data緩存 ,圖片服務器。

·         

·          (2)前端模板 JS+數據,減小因爲HTML標籤致使的帶寬浪費,前端用變量保存AJAX請求結果,每次操做本地變量,不用請求,減小請求次數

·         

·          (3)用innerHTML代替DOM操做,減小DOM操做次數,優化javascript性能。

·         

·          (4)當須要設置的樣式不少時設置className而不是直接操做style。

·         

·          (5)少用全局變量、緩存DOM節點查找的結果。減小IO讀取操做。

·         

·          (6)避免使用CSS Expression(css表達式)又稱Dynamic properties(動態屬性)。

·         

·          (7)圖片預加載,將樣式表放在頂部,將腳本放在底部  加上時間戳。

·         

·          (8)避免在頁面的主體佈局中使用table,table要等其中的內容徹底下載以後纔會顯示出來,顯示比div+css佈局慢。

97.http狀態碼有那些?分別表明是什麼意思?

   100-199 用於指定客戶端應相應的某些動做。

   200-299 用於表示請求成功。

   300-399 用於已經移動的文件而且常被包含在定位頭信息中指定新的地址信息。

   400-499 用於指出客戶端的錯誤。400    一、語義有誤,當前請求沒法被服務器理解。401   當前請求須要用戶驗證 403  服務器已經理解請求,可是拒絕執行它。

   500-599 用於支持服務器錯誤。 503 – 服務不可用

98.平時如何管理你的項目,如何設計突發大規模併發架構?

先期團隊必須肯定好全局樣式(globe.css),編碼模式(utf-8) 等

編寫習慣必須一致(例如都是採用繼承式的寫法,單樣式都寫成一行);

標註樣式編寫人,各模塊都及時標註(標註關鍵樣式調用的地方);

頁面進行標註(例如 頁面 模塊 開始和結束);

CSS跟HTML分文件夾並行存放,命名都得統一(例如style.css)

JS 分文件夾存放 命民以該JS 功能爲準英文翻譯;

圖片採用整合的 images.png png8 格式文件使用盡可能整合在一塊兒使用方便未來的管理

1.        那些操做會形成內存泄漏?

2.  內存泄漏指任何對象在您再也不擁有或須要它以後仍然存在。

3.  垃圾回收器按期掃描對象,並計算引用了每一個對象的其餘對象的數量。若是一個對象的引用數量爲 0(沒有其餘對象引用過該對象),或對該對象的唯一引用是循環的,那麼該對象的內存便可回收。

4.   

5.  setTimeout 的第一個參數使用字符串而非函數的話,會引起內存泄漏。

6.  閉包、控制檯日誌、循環(在兩個對象彼此引用且彼此保留時,就會產生一個循環)

 

99.JavaScript是一門什麼樣的語言,它有哪些特色?

沒有標準答案。

100。.JavaScript的數據類型都有什麼?

基本數據類型:String,boolean,Number,Undefined, Null

引用數據類型:Object(Array,Date,RegExp,Function)

101.如何判斷某變量是否爲數組數據類型?

·        方法一.判斷其是否具備「數組性質」,如slice()方法。可本身給該變量定義slice方法,故有時會失效

·        方法二.obj instanceof Array 在某些IE版本中不正確

·        方法三.方法一二皆有漏洞,在ECMA Script5中定義了新方法Array.isArray(),保證其兼容性,最好的方法以下:

JavaScript

if(typeof Array.isArray==="undefined")

{

  Array.isArray = function(arg){

        return Object.prototype.toString.call(arg)==="[object Array]"

    };  

}

  

102.已知ID的Input輸入框,但願獲取這個輸入框的輸入值,怎麼作?(不使用第三方框架)

JavaScript

document.getElementById(「ID」).value

103.但願獲取到頁面中全部的checkbox怎麼作?(不使用第三方框架)

JavaScript

var domList = document.getElementsByTagName(‘input’)

var checkBoxList = [];

var len = domList.length;//緩存到局部變量

while (len--) {//使用while的效率會比for循環更高

if (domList[len].type == ‘checkbox’) {

    checkBoxList.push(domList[len]);

}

}

  

104.設置一個已知ID的DIV的html內容爲xxxx,字體顏色設置爲黑色(不使用第三方框架)

JavaScript

var dom = document.getElementById(「ID」);

dom.innerHTML = 「xxxx」

dom.style.color = 「#000」

105.當一個DOM節點被點擊時候,咱們但願可以執行一個函數,應該怎麼作?

·         直接在DOM裏綁定事件:<div οnclick=」test()」></div>

·         在JS裏經過onclick綁定:xxx.onclick = test

·         經過事件添加進行綁定:addEventListener(xxx, ‘click’, test)

那麼問題來了,Javascript的事件流模型都有什麼?

·        「事件冒泡」:事件開始由最具體的元素接受,而後逐級向上傳播

·        「事件捕捉」:事件由最不具體的節點先接收,而後逐級向下,一直到最具體的

·        「DOM事件流」:三個階段:事件捕捉,目標階段,事件冒泡

106.什麼是Ajax和JSON,它們的優缺點?

Ajax是異步JavaScript和XML,用於在Web頁面中實現異步數據交互。

優勢:

·         可使得頁面不重載所有內容的狀況下加載局部內容,下降數據傳輸量

·         避免用戶不斷刷新或者跳轉頁面,提升用戶體驗

缺點:

·         對搜索引擎不友好(

·         要實現ajax下的先後退功能成本較大

·         可能形成請求數的增長

·         跨域問題限制

JSON是一種輕量級的數據交換格式,ECMA的一個子集

優勢:輕量級、易於人的閱讀和編寫,便於機器(JavaScript)解析,支持複合數據類型(數組、對象、字符串、數字)

 

107.看下列代碼輸出爲什麼?解釋緣由。

JavaScript

var a;

alert(typeof a); // undefined

alert(b); // 報錯

解釋:Undefined是一個只有一個值的數據類型,這個值就是「undefined」,在使用var聲明變量但並未對其賦值進行初始化時,這個變量的值就是undefined。而b因爲未聲明將報錯。注意未申明的變量和聲明瞭未賦值的是不同的。

  

108.看下列代碼,輸出什麼?解釋緣由。

JavaScript

var a = null;

alert(typeof a); //object

解釋:null是一個只有一個值的數據類型,這個值就是null。表示一個空指針對象,因此用typeof檢測會返回」object」。

  

109.看下列代碼,輸出什麼?解釋緣由。

JavaScript

var undefined;

undefined == null; // true

1 == true;   // true

2 == true;   // false

0 == false;  // true

0 == '';     // true

NaN == NaN;  // false

[] == false; // true

[] == ![];   // true

  

·        undefined與null相等,但不恆等(===)

·        一個是number一個是string時,會嘗試將string轉換爲number

·        嘗試將boolean轉換爲number,0或1

·        嘗試將Object轉換成number或string,取決於另一個對比量的類型

·        因此,對於0、空字符串的判斷,建議使用 「===」 。「===」會先判斷兩邊的值類型,類型不匹配時爲false。

那麼問題來了,看下面的代碼,輸出什麼,foo的值爲何?

JavaScript

1

var foo = "11"+2-"1";

console.log(foo);

console.log(typeof foo);

執行完後foo的值爲111,foo的類型爲String。

  

110.看代碼給答案。

JavaScript

1

var a = new Object();

a.value = 1;

b = a;

b.value = 2;

alert(a.value);

  

答案:2(考察引用數據類型細節)

111.已知數組var stringArray = [「This」, 「is」, 「Baidu」, 「Campus」],Alert出」This is Baidu Campus」。

答案:alert(stringArray.join(「」))

已知有字符串foo=」get-element-by-id」,寫一個function將其轉化成駝峯表示法」getElementById」。

JavaScript

function combo(msg){

    var arr=msg.split("-");

    for(var i=1;i<arr.length;i++){

        arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);

    }

    msg=arr.join("");

    return msg;

}

  

(考察基礎API)

112.var numberArray = [3,6,2,4,1,5]; (考察基礎API)

1) 實現對該數組的倒排,輸出[5,1,4,2,6,3]

2) 實現對該數組的降序排列,輸出[6,5,4,3,2,1]

JavaScript

function combo(msg){

    var arr=msg.split("-");

    for(var i=1;i<arr.length;i++){

        arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);

    }

    msg=arr.join("");

    return msg;

}

  

113.輸出今天的日期,以YYYY-MM-DD的方式,好比今天是2014年9月26日,則輸出2014-09-26

JavaScript

var d = new Date();

// 獲取年,getFullYear()返回4位的數字

var year = d.getFullYear();

// 獲取月,月份比較特殊,0是1月,11是12月

var month = d.getMonth() + 1;

// 變成兩位

month = month < 10 ? '0' + month : month;

// 獲取日

var day = d.getDate();

day = day < 10 ? '0' + day : day;

alert(year + '-' + month + '-' + day);

  

114.將字符串」<tr><td>{$id}</td><td>{$name}</td></tr>」中的{$id}替換成10,{$name}替換成Tony (使用正則表達式)

答案:」<tr><td>{$id}</td><td>{$id}_{$name}</td></tr>」.replace(/{\$id}/g, ’10’).replace(/{\$name}/g, ‘Tony’);

115.爲了保證頁面輸出安全,咱們常常須要對一些特殊的字符進行轉義,請寫一個函數escapeHtml,將<, >, &, 「進行轉義

JavaScript

function escapeHtml(str) {

return str.replace(/[<>」&]/g, function(match) {

    switch (match) {

                   case 「<」:

                      return 「<」;

                   case 「>」:

                      return 「>」;

                   case 「&」:

                      return 「&」;

                   case 「\」」:

                      return 「"」;

      }

  });

}

  

116.foo =foo||bar ,這行代碼是什麼意思?爲何要這樣寫?

答案:if(!foo) foo = bar; //若是foo存在,值不變,不然把bar的值賦給foo。

短路表達式:做爲」&&」和」||」操做符的操做數表達式,這些表達式在進行求值時,只要最終的結果已經能夠肯定是真或假,求值過程便了結止,這稱之爲短路求值。

117.看下列代碼,將會輸出什麼?(變量聲明提高)

JavaScript

var foo = 1;

function(){

    console.log(foo);

    var foo = 2;

    console.log(foo);

}

答案:輸出undefined 和 2。上面代碼至關於:

  

JavaScript

var foo = 1;

function(){

    var foo;

    console.log(foo); //undefined

    foo = 2;

    console.log(foo); // 2;  

}

函數聲明與變量聲明會被JavaScript引擎隱式地提高到當前做用域的頂部,可是隻提高名稱不會提高賦值部分。

  

118.用js實現隨機選取10–100之間的10個數字,存入一個數組,並排序。

JavaScript

var iArray = [];

funtion getRandom(istart, iend){

        var iChoice = istart - iend +1;

        return Math.floor(Math.random() * iChoice + istart;

}

for(var i=0; i<10; i++){

        iArray.push(getRandom(10,100));

}

iArray.sort();

  

119.把兩個數組合並,並刪除第二個元素。

JavaScript

var array1 = ['a','b','c'];

var bArray = ['d','e','f'];

var cArray = array1.concat(bArray);

cArray.splice(1,1);

  

120.怎樣添加、移除、移動、複製、建立和查找節點(原生JS,實在基礎,沒細寫每一步)

1)建立新節點

createDocumentFragment()    //建立一個DOM片斷

createElement()   //建立一個具體的元素

createTextNode()   //建立一個文本節點

2)添加、移除、替換、插入

appendChild()      //添加

removeChild()      //移除

replaceChild()      //替換

insertBefore()      //插入

3)查找

getElementsByTagName()    //經過標籤名稱

getElementsByName()     //經過元素的Name屬性的值

getElementById()        //經過元素Id,惟一性

  

121.有這樣一個URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,請寫一段JS程序提取URL中的各個GET參數(參數名和參數個數不肯定),將其按key-value形式返回到一個json結構中,如{a:’1′, b:’2′, c:」, d:’xxx’, e:undefined}。

答案:

JavaScript

function serilizeUrl(url) {

    var result = {};

    url = url.split("?")[1];

    var map = url.split("&");

    for(var i = 0, len = map.length; i < len; i++) {

        result[map[i].split("=")[0]] = map[i].split("=")[1];

    }

    return result;

}

  

122.正則表達式構造函數var reg=newRegExp(「xxx」)與正則表達字面量var reg=//有什麼不一樣?匹配郵箱的正則表達式?

答案:當使用RegExp()構造函數的時候,不只須要轉義引號(即\」表示」),而且還須要雙反斜槓(即\\表示一個\)。使用正則表達字面量的效率更高。 

郵箱的正則匹配:

JavaScript

1

var regMail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;

  

123.看下面代碼,給出輸出結果。

JavaScript

for(var i=1;i<=3;i++){

  setTimeout(function(){

      console.log(i);    

  },0);  

};

答案:4 4 4。

緣由:Javascript事件處理器在線程空閒以前不會運行。追問,如何讓上述代碼輸出1 2 3?

  

JavaScript

for(var i=1;i<=3;i++){

   setTimeout((function(a){  //改爲當即執行函數

       console.log(a);    

   })(i),0);  

};

  

124.寫一個function,清除字符串先後的空格。(兼容全部瀏覽器)

使用自帶接口trim(),考慮兼容性:

JavaScript

if (!String.prototype.trim) {

 String.prototype.trim = function() {

 return this.replace(/^\s+/, "").replace(/\s+$/,"");

 }

}

 

// test the function

var str = " \t\n test string ".trim();

alert(str == "test string"); // alerts "true"

  

125..Javascript中callee和caller的做用?

答案:

caller是返回一個對函數的引用,該函數調用了當前函數;

callee是返回正在被執行的function函數,也就是所指定的function對象的正文。

那麼問題來了?若是一對兔子每個月生一對兔子;一對新生兔,從第二個月起就開始生兔子;假定每對兔子都是一雌一雄,試問一對兔子,第n個月能繁殖成多少對兔子?(使用callee完成)

JavaScript

var result=[];

function fn(n){  //典型的斐波那契數列

   if(n==1){

        return 1;

   }else if(n==2){

           return 1;

   }else{

        if(result[n]){

                return result[n];

        }else{

                //argument.callee()表示fn()

                result[n]=arguments.callee(n-1)+arguments.callee(n-2);

                return result[n];

        }

   }

}

 

  

126.你說你熱愛前端,那麼應該WEB行業的發展很關注吧?說說最近最流行的一些東西吧?

Node.js、Mongodb、npmM、MVVM、MEAN

127.你有了解咱們公司嗎?說說你的認識?

 由於我想去阿里,因此我針對阿里的說

 最羨慕就是在雙十一購物節,350.19億元,每分鐘支付79萬筆。海量數據,竟然無一漏單、無一故障。太厲害了。

 

128.absolute的containingblock計算方式跟正常流有什麼不一樣?

129.position跟display、margin collapse、overflow、float這些特性相互疊加後會怎麼樣?

130.對BFC規範的理解?(W3C CSS 2.1 規範中的一個概念,它決定了元素如何對其內容進行定位,以及與其餘元素的關係和相互做用。)

131.事件綁定和普通事件有什麼區別?

132.b繼承a的方法?

133..JavaScript中的做用域與變量聲明提高?

134.一個頁面從輸入 URL 到頁面加載顯示完成,這個過程當中都發生了什麼?(流程說的越詳細越好)

135.你所知道的頁面性能優化方法有那些?

136.除了前端之外還了解什麼其它技術麼?你最最厲害的技能是什麼?

137.AMD(Modules/Asynchronous-Definition)、CMD(Common ModuleDefinition)規範區別?

138.談談你認爲怎樣作能是項目作的更好?

139.你對前端界面工程師這個職位是怎麼樣理解的?它的前景會怎麼樣?

140.移動端(好比:Android IOS)怎麼作好用戶體驗?

141.加班的見解

相關文章
相關標籤/搜索