web前端面試題總結(jié)

一、vue相關(guān)
1.vue的生命周期:beforeCreate=>>created=>>beforeMount=>>mounted=>>beforeUpdate=>>updated=>>beforeDestroy=>>destroyed
2.組件掛載階段:
父組件beforeCreate=>>父組件created=>>父組件beforeMount=>>子組件beforeCreate=>>子組件created=>>子組件beforeMount=>>子組件mounted=>>父組件mounted
即從創(chuàng)建到掛載网沾,是從外到內(nèi)讲竿,再從內(nèi)到外
3.組件更新階段:
父組件beforeUpdate=>>子組件beforeUpdate=>>子組件updated=>>父組件updated
4.組件銷毀階段:
父組件beforeDestroy=>>子組件beforeDestroy=>>子組件destroyed=>>父組件destroyed
5.vue2和vue3的響應(yīng)式區(qū)別:
vue2響應(yīng)式的核心是通過defineProperty來對對象已有的屬性值的讀取和修改進(jìn)行劫持(監(jiān)視/攔截)
vue3響應(yīng)式通過Proxy來攔截對對象本身的操作,包括屬性的讀寫,屬性的添加,屬性的刪除等...
通過Reflect來動(dòng)態(tài)對被代理的對象的相應(yīng)屬性進(jìn)行特定操作
6.watch 和 computed 的區(qū)別
computed(計(jì)算屬性):根據(jù)你所依賴的數(shù)據(jù)動(dòng)態(tài)顯示新的計(jì)算結(jié)果涯呻,不用再 data 中聲明宫盔,否則報(bào)錯(cuò)绰疤、支持緩存佩研、不支持異步柑肴、有 get 和 set 方法,當(dāng)數(shù)據(jù)變化時(shí)旬薯,調(diào)用 set 方法晰骑、當(dāng)需要進(jìn)行數(shù)值計(jì)算,并且依賴于其它數(shù)據(jù)時(shí)绊序,用 computed硕舆;
watch(監(jiān)視屬性/偵聽器):data 的數(shù)據(jù)監(jiān)聽回調(diào),依賴 data 的數(shù)據(jù)變化,直接使用 data 聲明的數(shù)據(jù)骤公、不支持緩存抚官、支持異步、可以深度監(jiān)視 deep,加載就調(diào)用 immediate阶捆、監(jiān)聽的函數(shù)接收兩個(gè)參數(shù)凌节,newVal 和 oldVla、在某個(gè)數(shù)據(jù)變化時(shí)做一些事情或需要異步操作時(shí)洒试,用 watch
7.組件通信
props emit .sync v-modelparent / childrenparent 獲取父組件的實(shí)例倍奢,任意調(diào)用父組件的方法,修改父組件的數(shù)據(jù)
ref 父組件獲取 子組件 實(shí)例垒棋,任意調(diào)用子組件的方法獲取子組件的屬性
provide / injectprpvide 父組件內(nèi)部提供數(shù)據(jù) inject 嵌套的子組件可以注入數(shù)據(jù)
attrs /listeners attrs(沒有被 props 接收的所有自定義屬性)listeners(可以獲取所有的父組件傳遞過來的自定義事件)
eventBus 定義一個(gè)事件總線 使用 on 綁定emit 觸發(fā)
vuex
路由傳參
8.vue響應(yīng)式的原理
vue的響應(yīng)式底層是通過object.defineProperty來實(shí)現(xiàn)的卒煞,在中間去做了一些這種監(jiān)聽的機(jī)制、訂閱發(fā)布者模式結(jié)合他的一個(gè)dep更新的一個(gè)機(jī)制去實(shí)現(xiàn)的響應(yīng)式捕犬。
9.什么是mvvm跷坝?
mvvm不過是一種這種框架的架構(gòu)嘛,view-model model view這樣的一個(gè)結(jié)構(gòu)碉碉,然后它主要的優(yōu)勢在于vue和model之前是雙向數(shù)據(jù)傳遞的柴钻,視圖改變數(shù)據(jù)就可以改變,數(shù)據(jù)改變了視圖也可以改變嘛垢粮。
10.vue想做這個(gè)響應(yīng)式更新贴届,數(shù)據(jù)在哪定義?不在data定義可以不可以?怎么讓它變響應(yīng)式毫蚓?手寫的get方法怎么寫占键?

數(shù)據(jù)肯定是在data里面定義;不在data中定義的數(shù)據(jù)是非響應(yīng)式的元潘;可以通過加一些vue的語法糖畔乙,$set把它強(qiáng)制變成響應(yīng)式就可以了,或者可以加一個(gè)自己去手寫的一個(gè)get方法翩概,也可以get牲距、set的方法;還是利用這個(gè)js原生的object.defineProperty钥庇,然后去對它的變量的修改牍鞠,以及變量的獲取去做監(jiān)聽,監(jiān)聽到了之后去給它綁定現(xiàn)成的事件评姨。

11.$nextTick

Vue在更新data之后并不會(huì)立即更新DOM上的數(shù)據(jù)难述,就是說如果我們修改了data中的數(shù)據(jù),再馬上獲取DOM上的值吐句,我們?nèi)〉玫氖桥f值胁后,我們把獲取DOM上值的操作放進(jìn)$nextTick里,就可以得到更新后得數(shù)據(jù)蕴侧。
12.Vue服務(wù)端渲染:Nuxt.js
網(wǎng)頁是通過服務(wù)端渲染生成后輸出給客戶端择同。比如JSP、PHP净宵、JavaWeb等都是SSR架構(gòu)敲才,也就是服務(wù)端取出數(shù)據(jù)和模板組合生成 html 輸出給前端,前端發(fā)生請求時(shí)择葡,重新向服務(wù)端請求 html 資源紧武,路由也由服務(wù)端來控制。
13.為什么要用Nuxt.js敏储?
目前大部分的Vue項(xiàng)目本質(zhì)是 SPA 應(yīng)用阻星,SPA應(yīng)用廣泛用于對SEO要求不高的場景中。
在我們開發(fā)的過程中已添,我們有 SEO 的需求妥箕,我們需要搜索引擎更多地抓取到我們的項(xiàng)目內(nèi)容,此時(shí)我們需要SSR更舞。SSR保證用戶盡快看到基本的內(nèi)容畦幢,也使得用戶體驗(yàn)性更好。
14.for循環(huán)為什么要設(shè)置key值缆蝉?
在用v-for進(jìn)行數(shù)據(jù)遍歷渲染的時(shí)候宇葱,為每一項(xiàng)都設(shè)置唯一的key值瘦真,為了讓Vue內(nèi)部核心代碼能更快地找到該條數(shù)據(jù),當(dāng)舊值和新值去對比的時(shí)候黍瞧,可以更快的定位到diff诸尽。
15.Vue路由設(shè)置成懶加載的作用?
1.Vue路由設(shè)置成懶加載印颤,當(dāng)首屏渲染的時(shí)候您机,能夠加快渲染速度。
2.路由懶加載膀哲,webpack 的import 返回的是一個(gè)promise往产,主要是為了實(shí)現(xiàn)首屏加載速度,以及進(jìn)入某一個(gè)頁面時(shí)加載的速度某宪。
二、js相關(guān)
1.原型和原型鏈的理解
原型:每個(gè)函數(shù)都有prototype屬性锐朴,該屬性指向原型對象兴喂。
使用原型對象的好處是所有對象實(shí)例共享它所包含的屬性和方法。
原型鏈:訪問一個(gè)對象的屬性時(shí)焚志,如果該對象內(nèi)部不存在這個(gè)屬性衣迷,那么就會(huì)沿著它的proto 屬性所指向的那個(gè)對象(父對象)里找,直到為null為止酱酬,這樣一層一層的就構(gòu)成了原型鏈壶谒。
主要解決了繼承的問題。
proto是對象的膳沽,prototype是函數(shù)的汗菜,因?yàn)楹瘮?shù)也是對象,所以函數(shù)也有proto
2.防抖和節(jié)流
防抖:觸發(fā)高頻事件后n秒內(nèi)函數(shù)只會(huì)執(zhí)行一次挑社,如果n秒內(nèi)高頻事件再次被觸發(fā)陨界,則重新計(jì)算時(shí)間
節(jié)流:高頻事件觸發(fā),但在n秒內(nèi)只會(huì)執(zhí)行一次痛阻,節(jié)流會(huì)稀釋函數(shù)的執(zhí)行頻率
3.post和get請求的區(qū)別是什么菌瘪?
1、post請求更安全阱当;post請求不會(huì)作為url的一部分俏扩,不會(huì)被緩存、保存在服務(wù)器日志弊添、以及瀏覽器瀏覽記錄中录淡,get請求的是靜態(tài)資源,則會(huì)緩存表箭,如果是數(shù)據(jù)赁咙,則不會(huì)緩存钮莲。2、post請求發(fā)送的數(shù)據(jù)更大彼水,get請求有url長度限制崔拥。3、post請求能發(fā)送更多的數(shù)據(jù)類型凤覆,get請求只能發(fā)送ASCII字符链瓦。4、傳參方式不同盯桦。5慈俯、get產(chǎn)生一個(gè)TCP數(shù)據(jù)包;post產(chǎn)生兩個(gè)拥峦。
4.http和https的區(qū)別贴膘?
1.http是明文傳輸,https是加密傳輸略号;
2.HTTP 和 HTTPS 使用的是完全不同的連接方式刑峡,用的端口也不一樣,前者是80玄柠,后者是443突梦。
3.HTTP 的連接很簡單,是無狀態(tài)的羽利。HTTPS 協(xié)議是由 SSL+HTTP 協(xié)議構(gòu)建的可進(jìn)行加密傳輸宫患、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比 HTTP 協(xié)議安全
三这弧、css相關(guān)
(一)BFC--塊級格式化上下文
實(shí)現(xiàn)BFC屬性的方法:
1. 浮動(dòng)元素娃闲,float 除 none 以外的值
2. 定位元素,position的值不是static或者relative当宴。
3. display 為 inline-block 畜吊、table-cell、table-caption户矢、table玲献、table-row、table-row-group梯浪、
table-header-group捌年、table-footer-group、inline-table挂洛、flow-root礼预、flex或 inline-flex、grid或 inline-grid
4. overflow 除了 visible 以外的值(hidden虏劲,auto托酸,scroll)
5. 根元素<html> 就是一個(gè) BFC
(二) BFC的作用:
1.避免外邊距重疊(防止margin塌陷)
2褒颈、用于清除浮動(dòng)
3、阻止元素被浮動(dòng)元素覆蓋
4励堡、拓展:CSS中常見的定位方案
(三)px谷丸、em、rem的區(qū)別
1应结、px 像素 固定單位 它的大小是固定的
2刨疼、em 相對單位 em的值并不是固定的 em會(huì)繼承父元素的字體大小 會(huì)根據(jù)父
3、元素字體大小的變化而變化 一般1em等于16px
4鹅龄、rem 他的值也是不固定的 他會(huì)根據(jù)根元素的大小而變化
(四)介紹一下標(biāo)準(zhǔn)的CSS的盒子模型揩慕?與低版本IE的盒子模型有什么不同的?
1.標(biāo)準(zhǔn)盒模型:內(nèi)容content扮休、padding迎卤、border、margin組成 寬高指的是 content 的寬高
2.IE盒模型:(內(nèi)容content肛炮、padding止吐、border) + margin 寬高指的是 content+padding+border 部分的寬高。
(五)實(shí)現(xiàn)一個(gè)元素垂直水平居中
1.絕對定位+margin:auto
2.絕對定位+負(fù)margin
3.絕對定位+transform
4.flex布局
四侨糟、es6
五、ts
六瘩燥、小程序
七秕重、webpack
1.構(gòu)建工具:webpack load 和插件的區(qū)別 load 主要單一處理資源,:例如less load 把less 文件轉(zhuǎn)換成css 文件 插件 能夠參與到整個(gè)構(gòu)建過程中厉膀,可以針對某個(gè)構(gòu)建周期進(jìn)行文件內(nèi)容的替換和編輯內(nèi)容溶耘。
2.webpack 構(gòu)建優(yōu)化過程,常用的文件通過cdn方式引入服鹅。

八凳兵、遇到的困難
1.2個(gè)H5 頁面數(shù)據(jù)同步問題: 小程序內(nèi)1個(gè)未登錄的活動(dòng)頁面點(diǎn)擊點(diǎn)擊按鈕時(shí),跳轉(zhuǎn)到小程序嵌套的H5 登錄頁面上企软。當(dāng)?shù)卿浲瓿珊舐ǎ顒?dòng)頁面需要刷新頁面為登錄狀態(tài),此時(shí)涉及到兩個(gè)H5 頁面的交互問題仗哨。通過學(xué)習(xí)查找形庭,發(fā)現(xiàn)window 的storage事件來完成2個(gè)頁面的交互⊙崞活動(dòng)頁面聽過監(jiān)聽window的storage 事件萨醒,然后在登錄頁面改變localStorage 改變某個(gè)值,來觸發(fā)活動(dòng)頁面上的監(jiān)聽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苇倡,一起剝皮案震驚了整個(gè)濱河市富纸,隨后出現(xiàn)的幾起案子囤踩,更是在濱河造成了極大的恐慌,老刑警劉巖晓褪,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堵漱,死亡現(xiàn)場離奇詭異,居然都是意外死亡辞州,警方通過查閱死者的電腦和手機(jī)怔锌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來变过,“玉大人埃元,你說我怎么就攤上這事∶恼” “怎么了岛杀?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長崭孤。 經(jīng)常有香客問我类嗤,道長,這世上最難降的妖魔是什么辨宠? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任遗锣,我火速辦了婚禮,結(jié)果婚禮上嗤形,老公的妹妹穿的比我還像新娘精偿。我一直安慰自己,他們只是感情好赋兵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布笔咽。 她就那樣靜靜地躺著,像睡著了一般霹期。 火紅的嫁衣襯著肌膚如雪叶组。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天历造,我揣著相機(jī)與錄音甩十,去河邊找鬼。 笑死帕膜,一個(gè)胖子當(dāng)著我的面吹牛枣氧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播垮刹,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼达吞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荒典?” 一聲冷哼從身側(cè)響起酪劫,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撬讽,失蹤者是張志新(化名)和其女友劉穎盖袭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氓癌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年睡腿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了懊烤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磅崭。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖麦箍,靈堂內(nèi)的尸體忽然破棺而出漓藕,到底是詐尸還是另有隱情,我是刑警寧澤挟裂,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布享钞,位于F島的核電站,受9級特大地震影響诀蓉,放射性物質(zhì)發(fā)生泄漏栗竖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一渠啤、第九天 我趴在偏房一處隱蔽的房頂上張望狐肢。 院中可真熱鬧,春花似錦沥曹、人聲如沸处坪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玄帕,卻和暖如春部脚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裤纹。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工委刘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鹰椒。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓锡移,卻偏偏與公主長得像,于是被迫代替她去往敵國和親漆际。 傳聞我的和親對象是個(gè)殘疾皇子淆珊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容