阿里盒馬前端面試,你要的答案來了

2021-03-03 前端工匠

最近有一篇阿里盒馬前端面試題被各大社區轉載,而且據稱這是阿里校招面試題,我看完以後,簡直驚呆了,打死都不信。今天特意針對他們發的一面,把對應的答案整理了一些。

請先做個自我介紹

我是河畔一角,11年畢業,畢業後先從事JAVA方向開發,後在13年轉為前端。13年主要從事XXX,經過3年的時間磨練,讓我對前端有了全新的認識。16年進入到樂視,從事XXX,17年進入到松果出行,從事XXX,並從0搭建前端團隊,並主導各個前端一線項目研發。

提交表單,常用的方法有哪些?應用層,通信層發生了哪些過程?

實際上可能考察輸入url後請求響應過程

POST和GET的區別,列舉一下 GET通過url明文傳輸,POST通過body傳輸,本身都不安全,因為HTTP就是明文傳輸。

HTTP請求Content-Type值:application/json、application/x-www-form-urlencoded、multipart/form-data

http常見的響應碼,拒絕服務資源是哪個? 狀態碼作用1.x已接收請求,正在處理2.x請求成功3.x重定向,需要進一步處理4.x客戶端錯誤5.x服務端錯誤

常見狀態碼:

304 Not Modified(通常是在協商緩存中表示本次內容未修改)403 Forbidden - 請求被拒絕(本題答案)500 Inter Server Error - 服務端異常503 Server Unavailable - 服務不可用前端鑑權了解過嗎?

鑑權主要分為四種:

HTTP Basic Authentication (HTTP基本認證)

我們普通網站常用的認證就是session-cookie的方式,用戶向服務端發生請求,服務端會創建session並保存相關身份信息,並向客戶端下發一個sessionId,大家如果用心的話,會發現跟JAVA交互的時候,瀏覽器會有一個JSESSION_ID,跟PHP交互的時候,會有一個PHPSESSION_ID;後面的每次請求,客戶端都會自動帶上這個cookie跟服務端通信。

實際上大家要明白每一種方式的作用;SSO主要用來做單點登錄;OAuth主要用來做第三方網站授權;JWT就是一種便於擴展的跨域認證解決方案,通常會考察這個。

關於JWT我這兒不展開講,給大家推薦阮一峰的講解:http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html

OAuth2.0原理

講原理主要是讓你對這個過程做梳理,並不要求對源碼過程做剖析,所以可以通過一個簡單的流程來進行回答。我通過微信的授權登錄來給大家做講解:OAuth2.0是一個開源的授權認證方案。當我們登錄一個網站時,如果想要通過微信做授權登錄,從而獲取微信的用戶信息,正常情況肯定是不允許,通過微信開放的OAuth2.0我們可以做授權認證。我們點擊自己網站的微信按鈕,跳轉一個連結,這個連結比如是:https://open.weixin.qq.com/connect/oauth2/authorize?會跳轉到微信那邊去讓用戶同意授權,用戶同意以後,會重定向回來並攜帶一個code,此code是微信下發的臨時憑證。開發者拿到此code以後,就可以獲取access_token,根據下發的token,我們才能有權限獲取其它接口信息。

開發者根據code獲取微信access_token

回答的時候,能夠把這個過程描述清楚就好,不要過多解析源碼。更進一步了解OAuth2.0可參考阮一峰教程:http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html

說說https的內在原理,ssl握手過程

https實際上是在應用層(http)和傳輸層(tcp)之間加了一層安全套接層(ssl).

服務端解密隨機值,把響應內容通過私鑰進行對稱加密,傳輸給客戶端客戶端發送隨機數1,支持的加密方法(如RSA公鑰加密)伺服器用私鑰解密這個隨機數3,用加密方法計算生成對稱加密的密鑰給客戶端接下來的報文都用雙方協定好的加密方法和密鑰,進行加密

大家如果要了解更多ssl詳細過程,可參考阮一峰教程http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

為什麼要用非對稱密鑰,pms呢?公鑰怎麼了?

非對稱加密相對更安全,通過公鑰解密後,只有私鑰才能解密,而對稱加密只需要一個密鑰就能加密和解密。

PMS(pre master secret),SSL協議並不信任每個主機生成的隨機數,因此PMS也有可能被推測出來,所以需要客戶端、服務端和PMS三個隨機數一同生成密鑰才更安全。

關於SSL和HTTPS大家可能看不懂,我建議直接回答不知道。

說一說響應式布局吧?

響應式布局是指同一個網站在不同屏幕尺寸下顯示不同的布局。它跟自適應不同,自適應是同一個網站在不同設備上自適應(比如自適應不同的Android和iPhone設備)。傳統的做法會針對PC、移動端各做一套項目,而響應式會同時支持PC和H5。響應式方案:

css媒體查詢根據尺寸來定義不同樣式,比如600/900/1200/1600rem是根據html的根元素來決定元素大小的,在自適應布局中應用非常廣泛。c3中新增視窗,1vw代表1%的寬度,通常結合rem一起使用。

Bootstrap/Antd/ElementUI中的柵格布局,本身也是一種響應式。

響應式背後的瀏覽器原理你知道嗎?

根據瀏覽器或設備的解析度可以計算獲取到相應的尺寸,通過不同的尺寸可以動態的修改html元素或者盒子在瀏覽器中的大小,從而實現響應式。

旋轉動畫css,怎麼去做?
  transition:all 1s linear;
  transform:rotate(360deg);

animation:rotate 5s infinite;
@keyframes rotate
{
 from {transform:rotate(0deg);}
 to {transform:rotate(360deg);}
}

dom樹和cssom樹原理也說一下吧

大家可以參考我這篇文章,應該能找到答案! 從輸入URL後前端的知識爆炸,你懂多少?

為什麼link要在前,script標籤要在後面呢?原理

link標籤並不會阻塞DOM解析,只會阻塞DOM渲染,而script加載js過程會阻塞DOM渲染和CSS加載,所以為了更好的用戶體驗和更優的前端性能,我們通常把link放前面,script放後面。js之所以阻塞DOM渲染是因為JS本身是單線程,在執行的過程中只能從上到下依次運行,異步任務除外。

script前加async和defer也不會阻塞。

場景題:保證瀏覽器不受腳本的惡意攻擊

主要考察前端漏洞:XSS攻擊和CSRF攻擊

XSS主要指跨站腳本攻擊,一般會偽造網站,竊取cookie,也包括一些sql注入和html注入等;防禦方法:

服務端可設置cookie為httponly,前端無法讀取,只有服務端可讀取

CSRF主要指跨站請求偽造,通過向A中注入連結,使用戶跳轉到B中並獲取A站的cookie,通過cookie向A發送請求,以達到攻擊目的。防禦方法:

EventLoop理解

此處並非一兩句話能講清楚,建議大家到掘金看完整版https://juejin.im/post/5c72307551882562e74812dc

場景題:這裡有cat和animal子類和父類,如何進行es5繼承,至少說出5種
Cat.prototype = new Animal()

function Cat(){
    Animal.call(this);

function Cat(){
    Animal.call(this);

Cat.prototype = new Animal()

function Cat(name){
    Animal.call(this,name);

function Cat(name){
    Animal.apply(this,[name]);

說說你項目做的Vue spa首屏優化吧 Vue-Router路由懶加載(import/require)如果使用了UI庫,採用按需加載(babel-plugin-component/import)使用link標籤的rel屬性設置 prefetch(這段資源將會在未來某個導航或者功能要用到,但是本資源的下載順序權重比較低,prefetch通常用於加速下一次導航)、preload(preload將會把資源的下載順序權重提高,使得關鍵數據提前下載好,優化頁面打開速度)

後面還有兩道暫時忽略。

以上是阿里盒馬前端面試的題目和我整理出來的答案,應該對正在找工作的有幫助。

當然後面還有二面、三面、四面題目,後面有時間會繼續給大家整理答案出來!

相關焦點

  • 阿里盒馬前端校招面試,你要的答案來了
    最近有一篇阿里盒馬前端面試題被各大社區轉載,而且據稱這是阿里校招面試題,我看完以後,簡直驚呆了,打死都不信
  • 2020最新Web前端經典面試題試題及答案(持續更新)-開課吧
    Web前端面試題Web前端面試題:說說你對webpack的看法解析:webpack是一個模塊打包工具,可以使用webpack管理你的模塊依賴,並編譯輸出模塊們所需要的靜態文件。可以將代碼切割成不同的chunk,實現按需加載,降低了初始化時間支持sourceUrls和sourceMaps,易於調試具有強大的plugin接口,大多是內部插件,使用起來比較靈活webpack使用異步IO並具有多級緩存,在增亮編譯上更加快Web前端面試題
  • 開課吧:2020Web前端開發常見面試題及答案,提高面試通過率!
    Web前端開發面試題及答案問題:實現節流函數(throttle)解析:防抖函數原理:規定在個單位時間內,只能觸發次函數。以上就是小科今天整理提供的Web前端開發面試題,希望為Web前端同學提供了有用的面試素材,以後小科每日均會提供Python、Web及MySQL資料庫相關的習題。學習沒有捷徑,希望大家都能少走一些彎路,順利找到工作!
  • 2020Web前端工程師常見面試問題及答案解析
    Web前端面試題及答案 混合開發橋接api是怎麼調用的,需要引入類庫嘛? 調用的對象是什麼? Hybrid框架結構HyBrid App = H5 App + Native框架H5App用來實現功能邏輯和頁面渲染 Native框架提供WebView和設備接口供H5調用方案一種混合應用,在開發原生應用的基礎上,嵌入WebView但是整體的架構使用原生應用提供,一般這樣的開發由Native開發人員和Web前端開發人員組成。
  • 2020Web前端常見經典面試題及答案-開課吧
    Web前端常見面試題及答案問題:js有哪些類型?本文收錄了一些在Web前端開發面試中經常會遇到的面試題及答案,希望對大家有所幫助,若有所疏漏歡迎指正。
  • 2019 前端秋季社招面試經歷總結(二年多經驗)
    前言本文內容講筆者在 2019 的秋季社招時期,去大廠面試的問題和經驗總結。居安思危,安逸久了,都要試著知道自己目前的市場價,而最好的方法就是去外面面試幾場,受受打擊,知道自己的不足,以後加強。」筆者入坑前端 3 年多了,有 2 年多的前端工作經驗,面試坐標:廣州。本文的面試問題只寫了些開放性的問題,其公司要求保密的試題就不寫出來了。2.
  • 2020Web前端開發常見面試題及答案全解析-開課吧Web前端
    Web前端開發問題一:前端如何進行seo優化,以下說法錯誤的是:A.爬蟲依賴於標籤來確定上下文和各個關鍵字的權重;>B.重要內容HTML代碼放在最前:搜尋引擎抓取HTML順序是從上到下,保證重要內容一定會被抓取C.重要內容要用js輸出:爬蟲會執行js獲取內容D.非裝飾性圖片必須加alt解析:重要內容不能用js輸出:爬蟲不會執行js獲取內容,選C
  • 2020Web前端開發常見面試題匯總-開課吧
    2020Web前端面試題了解一些面試題及答案,可以幫助自己順利通過面試哦。以下是小編為大家整理的web前端面試題及答案,供各位參考。Web前端面試題:異步請求適合在哪個生命周期調?解析:官實例的異步請求是在mounted命周期中調的,實際上也可以在created命周期中調。Web前端面試題:各個生命周期的作用是什麼?
  • 一場感覺身體被掏空的前端面試
    如果公司邀請外地的候選人來面試,則要為他買機票,訂酒店,報銷夥食費租車費等各種費用。這一切的額外成本都會使得對於外地候選人的挑選標準變得更加嚴格。好在,美國IT公司的招聘流程比較清晰,大都遵循著同一種套路。一般來說,想要拿到公司的現場面試(onsite)邀請,候選人要經過兩到三輪的選拔,包括電話面試(phone interview),網上做題(online coding)等等。
  • 我的前端面試心法(已拿字節offer)
    想要取得優秀的面試成績,刷面試題是必須的,除非你樣樣精通。網上有很多面試題的收集文章,在掘金上就能找到,比如10 個 GitHub 上超火的前端面試項目,打造自己的加薪寶庫。另外,這篇文章2020年前端面試複習必讀文章【超三百篇文章/贈複習導圖】羅列了一些重要考點的好文,也是很好的備面資料。
  • 學會了Vue,前端面試卻沒找到工作
    不可否認Vue是一個很不錯也很值得學習的前端開發框架。然而大家一味地跟風,難道是學會了Vue就可以在前端界馳騁?成為一名優秀前端工程師?找到滿意的前端工作了嗎?稍微懂行的人都知道,你想多了,目前Vue幾乎是從事前端開發工作的必備技能,但是如果你只會用Vue,原生JS和其它前端技能掌握的不好,照樣完蛋。就有讀者和我說面試掛了,雖然他也學了Vue。
  • (譯)一篇非常不錯的前端面試文章
    作者先後在twitter,Stripe工作,期間會參加面試工作。實際上參加面試工作的人都知道要想在一個較短的時間內(30min-1h)就對一個應聘者做出判斷其實是很難的,因此我們不得不想盡辦法去更加合理的去判斷面試者。下面是作者理出的一個思路:如果對方有github帳號,我們會儘可能的去了解TA在開源項目上的動態和他的開源項目。
  • Web前端面試題目及答案匯總
    以下是收集一些面試中經常會遇到的經典面試題以及自己面試過程中無法解決的問題
  • 2020Web前端面試題:如何預防XSS?-開課吧
    2020Web前端面試題解析:XSS 攻擊有兩大要素:1. 攻擊者提交惡意代碼。2.輸入過濾在用戶提交時,由前端過濾輸,然後提交到後端。這樣做是否可行呢?答案是不可行。旦攻擊者繞過前端過濾,直接構造請求,就可以提交惡意代碼了。那麼,換個過濾時機:後端在寫資料庫前,對輸進行過濾,然後把「安全的」內容,返回給前端。
  • 2018web前端面試總結
    關於流程一般的實習&校招招聘大體有這麼一個流程:(這裡我個人都是走的官網投遞的渠道,沒有經歷過宣講會的環節,這一部分我沒啥經驗)筆試筆試作為招聘的第一個環節,一般考察的都是專業基礎知識,這裡會著重考察你在學校的計算機相關基礎,也就是很多人會發現,我明明考的是前端的卷子為啥前端的知識點考的這麼少,而且有時候也會發現,前端的卷子考的沒有前端的知識點
  • 2020 前端面試|第二波面試題總結
    前言哈,看樣子年後跳槽還是大家比較關心的一件事情了,繼第一波面試題匯總的反響和評論,觀看和點讚的朋友們很多,我繼續將後續面試的一些內容寫出來,有很多面試題答案我自己寫的比較含糊,但是在面試的過程中是描述的表較多的。畢竟寫文字要寫出來太多了。我也只是寫了一個大概,如果對答案不太滿意的同學可以自行查詢標準答案哈。
  • 2020 年前端面試複習必讀文章【超三百篇】
    通俗大白話來理解TCP協議的三次握手和四次分手: https://github.com/jawil/blog/issues/14[242]就是要你懂 TCP: http://jm.taobao.org/2017/06/08/20170608/[243]TCP協議詳解: https://juejin.im/post/5ba895a06fb9a05ce95c5dac
  • 推薦這 10 個 GitHub 上超火的前端面試項目,打造自己的加薪寶庫!
    Front-end-Developer-Questions這個項目裡面很多面試題,而且 star 數非常高,最大的缺點就是 沒有答案!請解釋為什麼接下來這段代碼不是 IIFE (立即調用的函數表達式):function foo(){ }();,要做哪些改動使它變成 IIFE?描述以下變量的區別:null,undefined 或 undeclared?該如何檢測它們?什麼是閉包 (closure),如何使用它,為什麼要使用它?你是如何組織自己的代碼?是使用模塊模式,還是使用經典繼承的方法?
  • 每日一學:2020Web前端面試題匯總,提高面試成功機率-開課吧
    本文收錄了一些在Web前端開發面試中經常會遇到的面試題及答案,希望對大家有所幫助,若有所疏漏歡迎指正。2020Web前端面試題Web前端面試題:怎樣查找字符串中出現最多的字符和個數?{ num= $0.length;char = $1;}});console.log(`字符最多的是${char},出現了${num}次`);Web前端面試題題
  • 十幾家大廠前端面試總結(已拿網易 offer) ​
    你可以挑選自己喜歡的語言,熟悉相關的 API,免得到時候要自己實現一些原本就有的函數。但最好還是練一練 C/C++,面試的時候面試官不一定會你掌握的語言,但多少懂點 C/C++。如果是在牛客網筆試,「校招小管家」微信公眾號會在筆試前提醒你。吐槽一下賽碼網,沒有牛客網好用。