前端面試題

1井辜、移動端你遇到過什么兼容問題?
1悬襟、如果在input設(shè)置邊框顏色在ios系統(tǒng)里會出現(xiàn)兼容性問題,需要在外面加一個div設(shè)置div的邊框代替input邊框藤违。
2浪腐、文字溢出,用overflow:auto做滾動條在ios上面會卡頓顿乒,需要用iscroll解決议街。
3、防止手機中網(wǎng)頁放大和縮小淆游。
4傍睹、禁用自動匹配手機號、地址犹菱、email拾稳。
5、用好rem和css3的媒體查詢解決適配問題腊脱。
6访得、ios和android下觸摸元素時出現(xiàn)半透明灰色遮罩。用 -webkit-tap-highlight-color:rgba(255,255,255,0)解決陕凹。
7悍抑、iphone及ipad下輸入框默認內(nèi)陰影。用-webkit-appearance:none;解決杜耙。
8搜骡、移動端點擊穿透問題。盡量不用要touch事件佑女,用click事件记靡,然后防止冒泡就事件可以了

2、http和https的區(qū)別团驱?
http是超文本傳輸協(xié)議摸吠。用于Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息。
https是以安全為目標(biāo)的HTTP通道嚎花,簡單講是HTTP的安全版寸痢,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL紊选,因此加密的詳細內(nèi)容就需要SSL啼止。可以防止抓包的問題丛楚,一般做接口都是使用https族壳。

3、如何提高網(wǎng)頁性能趣些?
1仿荆、用圖片懶加載減少請求數(shù)。
2坏平、用好偽元素降低標(biāo)簽的數(shù)量拢操。
3、不要有冗余代碼舶替。
4令境、用好打包合并壓縮工具,將css顾瞪、js文件合并壓縮舔庶,減少請求數(shù)抛蚁。常見的工具:grunt、gulp惕橙、webpack瞧甩。最強大的合并壓縮工具:grunt。

4弥鹦、移動端的適配怎么做肚逸?
最常用的就是rem和css3媒體查詢。

5彬坏、什么是閉包朦促?在開發(fā)項目時什么地方用閉包?
閉包就是父函數(shù)給子函數(shù)傳值栓始,解決作用域問題务冕。比如做一個隨機抽題功能、選項卡幻赚、幻燈片等洒疚。一般用setInterval的地方用的比較多。

6坯屿、說說對象的繼承油湖?
我一般都用call、apply领跛、bind做繼承乏德,bind指向?qū)ο蟊旧怼?/p>

7、jquery的優(yōu)點吠昭?
簡單易用喊括,尤其是對dom的操作很方便。

8矢棚、調(diào)試是怎么做的郑什?
用chrome的開發(fā)者工具調(diào)試,console.log蒲肋,alert等蘑拯。

9、本地存儲localStorage與sessionStorage的區(qū)別兜粘,都在什么地方使用申窘?
localStorage關(guān)閉瀏覽器還是可以保存記錄。sessionStorage關(guān)閉瀏覽器后數(shù)據(jù)消失孔轴。用在會員登錄后保存狀態(tài)剃法,購物車等地方。

10路鹰、訂單支付怎么實現(xiàn)贷洲?
1收厨、登錄會員。
2优构、進入商品頁面书劝。
3狂芋、將商品放入購物車方援。
4欢揖、提交訂單浓领。
5玉凯、對接支付寶或微信支付進行支付。

11联贩、DOM執(zhí)行事件流程?
1漫仆、捕獲階段:先由文檔的根節(jié)點document往事件觸發(fā)對象,從外向內(nèi)捕獲事件對象泪幌;
2盲厌、目標(biāo)階段:到達目標(biāo)事件位置(事發(fā)地),觸發(fā)事件祸泪;
3吗浩、冒泡階段:再從目標(biāo)事件位置往文檔的根節(jié)點方向回溯,從內(nèi)向外冒泡事件對象没隘。

12懂扼、scss和sass,less區(qū)別?
Sass (Syntactically Awesome Stylesheets)是一種動態(tài)樣式語言右蒲,Sass語法屬于縮排語法阀湿,比css比多出好些功能(如變量、嵌套瑰妄、運算,混入(Mixin)陷嘴、繼承、顏色處理间坐,函數(shù)等)灾挨,更容易閱讀。Sass 3就變成了Scss(sassy css)竹宋。與原來的語法兼容涨醋,只是用{}取代了原來的縮進。Less也是一種動態(tài)樣式語言. 對CSS賦予了動態(tài)語言的特性逝撬,如變量浴骂,繼承,運算宪潮, 函數(shù). Less 既可以在客戶端上運行 (支持IE 6+, Webkit, Firefox)溯警,也可在服務(wù)端運行 (借助 Node.js)趣苏。區(qū)別:1.編譯環(huán)境不一樣。Sass的安裝需要Ruby環(huán)境梯轻,是在服務(wù)端處理的食磕,而Less是需要引入less.js來處理Less代碼輸出css到瀏覽器,也可以在開發(fā)環(huán)節(jié)使用Less喳挑,然后編譯成css文件彬伦,直接放到項目中。2.變量符不一樣伊诵,Less是@单绑,而Scss是$,而且變量的作用域也不一樣曹宴。3.輸出設(shè)置搂橙,Less沒有輸出設(shè)置,Sass提供4中輸出選項:nested(嵌套縮進的css代碼), compact(展開的多行css代碼), compressed (簡潔格式的css代碼)和 expanded(壓縮后的css代碼)笛坦。

13区转、偽類和偽元素的區(qū)別?
偽類用于向某些選擇器添加特殊的效果,比如::hover版扩,:foucs废离,:link,:active礁芦,:vistied厅缺,:first-child,:lang宴偿。偽元素用于將特殊的效果添加到某些選擇器湘捎,比如:berfor,:after窄刘,:first-letter窥妇,:first-line。

14娩践、多維數(shù)組如何實現(xiàn)扁平化處理?
1活翩、常規(guī)就是循環(huán)和遞歸 。2翻伺、使用es的展開符材泄。。吨岭。

15拉宗、jsonp的實現(xiàn)原理?
就是動態(tài)生成一個script標(biāo)簽。然后通過script的src加載地址,同時根據(jù)callback返回函數(shù)里面獲取數(shù)據(jù)旦事,這樣就的需要后臺接口返回的時候返回一個帶變量的數(shù)據(jù)

16魁巩、什么樣的網(wǎng)站適合作響應(yīng)式?
功能不是很復(fù)雜的網(wǎng)站姐浮,設(shè)計排版簡單的網(wǎng)站適合谷遂。比如公司官網(wǎng),界面清晰的視頻網(wǎng)站等卖鲤。

17肾扰、說一下git遇到?jīng)_突如何解決?
1蛋逾、pull一下集晚,更新程序。
2换怖、同步,查看沖突代碼蟀瞧。
3沉颂、人工修改,保持本地最新版悦污。
4铸屉、Add to Git Index,提交修改切端。
5彻坛、Commit提交。
6踏枣、push推送到服務(wù)器

18昌屉、前端工作流程?
1茵瀑、拿到原型圖和產(chǎn)品經(jīng)理溝通業(yè)務(wù)需求间驮。
2、拿到設(shè)計稿先規(guī)劃一下思路然后切圖布局马昨。
3竞帽、寫出js效果。
4鸿捧、拿到后端的接口文檔測試一下接口是否可用屹篓。
5、對接數(shù)據(jù)渲染到頁面匙奴。

19堆巧、tap事件原理?
在移動端中,由于兩次觸摸是放大操作,,所以當(dāng)你點擊一次的時候,瀏覽器會等待300ms,看用戶是否會進行第二次點擊,如果沒有的話,才會執(zhí)行點擊事件,tap事件的原理其實是源于觸摸touch事件,在移動觸摸事件就是在同個點觸發(fā),及touchmove的距離距離touchstar的距離為0,并且點擊的時間不超過某個設(shè)定的時間值,超過該時間值的話,就屬于長按了

20、懶加載原理恳邀?
一般來講懦冰,給圖片src配置一個假的地址,同事給添加一個data-url屬性指向真是url地址谣沸,當(dāng)圖片快要顯示的時候?qū)rl地址替換成data-url的屬性

21刷钢、移動端的fastclick怎么實際使用?
引入fastclick.js插件乳附。然后Fastclick.attech(document.body)中

22内地、公司的測試是怎么向你提bug的?他是怎么記錄的赋除?
寫一個文檔圖文并茂的形式給我阱缓。邊測試邊記錄。

23举农、原生ajax的步驟?
5個步驟荆针,
1、構(gòu)建xmlHttpRequest對象颁糟。
2 航背、準備請求open。
3棱貌、send發(fā)送數(shù)據(jù)玖媚。
4 、等待數(shù)據(jù) 婚脱。
5 今魔、成功接受數(shù)據(jù)

24、get和post區(qū)別是什么?
1障贸、本質(zhì)區(qū)別 一個用來提交數(shù)據(jù)错森,一個用來獲取數(shù)據(jù)。
2篮洁、 傳參方式區(qū)別 问词。
3、 安全性 嘀粱。
4 激挪、傳參數(shù)數(shù)據(jù)大小

25、有幾種方法可以改變this指向?
1锋叨、call apply bind 垄分。
2、可以提出箭頭函數(shù)

26娃磺、說一下你有幾種讓子盒子居中的方法?
1薄湿、flex
2、定位各50%,然后tranfrom:translate(-50%)
3豺瘤、定位 然后上下左右都是0 margin auto

27吆倦、vue-router的原理?catch方法的實現(xiàn)原理?
用戶通過vue的router.push和router.replace來修改地址欄坐求。同時監(jiān)控地址欄蚕泽。獲取到對應(yīng)組件,去配置信息里面尋找對應(yīng)的頁面顯示

28桥嗤、git和svn的區(qū)別?
一個是集中式管理须妻,一個分布式管理

29、vue計算屬性和watch的區(qū)別?
計算屬性是為了檢測某個屬性泛领。而這個屬性是由別的變量覺定的荒吏,核心在計算,watch是監(jiān)控渊鞋,主要是用來某個變量發(fā)生變化導(dǎo)致別的觸發(fā)來使用绰更,計算屬性中的變量不需要在data里面初始化

30、vue的優(yōu)勢為什么使用vue?
vue是單頁面應(yīng)用锡宋,使頁面局部刷新儡湾,不用每次跳轉(zhuǎn)頁面都要請求所有數(shù)據(jù)和dom,這樣大大加快了訪問速度和提升用戶體驗员辩。而且他的第三方ui庫很多節(jié)省開發(fā)時間盒粮。

31鸵鸥、mvvm是什么?
把Model和View關(guān)聯(lián)起來的就是ViewModel奠滑。ViewModel負責(zé)把Model的數(shù)據(jù)同步到View顯示出來,還負責(zé)把View的修改同步回Model妒穴。就是model->view->view->model

32宋税、vuex實現(xiàn)原理?
Store,負責(zé)管理整個數(shù)據(jù)訪問讼油、修改等杰赛; 提高API;getter.xxx矮台,怎么可以每次拿到最新數(shù)據(jù)乏屯?,action和mutation負責(zé)提交數(shù)據(jù)瘦赫。

33辰晕、vue Seo優(yōu)化?
vue默認不支持seo優(yōu)化因為是單頁面應(yīng)用,數(shù)據(jù)也是用ajax讀取确虱,無法友好的讓搜索引擎抓取含友,所以無法獲取排名,需要用服務(wù)端渲染Nuxt.js來解決,但是這樣開發(fā)成本太大窘问,建議如果考慮seo的話就不要使用前端框架辆童,用傳統(tǒng)的h5開發(fā)即可。

34惠赫、vue服務(wù)端渲染?
建議使用nuxt.js,因此可以在服務(wù)端可以提前渲染出來把鉴,解決了單頁面一直存在的問題:SEO和初次加載耗時較多的問題。

35汉形、es6和es5的區(qū)別?
說出ES6的特點:
1纸镊、let const。
2 概疆、字符串模板 逗威。
3 、promise 岔冀。
4 凯旭、class。
5使套、箭頭函數(shù)罐呼。
6、解析結(jié)構(gòu)侦高。
7嫉柴、數(shù)組和對象的新方法 ,比如 set assign奉呛。

36计螺、webpack按需加載?
使用require.ensure做頁面分割按需加載。

37瞧壮、你常用的loader加載器有哪些?
一般在vue的webpack中配置登馒,常見的'style-loader'css-loader less-loader babel-loader(解析ES6) json-loader vue-loader

38、怎么理解promise(語法糖)?
Promise 是異步編程的一種解決方案咆槽,new Promise(function(resolve,reject){
if(/異步操作成功/){
resolve(value);
}else{
reject(error);
}
})或者通過生成對象后通過then的方法

39陈轿、如何實現(xiàn)異步編程,有哪些方式?
現(xiàn)在比較常用的是promise秦忿。解釋一下promise.原來比較多的是通過回調(diào)函數(shù)或者事件監(jiān)聽

40麦射、解釋一下什么是vue實例
類似創(chuàng)建一個vue對象。里面包含鉤子函數(shù)灯谣,data,methods.computeds等

41潜秋、vue組件有多少個生命周期?
11個酬屉,建議不要說個數(shù)半等,說出8個常見的和后來加的

42揍愁、vue組件之間傳遞數(shù)據(jù)怎么實現(xiàn),區(qū)別是什么杀饵?
1莽囤、分父子組件如何傳值。
2切距、 使用vuex朽缎。
3、事件總線bus谜悟。
4话肖、本地存儲傳值。

43葡幸、在開發(fā)中怎么與后臺合作的最筒?
1、通過接口文檔拿到j(luò)son數(shù)據(jù)蔚叨。
2床蜘、用ajax將數(shù)據(jù)渲染到頁面。

44蔑水、vue數(shù)據(jù)雙向綁定的實現(xiàn)原理?
是采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式邢锯,通過Object.defineProperty()來劫持各個屬性的setter,getter搀别,在數(shù)據(jù)變動時發(fā)布消息給訂閱者丹擎,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)。

45歇父、nodejs了解嗎蒂培?
了解。一般我用來配合mongodb開發(fā)一些小的接口,和使用他的npm 命令庶骄,主要用nodejs做中間件毁渗。

46践磅、數(shù)組排序有哪些方式单刁?
js自帶sort(function(a,b)return a-b)方法,或者手動寫冒泡或者快速排序

47、用css如何實現(xiàn)左側(cè)寬度固定府适,右側(cè)寬度自適應(yīng)?
1羔飞、flex布局。
2檐春、margin配合float實現(xiàn)逻淌。
3、使用calc計算屬性疟暖。

48卡儒、技術(shù)團隊人員分配?
如果是小型項目:一個產(chǎn)品經(jīng)理田柔、一個設(shè)計師、一個前端工程師骨望、一個后端工程師總共4個人硬爆。

49、如何開發(fā)響應(yīng)式網(wǎng)站開發(fā)擎鸠?
傳統(tǒng)使用boostrap.boostrap也是基于媒體查詢來實現(xiàn)響應(yīng)式的缀磕,第二,注意使用百分比或者rem布局

50劣光、js數(shù)據(jù)類型有哪些袜蚕?
6種數(shù)據(jù)類型:string、number绢涡、boolean牲剃、object、undefined雄可、array颠黎。ES6中新加symbol。

51滞项、父盒子高度自適應(yīng)狭归,里面的文字行高如何自適應(yīng)?
1、使用rem或者em來設(shè)置文字大小文判,em和rem是相對單位过椎。
2、使用js獲取父元素高度來設(shè)置子元素文字戏仓。

52疚宇、在工作中如何配合安卓和ios開發(fā)工程師?
基本上通過webview來實現(xiàn)安卓或者ios對js的交互

53、項目結(jié)構(gòu)是如何搭建的赏殃?
現(xiàn)在基本上使用vue腳手架來搭建結(jié)構(gòu)敷待,手動搭建過程是npm init初始化結(jié)構(gòu),配置webpackjson和git倉庫仁热,還有安裝依賴榜揖,創(chuàng)建static.view等對應(yīng)文件夾并開始編寫代碼

54、常用的瀏覽器有那些抗蠢?
谷歌举哟。webkit 火狐gecko IE trident

55、漸進增強和優(yōu)雅降級?
漸進增強 progressive enhancement:針對低版本瀏覽器進行構(gòu)建頁面迅矛,保證最基本的功能妨猩,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗秽褒。
優(yōu)雅降級 graceful degradation:一開始就構(gòu)建完整的功能壶硅,然后再針對低版本瀏覽器進行兼容威兜。
區(qū)別:優(yōu)雅降級是從復(fù)雜的現(xiàn)狀開始,并試圖減少用戶體驗的供給庐椒,而漸進增強則是從一個非衬凳簦基礎(chǔ)的,能夠起作用的版本開始扼睬,并不斷擴充逮栅,以適應(yīng)未來環(huán)境的需要。降級(功能衰減)意味著往回看窗宇;而漸進增強則意味著朝前看措伐,同時保證其根基處于安全地帶。

56军俊、常用的dom的操作方法?
創(chuàng)建節(jié)點侥加,節(jié)點克隆,替換粪躬,刪除担败,節(jié)點屬性的操作

57、事件代理的原理?
基于事件冒泡

58镰官、前端安全問題?
1提前、xss攻擊。
2泳唠、防止sql注入狈网。
3、文件上傳漏洞 預(yù)防方法就是前端對所有用戶輸入的信息都需要驗證笨腥,且后端也得需要驗證拓哺。
4、防短信轟炸脖母,用圖文驗證碼解決士鸥。
5、會員登錄是的cookie欺騙谆级,用token解決烤礁。

59、jquery的優(yōu)化方法?
1哨苛、選擇器要用對鸽凶,理論上ID選擇器是最快的币砂,學(xué)會使用緩存JQ對象
2建峭、盡量減少dom操作。比如對某個元素插入數(shù)據(jù)的時候决摧,先把數(shù)據(jù)都弄好一次性插入
3亿蒸、 不要直接使用事件凑兰,通過綁定on的方法加事件
4 、學(xué)會使用鏈式寫法

60边锁、jquery添加插件?
兩種開發(fā)模式姑食,第一種是基于函數(shù)的函數(shù),jQuery.extend茅坛。第二種是對象級別的插件開發(fā)$.fn.extend.

61音半、是否設(shè)計過通用的組件?
設(shè)計過,比如:toast贡蓖,下拉加載曹鸠,購物車等。

62斥铺、平時是如何學(xué)習(xí)的?
1彻桃、看技術(shù)文檔。
2晾蜘、去github上下載開源代碼讀代碼邻眷。
3、網(wǎng)上找些視頻來學(xué)習(xí)剔交。

63肆饶、項目中負責(zé)了什么?
作為一個前端,首先是項目的頁面和數(shù)據(jù)展示岖常,有時候處理不同設(shè)備的兼容抖拴,再就是處理頁面之間和數(shù)據(jù)之間的邏輯關(guān)系,提高用戶體驗

64腥椒、自己的職業(yè)規(guī)劃?
我目前規(guī)劃是基于當(dāng)前目標(biāo)阿宅,先努力扎實自己的基礎(chǔ),尤其前端這個行業(yè)日新月異笼蛛,基于基礎(chǔ)然后向架構(gòu)方向發(fā)展

65洒放、除了前端還會其他的嗎?
因為上家公司主要后端語言是PHP滨砍,所以一些基本的PHP代碼可以閱讀往湿,當(dāng)然,現(xiàn)在我對nodejs也有一定的研究

66惋戏、給你一個5個頁面的網(wǎng)站多長時間能做完?
這個的看頁面的交互和數(shù)據(jù)情況领追,一般來說,基本靜態(tài)頁面完成起來是很快的响逢,更多側(cè)重數(shù)據(jù)交互和也沒面功能測試绒窑,有時候可能在一些特效動畫上耗費點時間

67、了解過模版引擎嗎舔亭?
使用過templat.js和Dot.js些膨。就是獲取到數(shù)據(jù)快速完成數(shù)據(jù)渲染的過程蟀俊,節(jié)省代碼量。提高維護性订雾,減少 拼接字符串肢预,這樣也優(yōu)化的性能

68、項目上線是如何操作的洼哎?
正式服務(wù)器接口測試--合并分支-回歸測試--檢查線上服務(wù)器權(quán)限-數(shù)據(jù)是否清空- 上線包檢查并發(fā)布-灰度測試-維護

69烫映、vue中watch和computed的區(qū)別?
watch主要作用是監(jiān)聽路由變化。Computed主要是做計算方法噩峦。

70窑邦、開發(fā)項目的流程是什么?
1壕探、和產(chǎn)品經(jīng)理溝通確認需求冈钦。
2、拿到設(shè)計稿開始切圖李请。
3瞧筛、開始布局寫頁面和js效果。
4导盅、和后臺對接數(shù)據(jù)较幌。

71、公司有沒有強制使用eslint等代碼檢測工具白翻?
沒有強制使用乍炉,但是也讓使用,防止冗余代碼的出現(xiàn)尤其對新手比較重要滤馍。

72岛琼、項目開發(fā)時是怎么進行項目自測?
邊開發(fā)邊測試巢株,做一個功能測試一個槐瑞,如果出現(xiàn)bug就用調(diào)試工具,如果調(diào)試工具提示的不詳細阁苞,就用排除法來調(diào)試困檩。

73、h5及c3新增的一些內(nèi)容那槽?
h5新增主要功能如下:
1悼沿、video視頻。
2骚灸、audio音頻糟趾。
3、websocket。
4拉讯、history api涤浇。
5鳖藕、canvas魔慷。
6、geolocation地理位置著恩。
7院尔、拖拽事件。
8喉誊、localStorage邀摆。
9、sessionStorage

74伍茄、移動端如果做多終端的適配栋盹?(各主流手機 ,pad敷矫,電腦)
1例获、可以用bootstrap。
2曹仗、用css3的媒體查詢榨汤。
3、使用rem

75怎茫、使用angular vue react框架做過那些類型的項目收壕?項目有多大?遇到過那些棘手的bug轨蛤?
angular現(xiàn)在市場小蜜宪,沒有用它做過大型項目,我現(xiàn)在主要用vue祥山、react來做開發(fā)端壳。做過電商、在線教育等移動端web和app枪蘑。棘手的Bug:做微信分享時與后臺對接簽名的問題损谦,用vue做websocket時第一次訪問和服務(wù)端通信,跳轉(zhuǎn)其他頁面后依然保持連接沒有斷開岳颇,會造成下次訪問再次創(chuàng)建連接照捡,發(fā)送消息是出現(xiàn)兩次以上同樣的信息,解決方案话侧,在跳轉(zhuǎn)頁面時栗精,需要在鉤子方法beforeDestroy ()里面關(guān)閉websocket即可。

76、jquery和zepto有什么區(qū)別悲立? 他倆對于現(xiàn)在的mv*框架及react這種專注視圖層的框架有什么區(qū)別鹿寨?
jquery體積比較大適合pc端,zepto體積適合移動端薪夕,zepto封裝了h5的touch事件

77脚草、ajax和fetch有什么區(qū)別?jsonp是解決跨域的原献,還了解過哪些并實際使用過哪些跨域的解決方法馏慨?
ajax是用XMLHttpRequest,fetch是用promise姑隅。配置服務(wù)器增加Access-Control-Allow-Origin:*写隶。利用websocket也可解決。

78讲仰、你跟后端交互的時候需要注意那些問題慕趴?后端開發(fā)的接口字段是如何定出來的?后端開發(fā)的接口字段里面 你認為必須要有的是什么鄙陡?
1冕房、跨域問題。
2柔吼、請求類型比如:post毒费、get。
3愈魏、是否有必填字段觅玻,字段類型;是根據(jù)業(yè)務(wù)需求培漏、頁面設(shè)計定制出來的溪厘;如果是用戶登錄接口,要有用戶名和密碼字段牌柄。如果是文章列表要有id,title,image等字段畸悬。

79、你了解過那些模塊化規(guī)范珊佣?模塊化開發(fā)有什么好處蹋宦?他和組件化有什么區(qū)別?
CommonJS和requireJS咒锻;比如CommonJS規(guī)范:一個單獨的文件就是一個模塊冷冗,每一個模塊都是一個單獨的作用域返帕,用import導(dǎo)入纷铣,用module.exports導(dǎo)出滑蚯,可以做到按需加載以现,避免冗余代碼的產(chǎn)生踊谋。AMD优烧,requireJS解決js文件過多瀏覽器停止頁面渲染照激∩嗳裕可以做到按需加載;模塊化是一種編程思想泰偿,可以做到按需加載熄守。組件化是自己封裝的公共組件方便多次使用。

80甜奄、gulp柠横,grunt窃款,webpack這些工具的區(qū)別课兄?
gulp和webpack是單頁面應(yīng)用的構(gòu)建工具,目前webpack被vue晨继,react廣泛使用烟阐。Grunt是專業(yè)的代碼合并、壓縮工具用于傳統(tǒng)的h5頁面開發(fā)使用紊扬。

81蜒茄、你們公司代碼是怎么管理的? git svn及提交流程
主要用git餐屎,小項目用svn檀葛;git提交流程:
1、先拉取pull腹缩。
2屿聋、選擇要提交的問題add。
3藏鹊、提交文件commit润讥。
4、推送到服務(wù)端主分支push盘寡。svn提交流程:1楚殿、先更新。2竿痰、再提交脆粥。

82、對node了解多少影涉?你使用過什么变隔?覺得nodejs對于前端來說最大的作用是什么?
會用express可以對mysql常潮、mongodb進行增弟胀、刪、改、查孵户;node可以做為中間件使用萧朝,對一些nosql操作比較好比如mongodb。如果用react做服務(wù)端渲染可以使用node的express來做中間件使用夏哭。

83检柬、說下圖片上傳是如何實現(xiàn)的?
拿到服務(wù)端的圖片上傳接口竖配。方法一:可以用jquery的jquery.form.js上傳何址。方法二:可以用axios上傳。方法三:可以用ajax配合h5的FormData來上傳圖片进胯。然后服務(wù)端會返回圖片名用爪,將圖片名提交到數(shù)據(jù)庫

84、后臺管理系統(tǒng)開發(fā)的過程中你認為需要注意的地方有哪些胁镐?
1偎血、安全性。
2盯漂、業(yè)務(wù)流程颇玷。
3、搭建好目錄結(jié)構(gòu)就缆,功能模塊化帖渠。
4、權(quán)限角色分配竭宰。

85空郊、ie火狐谷歌瀏覽器的兼容問題是如何解決的?
如果用float布局做好清除浮動羞延,在公共樣式里設(shè)置margin:0px;padding:0px;渣淳。如果子元素有float那么父元素用overflow:hidden清除浮動。

86伴箩、Vue組件通訊的實現(xiàn)方法有哪些入愧?
1、父組件向子組件傳值嗤谚。
2棺蛛、子組件向父組件傳值。
3巩步、用vuex傳值旁赊。

87、vuex中action和mutation分別用來處理什么椅野?
action處理異步數(shù)據(jù)最終提交到數(shù)據(jù)庫终畅,mutation用來同步數(shù)據(jù)做業(yè)務(wù)的處理籍胯。

88、封裝針對自己公司需求的數(shù)據(jù)請求方法有什么好處离福?怎么封裝杖狼?
封裝后方便重用和維護,如果是原生js用面向?qū)ο蠓庋b妖爷,用jquery封裝成插件蝶涩,用vue或是react封裝成組件。

89絮识、使用過那些css預(yù)處理绿聘?說下他的優(yōu)缺點?
使用過less次舌、sass熄攘。less簡單,易上手;屬于css的基礎(chǔ)拓展;sass 復(fù)雜,功能強大,更加豐富的拓展;沒有特別的優(yōu)缺點垃它,自己喜歡什么就選擇什么鲜屏,有的時候什么都不選擇就用css就行了烹看。

90国拇、移動端項目如何解決300ms延遲問題?
使用fastclick解決ios的300ms延遲問題

91惯殊、better-scroll做過那些需求酱吝?
1、下拉刷新土思。
2务热、上拉加載。
3己儒、內(nèi)容溢出出現(xiàn)滾動條滑動解決卡頓問題崎岂。

92、使用過百度地圖嗎闪湾?使用過echarts冲甘?
使用過,比如獲取用戶經(jīng)度和緯度途样,對接百度地圖顯示用戶在地圖里顯示的位置江醇。Echarts我一般在后臺做活躍度、用戶訪問量統(tǒng)計圖何暇。

93陶夜、react定義組件的方法有哪些?區(qū)別是什么裆站?
1条辟、無狀態(tài)函數(shù)式組件黔夭。
2、es5原生方式React.createClass定義的組件羽嫡。
3纠修、es6形式的extends React.Component定義的組件。最大的區(qū)別就是現(xiàn)在都用es6前面兩種慢慢的被淘汰不需要使用了厂僧。

94扣草、說說redux和vuex的不同?
Vuex:有自動渲染的功能颜屠,所以不需要更新辰妙。Redux:一個子組件的狀態(tài)必須通過父組件傳遞過來,父組件從倉庫統(tǒng)一調(diào)控甫窟,當(dāng)一個組件相關(guān)數(shù)據(jù)更新時密浑,即使你的父組件不需要這個組件,它還是會自動更新粗井。

95尔破、redux需要注意的問題有哪些?
入口文件浇衬,路由文件要分配好懒构,主倉庫分配給各個組件,獲取值需要用connect將redux與類關(guān)聯(lián)起來耘擂。

96胆剧、redux和router開發(fā)的時候遇到過那些問題?怎么解決的醉冤?
redux的問題就是頁面刷新后無法保存數(shù)據(jù)秩霍,需要用localStorage來配合解決。Router在子組件里會出現(xiàn)跳轉(zhuǎn)的問題蚁阳,使用withRouter來解決铃绒。

97、react+redux開發(fā)項目的時候數(shù)據(jù)請求這塊如何分配螺捐?
比如做會員登錄時颠悬,會員的信息記錄到redux中。在做購物車是也需要把數(shù)據(jù)記錄在redux中归粉。

98椿疗、大型的前端構(gòu)建項目,本地打包和編譯的時候如何區(qū)別開發(fā)和生產(chǎn)環(huán)境
通過變量來區(qū)分:export NODE_ENV="development"是開發(fā)環(huán)境糠悼。export NODE_ENV="production"是生產(chǎn)環(huán)境届榄。

99、看過jquery源碼嗎倔喂?你說說jquery的底層實現(xiàn)原理铝条。
看過靖苇;比如:公式輸入有誤(function(){})實現(xiàn)原理是監(jiān)聽DOMContentListener(兼容火狐和谷歌等瀏覽器)和onreadystatechange(兼容ie瀏覽器)實現(xiàn)的

100、你封裝過插件嗎班缰?封裝過哪些插件贤壁,說說封裝插件的思路
封裝過。比如:購物車埠忘,幻燈片脾拆,選型卡,下拉加載莹妒,toast名船,彈窗等插件。先用原生js寫對象再用$.fn去調(diào)用旨怠。

101渠驼、封裝過組件嗎?說說你封裝哪些組件鉴腻。
封裝過迷扇。比如:公共的頭,alert爽哎,購物車等等蜓席。

102、說說代碼重構(gòu)的思路倦青?
先看看那些代碼可以封裝瓮床,重用,繼承产镐。實現(xiàn)步驟如下:1、提取子函數(shù)踢步。2癣亚、把大家都要用的方法放到父類中。3获印、下移函數(shù)到子類述雾。4、封裝固定的調(diào)用邏輯(有點模板模式的意思)

103兼丰、項目中遇到印象最深刻的問題玻孟,以及解決的思路是什么?
1鳍征、用react的開發(fā)的時候子組件用路由跳轉(zhuǎn)時需要用withRouter解決黍翎。
2、如果在input設(shè)置邊框顏色在ios系統(tǒng)里會出現(xiàn)兼容性問題艳丛,需要在外面加一個div設(shè)置div的邊框代替input邊框匣掸。
3趟紊、文字溢出,用overflow:auto做滾動條在ios上面會卡頓碰酝,需要用iscroll解決霎匈。

104、最有成就感的是哪個項目送爸?
自己寫

105铛嘱、實現(xiàn)一個深拷貝函數(shù)?
function getType(obj){
//tostring會返回對應(yīng)不同的標(biāo)簽的構(gòu)造函數(shù)
var toString = Object.prototype.toString;
var map = {
'[object Boolean]' : 'boolean',
'[object Number]' : 'number',
'[object String]' : 'string',
'[object Function]' : 'function',
'[object Array]' : 'array',
'[object Date]' : 'date',
'[object RegExp]' : 'regExp',
'[object Undefined]': 'undefined',
'[object Null]' : 'null',
'[object Object]' : 'object'
};
if(obj instanceof Element) {
return 'element';
}
return map[toString.call(obj)];
}
//深拷貝
function deepClone(data){
var type = getType(data);
var obj;
if(type === 'array'){
obj = [];
} else if(type === 'object'){
obj = {};
} else {
//不再具有下一層次
return data;
}
if(type === 'array'){
for(var i = 0, len = data.length; i < len; i++){
obj.push(deepClone(data[i]));
}
} else if(type === 'object'){
for(var key in data){
obj[key] = deepClone(data[key]);
}
}
return obj;
}

106袭厂、Css結(jié)合html寫一個常見的頁面布局弄痹?
107、用Css畫一個三?角和實現(xiàn)一個圓環(huán)嵌器?
//三角
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>無標(biāo)題文檔</title>
<style>
.wrap{
width: 0px;
height: 0px;
border-width: 0px 50px 50px 0px;
border-color: red transparent;
border-style: solid;
}
</style>
</head>
<body>
<div class="wrap"></div>
</body>
</html>

//圓
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>無標(biāo)題文檔</title>
<style>
.wrap{
width: 100px;
height: 100px;
background-color:red;
border-radius: 50%;
border-radius: 50%;
border-radius: 50%;
}
</style>
</head>
<body>
<div class="wrap"></div>
</body>
</html>

108肛真、一個完整的react開發(fā)目錄結(jié)構(gòu)?
109爽航、說說你對promise的理解?其優(yōu)勢是什么蚓让?
promise是es6的一種異步請求構(gòu)造函數(shù),接收一個參數(shù)讥珍,是函數(shù)历极,并傳入兩個參數(shù)resolve,reject(可以見到的理解成功后和失敗后的回調(diào)函數(shù))衷佃,在我們封裝好函數(shù)的最后趟卸,會return出promise對象,promise對象的原型上有then氏义、catch等方法锄列,then方法中我們協(xié)議拿到我們在調(diào)用resolve時可以傳遞的參數(shù)并形成promise鏈,調(diào)用reject時惯悠,promise鏈就被破壞了邻邮,reject之后的promise都不會再執(zhí)行,而是直接調(diào)用.catch方法克婶;Promise的優(yōu)勢在于筒严,可以在then方法中繼續(xù)寫promise對象并返回,然后繼續(xù)調(diào)用then來進行回調(diào)操作情萤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸭蛙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子筋岛,更是在濱河造成了極大的恐慌娶视,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泉蝌,死亡現(xiàn)場離奇詭異歇万,居然都是意外死亡揩晴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門贪磺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硫兰,“玉大人,你說我怎么就攤上這事寒锚〗儆常” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵刹前,是天一觀的道長泳赋。 經(jīng)常有香客問我,道長喇喉,這世上最難降的妖魔是什么祖今? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮拣技,結(jié)果婚禮上千诬,老公的妹妹穿的比我還像新娘。我一直安慰自己膏斤,他們只是感情好徐绑,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莫辨,像睡著了一般傲茄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沮榜,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天盘榨,我揣著相機與錄音,去河邊找鬼敞映。 笑死较曼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的振愿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼弛饭,長吁一口氣:“原來是場噩夢啊……” “哼冕末!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侣颂,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤档桃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后憔晒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藻肄,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蔑舞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘹屯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攻询。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖州弟,靈堂內(nèi)的尸體忽然破棺而出钧栖,到底是詐尸還是另有隱情,我是刑警寧澤婆翔,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布拯杠,位于F島的核電站,受9級特大地震影響啃奴,放射性物質(zhì)發(fā)生泄漏潭陪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一最蕾、第九天 我趴在偏房一處隱蔽的房頂上張望依溯。 院中可真熱鬧,春花似錦揖膜、人聲如沸誓沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拜隧。三九已至,卻和暖如春趁仙,著一層夾襖步出監(jiān)牢的瞬間洪添,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工雀费, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留干奢,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓盏袄,卻偏偏與公主長得像忿峻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辕羽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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

  • 1逛尚、移動端你遇到過什么兼容問題? 1、如果在input設(shè)置邊框顏色在ios系統(tǒng)里會出現(xiàn)兼容性問題刁愿,需要在外面加一個...
    青青菜鳥閱讀 4,399評論 0 28
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,269評論 24 450
  • 【轉(zhuǎn)載】CSDN - 張林blog http://blog.csdn.net/XIAOZHUXMEN/articl...
    竿牘閱讀 3,481評論 1 14
  • 1.一些開放性題目 1.自我介紹:除了基本個人信息以外绰寞,面試官更想聽的是你與眾不同的地方和你的優(yōu)勢。 2.項目介紹...
    55lover閱讀 632評論 0 6
  • 大多數(shù)人都有被阿貓阿狗這樣的寵物咬的經(jīng)歷,我最近卻不幸被老鼠咬了滤钱。想寫一下我為什么被咬觉壶,咬了之后的感受以及我...
    妖六八閱讀 1,373評論 0 0