web前端開發(fā)工程師面試題
今天CN人才網(wǎng)小編為大家分享關(guān)于web前端的27個(gè)的面試題。如果能回答上來(lái)這些問(wèn)題,說(shuō)明你已經(jīng)全部掌握web前端核心技能。
快來(lái)測(cè)試測(cè)試自己掌握能力,第一次測(cè)試不要緊張哦!!!
1. class.forname的作用?為什么要用?
1)、獲取Class對(duì)象的方式:類名.class、對(duì)象.getClass()、Class.forName(“類名”);
2)、通過(guò)Class對(duì)象自審
3)、動(dòng)態(tài)調(diào)用方法
2. 在oracle大數(shù)據(jù)量下的分頁(yè)解決方法
頁(yè)面
DB a:自身特點(diǎn)(limit,rownum,row_num函數(shù)) b:ResultSet
數(shù)據(jù)量少,緩存DB: { r* _2 o: B0 r. V; }9 A
3. mySQl的分頁(yè)是怎么實(shí)現(xiàn)的?
Select * from limit 0,3
4. cookie被禁止后怎樣使用session?
request.getSession().setAttribute(“aa”, “ss”);
response.sendRedirect(response.encodeURL(“”));
5. 項(xiàng)目開發(fā)經(jīng)歷了哪幾個(gè)階段
需求分析及變更管理
項(xiàng)目模型及業(yè)務(wù)流程分析
系統(tǒng)分析及建模設(shè)計(jì)
界面設(shè)計(jì)及代碼開發(fā)
系統(tǒng)測(cè)試,部署和文檔編寫
維護(hù)
6. 談?wù)勴?xiàng)目的體系統(tǒng)架構(gòu):客戶層,表示層,業(yè)務(wù)層,數(shù)據(jù)層
客戶層:用來(lái)實(shí)現(xiàn)企業(yè)級(jí)應(yīng)用系統(tǒng)的操作界面和客戶表示,(如HTML和可以顯示W(wǎng)EB頁(yè)面的瀏覽器).
表示層:主要是為企業(yè)提供WEB服務(wù),包括JSP頁(yè)面和Servlet技術(shù).
業(yè)務(wù)層:也叫應(yīng)用層封裝了企業(yè)所有的業(yè)務(wù)邏輯(JAVA Bean,JAVA類).
數(shù)據(jù)層:用來(lái)儲(chǔ)存企業(yè)數(shù)據(jù)信息,(如oracle,mysql).
7. J2EE規(guī)范中的組件技術(shù)在項(xiàng)目中用到了哪些?
JSP,servlet.,JDBC,XML, JNDL,JAVABEAN
8. TCP/IP通訊和UDP通迅的區(qū)別?
1) TCP/IP面向連接,可靠連接,UDP面向不連接,不可靠連接
2)建立連接經(jīng)歷3次握手,udp無(wú)需連接,ip和port封裝在datagram數(shù)據(jù)包中,自尋址。
9. 瀏覽器和WEB服務(wù)器是用什么協(xié)議通迅的?
應(yīng)用層使用的是HTTP協(xié)議,傳輸和路由使用的是TCP/IP
10. 網(wǎng)絡(luò)通訊中,端口有什么含義。端口的取值范圍?
端口用于區(qū)分基于TCP/IP通訊的不同應(yīng)用程序,可以認(rèn)為是計(jì)算機(jī)與外界交流的出口。端口取值范圍>1024,系統(tǒng)使用的端口范圍0 — 1024
11. 說(shuō)出3個(gè)常見協(xié)議的默認(rèn)端口。
21 ftp File Transfer [Control]文件傳輸協(xié)議(控制)
80 http World Wide Web HTTP全球信息網(wǎng)超文本傳輸協(xié)議
25 smtp Simple Mail Transfer簡(jiǎn)單郵件發(fā)送協(xié)議
12. socket是什么,它有什么作用?
Socket是通訊的端點(diǎn)。是黑盒子的出入口。對(duì)于應(yīng)用層來(lái)說(shuō),socket封裝了底層的所有通訊細(xì)節(jié)。
13. TCP/IP通訊的基本步驟是什么?
1)向操作系統(tǒng)注冊(cè):讓操作系統(tǒng)將一個(gè)端口和服務(wù)器通訊進(jìn)程綁定。這個(gè)端口就代表了這通訊進(jìn)程。ServerSocket ss = new ServerSocket(port),服務(wù)端通訊進(jìn)程在port端口監(jiān)聽。
2) Socket socket = serverSocket.accept();取出一個(gè)客戶端的socket連接。如果沒(méi)有客戶端的'連接到來(lái),就一直等待,也就是阻塞狀態(tài)
3)和服務(wù)器建立連接:Socket socket = new Socket(ip地址,port);
如果創(chuàng)建socket對(duì)象成功,代表連接建立。如果拋出異常,連接建立不成功。
4)在發(fā)送方通過(guò)socket獲取輸出流對(duì)象,socket.getOutputStream()并執(zhí)行寫入操作
5)在接收放通過(guò)socket獲取輸入流,socket.getInputStream()并執(zhí)行讀取操作
14. UDP通訊的基本步驟是什么?
創(chuàng)建客服端的DatagramSocket,創(chuàng)建時(shí),定義客服端的監(jiān)聽端口
創(chuàng)建服務(wù)端的DatagramSocket,創(chuàng)建時(shí),定義服務(wù)端的監(jiān)聽端口
在服務(wù)端定義DatagramPaket對(duì)象,封裝待發(fā)送的數(shù)據(jù)包
服務(wù)端講數(shù)據(jù)發(fā)送出去
客服端接收數(shù)據(jù)
15. JDBC訪問(wèn)數(shù)據(jù)庫(kù)的基本步驟是什么(手寫)?
以查詢?yōu)槔?/p>
步驟一:注冊(cè)并加載驅(qū)動(dòng)程序
Class.forName(“oracle.jdbc.driver.OracleDriver”)
步驟二:創(chuàng)建連接
Connection conn = DriverManager.getConnection(url,user,password);
步驟三:創(chuàng)建sql語(yǔ)句對(duì)象
Statement st = conn.createStatement()
步驟四:提交sql語(yǔ)句
String sql = “select * from tablename”;
ResultSet rs = st.executeQuery(sql);
步驟五:顯示結(jié)果
While(rs.next()){
}
步驟六:關(guān)閉連接
Rs.close();
St.close();
Conn.close();
16. 說(shuō)說(shuō)preparedStatement和Statement的區(qū)別
1)提高效率,數(shù)據(jù)庫(kù)系統(tǒng)只編譯一次sql語(yǔ)句。而通過(guò)statement的sql語(yǔ)句每次數(shù)據(jù)庫(kù)系統(tǒng)都會(huì)編譯。
2)防范sql注入攻擊
17. 說(shuō)說(shuō)事務(wù)的概念,在JDBC編程中處理事務(wù)的步驟。
1):事務(wù)(Transaction)是并發(fā)控制的單位,是用戶定義的一個(gè)操作序列。這些操作要么都做,要么都不做,是一個(gè)不可分割的工作單位。
2) JDBC API中使用事務(wù)處理步驟: a.用false作為參數(shù)調(diào)用setAutoCommit方法; b.執(zhí)行一或多個(gè)關(guān)于數(shù)據(jù)庫(kù)的操作; c.調(diào)用commit方法完成改變; d.恢復(fù)上次提交后的改變,調(diào)用rollback()方法
18. 數(shù)據(jù)庫(kù)連接池的原理。為什么要使用連接池。
數(shù)據(jù)庫(kù)連接池在初始化時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫(kù)連接放到連接池中,這些數(shù)據(jù)庫(kù)連接的數(shù)量是由最小數(shù)據(jù)庫(kù)連接數(shù)來(lái)設(shè)定的。無(wú)論這些數(shù)據(jù)庫(kù)連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。連接池的最大數(shù)據(jù)庫(kù)連接數(shù)量限定了這個(gè)連接池能占有的最大連接數(shù),當(dāng)應(yīng)用程序向連接池請(qǐng)求的連接數(shù)超過(guò)最大連接數(shù)量時(shí),這些請(qǐng)求將被加入到等待隊(duì)列中。為了解決資源的頻繁分配,釋放所造成的問(wèn)題,提供高效率的連接分配,實(shí)現(xiàn)連接的高效安全避免了數(shù)據(jù)庫(kù)頻繁建立,關(guān)閉的開銷
19. servlet和jsp有什么關(guān)系?
1;jsp從本質(zhì)上講就是一個(gè)servlet
2;Jsp通過(guò)編譯后,會(huì)生成.java文件,它extends與HttpJspBase.
20. 編寫一個(gè)servlet的步驟。
public calss MyServlet extends HttpServlet(){
public void init(){};
public void destroy(){};
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServlerException,IOException{};
}
web.xml中配置—-
/x
21.HttpservletResponse的sendError方法的作用
向客戶端發(fā)送一個(gè)錯(cuò)誤的HTTP狀態(tài)碼
22.什么情況下使用URL重寫
當(dāng)cookie被禁用后,可以通過(guò)URL重寫將sessionid附加在URL后發(fā)送.
好處:
1.縮短url,隱藏實(shí)際路徑提高安全性
2易于用戶記憶和鍵入。
3易于被搜索引擎收錄
其中詳細(xì)如下
1.通過(guò)URL重寫,把動(dòng)態(tài)地址轉(zhuǎn)換成更容易被搜索引擎收錄的形式-靜態(tài)頁(yè)面地址,是一種對(duì)搜索引擎友好的方法。google雖然可以抓取動(dòng)態(tài)頁(yè)面,但是對(duì)動(dòng)態(tài)頁(yè)面的評(píng)分一般低于靜態(tài)頁(yè)面。所以,對(duì)大量信息發(fā)布的網(wǎng)站,把網(wǎng)站地址改變成靜態(tài)的絕對(duì)是值得的。
2.如果網(wǎng)站改版或目錄結(jié)構(gòu)更改時(shí),很多頁(yè)面的鏈接可能會(huì)發(fā)生變化,許多搜索引擎已索引的頁(yè)面及用戶的歷史收藏可能會(huì)成為死鏈。使用URL重寫技術(shù),則由于可以構(gòu)建虛擬的網(wǎng)站目錄和結(jié)構(gòu),可有效的防止因改版而使搜索引擎已索引的頁(yè)面無(wú)法訪問(wèn)的問(wèn)題,在信息量相同的情況下,反而會(huì)增加可索引的頁(yè)面數(shù)量。如:以前可能會(huì)通過(guò)http://www.xxx.com/news/detail.asp?id=2436訪問(wèn)某個(gè)頁(yè)面,重寫后該頁(yè)面的網(wǎng)址可能會(huì)變成http://www.xxx.com/news/detail/2436.html(甚至可以不用擴(kuò)展名),以這兩種形式的網(wǎng)址訪問(wèn)的真實(shí)頁(yè)面仍然是http://www.xxx.com/news/detail.asp?id=2436。
3.使用URL重寫,通過(guò)URL到URL、URL到文件名,甚至文件名到文件名的轉(zhuǎn)換,為網(wǎng)站建立了一種新的層次清晰、緊湊簡(jiǎn)潔的目錄結(jié)構(gòu),隱藏了真實(shí)的目錄和文件。同時(shí)服務(wù)器可根據(jù)請(qǐng)求中諸如瀏覽器類型、源IP地址等特征來(lái)決定最終提交給客戶的內(nèi)容,或限制某個(gè)列表中主機(jī)對(duì)WEB服務(wù)器的訪問(wèn),極大地提高了網(wǎng)站的安全性。
4.直接生成靜態(tài)頁(yè)面雖然能提高訪問(wèn)速度,但由于該靜態(tài)頁(yè)面一般是在信息發(fā)布時(shí)生成的,會(huì)出現(xiàn)頁(yè)面上的其他信息無(wú)法更新的問(wèn)題,除非以后重新生成所有內(nèi)容頁(yè)面(重新生成應(yīng)該是很耗費(fèi)資源的)。而通過(guò)URL重寫技術(shù),盡管是以靜態(tài)網(wǎng)址發(fā)出請(qǐng)求,但通過(guò)正則表達(dá)式匹配后,對(duì)應(yīng)的仍然是動(dòng)態(tài)網(wǎng)頁(yè),因此不存在數(shù)據(jù)更新的問(wèn)題。
23.doGet和doPost在什么時(shí)候調(diào)用?區(qū)別?
方法GET和HEAD應(yīng)該被所有的通用WEB服務(wù)器支持,其他所有方法的實(shí)現(xiàn)是可選的。GET方法取回由Request-URI標(biāo)識(shí)的信息。HEAD方法也是取回由Request-URI標(biāo)識(shí)的信息,只是可以在響應(yīng)時(shí),不返回消息體。POST方法可以請(qǐng)求服務(wù)器接收包含在請(qǐng)求中的實(shí)體信息,可以用于提交表單,向新聞組、BBS、郵件群組和數(shù)據(jù)庫(kù)發(fā)送消息。
get和post提交的數(shù)據(jù)量是不一樣的.
get好像最多只能在url后跟2K因?yàn)間et只能發(fā)送一個(gè)byte的請(qǐng)求
而post則沒(méi)有限制
建議用Get方法提交數(shù)據(jù)時(shí),字節(jié)大小不要超過(guò)1300,也就是1.3KB。超過(guò)這個(gè)大小就需用POST方法了
24.response對(duì)象的作用
setContentType設(shè)置內(nèi)容格式如AJAX時(shí)
response.setContentType(“text/xml;charset=gbk”)
setHeader設(shè)置響應(yīng)頭response.setHeader(“Cache-Control”,”no-cache”)禁用頁(yè)面緩存
sendError發(fā)送一個(gè)錯(cuò)誤的HTTP狀態(tài)碼
sendRedirect重定向
25.jsp中import指令的作用
導(dǎo)入需要引用的類
26. 文件上傳的步驟與原理
首先
表示這個(gè)表單用post提交的是二進(jìn)制文件.
這種方式提交的話,在serlvet中的request.getparamer(“”);是得不到內(nèi)容的.必須用getIntputStream()來(lái)得到字節(jié)輸入流
通過(guò)字節(jié)輸入流得到3部分:1,分界符.2,頭(普通表單域,文件上傳域).3,消息體(普通表單域的內(nèi)容,文件上傳域的內(nèi)容).
27.ajax的步驟與原理
1,創(chuàng)建一個(gè)XmlHttpRequest對(duì)象.
2,調(diào)用open方法(準(zhǔn)備發(fā)起請(qǐng)求).
open(“提交方式”,”URL地址”,”是否同步(false/true)”).
3,如果是提交方式是post,就需要設(shè)置請(qǐng)求頭.SetrequestHeard(“content-Type”,application/X-www;1;);
4,設(shè)置回調(diào)函數(shù)XmlRequest.onredystatechang=XX;
5,在服務(wù)器端response.setContType(“”);
response.setHeard(“”);
6,通過(guò)判斷XmlHttpRequest.readystatc==4是否會(huì)應(yīng).
XmlHttpRequest.status==200判斷狀態(tài)碼.
7,用XmlRequest.responseText接受文本內(nèi)容
或者是用Xmlrequest.XmlResponse接受Xml內(nèi)容.
【web前端開發(fā)工程師面試題】相關(guān)文章:
web前端開發(fā)工程師面試題匯總07-16
web前端開發(fā)面試題05-31
2015騰訊WEB前端開發(fā)面試題01-31
web前端開發(fā)就業(yè)方向09-07
web前端開發(fā)工程師個(gè)人簡(jiǎn)歷05-07
web前端面試題02-25
最新web前端面試題06-27