記一次阿里電話面試| 掘金技術徵文

當天下午看到了招聘需求,就託人進行了內推,下班前收到郵件說會在7個工做日內聯繫進行面試。沒想到在回家路上就接到了阿里面試官的電話,說要進行電話面試。因爲當時在外面,不太方便,就告訴面試官10分鐘後回到家進行面試,面試官答應了,感謝面試官。 10分鐘面試正式開始,其實我已經戴好耳機準備好了,哈哈。css

  • 自我介紹,簡單聊聊過往項目用到了那些技術,有哪些技術難點,是如何解決的?html

  • var和let、const的區別,爲何會產生這種區別?
    var做爲ES5中定義變量的方式,會存在變量提高的問題,做用域也不明晰。ES6引進了let和const。let用來定義變量,const用來定義常量,必須先定義後使用,不存在變量提高的問題。前端

  • 如何實現一個塊在瀏覽器中上下左右垂直居中?有幾種方式?
    (1)絕對定位node

.parent{
    position:relative;
}
.child{
    position:absolute;
    top:50%;
    left:50%;
    width:200px;
    height:200;
    margin-left:-100px;
    margin-top:-100px;
}
複製代碼

(2)一樣定位webpack

.parent{
    position:relative;
}
.child{
    position:absolute;
    top:50%;
    left:50%;
    transform:translate(-50%,-50%);
}
複製代碼

(3)定位nginx

.parent{
    position:relative;
}
.child{
    position:absolute;
    top:0;
    left:0;
    bottom:0;
    right:0;
    margin:auto;
}
複製代碼

(4)當要被居中的元素是inline或者inline-block元素git

.parent{
    display:table-cell;
    text-align:center;
    vertical-align:middle;
}
複製代碼

(5)flex佈局web

.parent{
    display:flex;
    justify-content:center;
    align-items: center;
}
複製代碼
  • 你是如何看待模塊化的?cmd和amd的區別?除了amd和cmd還有哪些加載方式?node加載模塊的方式?commonJs?ES6的加載方式。
    答:一、AMD推崇依賴前置,在定義模塊的時候就要聲明其依賴的模塊 二、CMD推崇就近依賴,只有在用到某個模塊的時候再去require 這種區別各有優劣,只是語法上的差距,並且requireJS和SeaJS都支持對方的寫法.AMD和CMD最大的區別是對依賴模塊的執行時機處理不一樣,注意不是加載的時機或者方式不一樣。都是異步加載。詳細的解釋從網上找了一篇文章談談模塊化的理解
  • 瀏覽器地址欄輸入網址後會發生什麼?具體的流程有哪些?
    答:
    • 1.瀏覽器會開啓一個線程來處理這個請求,對 URL 分析判斷若是是 http 協議就按照 Web 方式來處理;
    • 2.調用瀏覽器內核中的對應方法,好比 WebView 中的 loadUrl 方法;
    • 3.經過DNS解析獲取網址的IP地址,設置 UA 等信息發出第二個GET請求;
    • 4.進行HTTP協議會話,客戶端發送報頭(請求報頭);
    • 5.進入到web服務器上的 Web Server,如 Apache、Tomcat、Node.JS 等服務器;
    • 6.進入部署好的後端應用,如 PHP、Java、JavaScript、Python 等,找到對應的請求處理;
    • 7.處理結束回饋報頭,此處若是瀏覽器訪問過,緩存上有對應資源,會與服務器最後修改時間對比,一致則返回304;
    • 8.瀏覽器開始下載html文檔(響應報頭,狀態碼200),同時使用緩存;
    • 9.文檔樹創建,根據標記請求所需指定MIME類型的文件(好比css、js),同時設置了cookie;
    • 10.頁面開始渲染DOM,JS根據DOM API操做DOM,執行事件綁定等,頁面顯示完成。

另外也能夠這樣回答:
瀏覽器根據請求的URL交給DNS域名解析,找到真實IP,向服務器發起請求;服務器交給後臺處理完成後返回數據,瀏覽器接收文件(HTML、JS、CSS、圖象等);瀏覽器對加載到的資源(HTML、JS、CSS等)進行語法解析,創建相應的內部數據結構(如HTML的DOM);載入解析到的資源文件,渲染頁面,完成。面試

  • grunt、gulp、webpack的區別及優勢和缺點json

  • less是否能夠進行計算?能夠

  • 瀏覽器的內核、組成部分?

  • Git中reset和rebase的區別?
    Git經常使用的命令,回撤的命令是哪一個? git revert commitID,rebase合併提交歷史,reset撤銷最近提交。

  • 常見的瀏覽器兼容方式有哪些?遇到過哪些兼容問題?

  • 變量的提高?函數聲明和函數表達式的區別

//函數聲明
function A(){
    ....
}
//函數表達式
var change=function(){
    ...
}
複製代碼
  • flex的深層原理?兼容方式有哪些?
  • 跨域問題的解決方式,原理?
    (1)CORS,須要服務器設置header:Access-Control-Allow-Origin
    (2)jsonp,須要目標服務器配合一個callback函數
    (3)postMessage+iframe,須要目標服務器或者目標頁面寫一個postMessage,主要側重於前端通信。
    (4)nginx反向代理,須要搭建一個Nginx服務器,用於轉發請求。
    (5)window.name+iframe,須要目標服務器響應window.name
    (6)window.location.hash+iframe一樣須要目標服務器處理。

好多問題記不太清了,來來回回的聊了一個小時左右,第一次電話面試竟然這麼久,面試官辛苦了,面試完都晚上八點多了,這算不算阿里的加班呢?哈哈

有的答案可能不太準確,但願你們輕噴。
掘金技術證文活動連接:juejin.im/post/5aaf2a…

相關文章
相關標籤/搜索