當天下午看到了招聘需求,就託人進行了內推,下班前收到郵件說會在7個工作日內聯絡進行面試。沒想到在回家路上就接到了阿里面試官的電話,說要進行電話面試。由於當時在外面,不太方便,就告訴面試官10分鐘後回到家進行面試,面試官答應了,感謝面試官。 10分鐘面試正式開始,其實我已經戴好耳機準備好了,哈哈。
-
自我介紹,簡單聊聊過往專案用到了那些技術,有哪些技術難點,是如何解決的?
-
var和let、const的區別,為什麼會產生這種區別?
var作為ES5中定義變數的方式,會存在變數提升的問題,作用域也不明晰。ES6引進了let和const。let用來定義變數,const用來定義常量,必須先定義後使用,不存在變數提升的問題。 -
如何實現一個塊在瀏覽器中上下左右垂直居中?有幾種方式?
(1)絕對定位
.parent{
position:relative;
}
.child{
position:absolute;
top:50%;
left:50%;
width:200px;
height:200;
margin-left:-100px;
margin-top:-100px;
}
複製程式碼
(2)同樣定位
.parent{
position:relative;
}
.child{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
複製程式碼
(3)定位
.parent{
position:relative;
}
.child{
position:absolute;
top:0;
left:0;
bottom:0;
right:0;
margin:auto;
}
複製程式碼
(4)當要被居中的元素是inline或者inline-block元素
.parent{
display:table-cell;
text-align:center;
vertical-align:middle;
}
複製程式碼
(5)flex佈局
.parent{
display:flex;
justify-content:center;
align-items: center;
}
複製程式碼
- 你是如何看待模組化的?cmd和amd的區別?除了amd和cmd還有哪些載入方式?node載入模組的方式?commonJs?ES6的載入方式。
答:1、AMD推崇依賴前置,在定義模組的時候就要宣告其依賴的模組 2、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的區別及優點和缺點
-
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…