阿里面試個(gè)別問(wèn)題記錄引有。有的不記得了瓣颅。

一.cdn以及原理

先理解

使用A記錄和CNAME進(jìn)行域名解析的區(qū)別

   A記錄就是把一個(gè)域名解析到一個(gè)IP地址(Address,特制數(shù)字IP地址)譬正,而CNAME記錄就是把域名解析到另外一個(gè)域名宫补。其功能是差不多檬姥,CNAME將幾個(gè)主機(jī)名指向一個(gè)別名,其實(shí)跟指向IP地址是一樣的粉怕,因?yàn)檫@個(gè)別名也要做一個(gè)A記錄的健民。但是使用CNAME記錄可以很方便地變更IP地址。如果一臺(tái)服務(wù)器有100個(gè)網(wǎng)站斋荞,他們都做了別名荞雏,該臺(tái)服務(wù)器變更IP時(shí),只需要變更別名的A記錄就可以了平酿。
image.png

基本情況就是存在多個(gè)緩存服務(wù)器。 有的東西會(huì)被cdn緩存 有的不會(huì) 圖片和靜態(tài)js html文件會(huì) 接口有的會(huì) 有的不會(huì) 要看配置

如果需要獲取用戶(hù)ip地址的話 cdn會(huì)出問(wèn)題

二.ajax悦陋、fetch區(qū)別

ajax本質(zhì)使用的是 XmlRequestHttp

fetch 則直接是 瀏覽器的對(duì)象

其特點(diǎn)

1蜈彼、fetch()返回的promise將不會(huì)拒絕http的錯(cuò)誤狀態(tài),即使響應(yīng)是一個(gè)HTTP 404或者500

2俺驶、在默認(rèn)情況下 fetch不會(huì)接受或者發(fā)送cookies

3.fetch無(wú)法監(jiān)聽(tīng)數(shù)據(jù)傳輸?shù)倪^(guò)程進(jìn)度

開(kāi)發(fā)人員需要注意的地方

1幸逆、所有的IE瀏覽器都不會(huì)支持 fetch()方法

2、服務(wù)器端返回 狀態(tài)碼 400 500的時(shí)候 不會(huì)reject

but why use fetch

因?yàn)樵?XmlRequestHttp 不注重分離原則 首先直觀的看

使用 XHR 發(fā)送一個(gè) JSON 請(qǐng)求一般是這樣:

var xhr = new XMLHttpRequest();

xhr.open('GET', url);

xhr.responseType = 'json';

xhr.onload = function() {

console.log(xhr.response);

};

xhr.onerror = function() {

console.log("Oops, error");

};

xhr.send();

使用 Fetch 后暮现,頓時(shí)看起來(lái)好一點(diǎn)·

//code from http://caibaojian.com/fetch-ajax.html

fetch(url).then(function(response) {

return response.json();

}).then(function(data) {

console.log(data);

}).catch(function(e) {

console.log("Oops, error");

});

其次 xhr 不支持 generator 和 async await寫(xiě)法 因?yàn)樗麄冃枰氖?promise 風(fēng)格 而fetch 就是 基于 promise 設(shè)計(jì)的:

try {

let response = await fetch(url);

let data = await response.json();

console.log(data);

} catch(e) {

console.log("Oops, error", e);

}

// 注:這段代碼如果想運(yùn)行还绘,外面需要包一個(gè) async function

優(yōu)雅而完美 不是嗎?

是說(shuō)axios還是基于AJAX的栖袋,能防止CRSF攻擊拍顷,但是不支持jsonp格式,提供 了并發(fā)請(qǐng)求的接口 fetch更注重底層塘幅,脫離了XHR對(duì)象昔案,能直接通過(guò)mode指定請(qǐng)求是否跨域,只對(duì)網(wǎng)絡(luò)請(qǐng)求報(bào)錯(cuò)电媳,不支持abort踏揣、不支持超時(shí)控制,就算使用了settimeout和Promise.reject還是不能阻止請(qǐng)求過(guò)程繼續(xù)在后臺(tái)運(yùn)行匾乓,造成流量的浪費(fèi)捞稿,也沒(méi)有progress

三.裝飾者模式以及用途

首先裝飾者是一個(gè)函數(shù),對(duì)于被裝飾者而言拼缝,會(huì)成為一個(gè)參數(shù)傳入娱局,對(duì)其進(jìn)行一些統(tǒng)一的設(shè)置 可以 修改屬性、添加log珍促、設(shè)置只讀铃辖、做行為限定等

動(dòng)態(tài)將職責(zé)附加到對(duì)象上,若要擴(kuò)展功能猪叙,裝飾者提供了比繼承更具彈性的代替方案娇斩。

了解aop模式

Function.prototype.before = function(beforeFunc){

var that = this;

return function(){

    beforeFunc.apply(this, arguments);

    return that.apply(this, arguments);

}

}

Function.prototype.after = function(afterFunc){

var that = this;

return function(){

    var ret = that.apply(this, arguments);

    afterFunc.apply(this, arguments);

    return ret;

}

}

總之就是做功能擴(kuò)展仁卷。

來(lái)看es6裝飾者的寫(xiě)法

@before( function )

class Dog{}

function before (beforeFunc){

return function(originFunc){

    return function(){

        before.apply(this, arguments);

        return originFunc.apply(this, arguments);

    }

}

}

優(yōu)雅而美 不是嗎

四.IE和普通的瀏覽器W3C的事件模型區(qū)別

姚冉告訴我 ie 不支持 冒泡行為 二者 寫(xiě)法不一樣 addAttachment 和 addEventListner

首先IE瀏覽器本身只支持Bubbling不支持Capturing;

最后一點(diǎn)犬第,在別的瀏覽器中锦积,它顯然是無(wú)法工作的。

1歉嗓、 當(dāng)我們需要阻止瀏覽器某DOM元素的默認(rèn)行為的時(shí)候在W3C下調(diào)用e.preventDefault()丰介,而在IE下則通過(guò)window.event.returnValue=false來(lái)實(shí)現(xiàn)。

2鉴分、當(dāng)我們要阻止事件冒泡的時(shí)候哮幢,在W3C標(biāo)準(zhǔn)里調(diào)用e.stopPropagation(),而在IE下通過(guò)設(shè)置window.event.cancelBubble=true來(lái)實(shí)現(xiàn)志珍。

3.而且在事件處理的function內(nèi)部this關(guān)鍵字也無(wú)法使用橙垢,因?yàn)閠his永遠(yuǎn)都只想window object這個(gè)全局對(duì)象。要想得到event對(duì)象必須通過(guò)window.event方式伦糯。

兼容寫(xiě)法 傻而笨

window.onload=function(){…}

obj.onmouseover=function(e){…}

obj.onclick=function(){…}

5.絕對(duì)居中 寫(xiě)出幾種 可以讓彈框 絕對(duì)居中的方式

position absolute

flex

table-cell

.wrap{

height:500px;

width: 1000px;

background:#ccc;

display:table-cell;/*IE8以上及Chrome柜某、Firefox*/

vertical-align:middle;/*IE8以上及Chrome、Firefox*/

text-align: center;

}

.container{

display: inline-block;

margin: auto;

background: red;

min-width: 300px;

min-height: 50px;

padding: 20px;

}

.wrap{

height:500px;

width: 1000px;

background:#ccc;

display:table-cell;/*IE8以上及Chrome敛纲、Firefox*/

vertical-align:middle;/*IE8以上及Chrome喂击、Firefox*/

text-align: center;

}

.container{

display: inline-block;

margin: auto;

background: red;

min-width: 300px;

min-height: 50px;

padding: 20px;

}

缺點(diǎn)很明顯 如果 wrap 設(shè)置 fixed 或 absolute 就會(huì)被破壞 居中

因?yàn)?/p>

vertical-align only applies to inline/table-cell elements.

not in position: absolute; display: table-cell; equals display: block; position: fixed;

定寬定高寫(xiě)法

.element {

width: 300px;

height: 300px;

position: absolute;

left: 0;

right: 0;

top: 0;

bottom: 0;

margin: auto;

background: red;

}

他會(huì)自動(dòng)分配給 margin 因?yàn)? margin auto的原因

需要明白一件事情 空間 margin border padding content

因?yàn)榭臻g已經(jīng)被撐開(kāi) 而margin 的auto 讓 其余空間給了 margin

我個(gè)人最?lèi)?ài)的居中

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Document</title>

<style>

/*方法一*/

.outer {

display: table;

position: absolute;

top: 0;

right: 0;

left: 0;

bottom: 0;

height: 100%;

width: 100%;

}

.middle {

display: table-cell;

vertical-align: middle;

text-align: center;

}

.inner {

display: inline-block;

background: red;

padding: 30px 50px;

}

</style>

</head>

<body>

<div class="outer">

<div class="middle">

<div class="inner">

fdjsfkld

</div>

</div>

</div>

</body>

</html>

六.生命周期

這個(gè)答得還不錯(cuò),不說(shuō)了

七.promise機(jī)制和怎么實(shí)現(xiàn)

主要是 為了 指定 異步操作后的 執(zhí)行順序

存在三種狀態(tài) pending fullfilled reject

有幾種方法 race all try resolve reject then catch等等 淤翔。翰绊。。
然后使用的是 宏任務(wù) 還不知道微任務(wù)怎么去寫(xiě)办铡。

8.redux單數(shù)據(jù)流程和異步操作
主要說(shuō)說(shuō)異步操作辞做,thunk 和 saga, 尤其是saga的控制流寡具。
9.contentType有幾種類(lèi)型
我說(shuō)了四種秤茅。

1.text/xml 2.application/json 3.application/x-www-form-urlencoded 4.multipart/form-data

10.npm包和所有的打包工具

DllPlugin 緩存 第三方包 增加 webpack 編譯速度。童叠。

Happypack——將 loader 由單進(jìn)程轉(zhuǎn)為多進(jìn)程

Gzip 做法 是 抽離重復(fù)的代碼 替換為 短的key

減少體積 ignorePlugin commonChunck babel-plugin-import

11.key
直接說(shuō)vue的 patch函數(shù)框喳。。

12 前端優(yōu)化手段

1.預(yù)解析DNS

2.CDN

3.按需加載

4.gip 壓縮

13.開(kāi)發(fā) webpack plugin的固定格式

class FileListPlugin { constructor(options) {} apply(compiler) { // 在 compiler 的 emit hook 中注冊(cè)一個(gè)方法厦坛,當(dāng) webpack 執(zhí)行到該階段時(shí)會(huì)調(diào)用這個(gè)方法compiler.hooks.emit.tap('FileListPlugin', (compilation) => { // 給生成的 markdown 文件創(chuàng)建一個(gè)簡(jiǎn)單標(biāo)題 var filelist = 'In this build:\n\n'// 遍歷所有編譯后的資源五垮,每一個(gè)文件添加一行說(shuō)明 for (var filename in compilation.assets) { filelist += ('- '+ filename +'\n') }// 將列表作為一個(gè)新的文件資源插入到 webpack 構(gòu)建結(jié)果中 compilation.assets['filelist.md'] = { source: function() { return filelist }, size: function(){ return filelist.length }, } }) } }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市杜秸,隨后出現(xiàn)的幾起案子放仗,更是在濱河造成了極大的恐慌,老刑警劉巖撬碟,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诞挨,死亡現(xiàn)場(chǎng)離奇詭異莉撇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)惶傻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)棍郎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人银室,你說(shuō)我怎么就攤上這事涂佃。” “怎么了蜈敢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵辜荠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我扶认,道長(zhǎng)侨拦,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任辐宾,我火速辦了婚禮,結(jié)果婚禮上膨蛮,老公的妹妹穿的比我還像新娘叠纹。我一直安慰自己,他們只是感情好敞葛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布誉察。 她就那樣靜靜地躺著,像睡著了一般惹谐。 火紅的嫁衣襯著肌膚如雪持偏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天氨肌,我揣著相機(jī)與錄音鸿秆,去河邊找鬼。 笑死怎囚,一個(gè)胖子當(dāng)著我的面吹牛卿叽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恳守,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼考婴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了催烘?” 一聲冷哼從身側(cè)響起沥阱,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伊群,沒(méi)想到半個(gè)月后考杉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體策精,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年奔则,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛮寂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡易茬,死狀恐怖酬蹋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抽莱,我是刑警寧澤范抓,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站食铐,受9級(jí)特大地震影響匕垫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虐呻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一象泵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斟叼,春花似錦偶惠、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至谢床,卻和暖如春兄一,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背识腿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工出革, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人覆履。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓蹋盆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親硝全。 傳聞我的和親對(duì)象是個(gè)殘疾皇子栖雾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344