① 前端面試會提問到哪些
在面試前端的過程中,有些問題是經常會被提問到的
一、基礎篇
1. 在不使用第三個變數的情況下,如何調換a與b的值?
2. px與em的區別
3. 簡述一下盒模型
4. 頁面導入樣式時,使用link和@import有什麼區別?
5. 簡述一下事件代理
二、HTML常見題目
01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?
02、HTML5為什麼只需要寫?
03、行內元素有哪些?塊級元素有哪些?空(void)元素有哪些?
04、頁面導入樣式時,使用link和@import有什麼區別?
05、介紹一下你對瀏覽器內核的理解?
06、常見的瀏覽器內核有哪些?
07、html5有哪些新特性、移除了哪些元素?如何處理HTML5新標簽的瀏覽器兼容問題?
08、如何區分HTML和HTML5?
09、簡述一下你對HTML語義化的理解?
10、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
三、CSS類的題目
01、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?
02、CSS選擇符有哪些?哪些屬性可以繼承?
03、CSS優先順序演算法如何計算?
04、CSS3新增偽類有哪些?
05、如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?
06、display有哪些值?說明他們的作用。
07、position的值relative和absolute定位原點是?
08、CSS3有哪些新特性?
09、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
10、用純CSS創建一個三角形的原理是什麼?
四、JavaScript類的題目
01、JavaScript中this是如何工作的
02、請解釋原型繼承的原理。
03、什麼是閉包(closure),如何使用它,為什麼要使用它?
04、.call 和.apply的區別是什麼?
05、請指出JavaScript 宿主對象(host objects) 和原生對象(native objects) 的區別?
06、請指出以下代碼的區別:function Person(){}、var person = Person()、var person = new Person()?
07、請解釋變數聲明提升(hoisting)。
08、什麼是 「use strict」; ? 使用它的好處和壞處分別是什麼?
09、什麼是事件循環 (event loop)?
10、請解釋同步 (synchronous) 和非同步 (asynchronous) 函數的區別。
五、開發及性能優化類題目
01、如何規避javascript多人開發函數重名問題?
02、請說出三種減低頁面載入時間的方法.
03、說說你所了解到的Web攻擊技術。
04、說說你說了解的前端性能優化方法?
05、前端開發中,如何優化圖像?圖像格式的區別?
06、瀏覽器是如何渲染頁面的?
07、頁面重構怎麼操作?
08、什麼叫優雅降級和漸進增強?
09、前端需要注意哪些SEO?如何做SEO優化?
10、平時如何管理你的項目?
② 如何面試前端開發
自我介紹,可以簡單介紹你畢業什麼學校,什麼專業,工作經歷簡明扼要的說出來就可以了,不要詳細到你哪年進入公司,哪年離開公司,負責項目做什麼的,說一大通。這個對面試官來說,想讓你自我簡單介紹,其實考察點有兩方面:1面試者的表達能力和概括能力,2面試者目前掌握什麼技術,做過什麼項目,在項目中的角色來初步判定這個人的能力
有些面試者回答問題,在介紹項目的時候,很大概的說,或者一句話前端都是我做的,這些都是我設計的;這樣肯定是不行的,面試官讓你介紹項目的時候肯定是希望你詳細介紹你的項目,這個項目使用者是誰,讓我知道誰在使用這個項目;你負責哪些模塊,哪些組件,那些模塊實現什麼業務邏輯,用到什麼技術,這個能讓面試官更加知道你項目的業務,才能從你描述中知道這類的業務會遇到什麼問題,以及你使用的技術是否合理,能更加判定你的能力,才能更好的提出問題,才能更好的面試下去。
前端技能在問到很多面試者的時候感覺自己都懂前端,其實他們只是懂使用js敲代碼而已,很多前端知識,以及前端原理都不懂,只會使用的話,那麼永遠只會走來人家的後面。就那一個比喻來說吧,如果你只是一個會開車的司機,不會修車或者造車,那麼如果哪天車出了毛病,你都不知道,到時候才去學習車的構造原理。或者你會說我直接給維修廠不就可以了,如果維修廠關門了呢怎麼辦。所以我們前端開發人員還是要腳踏實地,不要說我會使用vuejs,react前端框架,問你一個mvvm模式是什麼,你都說不知道,怎麼實現mvvm框架,在不使用別人開發mvvm框架,自己可以開發一個簡單的mvvm框架?
③ 前端面試題整理(一)
進程是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到頁面載入的過程?如何由一道題完善自己的前端知識體系!
④ 前端面試一問三不知怎麼辦
前端面試一問三不知的時候,千萬別慌亂,可以先停一停和面試官說這個問題你需要思考一下再回答,或者說你因為太緊張之類的一時想不起來答案。
有些面試官會直接電話過去要求面試,由於面試者(尤其是學生)處於弱勢方,可能並不會拒絕面試要求,但並不意味著面試者處於最佳的物理和精神狀態下,有可能會導致面試者不能很好的發揮自己原有的實力。所以如果面試官突然打電話過來。
沒有準備好的話,不要怕冒犯面試官,一定要另外約個時間,面試官肯定會再打過來的。遭到否定面試官有可能會否定你描述的一些東西,有可能是你字眼寫的太過,比如將「熟悉」的東西寫成了「精通」,勾起了面試官的「好奇」。
有可能故意試壓,考驗你的反應,但遇到否定的時候,不要急於反駁或者是手足無措,而是詢問自省和主動討論。氣場不和有的面試官性格嚴謹沉悶,而面試者可能思維活躍,整個面試過程可能會變成面試官不停的打斷面試者讓其思維聚焦。
而面試者感到思維不停被打斷,很是氣惱,影響發揮。這種情況不可避免,但遇到這樣的面試官,請保持謙和的態度,重點是展示自己技術的廣度、深度,氣場不和並不會產生決定性的影響,面試官也不會因為這樣的原因而給與錯誤的評判。
盡量留下好的印象。結束通知有的面試官會在面試結束後說:「我的問題問完了,如果有進一步消息的話,我們會再聯系你」。面試的大部分結果,其實當場就出來了,如果你感覺給出結果的時間點不夠明確,可以反問他:「如果三天內沒有聯系,是不是就代表沒有通過?」省得讓你懷有不確切的希望。
最後,還可以挽留下面試官,講講這場面試中你的一些疑惑,獲得面試官的反饋,也可以知道自己目前哪一方面做得不足。面試中面對不會的問題面試中遇到問題不會回答,這是非常正常的,畢竟大家在學習過程中遇到的問題,跟我們在工作中遇到的問題是非常不一樣的。
除此之外,我們看問題的角度,也是有差別很大的。舉個例子,很多人都在看ReactFiber,但是如果問你們,為什麼要有Fiber這個東西,可能很多人都回答不上來,因為大家只在社區裡面看到說,Fiber是怎麼工作的啊。
但是為什麼要有Fiber?如果沒有會怎樣,而這種思考,其實是非常底層的。我相信,很多人可能都沒有思考過。那如果遇到的問題不會,你可以先選擇不會,說我覺得自己沒有信心能答出這個問題,當然我更希望聽到你說。
我現在不會,但是你給我兩分鍾思考一下,我想一下這個問題有沒有答案?我覺得這是一個很好的思考習慣,首先你在面對不會的東西是坦然的,我當下不會,很正常,我之前沒有思考過這個問題嘛,那我們再花兩分鍾思考一下。
給一個初步的答案。所以說遇到問題,也不用不會就不會,也可以有一個積極的方式回應。從面試官的角度來說,面試中考察的題目,並不是僅僅考察這道題目本身,題目的對錯並不跟最終結果直接掛鉤。面試官更希望以題目為契機。
考察面試者分析問題,解決問題的能力,以及交流過程中所體現的邏輯推理和思維方式等。跟面試官聊業務業務跟項目是完全不一樣的東西,業務認知和思考也是很重要的一個考察點,這方面面試官可能會問兩個點:業務場景和技術突破。
業務場景:面試官會詢問面試者他們的產品、業務模式、商業模式等,了解下面試者對於產品的誕生、定位、發展的認知。技術突破:技術與業務相結合這點在阿里也是一直在說但鮮有人做的非常好的地方,所以有的時候也會考察面試者。
看看他們所做的技術是如何從業務出發、給業務帶來了哪些改變以及如何去評估兩者之間產生的結果。面試結束反向互動面試官在掛斷之前,基本會給與候選人反問的機會,一般會表述為「你有什麼要問我的嗎」?無論面試的怎樣。
都希望你能說出心中的疑惑,比如面試中的某個題目、整體的評價反饋、你的建議或者了解所負責的業務,所在的團隊等等,而從面試官的角度來看,如果候選人願意反問你問題,至少能證明他是個好學的人。所以不要放棄這個互動的機會。
面試反饋每場面試結束後,面試官都會在系統里留下面試反饋,如果面試失敗,簡歷會放在人才庫里,很多人會在其中撈取簡歷,以後的面試官也可以看到之前所有的面試記錄,之所以講到這一點,是希望大家在面試中能夠保持謙和積極的心態。
認真面對每一場面試,即使這場面試沒有成功,但如果展示了好的品質,也會增加被發掘的機會,為你以後面試成功鋪路。保持聯絡如果跟面試官聊的比較好,可以請求加個微信之類的,面試是一個長期的事情,哪怕此次面試沒有通過。
以後還可能面試進來的,與面試官保持聯絡。前端面試題筆記面試會了,面試題也不能落下,這套面試筆記除了有CSS、JS、Vue、React、性能優化、伺服器埠、設計模式、數據結構和演算法面試題外,加了手寫代碼面試題。
這下面試官讓我們寫代碼也不怕啦!CSS問題flex布局css3的新特性img中alt和title的區別用純CSS創建一個三角形如何理解CSS的盒子模型?如何讓一個div水平居中如何讓一個div水平垂直居中如何清除浮動。
⑤ 前端面試一般問什麼
web前端面試會問人事方面的內容和web前端技術的內容;
人事的面試
web前端人事面試方面,需要注意如何自我介紹、性格有哪些優劣勢、職業規劃方向是什麼、你的特長是什麼、對於加班之類你是怎麼看待等人事面試內容;
web前端技術的面試
技術面試,需要注意HTML+CSS+JavaScript以及JS主流框架的使用,比如Vue、React等,前端相關技術,比如tcp握手協議、網路安全、後端技術等;
對於web前端面試准備,建議你去看「決勝前端」(min app),它裡麵包含了很多web前端技術面試、人事面試等面試真題,而且針對面試題做了詳細的分析與解答。
我給你截圖看一下例子吧
⑥ 前端面試要點
想要通過前端面試順利進入一線大廠成就高薪前端夢。那麼首先,我們得知道前端面試中,社招和校招究竟有啥區別?
對於前端開發來說,如果說社招更看重對前端技術體系的深入理解,以及解決問題的能力話,那校招更看重的其實是基本功和學習能力(或者說是潛力)。
但其實,無論是社招還是校招,面試的時候都會問到一些曾經操作過的項目,尤其是大廠,或者熱門高薪部門,面試官除必問的技術經驗外,也會對技術深度進行一個基礎的考核,那在這種情況下如何hold住大廠面試呢?
前端面試三要素:簡歷、個人介紹、技術能力。下面,就來分別聊一聊。
1、簡歷篩選關:
HR一般會去看簡歷中所提的技術棧是否匹配,怎麼看呢?我們可以抓住簡歷中的技術名詞,一般來說如果一點技術名詞都沒有提到,那麼大概有以下幾種可能:很水、很牛但概率很小、不會寫簡歷。所以,一部分人可能會因為簡歷的問題沒有了面試機會,這點是需要非常注意的。
2、個人介紹關:
通過了簡歷篩選階段,就真正到了面試環節。這時候一定要准備好一段最多3分鍾的個人介紹。請注意,最多3分鍾!言簡意賅的說明自己的工作時間,擅長技術棧和自己的工作預期。
3、項目經驗表達:
對前端開發學習者而言,JS並不陌生,但大廠的JS面試題卻總是顯得很「陌生」,怎麼樣能夠真正做到深入理解與高級應用?這不僅是面試過程中對前端求職者的要求,也是大多數前端開發者的痛點。
大廠面試中,面試官除了關注你的項目經驗外,還往往喜歡和面試者深入探討前端某些技術領域成體系的前端知識。比如:模塊化、非同步解決方案、網路、框架及原理、線程等,但在與面試官的正面battle中,求職者總會敗下陣來。
所以,建議大家在Web前端面試前一定要注重這三個方面的內容。注重了這些想找找到一份適合的Web前端開發工作並不是難事。
⑦ 前端常見面試題
前端開發可能問到的問題:
自我介紹(一定要對項目很熟悉)
ui-app web前端技術體系?
響應式怎麼做?
render跟狀態的差異
類組件的生命周期?
阻止冒泡,阻止事件默認行為
文本垂直居中。 line-height設置為元素高度。
用rece講數組中的對象進行合並
解釋localstorage sessionstorage cookie
eventbus滿足event.on('eventname', callback)
display有幾個值?默認值?
position有幾個值?默認值?
div水平垂直居中?
position有哪些值
react相關問題(概念理解、通訊組件等)、react常用內置
React-router
html+css
頁面增刪改查
position的值 absolute relative fixed static
工作中是怎麼聯調和上線的(現場想合適的前後端聯調方式,能和webpack環境切換聯系起來)
antd的Form shouldUpdate增量更新方式,性能優化。
對Hooks的理解
3:操作dom點擊事件向伺服器上傳數據,在上傳未完成之前不可重復操作事件
4:日期格式化,日期不足前兩位補0(2021-06-06 06:06:00)
用css寫一個布局,左側固定寬度,右側自適應
你看
⑧ 前端面試常見問題——Web篇
1、IE瀏覽器內核:Trident內核,也是俗稱的IE內核;
2、Chrome瀏覽器內核:統稱為Chromium內核或Chrome內核,以前是Webkit內核,現在是Blink內核;
3、Firefox瀏覽器內核:Gecko內核,俗稱Firefox內核;
4、Safari瀏覽器內核:Webkit內核;
5、Opera瀏覽器內核:最初是自己的Presto內核,後來是Webkit,現在是Blink內核;
6、360瀏覽器、獵豹瀏覽器內核:IE+Chrome雙內核;
7、搜狗、遨遊、QQ瀏覽器內核: Trident(兼容模式)+Webkit(高速模式)﹔
8、網路瀏覽器、世界之窗內核:IE內核;
9、2345瀏覽器內核:以前是IE內核,現在也是IE+Chrome雙內核;
把不同路由對應的不同內容掌握在前端,如vue中的vue-router、react的ReactRouter等。出現在單頁面應用中,頁面中公共部分不變,只改變部分內容的使用。路由切換時根據不同的路由動態載入不同的組件,不刷新頁面。
優點 :實現前後端的分離,緩解伺服器壓力,不需要每次從伺服器獲取,快速展現給用戶,用戶體驗更好。
見於多頁面應用中。每次都向後台伺服器發出請求,伺服器響應請求,在後台拼接html文件傳給前端顯示, 返回不同的頁面,瀏覽器會刷新頁面。