- http 請求
http協(xié)議使用tcp協(xié)議進行傳送蓖租,首先是tcp 三次握手满败,完成之后凉蜂,客戶端會向服務(wù)器發(fā)出請求
- http 請求方式
Get (get提交方式會在url上面看到,get有限制或链,get不安全)
Post(post提交數(shù)據(jù)會放到header內(nèi)提交档押,post沒有限制令宿,post安全,表單提交和上傳都用post)
表單中g(shù)et 和post 的區(qū)別
A、Get是從服務(wù)器上獲取數(shù)據(jù)筛婉,post是向服務(wù)器傳送數(shù)據(jù)
B癞松、所以盡量避免get方式提交表單响蓉,因為可能為導(dǎo)致安全問題,利于登錄中使用get方式首尼,用戶輸入用戶名和密碼就會在地址欄中暴露無疑言秸,但是在分頁程序中,用get方式就比post 好举畸。
Options
- 最常用的http狀態(tài)碼
200:找到資源抄沮,一切正常
304:該資源在上次請求之后沒有改動,這通常用于瀏覽器的緩存機制
401:客戶端無權(quán)限訪問該資源砂代,通常會使得瀏覽器要求用戶輸入用戶名和密碼率挣,來登錄到服務(wù)器椒功。
403: 客戶端未能獲得授權(quán)丁屎,這個是在401之后輸入了不正確的用戶名和密碼
404:在指定的位置不準存在所申請的資源
- http 和 https 的概念
http 是網(wǎng)上應(yīng)用最為廣泛的一種協(xié)議旱眯,是一個客戶端和服務(wù)端請求和應(yīng)答的標準,用于www服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議础爬,他可以是瀏覽器更加的高效吼鳞,使網(wǎng)絡(luò)傳輸減少。
https 是以安全為目標的http通道供炎,簡單講就是http的安全版音诫,即http下加入ssl層雪位,https 的安全基礎(chǔ)是ssl,因此加密的詳細內(nèi)容需要ssl竭钝。
https協(xié)議的主要作用可以分為兩種:一種是建立一個安全的信息通道香罐,來保證數(shù)據(jù)的安全,另一種就是確認網(wǎng)站的真實性港粱。
- http和https的區(qū)別旦签?
Http 協(xié)議都是未加密的宁炫,http傳輸隱私消息非常的不安全
https就是由ssl+http協(xié)議構(gòu)建進行加密傳送的要比http協(xié)議安全
https需要申請證書,會需要一定的費用
http未加密遥昧,https 是加密的
http端口是80朵纷,https 是443
Css
- Flex 布局
Js
- Es6 let袍辞、const、class威创、箭頭函數(shù)肚豺、 promise界拦、ansync await享甸、module模塊化
Var 命令和function命令聲明的全局變量是頂層對象的屬性
Let 、const蛉威、class、聲明的全局變量丙躏,不屬于頂層對象的屬性束凑,也就是說,從es6開始剪菱,全局變量將逐步與頂層對象的屬性脫離
var a = 1;
// 如果在Node的REPL環(huán)境孝常,可以寫成global.a
// 或者采用通用方法,寫成this.a
window.a // 1
let b = 1;
window.b // undefined
//const 生命的變量是不可變得變量
const c = 1;
c=2 //會報錯
Es6對象和數(shù)組的復(fù)制
數(shù)組:
let arrA = [1,2,3];
let arrB = [...arrA];
對象
let objA = {a:1,b:2,c:3}
let objB = {...objA};
//有了 async await 之后; 當執(zhí)行到await的時候就會等待timeOut(1);返回值之后再往下執(zhí)行;
function timeOut(num) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2 * num)
}, 2000);
} )
}
async function name() {
let a = await timeOut(1);
let b = await timeOut(2);
console.log(a + b);
}
name();
Let 和 var的區(qū)別
相同點:都是定義變量關(guān)鍵字构灸。
區(qū)別:
作用域只限制與當前代碼模塊---var的作用域則是函數(shù)體function(){}
使用let聲明變量的作用域不會提示-------var 會自動提升
在相同的作用域下不能有相同的變量上渴,否則會報錯 -------var 中則可以出現(xiàn)相同變量名,不會報錯
Let和const 區(qū)別
相同:都是es6新特性
定義變量關(guān)鍵字
作用域一樣
都是不能重復(fù)聲明相同的變量
區(qū)別點:
Let是聲明普通變量的喜颁,const是聲明常量的
Let初始化可以不用賦值稠氮,const初始化必須賦值
Let聲明的變量值是可以被修改的 const聲明的變量不能修改值,否則報錯
Se6 中的class 其實就是構(gòu)造函數(shù)的另一種寫法
2.什么是閉包半开?
閉包就是定義就是:定義在一個函數(shù)內(nèi)部的函數(shù)隔披。
function fn1 () {
var a = 2 var
b = 'abc'
function fn2 () {
console.log(a)
}
}
fn1()
閉包的特點: 1. 作為一個函數(shù)變量的一個引用,當函數(shù)返回時寂拆,其處于激活狀態(tài)奢米。 2. 一個閉包就是當一個函數(shù)返回時,一個沒有釋放資源的棧區(qū)纠永。
閉包的用途:
讀取函數(shù)內(nèi)部的變量和就是讓這些變量的值始終保存在內(nèi)存中鬓长,不會再fn1調(diào)用后被自動清除。
閉包缺點:
內(nèi)存消耗很大尝江,所以不能濫用閉包涉波,否則會造成網(wǎng)頁的性能問題,在ie中可能導(dǎo)致內(nèi)存泄漏炭序,解決辦法是怠蹂,在退出函數(shù)之前,將不使用的局部變量全部刪除少态。
- mvc與mvvm的區(qū)別
Mvvm(angular)真正的意義是將頁面和數(shù)據(jù)邏輯分離的模式城侧,把數(shù)據(jù)綁定工作放到一個js里面去實現(xiàn),而這個js的主要目的就是完成數(shù)據(jù)的綁定彼妻。更重要的是雙向綁定嫌佑,更方便的維護頁面豆茫,而不用手動更新他們。
在mvc中model不依賴view,但是view依賴model屋摇,因為業(yè)務(wù)邏輯代碼在view里面實現(xiàn)揩魂,導(dǎo)致view更改也是比較困難的,最后業(yè)務(wù)邏輯是無法重用的炮温。
Mvvm的優(yōu)點:
低耦合
可重用性
獨立開發(fā)
可測試性
Js 數(shù)組有哪些方法火脉?
Join()
Push() pop()
Shift()unshit()
Splice()slice()
Concat()
Map() forEach()
IndexOf()
Ervery() sort()
6. js 判斷一個對象是否屬于某一類
1.) typeof
2.) Instanceof
3.) constructor 屬性 Js 種每個對象屬性都有一個constructor屬性,
4.) Object.prototype.toString.call()
- 什么是跨域柒啤?說出幾種解決跨域的辦法倦挂?
跨域是:指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本,它是由瀏覽器的同源策略造成的担巩,瀏覽器對js實施的安全限制方援。
同源是指:域名、協(xié)議涛癌、端口均為相同犯戏。
解決跨域的辦法
Jsonp 跨域 只能夠?qū)崿F(xiàn)get請求
PostMessage 跨域
- 什么是函數(shù)防抖和節(jié)流?
節(jié)流:是指一定時間內(nèi)js方法只跑一次拳话。例如人的眨眼睛先匪,就是一定時間內(nèi)眨一次。
防抖:是指頻繁觸發(fā)的情況下弃衍,只有足夠的空閑時間呀非,才執(zhí)行代碼一次。
- Flex 布局和傳統(tǒng)布局有什么區(qū)別笨鸡?
傳統(tǒng)布局:是基于盒模型姜钳,依賴display屬性 、position屬性形耗、float屬性哥桥。
Flex 布局:可以漸變、完成激涤、響應(yīng)式的實現(xiàn)各種頁面布局拟糕,目前所有瀏覽器有支持。
- 舉例前端性能優(yōu)化倦踢?
A) 減少http請求書
B) 資源合并和壓縮
C) 將外部腳本置底
D) 懶加載
E) 將css放到head 中
F) 避免重復(fù)的資源請求
G) 代碼優(yōu)化
H) 圖片壓縮
- 原型鏈和作用域鏈
作用域鏈:作用域是針對變量的送滞,先在自己的變量范圍中查找,如果找不到辱挥,就會沿著作用域往上找犁嗅。
原型鏈:
是針對構(gòu)造函數(shù)的,先創(chuàng)建一個函數(shù)晤碘,
然后定義一個變量褂微,
new這個函數(shù)功蜓,
那么new 出來的函數(shù)就會繼承創(chuàng)建出來的那個函數(shù)屬性,然后訪問new出來的這個函數(shù)的某個屬性宠蚂,但是我并沒有在new出來的函數(shù)中定義這個變量式撼,那么它就會一直往上找。