① 前端面試題整理(一)
進程是CPU資源分配的最小單位,線程是CPU調度的最小單位
其中GUI渲染線程和JS引擎是無法同時工作的
默認情況下, TCP 連接會啟用延遲傳送演算法 (Nagle 演算法), 在數據發送之前緩存他們. 如果短時間有多個數據發送, 會緩沖到一起作一次發送 (緩沖大小見 socket.bufferSize), 這樣可以減少 IO 消耗提高性能.
如果是傳輸文件的話, 那麼根本不用處理粘包的問題, 來一個包拼一個包就好了. 但是如果是多條消息, 或者是別的用途的數據那麼就需要處理粘包.
可以參見網上流傳比較廣的一個例子, 連續調用兩次 send 分別發送兩段數據 data1 和 data2, 在接收端有以下幾種常見的情況:
A. 先接收到 data1, 然後接收到 data2 .
B. 先接收到 data1 的部分數據, 然後接收到 data1 餘下的部分以及 data2 的全部.
C. 先接收到了 data1 的全部數據和 data2 的部分數據, 然後接收到了 data2 的餘下的數據.
D. 一次性接收到了 data1 和 data2 的全部數據.
其中的 BCD 就是我們常見的粘包的情況. 而對於處理粘包的問題, 常見的解決方案有:
多次發送之前間隔一個等待時間
關閉 Nagle 演算法
進行封包/拆包
通過滑動窗口協議(連續ARQ協議)實現,保證了分組無差錯、有序接收、流量控制。接收方返回的ACK中會包含自己的接收窗口的大小,並且利用大小來控制發送方的數據發送。
當發送者收到了一個窗口為0的應答,發送者便停止發送,等待接收者的下一個應答。如果這個窗口不為0的應答在傳輸過程中丟失,發送者一直等待,接收者以為發送者收到該應答,等待接收新數據,這樣雙方就相互等待,從而產生死鎖
TCP使用了持續計時器。每當發送者收到一個0窗口的應答後就啟動該計時器。計時器到時便主動發送報文詢問接收者的窗口大小。若接收者仍然返回0窗口,則重置該計時器繼續等待;若窗口不為0,則標識應答報文丟失了,此時重置發送窗口開始發送,這樣就避免了死鎖的產生
擁塞控制是作用於網路的,防止網路負載過大,常用的方法:1.慢啟動、擁塞避免 2.快重傳、快恢復。流量控制是作用於接收者的,控制發送者的發送速度使接收者來得及接收,防止分組丟失
發送方維持一個叫做擁塞窗口CWnd的狀態變數,控制著傳輸速度,TCP開始發送報文時CWnd=1。一個傳輸輪次所經歷的時間就是往返時間RTT,每經過一個RTT並且按時收到確認,就將擁塞窗口CWnd加倍。還有一個叫慢啟動門限ssthresh的狀態變數,當CWnd<ssthresh時,使用慢啟動,當CWnd>=ssthresh改用擁塞避免演算法
每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1而不是加倍。無論在慢啟動階段還是擁塞避免階段,只要發送方沒有按時收到確認,就把慢啟動門限設置為出現擁塞時的擁塞窗口cwnd的一半(但不小於2)。然後把擁塞窗口cwnd重置為1,執行慢啟動演算法
接收方收到一個失序的報文段後就立刻發出重復確認而不是等到自己發送數據時捎帶確認。只要發送方一連收到三個重復確認就立即重傳對方尚未收到的報文段,而不是等待重傳計時器到期
當發送方連續收到三個重復確認時,把慢啟動門限ssthresh減半,但是並不執行慢開始演算法,而是將擁塞窗口cwnd設置為ssthresh減半後的值,直接執行擁塞避免演算法。快重傳配合快恢復的TCP Reno版本是目前使用最廣的版本。
幀:HTTP/2 數據通信的最小單位消息:指 HTTP/2 中邏輯上的 HTTP 消息。例如請求和響應等,消息由一個或多個幀組成。
流:存在於連接中的一個虛擬通道。流可以承載雙向消息,每個流都有一個唯一的整數ID
HTTP/1.x會在請求和響應中中重復地攜帶不常改變的、冗長的頭部數據,給網路帶來額外的負擔。
服務端可以在發送頁面HTML時主動推送其它資源,而不用等到瀏覽器解析到相應位置,發起請求再響應。例如服務端可以主動把JS和CSS文件推送給客戶端,而不需要客戶端解析HTML時再發送這些請求。
服務端可以主動推送,客戶端也有權利選擇是否接收。如果服務端推送的資源已經被瀏覽器緩存過,瀏覽器可以通過發送RST_STREAM幀來拒收。主動推送也遵守同源策略,伺服器不會隨便推送第三方資源給客戶端。
HTTP 1.x 中,如果想並發多個請求,必須使用多個 TCP 鏈接,且瀏覽器為了控制資源,還會對單個域名有 6-8個的TCP鏈接請求限制。
HTTP2中:
同域名下所有通信都在單個連接上完成。
單個連接可以承載任意數量的雙向數據流。
數據流以消息的形式發送,而消息又由一個或多個幀組成,多個幀之間可以亂序發送,因為根據幀首部的流標識可以重新組裝
前端面試與進階指南
從輸入URL到頁面載入的過程?如何由一道題完善自己的前端知識體系!
② 前端面試一般問什麼
web前端面試會問人事方面的內容和web前端技術的內容;
人事的面試
web前端人事面試方面,需要注意如何自我介紹、性格有哪些優劣勢、職業規劃方向是什麼、你的特長是什麼、對於加班之類你是怎麼看待等人事面試內容;
web前端技術的面試
技術面試,需要注意HTML+CSS+JavaScript以及JS主流框架的使用,比如Vue、React等,前端相關技術,比如tcp握手協議、網路安全、後端技術等;
對於web前端面試准備,建議你去看「決勝前端」(min app),它裡麵包含了很多web前端技術面試、人事面試等面試真題,而且針對面試題做了詳細的分析與解答。
我給你截圖看一下例子吧
③ 前端面試 問什麼問題
web前端面試會問人事方面的內容和web前端技術的內容;
人事的面試
web前端人事面試方面,需要注意如何自我介紹、性格有哪些優劣勢、職業規劃方向是什麼、你的特長是什麼、對於加班之類你是怎麼看待等人事面試內容;
web前端技術的面試
技術面試,需要注意HTML+CSS+JavaScript以及JS主流框架的使用,比如Vue、React等,前端相關技術,比如tcp握手協議、網路安全、後端技術等;
對於web前端面試准備,建議你去看「決勝前端」(min app),它裡麵包含了很多web前端技術面試、人事面試等面試真題,而且針對面試題做了詳細的分析與解答。
我給你截圖看一下例子吧
④ 前端面試題整理
JavaScript:
1.介紹一下isNaN函數?
如果參數不是數字類型的話isNaN返回true(函數名稱:isnan函數功能:判斷數組的元素是否是NaN。)
2.javascript都支持哪些布爾型的操作?
&&,||和!(&&邏輯與,||邏輯或,!邏輯非)
3.「1″+2+4在javascript中得到什麼?
因為「1」是String類型,所以所有的操作數都是String,結果為124
4.2+5+」8″得到的結果是什麼?
因為2和5是數字類型,8是字元串,所以得到的結果是78
5.javascript有幾種loop(循環)方法?
for,while,do-while,for...in語句用於遍歷數組或者對象的屬性(對數組或者對象的屬性進行循環操作)。
6.javascript如何創建一個新的對象?
varobj=newObject()或者varobj={}
7.如何為一個對象屬性賦值?
obj["age"]=17或者obj.age=17
8.如何為一個數組添加一個值?
arr[arr.length]=value;
9.javascript基本數據類型/javascript中的typeof返回哪些數據類型
Number類型、Boolean類型、Object類型、String類型、Null、Undefined類型/
10.例舉3種強制類型轉換和2種隱式類型轉換?
強制(parseInt,parseFloat,number)隱式(==_===)
11.數組方法pop()push()unshift()shift()
Push()尾部添加pop()尾部刪除Unshift()頭部添加shift()頭部刪除
12.閉包是什麼,有什麼特性,對頁面有什麼影響
閉包就是能夠讀取其他函數內部變數的函數。
13.添加刪除替換插入到某個接點的方法
obj.appendChild()obj.innersetBefore()obj.replaceChild()obj.removeChild()
14.javascript的本地對象,內置對象和宿主對象
本地對象為arrayobjregexp等可以new實例化
內置對象為gloadMath等不可以實例化的
宿主為瀏覽器自帶的document,window等
15.介紹一下eval()函數
eval()函數可計算某個字元串,並執行其中的的JavaScript代碼。
16.介紹一下JSON
JSON:JavaScript對象表示法(JavaScriptObjectNotation)。
JSON是存儲和交換文本信息的語法。類似XML。
JSON比XML更小、更快,更易解析。
17.jQueryUI與jquery的主要區別是:
(1)jQuery是一個js庫,主要提供的功能是選擇器,屬性修改和事件綁定等等。
(2)jQueryUI則是在jQuery的基礎上,利用jQuery的擴展性,設計的插件。提供了一些常用的界面元素,諸如對話框、拖動行為、改變大小行為等等。
(3)jQuery本身注重於後台,沒有漂亮的界面,而jQueryUI則補充了前者的不足,他提供了華麗的展示界面,使人更容易接受。既有強大的後台,又有華麗的前台。
html+css:
1.對WEB標准以及W3C的理解與認識:
標簽閉合、標簽小寫、不亂嵌套、提高搜索機器人搜索幾率、使用外鏈css和js腳本、結構行為表現的分離、文件下載與頁面速度更快、內容能被更多的用戶所訪問、內容能被更廣泛的設備所訪問、更少的代碼和組件,容易維護、改版方便,不需要變動頁面內容、提供列印版本而不需要復制內容、提高網站易用性;
2.xhtml和html有什麼區別:
HTML是一種基本的WEB網頁設計語言,XHTML是一個基於XML的置標語言
最主要的不同:
XHTML元素必須被正確地嵌套。
XHTML元素必須被關閉。
標簽名必須用小寫字母。
XHTML文檔必須擁有根元素。
3.行內元素有哪些?塊級元素有哪些?CSS的盒模型?
塊級元素:divph1h2h3h4formul
行內元素:abbrispaninputselect
Css盒模型:內容,border,margin,padding
4.前端頁面有哪三層構成,分別是什麼?作用是什麼?
結構層Html表示層CSS行為層js
5.寫出幾種IE6BUG的解決方法:
雙邊距BUGfloat引起的使用display
3像素問題使用float引起的使用dislpay:inline-3px
超鏈接hover點擊後失效使用正確的書寫順序linkvisitedhoveractive
Iez-index問題給父級添加position:relative
Png透明使用js代碼改
Min-height最小高度!Important解決』
select在ie6下遮蓋使用iframe嵌套
為什麼沒有辦法定義1px左右的寬度容器(IE6默認的行高造成的,使用over:hidden,zoom:0.08line-height:1px)
6.解釋csssprites,如何使用。
Css精靈把一堆小的圖片整合到一張大的圖片上,減輕伺服器對圖片的請求數量
7.你如何對網站的文件和資源進行優化?期待的解決方案包括:
文件合並
文件最小化/文件壓縮
使用CDN託管
緩存的使用
8.清除浮動的幾種方式,各自的優缺點:
使用空標簽清除浮動clear:both(理論上能清楚任何標簽,,,增加無意義的標簽)
使用overflow:auto(空標簽元素清除浮動而不得不增加無意代碼的弊端,,使用zoom:1用於兼容IE)
是用afert偽元素清除浮動(用於非IE瀏覽器)
9.瀏覽器內核
1、Trident內核:IE最先開發或使用的,也稱IE內核,360瀏覽器使用的也是IE內核;
2、Webkit內核:谷歌chrome瀏覽器最先開發或使用,也叫谷歌內核,楓樹瀏覽器、太陽花使用的也是谷歌內核;
3、Gecko內核:Netscape6開始採用的內核,後來的MozillaFireFox(火狐瀏覽器)也採用了該內核,K-Meleon瀏覽器也是使用這種內核;
4、Presto內核:目前只有Opera瀏覽器採用該內核
⑤ 參加Web前端面試一定看的Web前端面試題庫(一)
今天小編要跟大家分享的文章是關於參加Web前端面試一定看的Web前端面試題庫。正在學習web前端知識准備參加web前端面試的小夥伴們來和小編一起看一看吧。
HTML(5)和CSS3方面
01.前端與後端數據交互的格式有哪些,為什麼大部分現在都用json而不用xml?
答:XML:
JSON:{name:」知了堂」,age:3}
JSON書寫方便節省位元組,更輕量,前後台都有直接解析JSON的方法(JSON.stringfity/parse)使用方便。
02.Flex布局熟悉嗎,說幾個常用的屬性。
答:這個幾乎每天都在用,還是挺熟悉的。
__
display:flex
___align-items多個
__
align-content:單個
___justify-content
___justify-items
___flex-direction
__
flex-wrap:
__
flex-basic:初始盒子寬度_lex
_
_lex-grow:增長因子2004*40=1601,1,1,21/5*40_lex
___flex-shrink
:縮減因子20060*4=240
03.說一下CSS盒模型。
答:CSS的盒模型包含了以下幾個內容margin,padding,border,content。
在計算盒子寬高的時候,IE和Chrome會有一些區別,IE算到border,Chrome的寬度只包含content區域,因此CSS3提供了box-sizing這個屬性來修改。
04.CSS常用選擇器,選擇器權重問題。
答:*(has,not,target,root。。。。)通配符,ID,class,attr屬性,element,子代(>+~),
___UI狀態偽類選擇器(hover,active,link,seceted..,checked),
___結構性偽類選擇器(nth-child,fist-child,last,nth-of-type...before,after....)
___!important
>style>id>class>elemnet>偽類和屬性
05.請用5種方式實現元素垂直居中。
答:
(1)flex
(2)Tranform
(3)定位+margin負值(知道子節點寬高)
(4)定位+margin:auto
(5)JS動態計算top、left值
06.什麼是BFC?垂直margin重疊是為什麼?怎麼解決這個問題?
答:
概念:BFC全稱BlockFormatting
Context,中文意思為塊級格式上下文。
通俗的來說:BFC是一個獨立的布局環境,我們可以理解為一個箱子(實際上是看不見摸不著的),箱子內部的元素無論如何翻江倒海,都不會影響到外部。轉換為BFC的理解則是:BFC中的元素的布局是不受外界的影響(我們往往利用這個特性來消除浮動元素對其非浮動的兄弟元素和其子元素帶來的影響。比如清除浮動)並且在一個BFC中,塊元素與行元素都會垂直的沿著其父元素的邊框排列。
如何觸發BFC
1.浮動元素,float除none以外的值
2.position的值不為static或者relative
3.display不為none
4.overflow除了visible以外的值
BFC的應用
1.解決浮動塌陷問題
2.自適應兩欄布局(我們還可以運用BFC可以阻止元素被浮動元素覆蓋的特性來實現自適應兩欄布局。方法:給沒有浮動的元素加overflow:hidden。)
3.解決設置margin值重疊問題。
總結:
BFC就是頁面上的一個隔離的獨立容器,容器裡面的子元素不會影響到外面的元素。
07.什麼是浮動,有什麼作用,有何副作用,以及如何清除浮動?
答:浮動是使用給節點添加float屬性,最初的設計是用來實現文字環繞的。
添加了float的節點脫離文檔流,同時觸發節點的BFC,讓節點往一個方向靠,並排成一行。
當一個父節點的子節點全部浮動,就會造成父節點高度塌陷,
解決的辦法首先是可以給父節點主動添加高度值,再者利用只要有一個子節點不浮動原理來添加一個不浮動的節點(通常使用偽元素before,after),再者還可以觸發父節點的bfc,常用的定位,或者overflow:hidden。
08.CSS裡面有哪些相對單位?都是相對什麼的?
答:REM,EM,VW,VH等
__
REM:相對於根節點html的font-size
__
EM:父節點的font-size
__W:視口的寬度為100VW,相對於把視口分為100份
__
VH:視口高度為100VH,同理
__隕系ノ歡伎梢栽諞貧俗鮃趁媸逝洌ǔJ褂_EM和VW
09.fixed是相對於誰定位的?如果加上transform會出現問題嗎?
答:fixed定位相對於瀏覽器視口來定位的。
添加上transform以後,fixed定位會失效。如果fixed元素的祖先有transform屬性,則fixed元素會相對與這個祖先計算,而不是視口。
10.為什麼不推薦用style內聯元素?內聯元素有什麼缺點?(css文件可以緩存)
答:首先是style是節點的屬性,不能被緩存;代碼的可讀性和可維護性相對弱一些,特別是多人協作開發的時候。但是如果一個頁面的style樣式足夠少的時候,可以使用style元素,因為一次請求最多攜帶14K的數據,如果足夠小,還可以節約一次請求。
11.簡單描述http與https協議,以及為什麼要三次握手?什麼是長鏈接?
答:http與https都是目前主流傳輸協議。
目前http協議已經發展到2.0階段,支持長鏈接,斷點續傳,cache緩存策略,多路復用,伺服器推送等。
https相對於http更安全,增加了證書SSL加密,埠是433。
客戶端SYN=1,Seq
=x,服務端接受到後,服務端就知道了,有一個客戶端要鏈接我,然後伺服器就會開啟一個TCPsocket的埠,然後返回數據給前端也是SYN=1,SEQ=Y,ACK=x+1,客戶端接受到後,在發一個seq,和ACK+1.主要是為了防止開啟無用的鏈接,或者網路延遲丟包,伺服器無法確定到底客戶端有沒有收到消息。
在使用長連接的情況下,當一個網頁打開完成後,客戶端和伺服器之間用於傳輸HTTP數據的TCP連接不會關閉,客戶端再次訪問這個伺服器時,會繼續使用這一條已經建立的連接。
Keep-Alive不會永久保持連接,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間。實現長連接需要客戶端和服務端都支持長連接。
為何需要長鏈接?
長鏈接可以省去較多的TCP建立和關閉的操作,減少浪費,節約時間。
12.http常見狀態碼有哪些?301和302的區別是什麼?304是指什麼?
答:404:找不到資源;
500:伺服器內部錯誤;
200:請求成功,並返回數據;
301:永久重定向;
302:_偈幣貧墒褂迷_RI;
304:資源未修改,可使用緩存;
400:請求語法錯誤(一般為參數錯誤);
403:沒有許可權訪問。。。等
13.瀏覽器頁面渲染的流程是什麼(輸入url後頁面發生什麼)?
答:首先dns解析IP,建立tcp鏈接下載資源,構建dom樹,當遇到link標簽,會下載並執行解析css(不會阻止dom樹的構建)當遇到script標簽的是,dom樹構建會暫停,下載並執行完js才會繼續(defer(下載延遲執行),async(非同步下載並執行))然後再布局和繪制(layout,paint)最後再render。
14.什麼是reflow與repain?哪些操作會觸發reflow,如何避免?
答:reflow:迴流,當元素的尺寸、結構或觸發某些屬性時,瀏覽器會重新渲染頁面,稱為迴流。
__repain:重繪,當元素的樣式(布局不發生)發生改變的時候。
以下常見操作都會觸發:
瀏覽器窗口大小改變
元素尺寸、位置、內容發生改變
元素字體大小變化
添加或者刪除可見的dom元素
激活CSS偽類(例如::hover)等
盡量減少DOM操作。
15.HTML5常用的API有哪些?你用過哪些?
答:video、audio,獲取dom的方式(queryselector),websocket
Canvas,svg,requestAnimationFrame,Geolocation,stroage,notification,OrientationAPI用於檢測手機的擺放方向等
16.請列舉出幾個常見的瀏覽器兼容性問題?
答:現在市面上IE678基本已經停止使用了,所以盡量不要說這方面的兼容性。
1、不同瀏覽器的默認margin和padding不一致
2、圖片的默認間距不一致
3、獲取視口的寬高window.innerheight/width
4、CSS3的動畫,過渡,漸變,flex也有
5、Canvas,SVG
6、IE9以下不能的opacity,使用filter:alpha(opacity=50);
7、event.offsetX/Y
8、綁定事件IE9才支持
17.什麼是瀏覽器緩存(知道什麼是強緩存和協商緩存)?
答:當瀏覽器訪問過後的資源,會被瀏覽器緩存的本地,當下次在訪問頁面的時候,如果沒有過期,直接讀取緩存,加快瀏覽器的載入效率。
http緩存機制:
1、Expires:通過設置最大緩存時間,當時間超過了就去伺服器下載,
2、http1.1,cache-control:max-age=time,當time過期後,檢測etag帶上etag往伺服器發請求,如果etag沒變,直接告訴瀏覽器讀本地緩存,如果沒有etag就會檢測Last-Modified,判斷如果上一次更改的時候,距離本次訪問時間比較久,說明文件沒有發生改變,返回304。
強緩存就是當前訪問時間還在設置的最大時間范圍內。
協商緩存就是時間過了,通過檢查etag或者last-modifed來使用緩存的機制。
18.說一下瀏覽器垃圾回收機制
答:老:標記清除演算法,GC會檢測當前對象有沒有被變數所引用,如果沒有就回收。
新:Scavenge,把內存空間分為兩部分,分別為From空間和To空間。當一個空間滿了以後,會把空間中活動對象轉移到另外一個空間,這樣互換。
以上就是小編今天為大家分享的關於參加Web前端面試一定看的Web前端面試題庫的文章,希望本篇文章能夠對正准備參加web前端面試的小夥伴們有所幫助,想要了解web前端知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利!
⑥ 2020年Web前端面試題匯總(一)
今天小編要跟大家分享的文章是關於2020年Web前端面試題匯總。由於內容較多小編分開為大家介紹,今天首先來和小編一起看一看第一部分的內容,希望這些面試題能夠對正准備找Web前端相關工作的小夥伴們有所幫助。
1.說幾條寫JavaScript的基本規范?
1)不要在同一行聲明多個變數;
2)請使用===/!==來比較true/false或者數值;
3)使用對象字面量替代newObject這種形式;
4)減少使用全局函數,全局變數;
5)switch語句必須帶有default分支;
6)if語句必須使用大括弧;
7)for-in循環中的變數;
應該使用var關鍵字明確限定作用域;
從而避免作用域全局污染。
2.說說平衡二叉樹?
平衡二叉搜索樹(Self-balancingbinarysearchtree)
又被稱為AVL樹。
具有以下性質:
1)它是一棵空樹或它的左右兩個子樹
的高度差的絕對值不超過1,
並且左右兩個子樹都是一棵平衡二叉樹。
2)平衡二叉樹必定是二叉搜索樹,反之則不一定。
3)平衡二叉樹的常用實現方法有紅黑樹、AVL、
替罪羊樹、Treap、伸展樹等。
最小二叉平衡樹的節點的公式如下:
F(n)=F(n-1)+F(n-2)+1備註:1是根節點,
F(n-1)是左子樹的節點數量,
F(n-2)是右子樹的節點數量。
3.清除浮動和解決垂直外邊距重疊的解決方案?
問題描述:
1)父元素沒有設置寬高,尺寸由子元素撐起;
子元素一旦浮動,父元素高度會發生塌陷。
2)子元素設置margin-top會作用的父元素的margin-top;
此時會造成垂直外邊距重疊。
.clearfix::after,.clearfix::before{
content:''
display:table;
clear:both;
}
4.sessionStorage、localStorage和cookie?
相同點:
都用於瀏覽器端存儲的緩存數據;
不同點:
1)存儲內容是否發送到伺服器端
當設置了Cookie後,數據會發送到伺服器端,
造成一定的寬頻浪費;xxxstorage則會將數據保存
到本地,不會造成寬頻浪費;
2)數據存儲大小不同
Cookie數據不能超過4K,適用於會話標識;
xxxstorage數據存儲可以達到5M;
3)數據存儲的有效期限不同
cookie只在設置了Cookid過期時間
之前一直有效,即使關閉窗口或者瀏覽器;
sessionStorage,僅在關閉瀏覽器之前有效;
localStorage,數據存儲永久有效;
4)作用域不同
cookie和localStorage是在同源同窗口中
都是共享的;
sessionStorage不在不同的瀏覽器窗口
中共享,即使是同一個頁面;
5.判斷一個單詞是否是迴文?
迴文是指把相同的詞彙或句子,
在下文中調換位置或顛倒過來,
產生首尾回環的情景,
叫做迴文,也叫回環。
比如cacac,redivider。
letcheckPalindrom=(str)=>{
returnstr===
str.split('').reverse().join('');
}
6.不藉助臨時變數,進行兩個整數的交換?
輸入a=3,b=1,
輸出a=1,b=3
letswap=(a,b)=>{
b=b-a;
a=a+b;
b=a-b;
return[a,b];
}
7.請寫出至少5個html5新增的標簽,並說明其語義和應用場景?
section:定義文檔中的一個章節;
nav:定義只包含導航鏈接的章節;
header:定義頁面或章節的頭部;
它經常包含logo、頁面標題和導航性的目錄。
footer:定義頁面或章節的尾部;
它經常包含版權信息、法律信息鏈接和反饋建議用的地址。
aside:定義和頁面內容關聯度較低的內容,
如果被刪除,剩下的內容仍然很合理。
8.get和post請求在緩存方面的區別?
get請求類似於查找的過程,用戶獲取數據,
可以不用每次都與資料庫連接,所以可以使用緩存。
post不同,post做的一般是修改和刪除的工作,
所以必須與資料庫交互,所以不能使用緩存。
因此get請求適合於請求緩存。
9.如何解決非同步回調地獄?
promise、generator、async/await
10.圖片的懶載入和預載入?
預載入:提前載入圖片,
當用戶需要查看時可直接
從本地緩存中渲染。
懶載入:懶載入的主要目的
是作為伺服器前端的優化,
減少請求數或延遲請求數。
兩種技術的本質:
兩者的行為是相反的,
一個是提前載入,
一個是遲緩甚至不載入。
懶載入對伺服器前端有一定
的緩解壓力作用,
預載入則會增加伺服器前端壓力。
11.bind,apply,call的區別?
通過apply和call改變函數的this指向,
這兩個函數的第一個參數都是一樣的,
表示要改變指向的那個對象,
第二個參數,apply是數組,
而call則是arg1,arg2...這種形式。
通過bind改變this作用域
會返回一個新的函數,
這個函數不會馬上執行。
12.js怎麼控制一次載入一張圖片,載入完後再載入下一張?
方法一:
varobj=newImage();
obj.src="#/21.jpg";
obj.onload=function(){
document.getElementById("pic")
.innnerHTML="
}
⑦ 前端面試官常問的問題有哪些
1、重繪和重排的關系:
重繪不會引起重排,但重排一定會引起重繪,一個元素的重排通常會帶來一系列的反應,甚至觸發整個文檔的重排和重繪,性能代價是高昂的。
2、重繪的概念:
重繪是一個元素外觀的改變所觸發的瀏覽器行為,例如改變visibility、outline、背景色等屬性。瀏覽器會根據元素的新屬性重新繪制,使元素呈現新的外觀。由於瀏覽器的流布局,對渲染樹的計算通常只需要遍歷一次就可以完成。
但table及其內部元素除外,它可能需要多次計算才能確定好其在渲染樹中節點的屬性值,比同等元素要多花兩倍時間,這就是我們盡量避免使用table布局頁面的原因之一。
3、觸發重排的情況:
頁面渲染初始化時;瀏覽器窗口改變尺寸;元素尺寸改變時;元素位置改變時;元素內容改變時;添加或刪除可見的DOM元素時。
4、rex的缺點:
(1)一個組件所需要的數據,必須_父組件傳過來,而不能像flux中直接從store取。
(2)當一個組件相關數據更新_,即使父組件不需要用到這個組件,父組件還是會重新render,可能會有效率影響,或者需要寫復雜的shouldComponentUpdate進行判斷。
5、對MVC和MVVM的理解:
(1)mvc:View傳送指令到Controller Controller完成業務邏輯後,要求Model改變狀態Model將新的數據發送到View,用戶得到反饋所有通信都是單向的。Angular它採用雙向綁定(data-binding):View的變動,自動反映在ViewModel,反之亦然。組成部分Model、View、ViewModel
(2)View:UI界面ViewModel:它是View的抽象,負責View與Model之間信息轉換,將View的Command傳送到Model;Model:數據訪問層。
⑧ web前端面試經常問到的面試題有哪些
Web前端經常被問到的面試題及答案
一、HTML+CSS
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)
二、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
}
}
⑨ 面試Web前端需要注意什麼會面試哪些問題
作為一名HTML5前端工程師,為了工作,為了就業我們免不了要參加各種各樣的面試。為此總結了面試前的注意事項:
第一:注意自己的儀容儀表
面試之前,一定要再次從頭到腳地將自己的儀容儀表檢查一遍。檢查時主要包括,自己的牙縫是不是還有食物殘渣,所以你需要就近找一個衛生間,如果沒有衛生間就近找一個角落也是可以的,但是切記一定不要在大庭廣眾之下。因此,為了給自己整理出著裝的時間請在約定時間前20分鍾到達。
第二:再次檢查面試時所需的資料是否都已帶全
這些資料主要包括:身份證明、學歷文憑證明、個人簡歷、以往作品等等,如果這些東西齊全之後,需要對這些資料做一個整理與排序。因為沒有哪個面試官希望看到面試者拿出一堆「莫名其妙」的東西塞給他,讓他自己再一頁一頁的翻找自己需要的內容,如果說這些資料在面試官手中不小心散落一地,結果可想而知。這樣的求職者在面試官眼中也一定不是一個讓人放心、有條不紊的員工。當然如果檢查時發現資料沒有帶全,也不要緊張。反而你要慶倖幸虧及時檢查,也有足夠的時間組織語言去向面試官解釋。
第三:面試之前將通信工具調成振動或關閉狀態
雖然說面試者與面試官之間是一個平等的關系,但畢竟你是去人家公司求職的,始終處於一個被動的狀態,所以最起碼的尊重還是要做到的。曾經有調查顯示,對於面試過程中接電話或是被電話打斷的求職者,會被HR減分。
第四:等候面試官時,仔細觀察多了解面試公司
在等候面試官時,可以暗自觀察一下公司的大體情況比如員工的著裝風格、公司的LOGO或是貼在牆上的企業文化、公司的環境等等,一來可以在接下來的面試過程中表現出自己對公司的認同感,二來也可以讓自己對求職公司多些了解,以確定是否要接受這里的工作。如果你身邊有公司的資料宣傳架,不妨取一本翻看一下,也會增加HR對你的好感。
第五:放鬆心情,保持自信
面試時一定要保持一定的自信,這樣也會給面試官留下很好的印象。面試只是你步入工作的第一步,即便是失敗了那也是人生重要的經歷。失敗是為了更好的迎接下一個挑戰。
作為一名web前端工程師千萬不要覺得懂技術面試就能萬事大吉了,像以上五點細節性的東西也是一定要掌握的。
面試題系列:
網頁鏈接
⑩ 面試web前端的工作,會被問到什麼問題
在實際的面試中,你可能需要使用 JavaScript、CSS 和 HTML 來編寫代碼。在你的面試期間,你可能需要實現 UI、構建窗口小部件或使用 Lodash 和 Underscore.js 這樣的庫編寫常用的實用程序函數。例如:構建常見的 Web 應用程序的布局和交互,例如類似 Netflix 網站那樣的。實現小部件,如日期選擇器、輪播或電子商務網站購物車。寫一個類似 debounce 或深度 clone 對象的函數。