主頁 > 前端設計 > 2019最新前端面試題及答案

2019最新前端面試題及答案

2020-09-24 23:40:16 前端設計

1.如何用原生js給一個按鈕系結兩個onclick事件?
q:btn.addEventListener("click",hello);

2.document.write和innerHTML的區別;
q:document.write是直接寫入到頁面的內容流,會導致頁面被重寫。innerHTML將內容寫入某個DOM節點,不會導致頁面全部重繪;

3.ajax的步驟;
q:(1) 創建XMLHttpRequest物件,也就是創建一個異步呼叫物件. 
??
      (2) 創建一個新的HTTP請求,并指定該HTTP請求的方法、URL及驗證資訊. 
??
      (3)設定回應HTTP請求狀態變化的函式. 
??
      (4)發送HTTP請求. 
??
      (5)獲取異步呼叫回傳的資料. 
??
      (6)使用JavaScript和DOM實作區域重繪.

4.xml和json的區別;
q:json資料體積小,傳遞速度快,JSON與JavaScript的互動更加方便,更容易決議處理,更好的資料互動,XML對資料描述性比較好;

5.清楚浮動的方法;(常見)
q:(1).父級div定義 height ;(如果高度和父級div不一樣時,會產生問題)
      (2).結尾處加空div標簽 clear:both;
      (2).父級div定義 偽類:after 和 zoom;(IE8以上和非IE瀏覽器才支持:after)
      (2).父級div定義 overflow:hidden;(不能和position配合使用)

6.box-sizing常用的屬性;
q:· box-sizing:content-box;(默認屬性值,W3C)
      · box-sizing:border-box;(IE盒模型)
      · box-sizing:inherit;
(box-sizing屬性在FireFox中存在兼容問題,所以需要使用-moz-box-sizing做一下兼容)

7.undefined 和 null 區別;
q:null: Null型別,代表“空值”代表一個空物件指標,使用typeof運算得到 “object”
     undefined: Undefined型別,當一個宣告了一個變數未初始化時,得到的就是undefined。(null 和 undefined 都表示“值的空缺”,你可以認為undefined是表示系統級的、出乎意料的或類似錯誤的值的空缺,而null是表示程式級的、正常的或在意料之中的值的空缺。)

8.常見的HTTP狀態碼;
q:2開頭 (請求成功)、3開頭 (請求被重定向)、4開頭 (請求錯誤)、5開頭(服務器錯誤)

9.網站性能優化;
q:1. JavaScript 壓縮和模塊打包

      2. 按需加載資源


      3. 快取

      4. 使用索引加速資料庫查詢

      5. 使用更快的轉譯方案

      6. 避免或最小化 JavaScript 和 CSS 的使用而阻塞渲染

      7. 圖片編碼優化

10.JS哪些操作會造成記憶體泄露;
q:1)意外的全域變數引起的記憶體泄露;
      2)閉包引起的記憶體泄露;
      3)沒有清理的DOM元素參考;
      4)被遺忘的定時器或者回呼;
      5)子元素存在引起的記憶體泄露;

11.什么是閉包,如何使用它,為什么要使用它;
q:閉包就是能夠讀取其他函式內部變數的函式。由于在Javascript語言中,只有函式內部的子函式才能讀取區域變數,因此可以把閉包簡單理解成“定義在一個函式內部的函式”;由于閉包會使得函式中的變數都被保存在記憶體中,記憶體消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致記憶體泄露。解決方法是,在退出函式之前,將不使用的區域變數全部洗掉。

12.JavaScript的同源策略;
q:同源策略規定跨域之間的腳本是隔離的,一個域的腳本不能訪問和操作另外一個域的絕大部分屬性和方法。

13.瀏覽器是如何渲染頁面的;
q:1.決議HTML檔案,創建DOM樹。

? ?自上而下,遇到任何樣式(link、style)與腳本(script)都會阻塞(外部樣式不阻塞后續外部腳本的加載)。


     2.決議CSS。優先級:瀏覽器默認設定<用戶設定<外部樣式<行內樣式<HTML中的style樣式;


     3.將CSS與DOM合并,構建渲染樹(Render Tree);

     4.布局和繪制,重繪(repaint)和重排(reflow);

14.從輸入url到顯示頁面,都經歷了什么;
q:1、首先,在瀏覽器地址欄中輸入url


      2、瀏覽器先查看瀏覽器快取-系統快取-路由器快取,如果快取中有,會直接在螢屏中顯示頁面內容。若沒有,則跳到第三步操作。


      3、在發送http請求前,需要域名決議(DNS決議),決議獲取相應的IP地址。


      4、瀏覽器向服務器發起tcp連接,與瀏覽器建立tcp三次握手。(TCP即傳輸控制協議。TCP連接是互聯網連接協議集的一種。)


      5、握手成功后,瀏覽器向服務器發送http請求,請求資料包。


      6、服務器處理收到的請求,將資料回傳至瀏覽器


      7、瀏覽器收到HTTP回應


      8、讀取頁面內容,瀏覽器渲染,決議html原始碼


      9、生成Dom樹、決議css樣式、js互動


      10、客戶端和服務器互動


      11、ajax查詢

15.對<meta></meta>標簽有什么理解,meta的作用
q:可用于瀏覽器(如何顯示內容或重新加載頁面),搜索引擎(關鍵詞),或其他 web 服務;meta里的資料是供機器解讀的,告訴機器該如何決議這個頁面,還有一個用途是可以添加服務器發送到瀏覽器的http頭部內容

16.怎么去設計一個組件封裝;
q:1)組件封裝的目的是為了重用,提高開發效率和代碼質量
      2)低耦合,單一職責,可復用性,可維護性
      3)前端組件化設計思路

17.執行緒,行程
q: 1)執行緒是最小的執行單元,行程是最小的資源管理單元
       2)一個執行緒只能屬于一個行程,而一個行程可以有多個執行緒,但至少有一個執行緒

18.vue資料的雙向資料系結;
q:vue資料雙向系結是通過資料劫持結合發布者-訂閱者模式的方式來實作的,通過Object.defineProperty()來劫持各個屬性的setter,getter,在資料變動時發布訊息給訂閱者,觸發相應的監聽回呼。

19.get與post 通訊的區別;
q:1).Get 請求能快取,Post 不能;
      2).Post 相對 Get 安全一點點,因為Get 請求都包含在 URL 里,且會被瀏覽器保存歷史紀錄,Post 不會,但是在抓包的情況下都是一樣的;
      3).Post 可以通過 request body來傳輸比 Get 更多的資料,Get 沒有這個技術;
      4).URL有長度限制,會影響 Get 請求,但是這個長度限制是瀏覽器規定的,不是 RFC 規定的;
      5).Post 支持更多的編碼型別且不對資料型別限制;

20.頁面匯入樣式時,使用link和@import有什么區別;
q:(1)link屬于XHTML標簽,除了加載CSS外,還能用于定義RSS, 定義rel連接屬性等作用;而@import是CSS提供的,只能用于加載CSS;
   (2)頁面被加載的時,link會同時被加載,而@import參考的CSS會等到頁面被加載完再加載;
   (3)import是CSS2.1 提出的,只在IE5以上才能被識別,而link是XHTML標簽,無兼容問題。

21.this物件的理解;
q:this總是指向函式的直接呼叫者(而非間接呼叫者);
   如果有new關鍵字,this指向new出來的那個物件;
   在事件中,this指向觸發這個事件的物件,特殊的是,IE中的attachEvent中的this總是指向全域物件Window。

22.eval是做什么的;
q:它的功能是把對應的字串決議成JS代碼并運行;
  應該避免使用eval,不安全,非常耗性能(2次,一次決議成js陳述句,一次執行)。
  由JSON字串轉換為JSON物件的時候可以用eval,var obj =eval('('+ str +')')。

23.--------------什么叫優雅降級和漸進增強-------------------
q:優雅降級:一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容。
   漸進增強:針對低版本的瀏覽器進行構建頁面,保證最基本的功能,然后再針對高級瀏覽器進行效果、互動等改進和追加功能達到更好的體驗效果。

24.如果解決ajax無法后退的問題;
q:1).html5里引入了新的API,即:history.pushState,history.replaceState
      2).可以通過pushState和replaceSate介面瀏覽器歷史,并且改變當前頁面的URL
      3).onpopstate監聽后退

25.事件委托;
q:利用冒泡原理,把事件加到父級上,觸發執行效果
      可以大量節省記憶體占用,減少事件注冊
      可以方便地動態添加和修改元素,不需要因為元素的改動而修改事件系結

26.let和const的區別;
q:let宣告的變數可以改變,值和型別都可以改變,沒有限制;
      const宣告的變數不得改變值;

27.常見的ES6語法;
q:let,const,箭頭函式,字串模板,class類,模塊化,promise

28.介紹promise;
q:就是一個物件,用來傳遞異步操作的訊息。有三種狀態:pending(進行中),resolved(已完成)和rejected(失敗)
      有了promise物件,就可以將異步操作以同步操作的流程表示出來,避免了層層嵌套的回呼函式

29.vue父子組件通信;
q:父組件是通過props屬性給子組件通信,在子組件里面emit,在父組件監聽;

30.移動端兼容問題;
q:IOS移動端click時間300ms的延遲回應;
      一些情況下對非可點擊元素如(label,span)監聽click時間,ios下不會觸發,css增加cursor:poiner就搞定了;

31.cookie和session有什么聯系和區別;
q:cookie資料存放在客戶的瀏覽器上,session資料放在服務器上
      session比cookie更安全
      單個cookie保存的資料不能超過4k,很多瀏覽器都限制一個站點最多保存20個cookie
      一般用cookie來存盤sessionid

32.移動端性能優化;
q:1_ 盡量使用css3影片,開啟硬體加速
      2_ 適當使用touch事件代替click事件
      3_ 避免使用css3漸變陰影效果
      4_ 可以用transform: translateZ(0) 來開啟硬體加速
      5_ 不濫用float。float在渲染時計算量比較大,盡量減少使用
      6_ 不濫用web字體。web字體需要下載,決議,重繪當前頁面
      7_ 合理使用requestAnimationFrame影片代替setTimeout

33.Cookie的弊端;
q: cookie雖然在持久保存客戶端資料提供了方便,分擔了服務器存盤的負擔,但是有很多局限性;
    第一:每個特定的域名下最多生成20個cookie
    第二:IE和Opera 會清理近期最少使用的cookie,Firefox會隨機清理cookie

34.常見兼容性問題;
q:1_ png24位的圖片在ie6瀏覽器上出現背景,解決方案是做成png8,也可以參考一段腳本處理;
      2_ 瀏覽器默認的margin和padding不同,解決方案是加一個全域的*{margin: 0;padding:0;}來統一;
      3_ IE6雙邊距BUG:塊屬性標簽float后,又有橫行的margin情況下,在ie6顯示margin得比設定的大;
      4_ IE5-8不支持opacity;
      5_ IE6只支持a標簽的:hover偽類;(使用js為元素監聽mouseenter,mouseleave事件,添加類實作效果)
      6_ ol內的序號全為1,不遞增;(為li設定樣式display: list-item)

本文網上轉載
原鏈接:https://blog.csdn.net/Peng_wl/article/details/94383068

uj5u.com熱心網友回復:

感謝分享~~

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/121916.html

標籤:非技術區

上一篇:求助大佬們,有關css的問題

下一篇:margin:0 auto

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more