前端面試題(含答案)

HTML+CSSjavascript

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

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

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

4.行內元素有哪些?塊級元素有哪些?CSS的盒模型?
塊級元素:div p h1 h2 h3 h4 form ul
行內元素: a b br i span input select
Css盒模型:內容,border ,margin,padding

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

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

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

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

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

10.寫出幾種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)

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

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

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

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

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

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

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

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

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

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

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

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

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

7.IE和標準下有哪些兼容性的寫法
Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target

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

9.call和apply的區別
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)

10.ajax請求時,如何解釋json數據
使用eval parse 鑑於安全性考慮 使用parse更靠譜
11.b繼承a的方法

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

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

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

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

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

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

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

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

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

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

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

22.編寫一個數組去重的方法
function oSort(arr)
{
var result ={};
var newArr=[];
for(var i=0;i
{
if(!result[arr])
{
newArr.push(arr)
result[arr]=1
}
}
return newArr
}
css

 

======================================================================================================================================================================================html

vue.js進階前端

一、什麼是MVVM?
答:MVVM是是Model-View-ViewModel的縮寫,Model表明數據模型,定義數據操做的業務邏輯,View表明視圖層,負責將數據模型渲染到頁面上,ViewModel經過雙向綁定把View和Model進行同步交互,不須要手動操做DOM的一種設計思想。vue

 

二、怎麼定義vue-router的動態路由?怎麼獲取傳過來的動態參數? 
答:在router目錄下的index.js文件中,對path屬性加上/:id。 使用router對象的params.idjava

 

三、vue-router有哪幾種導航鉤子? 
答:三種,一種是全局導航鉤子:router.beforeEach(to,from,next),做用:跳轉前進行判斷攔截。第二種:組件內的鉤子;第三種:單獨路由獨享組件react

 

四、vuex是什麼?怎麼使用?哪一種功能場景使用它?
答:vue框架中狀態管理。在main.js引入store,注入。新建了一個目錄store,….. export 。場景有:單頁應用中,組件之間的狀態。音樂播放、登陸狀態、加入購物車jquery

 

五、MVVM和MVC區別?和其餘框架(jquery)區別?那些場景適用?
答:MVVM和MVC都是一種設計思想,主要就是MVC中的Controller演變成ViewModel,,MVVM主要經過數據來顯示視圖層而不是操做節點,解決了MVC中大量的DOM操做使頁面渲染性能下降,加載速度慢,影響用戶體驗問題。主要用於數據操做比較多的場景。
場景:數據操做比較多的場景,更加便捷web

 

六、Vue公司的雙向數據綁定原理是什麼?
答:vue.js是採用數據劫持結合發佈者 - 訂閱者模式的方式,經過Object.defineProperty()來劫持各個屬性的setter,getter,在數據變更時發佈消息給訂閱者,觸發相應的監聽回調。ajax

 

七、請說下封裝vue組件的過程?
答:首先,組件能夠提高整個項目的開發效率可以把頁面抽象成多個相對獨立的模塊,解決了咱們傳統項目開發:效率低,難維護,複用性等問題。

 

而後,使用Vue.extend方法建立一個組件,而後使用Vue.component方法註冊組件。子組件須要數據,能夠在道具中接受定義。而子組件修改好數據後,想把數據傳遞給父組件。能夠採用發射方法

 

八、聊聊你對Vue.js的模板編譯的理解
答:簡而言之,就是先轉化成AST樹,再獲得的渲染函數返回VNODE(Vue公司的虛擬DOM節點)
詳情步驟:

 

首先,經過編譯編譯器把模板編譯成AST語法樹(抽象語法樹即源代碼的抽象語法結構的樹狀表現形式),編譯是createCompiler的返回值,createCompiler是用以建立編譯器的。負責合併選項。

 

而後,AST會通過生成(將AST語法樹轉化成渲染功能字符串的過程)獲得渲染函數,渲染的返回值是VNode,VNode是Vue的虛擬DOM節點,裏面有(標籤名,子節點,文本等等)

 

九、<keep-alive></keep-alive>的做用是什麼,如何使用?
答:包裹動態組件時,會緩存不活動的組件實例,主要用於保留組件狀態或避免從新渲染;
使用:簡單頁面時
緩存: <keep-alive include=」組件名」></keep-alive>
不緩存:<keep-alive exclude=」組件名」></keep-alive>

 

十、vue和react區別
答:相同點:都鼓勵組件化,都有’props’的概念,都有本身的構建工具,Reat與Vue只有框架的骨架,其餘的功能如路由、狀態管理等是框架分離的組件。

 

不一樣點:React:數據流單向,語法—JSX,在React中你須要使用setState()方法去更新狀態。Vue:數據雙向綁定,語法--HTML,state對象並非必須的,數據由data屬性在Vue對象中進行管理。適用於小型應用,但對於對於大型應用而言不太適合。

 

十一、v-show和v-if指令的共同點和不一樣點?
v-show指令是經過修改元素的displayCSS屬性讓其顯示或者隱藏。
v-if指令是直接銷燬和重建DOM達到讓元素顯示和隱藏的效果。

 

十二、$route和$router的區別
答:$route是「路由信息對象」,包括path,params,hash,query,fullPath,matched,name等路由信息參數。而$router是「路由實例」對象包括了路由的跳轉方法,鉤子函數等

 

1三、vue中 key 值的做用答:當 Vue.js 用 v-for 正在更新已渲染過的元素列表時,它默認用「就地複用」策略。若是數據項的順序被改變,Vue 將不會移動 DOM 元素來匹配數據項的順序, 而是簡單複用此處每一個元素,而且確保它在特定索引下顯示已被渲染過的每一個元素。key的做用主要是爲了高效的更新虛擬DOM

相關文章
相關標籤/搜索