前端面試集錦之一

常見問題:

1你在昨天/本周學(xué)到了什么?

2編寫代碼的哪些方面能夠使你興奮或感興趣汤踏?

3你最近遇到過什么技術(shù)挑戰(zhàn)织鲸?你是如何解決的?

4在制作一個(gè)網(wǎng)頁應(yīng)用或網(wǎng)站的過程中溪胶,你是如何考慮其UI搂擦、安全性、高性能载荔、SEO盾饮、可維護(hù)性以及技術(shù)因素的?

??? 一 UI

???????? 界面美觀,要有個(gè)性丘损,考慮用戶使用的邏輯要簡單普办,用起來舒適自由。使用習(xí)慣要符合大部分用戶的習(xí)慣徘钥,比如少讓用戶輸入衔蹲,采用選擇的方式,提供搜索和提示功能呈础。

??? 二 安全性:

????????? 1舆驶、對輸入進(jìn)行有效性驗(yàn)證(非法字符,特殊字符)如PHP中的方法htmlspecialchars()將特殊字符(>)轉(zhuǎn)化為html實(shí)體而钞,trim()去掉用戶輸入的不必要字符沙廉,stripslashes()去掉用戶輸入的反斜杠等等插佛。

?????????? 2屋群、對交互操作進(jìn)行身份驗(yàn)證和授權(quán)

???????? ? 3闲擦、異常錯(cuò)誤處理(向用戶反饋單額錯(cuò)誤提示不要讓攻擊者分析出一些網(wǎng)絡(luò)環(huán)境和配置)

?????????? 4审轮、緩沖區(qū)溢出;

?????????? 5缚陷、注入攻擊:注入攻擊是應(yīng)用違背了“數(shù)據(jù)與代碼分離原則”導(dǎo)致的結(jié)果达吞。它有兩個(gè)條件:一是用戶能夠控制數(shù)據(jù)的輸入培他;二是代碼拼湊了用戶輸入的數(shù)據(jù)粉臊,把數(shù)據(jù)當(dāng)作代碼執(zhí)行了草添。

?????????? 6、不安全的存儲扼仲;不要使用單獨(dú)類似MD5或SHA加密策略远寸,在進(jìn)行散列密碼值時(shí),使用作料或多種作料以防止彩虹攻擊屠凶。對于短密碼而晒,采 用一個(gè)短散列算法處理,例如:bcrypt或scrypt阅畴。

??? 三 高性能:

?????????? 1、DNS(域名系統(tǒng))負(fù)載均衡迅耘;在DNS中為多個(gè)IP地址配置同一個(gè)域名如:www.baidu.com贱枣,因而查詢這個(gè)域名的客戶機(jī)將得到其中一個(gè)地址,從而使得不同的客戶訪問不同的服務(wù)器颤专,達(dá)到負(fù)載均衡的目的纽哥,從而減小服務(wù)器端的壓力。DNS負(fù)載均衡是一種簡單而有效的方法栖秕,但是它不能區(qū)分服務(wù)器的差異春塌,也不能反映服務(wù)器的當(dāng)前運(yùn)行狀態(tài)。

??????????? 2、HTTP重定向(通過使客戶端重定向只壳,來分散和轉(zhuǎn)移請求壓力俏拱,比如一些下載服務(wù)通常都有幾個(gè)鏡像服務(wù)器);301重定向是網(wǎng)址重定向最為可行的一種辦法,seo最為友好吼句。

??????????? 3锅必、分布式緩存;

??????????? 4惕艳、數(shù)據(jù)庫擴(kuò)展:讀寫分離搞隐,垂直分區(qū),水平分區(qū)

??????????? 5远搪、反向代理負(fù)載均衡:讓代理服務(wù)器將請求均勻轉(zhuǎn)發(fā)給多臺內(nèi)部Web服務(wù)器之一上,從而達(dá)到負(fù)載均衡的目的劣纲。這種代理方式與普通的代理方式有所不同,標(biāo)準(zhǔn)代理方式是客戶使用代理訪問多個(gè)外部Web 服務(wù)器,而這種代理方式是多個(gè)客戶使用它訪問內(nèi)部Web服務(wù)器,因此也被稱為反向代理模式。

使用反向代理的好處是,可以將負(fù)載均衡和代理服務(wù)器的高速緩存技術(shù)結(jié)合在一起,提供有益的性能,具備額外的安全性,外部客戶不能直接訪問真實(shí)的服務(wù)器谁鳍。并且實(shí)現(xiàn)起來可以實(shí)現(xiàn)較好的負(fù)載均衡策略,將負(fù)載可以非常均衡的分給內(nèi)部服務(wù)器,不會出現(xiàn)負(fù)載集中到某個(gè)服務(wù)器的偶然現(xiàn)象癞季。

??? 四SEO:

?????????? 選好關(guān)鍵字,描述語言棠耕,修飾性圖片換成文本余佛,合理使用h1-h6,對圖片添加alt屬性窍荧,鏈接添加target屬性辉巡。

??? 五可維護(hù)性:

??????????? 代碼是否容易被理解,是否容易被修改和增加新的功能蕊退,當(dāng)出現(xiàn)問題時(shí)是否能快速定位到問題代碼郊楣。

5請談?wù)勀阆矚g的開發(fā)環(huán)境。

6你最熟悉哪一套版本控制系統(tǒng)瓤荔?

7你能描述當(dāng)你制作一個(gè)網(wǎng)頁的工作流程嗎净蚤?

?????? 內(nèi)容分析:分清展現(xiàn)在網(wǎng)絡(luò)中內(nèi)容的層次和邏輯關(guān)系

?????? 結(jié)構(gòu)設(shè)計(jì):寫出合理的html結(jié)構(gòu)代碼

?????? 布局設(shè)計(jì):使用html+css進(jìn)行布局

?????? 樣式設(shè)計(jì):首先要使用reset.css

?????? 交互設(shè)計(jì):鼠標(biāo)特效

?????? 行為設(shè)計(jì):js代碼,ajax頁面行為和從服務(wù)器獲取數(shù)據(jù)

?????? 測試兼容性输硝;優(yōu)化性能今瀑。

8假若你有5個(gè)不同的樣式文件(stylesheets),整合進(jìn)網(wǎng)站的最好方式是?

?????? 根據(jù)class命名規(guī)則寫樣式,這樣樣式不會沖突点把,提取公共的樣式橘荠,進(jìn)行合并,非公共的單獨(dú)拎出來郎逃。然后打包壓縮一下就行了哥童,若每個(gè)文件都很大,就需要分模塊加載褒翰。

9你能描述漸進(jìn)增強(qiáng)(progressive enhancement)和優(yōu)雅降級(graceful degradation)之間的不同嗎?

?.transition{

-webkit-transition:all .5s;

-moz-transition:all .5s;

-o-transition:all .5s;

transition:all .5s;

}

.transition{

transition:all .5s;

-o-transition:all .5s;

-moz-transition:all .5s;

-webkit-transition:all .5s;

}

??????????? 漸進(jìn)增強(qiáng)(progressive enhancement):針對低版本瀏覽器進(jìn)行構(gòu)建頁面贮懈,保證最基本的功能匀泊,然后再針對高級瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)朵你。(從被所有瀏覽器支持的基本功能開始各聘,逐步地添加那些只有新式瀏覽器才支持的功能,向頁面添加無害于基礎(chǔ)瀏覽器的額外樣式和功能撬呢。當(dāng)瀏覽器支持時(shí)伦吠,它們會自動(dòng)地呈現(xiàn)出來并發(fā)揮作用。)

??????????? 優(yōu)雅降級(graceful degradation):一開始就構(gòu)建完整的功能魂拦,然后再針對低版本瀏覽器進(jìn)行兼容毛仪。(Web站點(diǎn)在所有新式瀏覽器中都能正常工作,如果用戶使用的是老式瀏覽器芯勘,則代碼會檢查以確認(rèn)它們是否能正常工作箱靴。由于IE獨(dú)特的盒模型布局問題,針對不同版本的IE的hack實(shí)踐過優(yōu)雅降級了荷愕,為那些無法支持功能的瀏覽器增加候選方案衡怀,使之在舊式瀏覽器上以某種形式降級體驗(yàn)卻不至于完全失效。)

???????????? 區(qū)別:優(yōu)雅降級是從復(fù)雜的現(xiàn)狀開始安疗,并試圖減少用戶體驗(yàn)的供給抛杨,而漸進(jìn)增強(qiáng)則是從一個(gè)非常基礎(chǔ)的荐类、能夠起作用的版本開始怖现,并不斷擴(kuò)充,以適應(yīng)未來環(huán)境的需要玉罐。

10你如何對網(wǎng)站的文件和資源進(jìn)行優(yōu)化屈嗤?

????????????? 1. 確保網(wǎng)站信息描述全站統(tǒng)一

????????????? 2. 清楚網(wǎng)站內(nèi)部無效重復(fù)的信息

????????????? 3. 讓用戶能迅速準(zhǔn)確的在網(wǎng)站查看相關(guān)內(nèi)容

????????????? 4. 優(yōu)化內(nèi)部結(jié)構(gòu)便于搜索引擎的理解和收錄

?????? 為了達(dá)到以上這幾個(gè)效果,我們一般會采取幾種方法:關(guān)鍵詞優(yōu)化吊输,網(wǎng)站頁面優(yōu)化饶号,內(nèi)部結(jié)構(gòu)信息優(yōu)化和如何提高網(wǎng)頁的友好度和用戶體驗(yàn)效果。

11瀏覽器同一時(shí)間可以從一個(gè)域名下載多少資源季蚂?

o有什么例外嗎茫船?

12請說出三種減少頁面加載時(shí)間的方法。(加載時(shí)間指感知的時(shí)間或者實(shí)際加載時(shí)間)

?????????? 1.減少HTTP請求扭屁;

?????????? 2.合并壓縮Js/css文件透硝;

?????????? 3.使用緩存manifest;

?????????? 4.服務(wù)器端開啟gzip疯搅;

?????????? 5.使用CDN,用戶可以就近獲取所需要的資源埋泵,訪問速度有保障幔欧,穩(wěn)定性也有保障

?????????? 6.外部JS和CSS放底下

??????????? 7.盡可能少的操作DOM罪治,某些需要重復(fù)操作的DOM可以放變量里

13如果你參與到一個(gè)項(xiàng)目中,發(fā)現(xiàn)他們使用Tab來縮進(jìn)代碼礁蔗,但是你喜歡空格觉义,你會怎么做?

?????????? 1浴井、建議項(xiàng)目使用EditorConfig之類的規(guī)范

??????????? 2晒骇、為了保持風(fēng)格的一致性,保持原有

??????????? 3磺浙、直接使用vim里的retab命令將所有的tab轉(zhuǎn)換成空格

14請寫一個(gè)簡單的幻燈效果頁面洪囤。

15如果今年你打算熟練掌握一項(xiàng)新技術(shù),那會是什么撕氧?

16請談?wù)勀銓W(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)重要性的理解瘤缩。

??????? 網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)都是為了能讓web發(fā)展的更‘健康’,首先約束瀏覽器開發(fā)者遵循統(tǒng)一的標(biāo)準(zhǔn)伦泥,其次約束網(wǎng)站開發(fā)者剥啤,這樣降低開發(fā)難度,開發(fā)成本不脯,SEO也會更好做府怯,也不會因?yàn)闉E用代碼導(dǎo)致各種BUG、安全問題防楷,最終提高網(wǎng)站易用性牺丙。

????????? w3c存在的意義就是讓瀏覽器兼容性問題盡量小,首先是他們對瀏覽器開發(fā)者的約束域帐,然后是對開發(fā)者的約束赘被。

17什么是FOUC (無樣式內(nèi)容閃爍)?你如何來避免FOUC肖揣?

????????? 如果使用import方法對CSS進(jìn)行導(dǎo)入,會導(dǎo)致某些頁面在Windows 下的Internet Explorer出現(xiàn)一些奇怪的現(xiàn)象:以無樣式顯示頁面內(nèi)容的瞬間閃爍,這種現(xiàn)象稱之為文檔樣式短暫失效(Flash of Unstyled Content),簡稱為FOUC民假。

?????????? 原因大致為:

?????????????????? 1,使用import方法導(dǎo)入樣式表龙优。

??????????????????? 2羊异,將樣式表放在頁面底部

??????????????????? 3,有幾個(gè)樣式表彤断,放在html結(jié)構(gòu)的不同位置野舶。

?????????????? 其實(shí)原理很清楚:當(dāng)樣式表晚于結(jié)構(gòu)性html加載,當(dāng)加載到此樣式表時(shí)宰衙,頁面將停止之前的渲染平道。此樣式表被下載和解析后,將重新渲染頁面供炼,也就出現(xiàn)了短暫的花屏現(xiàn)象一屋。

?? ? ? ? ? 解決方法:

?????????????????????? 使用LINK標(biāo)簽將樣式表放在文檔HEAD中窘疮。

18請解釋什么是ARIA和屏幕閱讀器(screenreaders),以及如何使網(wǎng)站實(shí)現(xiàn)無障礙訪問(accessible)冀墨。

???????? ARIA 為Web app提供滿足用戶不同需求的解決方案闸衫。建設(shè)起用戶和軟件之間的橋梁。

???????? 新的HTML5標(biāo)準(zhǔn)中增加 aria-* 的標(biāo)簽屬性诽嘉,全稱Accessible Rich Internet Application蔚出。與role標(biāo)簽屬性配合使用。

???????? role屬性表示一個(gè)非標(biāo)準(zhǔn)的tag的實(shí)際作用虫腋。比如用div做button骄酗,那么設(shè)置div 的 role=“button”,輔助工具就可以認(rèn)出這實(shí)際上是個(gè)button岔乔。而aria-*的作用就是描述這個(gè)tag在可視化的情境中的具體信息酥筝。

????????? 最簡單的應(yīng)用比如,

?????????? < div role=”checkbox” aria-checked=”checked”>

?????????? 輔助工具就會知道雏门,這個(gè)div實(shí)際上是個(gè)checkbox的角色嘿歌,為選中狀態(tài)。

19請解釋CSS動(dòng)畫和JavaScript動(dòng)畫的優(yōu)缺點(diǎn)茁影。

???????? ? 1. css3動(dòng)畫只兼容Ie10+宙帝,js動(dòng)畫幾乎兼容所有瀏覽器;

??????????? 2.js動(dòng)畫更靈活募闲,css3動(dòng)畫更簡單

??????????? 3.js動(dòng)畫復(fù)用性高

??????????? 4.時(shí)間尺度上步脓,css動(dòng)畫粒度比較粗,js動(dòng)畫可以更精細(xì)浩螺;

??????????? 5.幀速不好的瀏覽器CSS動(dòng)畫可以做到優(yōu)雅降級靴患,js代碼還需要寫額外的代碼

??????????? 6.在某些條件下,css動(dòng)畫性能優(yōu)于JS動(dòng)畫要出;(webkit內(nèi)核的瀏覽器鸳君,js執(zhí)行昂貴的任務(wù),不引起layout和repaint情況下)

??????????? 7.css3有天然的時(shí)間支持如(animationENd和transitionEnd)

20什么是跨域資源共享(CORS)患蹂?它用于解決什么問題或颊?

?????????? 當(dāng)使用ajax跨域請求時(shí),瀏覽器報(bào)錯(cuò):XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.肯定是跨域的問題传于,如果用jsonp或者proxy的方式進(jìn)行修改的話未免需要太大的工程量囱挑,所以采用CORS這種比較簡單高效的技術(shù)。相比JOSP的方式沼溜,CORS更為高效平挑。JSONP由于它的原理只能實(shí)現(xiàn)GET請求,而CORS支持所有類型的HTTP請求系草。使用CORS,可以使用普通的ajax實(shí)現(xiàn)跨域

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弹惦,一起剝皮案震驚了整個(gè)濱河市否淤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棠隐,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檐嚣,死亡現(xiàn)場離奇詭異助泽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嚎京,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門嗡贺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鞍帝,你說我怎么就攤上這事诫睬。” “怎么了帕涌?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵摄凡,是天一觀的道長。 經(jīng)常有香客問我蚓曼,道長亲澡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任纫版,我火速辦了婚禮床绪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘其弊。我一直安慰自己癞己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布梭伐。 她就那樣靜靜地躺著痹雅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪籽御。 梳的紋絲不亂的頭發(fā)上练慕,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機(jī)與錄音技掏,去河邊找鬼铃将。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哑梳,可吹牛的內(nèi)容都是我干的劲阎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鸠真,長吁一口氣:“原來是場噩夢啊……” “哼悯仙!你這毒婦竟也來了龄毡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤锡垄,失蹤者是張志新(化名)和其女友劉穎沦零,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體货岭,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡路操,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了千贯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屯仗。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搔谴,靈堂內(nèi)的尸體忽然破棺而出魁袜,到底是詐尸還是另有隱情,我是刑警寧澤敦第,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布峰弹,位于F島的核電站,受9級特大地震影響申尼,放射性物質(zhì)發(fā)生泄漏垮卓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一师幕、第九天 我趴在偏房一處隱蔽的房頂上張望粟按。 院中可真熱鬧,春花似錦霹粥、人聲如沸灭将。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庙曙。三九已至,卻和暖如春浩淘,著一層夾襖步出監(jiān)牢的瞬間捌朴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工张抄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留砂蔽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓署惯,卻偏偏與公主長得像左驾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

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

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,366評論 24 450
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫诡右、插件安岂、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,098評論 4 62
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font帆吻,text-align域那,li...
    love2013閱讀 2,314評論 0 11
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font猜煮,text-align琉雳,li...
    wzhiq896閱讀 1,750評論 0 2
  • 晚上回到家時(shí)被丧,爸爸已做好飯了盟戏,今晚做的是羊肉蔬菜湯,嘿嘿甥桂,就好這口柿究,趕緊吃飯。在飯桌上黄选,一家人聊著蝇摸,奶奶說這次...
    軒萌媽閱讀 218評論 0 0