web面試題及答案
參加web前端面試時(shí),面試者的技術(shù)能力能否給面試官展示呢?在面試回答問題中能否獲全勝了呢?以下是小編幫你們整理的web面試題及答案,一起來學(xué)習(xí)啦。
web面試題及答案(一)
1.對(duì)WEB標(biāo)準(zhǔn)以及W3C的理解與認(rèn)識(shí)
標(biāo)簽閉合、標(biāo)簽小寫、不亂嵌套、提高搜索機(jī)器人搜索幾率、使用外 鏈css和js腳本、結(jié)構(gòu)行為表現(xiàn)的分離、文件下載與頁面速度更快、內(nèi)容能被更多的用戶所訪問、內(nèi)容能被更廣泛的設(shè)備所訪問、更少的代碼和組件,容易維 護(hù)、改版方便,不需要變動(dòng)頁面內(nèi)容、提供打印版本而不需要復(fù)制內(nèi)容、提高網(wǎng)站易用性;
2.xhtml和html有什么區(qū)別
HTML是一種基本的WEB網(wǎng)頁設(shè)計(jì)語言,XHTML是一個(gè)基于XML的置標(biāo)語言 最主要的不同:
XHTML 元素必須被正確地嵌套。
XHTML 元素必須被關(guān)閉。
標(biāo)簽名必須用小寫字母。
XHTML 文檔必須擁有根元素。
3.Doctype? 嚴(yán)格模式與混雜模式-如何觸發(fā)這兩種模式,區(qū)分它們有何意義?
用于聲明文檔使用那種規(guī)范(html/Xhtml)一般為 嚴(yán)格 過度 基于框架的html文檔 加入XMl聲明可觸發(fā),解析方式更改為IE5.5 擁有IE5.5的bug
4.行內(nèi)元素有哪些?塊級(jí)元素有哪些?CSS的盒模型?
塊級(jí)元素:div p h1 h2 h3 h4 form ul
行內(nèi)元素: a b br i span input select
Css盒模型:內(nèi)容,border ,margin,padding
5.CSS引入的方式有哪些? link和@import的區(qū)別是?
內(nèi)聯(lián) 內(nèi)嵌 外鏈 導(dǎo)入
區(qū)別 :同時(shí)加載
前者無兼容性,后者CSS2.1以下瀏覽器不支持
Link 支持使用javascript改變樣式,后者不可
6.CSS選擇符有哪些?哪些屬性可以繼承?優(yōu)先級(jí)算法如何計(jì)算?內(nèi)聯(lián)和important哪個(gè)優(yōu)先級(jí)高?
標(biāo)簽選擇符 類選擇符 id選擇符
繼承不如指定 Id>class>標(biāo)簽選擇
后者優(yōu)先級(jí)高
7.前端頁面有哪三層構(gòu)成,分別是什么?作用是什么?
結(jié)構(gòu)層 Html 表示層 CSS 行為層 js
8.css的基本語句構(gòu)成是?
選擇器{屬性1:值1;屬性2:值2;……}
9.你做的頁面在哪些流覽器測試過?這些瀏覽器的內(nèi)核分別是什么?
Ie(Ie內(nèi)核) 火狐(Gecko) 谷歌(webkit) opear(Presto)
10.寫出幾種IE6 BUG的解決方法
1.雙邊距BUG float引起的 使用display
2.3像素問題 使用float引起的 使用dislpay:inline -3px
3.超鏈接hover 點(diǎn)擊后失效 使用正確的書寫順序 link visited hover active
4.Ie z-index問題 給父級(jí)添加position:relative
5.Png 透明 使用js代碼 改
6.Min-height 最小高度 !Important 解決’
7.select 在ie6下遮蓋 使用iframe嵌套
8.為什么沒有辦法定義1px左右的寬度容器(IE6默認(rèn)的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)
web面試題及答案(二)
1.標(biāo)簽上title與alt屬性的區(qū)別是什么?
Alt 當(dāng)圖片不顯示是 用文字代表。
Title 為該屬性提供信息
2.描述css reset的作用和用途。
Reset重置瀏覽器的css默認(rèn)屬性 瀏覽器的品種不同,樣式不同,然后重置,讓他們統(tǒng)一
3.解釋css sprites,如何使用。
Css 精靈 把一堆小的圖片整合到一張大的圖片上,減輕服務(wù)器對(duì)圖片的請(qǐng)求數(shù)量
4.瀏覽器標(biāo)準(zhǔn)模式和怪異模式之間的區(qū)別是什么?
盒子模型 渲染模式的不同
使用 window.top.document.compatMode 可顯示為什么模式
5.你如何對(duì)網(wǎng)站的文件和資源進(jìn)行優(yōu)化?期待的解決方案包括:
文件合并
文件最小化/文件壓縮
使用CDN托管
緩存的使用
6.什么是語義化的HTML?
直觀的認(rèn)識(shí)標(biāo)簽 對(duì)于搜索引擎的抓取有好處
7.清除浮動(dòng)的幾種方式,各自的優(yōu)缺點(diǎn)
1.使用空標(biāo)簽清除浮動(dòng) clear:both(理論上能清楚任何標(biāo)簽,,,增加無意義的標(biāo)簽)
2.使用overflow:auto(空標(biāo)簽元素清除浮動(dòng)而不得不增加無意代碼的弊端,,使用zoom:1用于兼容IE)
3.是用afert偽元素清除浮動(dòng)(用于非IE瀏覽器)
8、Doctype作用? 嚴(yán)格模式與混雜模式如何區(qū)分?它們有何意義?
(1)、聲明位于文檔中的最前面,處于標(biāo)簽之前。告知瀏覽器的解析器,用什么文檔類型規(guī)范來解析這個(gè)文檔。
(2)、嚴(yán)格模式的排版和 JS 運(yùn)作模式是 以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行。
(3)、在混雜模式中,頁面以寬松的向后兼容的方式顯示。模擬老式瀏覽器的行為以防止站點(diǎn)無法工作。
(4)、DOCTYPE不存在或格式不正確會(huì)導(dǎo)致文檔以混雜模式呈現(xiàn)。
9、行內(nèi)元素有哪些?塊級(jí)元素有哪些?
(1)CSS規(guī)范規(guī)定,每個(gè)元素都有display屬性,確定該元素的類型,每個(gè)元素都有默認(rèn)的display值, 比如div默認(rèn)display屬性值為“block”,成為“塊級(jí)”元素; span默認(rèn)display屬性值為“inline”,是“行內(nèi)”元素。
(2)行內(nèi)元素有:a b span img input select strong(強(qiáng)調(diào)的語氣) 塊級(jí)元素有:div ulol li dl dtdd h1 h2 h3 h4…p
10、link 和@import 的區(qū)別是?
(1)link屬于XHTML標(biāo)簽,而@import是CSS提供的;
(2)頁面被加載的時(shí),link會(huì)同時(shí)被加載,而@import引用的CSS會(huì)等到頁面被加載完再加載;
(3)import只在IE5以上才能識(shí)別,而link是XHTML標(biāo)簽,無兼容問題;
(4)link方式的樣式的權(quán)重高于@import的權(quán)重.
11、瀏覽器的內(nèi)核分別是什么?
IE瀏覽器的內(nèi)核Trident、Mozilla的Gecko、Chrome的Blink(WebKit的分支)、Opera內(nèi)核原為Presto,現(xiàn)為Blink;
12、HTML5有哪些新特性?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分 HTML 和 HTML5?
HTML5 現(xiàn)在已經(jīng)不是 SGML 的子集,主要是關(guān)于圖像,位置,存儲(chǔ),多任務(wù)等功能的增加。
繪畫 canvas 用于媒介回放的 video 和 audio 元素 本地離線存儲(chǔ) localStorage 長期存儲(chǔ)數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失; sessionStorage 的數(shù)據(jù)在瀏覽器關(guān)閉后自動(dòng)刪除 語意化更好的內(nèi)容元素,比如 article、footer、header、nav、section 表單控件,calendar、date、time、email、url、search 新的技術(shù)webworker, websockt, Geolocation
web面試題及答案(三)
1.說出Servlet的生命周期,并說出Servlet和CGI的區(qū)別?
Web容器加載servlet并將其實(shí)例化后,servlet生命周期開始,容器運(yùn)行其init方法進(jìn)行servlet的初始化,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行于請(qǐng)求對(duì)應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。與CGI的區(qū)別在與servlet處于服務(wù)器進(jìn)程中,它通過多線程方式運(yùn)行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。
2.forward和redirect的區(qū)別?
forward是容器中控制權(quán)的轉(zhuǎn)向,是服務(wù)器請(qǐng)求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。
redirect就是服務(wù)器端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請(qǐng)求那個(gè)地址,一般來說瀏覽器會(huì)用剛才請(qǐng)求的所有參數(shù)重新請(qǐng)求,所以session,request參數(shù)都可以獲取,并且從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。
前者更加高效,在前者可以滿足需要時(shí),盡量使用forward()方法,也有助于隱藏實(shí)際的鏈接;在有些情況下,比如需要跳轉(zhuǎn)到一個(gè)其它服務(wù)器上的資源,則必須使用sendRedirect()方法。
3.JSP中動(dòng)態(tài)include與靜態(tài)include的區(qū)別?
動(dòng)態(tài)include用jsp:include動(dòng)作實(shí)現(xiàn)
它總是會(huì)檢查所包含文件中的變化,適合用于包含動(dòng)態(tài)頁面,并且可以帶參數(shù);靜態(tài)include用include偽碼實(shí)現(xiàn),它不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁面
4.JSP的有哪些內(nèi)置對(duì)象,作用分別是什么?
request:表示HttpServletRequest對(duì)象,它包含了有關(guān)瀏覽器請(qǐng)求的信息,并且提供了幾個(gè)用于獲取cookie,header和session數(shù)據(jù)的有用方法;
response:表示HttpServletResponse對(duì)象,并提供了幾個(gè)用于設(shè)置送回瀏覽器的響應(yīng)的方法(如cookies,頭信息等。)
pageContext:網(wǎng)頁的屬性在這里管理;
session:表示一個(gè)請(qǐng)求的javax.servlet.http.HttpSession對(duì)象,session可以存儲(chǔ)用戶的狀態(tài)信息;
application:表示一個(gè)javax.servlet.ServletContext對(duì)象,這有助于查找有關(guān)servlet引擎和servlet環(huán)境的信息;
out:是javax.jsp.JspWriter的一個(gè)實(shí)例,并提供了幾個(gè)方法使你能用于向?yàn)g覽器回送輸出結(jié)果;
config:表示一個(gè)javax.servlet.ServletConfig對(duì)象,該對(duì)象用于存取servlet實(shí)例的初始化參數(shù);
page:表示從該頁面產(chǎn)生的一個(gè)servlet實(shí)例;
exception:針對(duì)錯(cuò)誤網(wǎng)頁,未捕捉的例外。
5.JSP的常用指令?
6.JSP有哪些動(dòng)作,作用分別是什么?
JSP共有以下6種基本動(dòng)作:
jsp:include:在頁面被請(qǐng)求的時(shí)候引入一個(gè)文件;
jsp:useBean:尋找或者實(shí)例化一個(gè)JavaBean;
jsp:setProperty:設(shè)置JavaBean的屬性;
jsp:getProperty:輸出某個(gè)JavaBean的屬性;
jsp:forward:把請(qǐng)求轉(zhuǎn)到一個(gè)新的頁面;
jsp:plugin:根據(jù)瀏覽器類型為Java插件生成object標(biāo)記。
7.GET和POST的區(qū)別?
form中的get和post方法,在數(shù)據(jù)傳輸過程中分別對(duì)應(yīng)了HTTP協(xié)議中的GET和POST方法。二者主要區(qū)別如下:
① Get是用來從服務(wù)器上獲得數(shù)據(jù),而Post是用來向服務(wù)器上傳遞數(shù)據(jù);
② Get將表單中數(shù)據(jù)按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用“?”連接,而各個(gè)變量之間使用“&”連接;Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量和值相對(duì)應(yīng)的方式,傳遞到action所指向URL;
③ Get是不安全的,因?yàn)樵趥鬏斶^程,數(shù)據(jù)被放在請(qǐng)求的URL中;Post的所有操作對(duì)用戶來說都是不可見的;
④ Get傳輸?shù)臄?shù)據(jù)量小,這主要是因?yàn)槭躑RL長度限制;而Post可以傳輸大量的數(shù)據(jù),所以在上傳文件只能使用Post;
⑤ Get限制form表單的數(shù)據(jù)集必須為ASCII字符,而Post支持整個(gè)ISO10646字符集;
⑥ Get是from的默認(rèn)方法。
8.常用的web容器和開發(fā)工具?
最常用的容器包含:tomcat、weblogic、
開發(fā)工具有:eclipse,jbuilder,JCreator
9.JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),它們之間的聯(lián)系是什么?
Jsp是servlet技術(shù)的擴(kuò)展,本質(zhì)上是servlet的簡易方式,更強(qiáng)調(diào)應(yīng)用的視圖表達(dá)。JSP編譯后是“servlet類”。Servlet和JSP最主要的不同點(diǎn)在于,servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。JSP側(cè)重于視圖,servlet主要用于控制邏輯。