2016年Web前端面試題

2016年Web前端面試題目匯總

以下是收集一些面試中經常會遇到的經典面試題以及自己面試過程中無法解決的問題,通過對知識的整理以及經驗的總結,重新鞏固自身的前端基礎知識,如有錯誤或更好的答案,歡迎指正。:)

回到頂部

HTML/CSS部分

1、什么是盒子模型?

在網頁中,一個元素占有空間的大小由幾個部分構成,其中包括元素的內容(content),元素的內邊距(padding),元素的邊框 (border),元素的外邊距(margin)四個部分。這四個部分占有的空間中,有的部分可以顯示相應的內容,而有的部分只用來分隔相鄰的區域或區 域。4個部分一起構成了css中元素的盒模型。

2、行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?

行內元素:a、b、span、img、input、strong、select、label、em、button、textarea
塊級元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote
空元素:即系沒有內容的HTML元素,例如:br、meta、hr、link、input、img

3、CSS實現垂直水平居中

一道經典的問題,實現方法有很多種,以下是其中一種實現:
HTML結構:

    <div class="wrapper"> <div class="content"></div> </div> 

CSS:

    .wrapper{position:relative;} .content{ background-color:#6699FF; width:200px; height:200px; position: absolute; //父元素需要相對定位 top: 50%; left: 50%; margin-top:-100px ; //二分之一的height,width margin-left: -100px; } 

4、簡述一下src與href的區別

href 是指向網絡資源所在位置,建立和當前元素(錨點)或當前文檔(鏈接)之間的鏈接,用于超鏈接。

src是指向外部資源的位置,指向的內容將會嵌入到文檔中當前標簽所在位置;在請求src資源時會將其指向的資源下載并應用到文檔內,例如js腳 本,img圖片和frame等元素。當瀏覽器解析到該元素時,會暫停其他資源的下載和處理,直到將該資源加載、編譯、執行完畢,圖片和框架等元素也如此, 類似于將所指向資源嵌入當前標簽內。這也是為什么將js腳本放在底部而不是頭部。

5、什么是CSS Hack?

一般來說是針對不同的瀏覽器寫不同的CSS,就是 CSS Hack。
IE瀏覽器Hack一般又分為三種,條件Hack、屬性級Hack、選擇符Hack(詳細參考CSS文檔:css文檔)。例如:

    // 1、條件Hack<!--[if IE]><style>.test{color:red;}</style><![endif]--> // 2、屬性Hack .test{  color:#090\9; /* For IE8+ */ *color:#f00; /* For IE7 and earlier */  _color:#ff0; /* For IE6 and earlier */ } // 3、選擇符Hack * html .test{color:#090;} /* For IE6 and earlier */ * + html .test{color:#ff0;} /* For IE7 */ 

6、簡述同步和異步的區別

同步是阻塞模式,異步是非阻塞模式。
同步就是指一個進程在執行某個請求的時候,若該請求需要一段時間才能返回信息,那么這個進程將會一直等待下去,直到收到返回信息才繼續執行下去;
異步是指進程不需要一直等下去,而是繼續執行下面的操作,不管其他進程的狀態。當有消息返回時系統會通知進程進行處理,這樣可以提高執行的效率。

7、px和em的區別

px和em都是長度單位,區別是,px的值是固定的,指定是多少就是多少,計算比較容易。em得值不是固定的,并且em會繼承父級元素的字體大小。
瀏覽器的默認字體高都是16px。所以未經調整的瀏覽器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em

8、什么叫優雅降級和漸進增強?

漸進增強 progressive enhancement:
針對低版本瀏覽器進行構建頁面,保證最基本的功能,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。

優雅降級 graceful degradation:
一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容。

區別:

a. 優雅降級是從復雜的現狀開始,并試圖減少用戶體驗的供給

b. 漸進增強則是從一個非常基礎的,能夠起作用的版本開始,并不斷擴充,以適應未來環境的需要

c. 降級(功能衰減)意味著往回看;而漸進增強則意味著朝前看,同時保證其根基處于安全地帶

9、瀏覽器的內核分別是什么?

IE: trident內核
Firefox:gecko內核
Safari:webkit內核
Opera:以前是presto內核,Opera現已改用Google Chrome的Blink內核
Chrome:Blink(基于webkit,Google與Opera Software共同開發)

回到頂部

JavaScript部分

1、怎樣添加、移除、移動、復制、創建和查找節點?

1)創建新節點
createDocumentFragment() //創建一個DOM片段
createElement() //創建一個具體的元素
createTextNode() //創建一個文本節點

2)添加、移除、替換、插入
appendChild() //添加
removeChild() //移除
replaceChild() //替換
insertBefore() //插入

3)查找
getElementsByTagName() //通過標簽名稱
getElementsByName() //通過元素的Name屬性的值
getElementById() //通過元素Id,唯一性

2、實現一個函數clone,可以對JavaScript中的5種主要的數據類型(包括Number、String、Object、Array、Boolean)進行值復制。

    /**
 * 對象克隆  * 支持基本數據類型及對象  * 遞歸方法  */ function clone(obj) { var o; switch (typeof obj) { case "undefined": break; case "string": o = obj + ""; break; case "number": o = obj - 0; break; case "boolean": o = obj; break; case "object": // object 分為兩種情況 對象(Object)或數組(Array) if (obj === null) { o = null; } else { if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") { o = []; for (var i = 0; i < obj.length; i++) { o.push(clone(obj[i])); } } else { o = {}; for (var k in obj) { o[k] = clone(obj[k]); } } } break; default: o = obj; break; } return o; }

3、如何消除一個數組里面重復的元素?

// 方法一:
var arr1 =[1,2,2,2,3,3,3,4,5,6], arr2 = []; for(var i = 0,len = arr1.length; i< len; i++){ if(arr2.indexOf(arr1[i]) < 0){ arr2.push(arr1[i]); } } document.write(arr2); // 1,2,3,4,5,6

4、想實現一個對頁面某個節點的拖曳?如何做?(使用原生JS)。

5、在Javascript中什么是偽數組?如何將偽數組轉化為標準數組?

偽數組(類數組):無法直接調用數組方法或期望length屬性有什么特殊的行為,但仍可以對真正數組遍歷方法來遍歷它們。典型的是函數的 argument參數,還有像調用getElementsByTagName,document.childNodes之類的,它們都返回 NodeList對象都屬于偽數組。可以使用Array.prototype.slice.call(fakeArray)將數組轉化為真正的Array 對象。

function log(){ var args = Array.prototype.slice.call(arguments); //為了使用unshift數組方法,將argument轉化為真正的數組 args.unshift('(app)'); console.log.apply(console, args); };

6、Javascript中callee和caller的作用?

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

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

7、請描述一下cookies,sessionStorage和localStorage的區別

sessionStorage用于本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問并且當會話結束后數據也 隨之銷毀。因此sessionStorage不是一種持久化的本地存儲,僅僅是會話級別的存儲。而localStorage用于持久化的本地存儲,除非主 動刪除數據,否則數據是永遠不會過期的。

web storage和cookie的區別

Web Storage的概念和cookie相似,區別是它是為了更大容量存儲設計的。Cookie的大小是受限的,并且每次你請求一個新的頁面的時候Cookie都會被發送過去,這樣無形中浪費了帶寬,另外cookie還需要指定作用域,不可以跨域調用。
除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開發者自己封裝 setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是與服務器進行交互,作為HTTP規范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲”數據而生。

8、手寫數組快速排序

關于快排算法的詳細說明,可以參考阮一峰老師的文章快速排序
"快速排序"的思想很簡單,整個排序過程只需要三步:
(1)在數據集之中,選擇一個元素作為"基準"(pivot)。
(2)所有小于"基準"的元素,都移到"基準"的左邊;所有大于"基準"的元素,都移到"基準"的右邊。
(3)對"基準"左邊和右邊的兩個子集,不斷重復第一步和第二步,直到所有子集只剩下一個元素為止。

9、統計字符串中字母個數或統計最多字母數。

var str = "aaaabbbccccddfgh"; var obj = {}; for(var i=0;i<str.length;i++){ var v = str.charAt(i); if(obj[v] && obj[v].value == v){ obj[v].count = ++ obj[v].count; }else{ obj[v] = {}; obj[v].count = 1; obj[v].value = v; } } for(key in obj){ document.write(obj[key].value +'='+obj[key].count+'&nbsp;'); // a=4 b=3 c=4 d=2 f=1 g=1 h=1 } 

10、寫一個function,清除字符串前后的空格。(兼容所有瀏覽器)

function trim(str) { if (str && typeof str === "string") { return str.replace(/(^\s*)|(\s*)$/g,""); //去除前后空白符 } }
回到頂部

其他

1、一次完整的HTTP事務是怎樣的一個過程?

基本流程:

a. 域名解析

b. 發起TCP的3次握手

c. 建立TCP連接后發起http請求

d. 服務器端響應http請求,瀏覽器得到html代碼

e. 瀏覽器解析html代碼,并請求html代碼中的資源

f. 瀏覽器對頁面進行渲染呈現給用戶

2、對前端工程師這個職位你是怎么樣理解的?

a. 前端是最貼近用戶的程序員,前端的能力就是能讓產品從 90分進化到 100 分,甚至更好

b. 參與項目,快速高質量完成實現效果圖,精確到1px;

c. 與團隊成員,UI設計,產品經理的溝通;

d. 做好的頁面結構,頁面重構和用戶體驗;

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

f. 針對服務器的優化、擁抱最新前端技術。

轉載于:https://www.cnblogs.com/lyh0501/p/5329400.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285280.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285280.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285280.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

光纖熔接過程詳細說明

在我們實際的網絡工作當中會遇到光纖的熔接&#xff0c;由于目前光纖熔接的工藝已經成熟完善&#xff0c;對于一根六芯光纖整個熔接過程需要2名工程師&#xff0c;大約需要花費1個小時的時間就可以完成。我們首先考慮的是為光纖線纜留出足夠的長度來&#xff0c;多了好辦&#…

Playwright之錄制

前言前段時間看了大佬分享的關于Playwright.NET的文章感覺挺有意思&#xff0c;想要閱讀點擊&#xff1a;此處&#xff0c;然后跟隨大佬的腳步&#xff0c;學習了一點自動化玩&#xff0c;其中有一個錄制功能感覺挺好玩&#xff0c;下面就來簡單看看介紹手動操作瀏覽器&#xf…

【MapBox】在地圖上創建多個Marker點,設置鼠標經過提示信息,單擊跳轉到鏈接

本文講述在MapBox地圖上創建多個Point點,然后設置鼠標經過每個點提示信息,再讓每個點鼠標點擊跳轉到指定的不同的鏈接地址。 任務描述: 顯示MapBox地圖添加Marker設置鼠標經過提示設置Marker單擊鏈接效果展示: 點擊Marker跳轉到指定的鏈接地址。 源碼贈送: <!DOCTYPE …

Timequest的波形窗口調出

在使用TIMEQUEST做時序約束的時候,波形是很直觀的一個界面,但是在操作的時候順手向下一拉,波形窗口就不見了, 再report timing的時候就這樣了,只有summary,沒有波形窗口了. 找了半天的的view等等菜單沒找到怎么打開,最后將鼠標放在下圖位置他又出現了 出現上下拉的標簽向上拉就…

[轉]vue-codemirror 代碼編輯器

codemirror 是一個非常強大的代碼編輯器插件&#xff0c;但官方并沒有提供 vue 的支持版本&#xff0c;不過跟 vue 集成的步驟并不復雜&#xff0c;以下是具體實現 更多精彩 更多技術博客&#xff0c;請移步 IT人才終生實訓與職業進階平臺 - 實訓在線相關網址 Vue 官方插件庫推…

C語言試題139之輸入 3 個數 a,b,c,按大小順序輸出(利用指針)

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:輸入 3 個數 a,b,c,按大小順…

【ArcGIS Pro微課1000例】0001:Win7系統ArcGIS Pro2.5安裝權威教程(附軟件安裝包下載)

ArcGIS Pro是ESRI桌面產品線的新秀,集很多新技術于一身,原生支持64位系統,Ribbon界面,支持二三維一體化等。可以與別的版本的ArcGIS軟件共存。 文章目錄 1. 系統環境配置2. 安裝ArcGIS pro3. 打補丁,登錄賬戶4. 安裝中文5. ArcGIS pro 2.5下載地址1. 系統環境配置 ?

Maven發布工程到私服

所謂發布工程就是把工程打包成jar包&#xff0c;然后選擇上傳到私服的某個倉庫里&#xff0c;然后其他人就可以在私服上的倉庫中下載到你發布的工程。 簡單介紹Nexus上自帶的一些倉庫&#xff1a; 如果想要發布工程是需要一個擁有發布權限的用戶的&#xff0c;沒有發布權限的游…

善用兵者,藏于無形,90 分鐘深度講解最佳推廣價值作品

&#x1f4a1;提示本文帶有極大的主觀色彩&#xff0c;及不代表微軟組織的可視化大賽觀點&#xff0c;也不代表作者本人觀點。全部解讀均為這里的獨到觀點&#xff0c;任何解釋錯誤與作者或大賽無關。沒有作品文件下載&#xff0c;全文僅從外觀推斷和賞析整個結構。如果你已經被…

字體類形:font-family, font-style

語法&#xff1a;{font-family:字體1,字體2,字體3,...} 作用&#xff1a;調用客戶端字體 font-family: "Lantinghei SC","Microsoft Yahei",宋體,Arial,Helvetica,sans-serif; 當字體名稱包含兩個以上分開的單詞時&#xff0c;用“”把該字體名稱括起來。…

Java-開源工具類

一、集合 org.springframework.util.CollectionUtils&#xff1b; 二、字符串 com.google.common.base.Strings&#xff1b; org.apache.commons.lang3.StringUtils&#xff1b; 三、時間 java.time.LocalDateTime&#xff1b; 四、json com.alibaba.fastjson&#xff1b; 五、…

C語言試題140之輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:輸入數組,最大的與第一個元…

[轉]cmd 設置環境cmd環境變量命令set 設置永久環境變量命令setx

set命令 set命令用于設置當前cmd窗口中的環境變量&#xff0c;只在當前cmd窗口有效&#xff0c;cmd窗口關閉后將會失效。而其不會影響到系統中保存的用戶環境變量&#xff0c; setx命令 setx設置永久用戶環境變量 setx env_name env_value注意:有的路徑中會帶有空格,所以最好用…

【ArcGIS Pro微課1000例】0003:ArcGIS pro 2.5加載OSGB點云模型案例教程

Esri采用的spk i3s標準(Indexed 3D Scene),是Esri推出的開放標準。I3S標準作為開放的標準已經得到了市面上主流的傾斜攝影測量建模軟件的支持,如Bentley的 ContextCapture(國內簡稱為Smart 3D)、Pix4D、Vricon,這些軟件均支持基于I3S標準的數據格式SLPK的導出,生成的SLP…

HTML基礎第四講---圖像

轉自&#xff1a;https://blog.csdn.net/likaier/article/details/326735 圖像&#xff0c;也就是images&#xff0c;在html語法中用img來表示&#xff0c;其基本的語法是&#xff1a; <img src#> #圖象的 URL&#xff0c;關于url就是指的是圖像在網上的地址。 <i…

機器學習 vs. 深度學習

1. bias/vairance Trend # 1&#xff1a;Scale driving Deep Learning process. 2. feature learning 的方式 A common computer vision pipeline before 2012&#xff1a; a. find interest points.b. crop patches around them.c. represent each patch with a sparse local …

多圖片上傳預覽效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><script src"jquery-2.1.4.min.js"></script> </head> <body><script>//下面用于多圖…

C語言試題141之有 n 個整數,使其前面各數順序向后移 m 個位置,最后 m 個數變成最前面的 m 個數

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:有 n 個整數,使其前面各數順…

dotnet-exec 0.6.0 released

dotnet-exec 0.6.0 releasedIntrodotnet-exec 是一個 C# 程序的小工具&#xff0c;可以用來運行一些簡單的 C# 程序而無需創建項目文件&#xff0c;而且可以自定義項目的入口方法&#xff0c;支持但不限于 Main 方法Install/Updatedotnet-exec 是一個 dotnet tool&#xff0c;可…

VS Code 集成 flutter dart 開發

一、關于Flutter Flutter是谷歌的移動UI框架&#xff0c;可以快速在iOS和Android上構建高質量的原生用戶界面。 Flutter可以與現有的代碼一起工作。在全世界&#xff0c;Flutter正在被越來越多的開發者和組織使用&#xff0c;并且Flutter是完全免費、開源的。 https://flutterc…