前端開發工程師面試題

1. class.forname的做用?爲何要用?html

1)、獲取Class對象的方式:類名.class、對象.getClass()、Class.forName(「類名」);
2)、經過Class對象自審
3)、動態調用方法
java

2. 在oracle大數據量下的分頁解決方法mysql

頁面
DB a:自身特色(limit,rownum,row_num函數) b:ResultSet
數據量少,緩存DB: { r* _2 o: B0 r. V; }9 A
web

3. mySQl的分頁是怎麼實現的?ajax

Select * from limit 0,3正則表達式

4. cookie被禁止後怎樣使用session?sql

request.getSession().setAttribute(「aa」, 「ss」);
response.sendRedirect(response.encodeURL(「」));
數據庫

5. 項目開發經歷了哪幾個階段編程

需求分析及變動管理
項目模型及業務流程分析
系統分析及建模設計
界面設計及代碼開發
系統測試,部署和文檔編寫
維護
瀏覽器

6. 談談項目的體系統架構:客戶層,表示層,業務層,數據層

客戶層:用來實現企業級應用系統的操做界面和客戶表示,(如HTML和能夠顯示WEB頁面的瀏覽器).

表示層:主要是爲企業提供WEB服務,包括JSP頁面和Servlet技術.

業務層:也叫應用層封裝了企業全部的業務邏輯(JAVA Bean,JAVA類).

數據層:用來儲存企業數據信息,(如oracle,mysql).

7. J2EE規範中的組件技術在項目中用到了哪些?

JSP,servlet.,JDBC,XML, JNDL,JAVABEAN

8. TCP/IP通信和UDP通迅的區別?

1) TCP/IP面向鏈接,可靠鏈接,UDP面向不鏈接,不可靠鏈接
2) 創建鏈接經歷3次握手,udp無需鏈接,ip和port封裝在datagram數據包中,自尋址。

9. 瀏覽器和WEB服務器是用什麼協議通迅的?

應用層使用的是 HTTP協議,傳輸和路由使用的是TCP/IP

10. 網絡通信中,端口有什麼含義。端口的取值範圍?

端口用於區分基於TCP/IP通信的不一樣應用程序, 能夠認爲是計算機與外界交流的出口。端口取值範圍>1024,系統使用的端口範圍0 — 1024

11. 說出3個常見協議的默認端口。

21 ftp File Transfer [Control]      文件傳輸協議(控制)
80 http World Wide Web HTTP       全球信息網超文本傳輸協議
25 smtp Simple Mail Transfer       簡單郵件發送協議

12. socket是什麼,它有什麼做用?

Socket是通信的端點。是黑盒子的出入口。對於應用層來講,socket封裝了底層的全部通信細節。

13. TCP/IP通信的基本步驟是什麼?

1) 向操做系統註冊:讓操做系統將一個端口和服務器通信進程綁定。這個端口就表明了這通信進程。ServerSocket ss = new ServerSocket(port),服務端通信進程在port端口監聽。
2) Socket socket = serverSocket.accept();取出一個客戶端的socket鏈接。若是沒有客戶端的鏈接到來,就一直等待,也就是阻塞狀態
3)和服務器創建鏈接:Socket socket = new Socket(ip地址,port);
若是建立socket對象成功,表明鏈接創建。若是拋出異常,鏈接建 立不成功。
4)在發送方經過socket獲取輸出流對象,socket.getOutputStream()並執行寫入操做
5)在接收放經過socket獲取輸入流,socket.getInputStream()並執行讀取操做

14. UDP通信的基本步驟是什麼?

建立客服端的DatagramSocket,建立時,定義客服端的監聽端口
建立服務端的DatagramSocket,建立時,定義服務端的監聽端口
在服務端定義DatagramPaket對象,封裝待發送的數據包
服務端講數據發送出去
客服端接收數據

15. JDBC訪問數據庫的基本步驟是什麼(手寫)?

以查詢爲例:
步驟一:註冊並加載驅動程序
Class.forName(「oracle.jdbc.driver.OracleDriver」)
步驟二:建立鏈接
Connection conn = DriverManager.getConnection(url,user,password);
步驟三:建立sql語句對象
Statement st = conn.createStatement()
步驟四:提交sql語句
String sql = 「select * from tablename」;
ResultSet rs = st.executeQuery(sql);
步驟五:顯示結果
While(rs.next()){

}
步驟六:關閉鏈接
Rs.close();
St.close();
Conn.close();

16. 說說preparedStatement和Statement的區別

1) 提升效率,數據庫系統只編譯一次sql語句。而經過statement的sql語句每次數據庫系統都會編譯。
2) 防範sql注入攻擊

17. 說說事務的概念,在JDBC編程中處理事務的步驟。

1):事務(Transaction)是併發控制的單位,是用戶定義的一個操做序列。這些操做要麼都作,要麼都不作,是一個不可分割的工做單位。
2) JDBC API中使用事務處理步驟: a. 用false做爲參數調用setAutoCommit方法; b. 執行一或多個關於數據庫的操做; c. 調用commit方法完成改變; d. 恢復上次提交後的改變,調用rollback()方法

18. 數據庫鏈接池的原理。爲何要使用鏈接池。

數據庫鏈接池在初始化時將建立必定數量的數據庫鏈接放到鏈接池中,這些數據庫鏈接的數量是由最小數據庫鏈接數來設定的。不管這些數據庫鏈接是否被使用,鏈接池都將一直保證至少擁有這麼多的鏈接數量。鏈接池的最大數據庫鏈接數量限定了這個鏈接池能佔有的最大鏈接數,當應用程序向鏈接池請求的鏈接數超過最大鏈接數量時,這些請求將被加入到等待隊列中。爲了解決資源的頻繁分配,釋放所形成的問題,提供高效率的鏈接分配,實現鏈接的高效安全避免了數據庫頻繁創建,關閉的開銷

19. servlet和jsp有什麼關係?

1;jsp從本質上講就是一個servlet
2;Jsp經過編譯後,會生成.java 文件,它extends與HttpJspBase.

20. 編寫一個servlet的步驟。
public calss MyServlet extends HttpServlet(){
public void init(){};
public void destroy(){};
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServlerException,IOException{};
}

web.xml中配置—-
<servlet>
<serlvet-name> </>
<serlvet-calss></>
</servlet>
<serlvet-mapping>
<serlvet-name></>
<url-pattern>/x</>
</serlvet-mapping>

21.HttpservletResponse的sendError方法的做用
向客戶端發送一個錯誤的HTTP狀態碼

22.什麼狀況下使用URL重寫
當cookie被禁用後,能夠經過URL重寫將sessionid附加在URL後發送.
好處:
1.縮短url,隱藏實際路徑提升安全性
2 易於用戶記憶和鍵入。
3 易於被搜索引擎收錄

其中詳細以下
1.經過URL重寫,把動態地址轉換成更容易被搜索引擎收錄的形式-靜態頁面地址,是一種對搜索引擎友好的方法。google雖然能夠抓取動態頁面,可是對動態頁面的評分通常低於靜態頁面。因此,對大量信息發佈的網站,把網站地址改變成靜態的絕對是值得的。
2.若是網站改版或目錄結構更改時,不少頁面的連接可能會發生變化,許多搜索引擎已索引的頁面及用戶的歷史收藏可能會成爲死鏈。使用URL重寫技術,則因爲能夠構建虛擬的網站目錄和結構,可有效的防止因改版而使搜索引擎已索引的頁面沒法訪問的問題,在信息量相同的狀況下,反而會增長可索引的頁面數量。如:之前可能會經過http://www.xxx.com/news/detail.asp?id=2436訪問某個頁面,重寫後該頁面的網址可能會變成 http://www.xxx.com/news/detail/2436.html(甚至能夠不用擴展名),以這兩種形式的網址訪問的真實頁面仍然是 http://www.xxx.com/news/detail.asp?id=2436
3.使用URL重寫,經過URL到URL、URL到文件名,甚至文件名到文件名的轉換,爲網站創建了一種新的層次清晰、緊湊簡潔的目錄結構,隱藏了真實的目錄和文件。同時服務器可根據請求中諸如瀏覽器類型、源IP地址等特徵來決定最終提交給客戶的內容,或限制某個列表中主機對WEB服務器的訪問,極大地提升了網站的安全性。
4.直接生成靜態頁面雖然能提升訪問速度,但因爲該靜態頁面通常是在信息發佈時生成的,會出現頁面上的其餘信息沒法更新的問題,除非之後從新生成全部內容頁面(從新生成應該是很耗費資源的)。而經過URL重寫技術,儘管是以靜態網址發出請求,但經過正則表達式匹配後,對應的仍然是動態網頁,所以不存在數據更新的問題。

23.doGet和doPost在何時調用?區別?

方法GET和HEAD應該被全部的通用WEB服務器支持,其餘全部方法的實現是可選的。GET方法取回由Request-URI標識的信息。HEAD方法也是取回由Request-URI標識的信息,只是能夠在響應時,不返回消息體。POST方法能夠請求服務器接收包含在請求中的實體信息,能夠用於提交表單,向新聞組、BBS、郵件羣組和數據庫發送消息。
get和post提交的數據量是不同的.
get好像最多隻能在url後跟2K 由於get只能發送一個byte的請求
而post則沒有限制
建議用Get方法提交數據時,字節大小不要超過1300,也就是1.3KB。超過這個大小就需用POST方法了

24.response對象的做用

setContentType設置內容格式 如AJAX時response.setContentType(「text/xml;charset=gbk」)
setHeader設置響應頭 response.setHeader(「Cache-Control」,」no-cache」)禁用頁面緩存
sendError 發送一個錯誤的HTTP狀態碼
sendRedirect 重定向

25.jsp中import指令的做用
導入須要引用的類

26 文件上傳的步驟與原理

首先<from enctepy=」multiptart/form-data」 method=」post」>
表示這個表單用post提交的是 二進制文件.
這種方式提交的話,在serlvet中的request.getparamer(「」);是得不到內容的.必須用 getIntputStream()來獲得字節輸入流
經過字節輸入流獲得3部分:1,分界符.2,頭(普通表單域,文件上傳域).3,消息體(普通表單域的內容,文件上傳域的內容).

27.ajax的步驟與原理

1,建立一個XmlHttpRequest對象.
2,調用open方法 (準備發起請求).
open(「提交方式」,」URL地址」,」是否同步(false/true)」).

3,若是是提交方式是post,就須要設置請求頭.SetrequestHeard(「content-Type」,application/X-www;1;);

4,設置回調函數 XmlRequest.onredystatechang=XX;

5,在服務器端 response.setContType(「」);
response.setHeard(「」);

6,經過判斷XmlHttpRequest.readystatc==4 是否會應.
XmlHttpRequest.status==200 判斷狀態碼.

7,用XmlRequest.responseText 接受文本內容或者是用Xmlrequest.XmlResponse接受Xml內容.

相關文章
相關標籤/搜索