一、 JDBC 4
1、 Java中訪問數據庫的步驟 4
2、 Statement,PreparedStatement,CallableStatement的功能、特點。 4
3、 如何利用JDBC的API獲得插入數據的主鍵值 4
4、 Tomcat連接池如何配置 4
二、 JSP 4
5、 JSP中動態INCLUDE與靜態INCLUDE的寫法是什么,區別是什么 4
6、 9大隱式對象 4
7、 EL和JSTL分別是什么 4
8、 post和get有什么異同,實現文件上傳要用哪種方式 4
9、 Request、Response對象的主要方法 4
10、 jsp和html注釋有什么區別 4
11、 常見EL表達式的用法 5
12、 JSP的內置對象有那些及常用方法 5
13、 Session與Cookie的區別 5
三、 Servlet 5
14、 Servlet的生命周期 5
15、 Servlet的基本架構 5
16、 JSP和Servlet有哪些相同點和不同點,他們之間的聯系是什么? 5
17、 簡述Model1,Model2 5
18、 重定向和轉發的區別,對應的方法是什么? 5
19、 servletconfig和servletcontext 5
20、 簡述開發一個servlet的步驟(非工具生成) 5
21、 getAttribute() 5
22、 過濾器的原理,責任鏈設計模式的應用 6
23、 請寫出在你在web程序設計時,處理中文字符編碼問題的一些經驗 6
24、 forward 和redirect 的區別? 6
25、 JSP 中動態INCLUDE 與靜態INCLUDE 的區別?【基礎】 6
26、 JSP 的常用指令?【基礎】 6
27、 jsp 有哪些動作?作用分別是什么? 【基礎】 6
28、 jsp 有哪些內置對象?作用分別是什么? 【基礎】 6
29、 get 和post 的區別?【基礎】 7
30、 什么情況下調用doGet()和doPost()?【基礎】 7
31、 如何從form 表單中得取checkbox 的值;【基礎】 7
32、 JSP 和Servlet 有哪些相同點和不同點,他們之間的聯系是什么?【基礎】 7
33、 jsp 的四種范圍?【基礎】 7
34、 Request 對象的主要方法? 【基礎】 7
35、 如何實現servlet 的單線程模式?【基礎】 8
36、 頁面間對象傳遞的方法。【基礎】 8
37、 詳細描述MVC。【基礎】 8
38、 MVC 的各個部分都有那些技術來實現?如何實現? 【基礎】 8
39、 BS 與CS 的聯系與區別?【基礎】 8
40、 幾種會話跟蹤技術?【基礎】 9
41、 過濾器有哪些作用?【基礎】 9
42、 介紹在JSP 中如何使用JavaBeans?【基礎】 9
43、 JSP 和Servlet 中的請求轉發分別如何實現?【基礎】 9
44、 Web.Xml 的作用?【基礎】 9
45、 寫出熟悉的JSTL 標簽。【基礎】 9
46、 JSP 內置對象作用,如何取Cookie 的方法 9
47、 通過部署描述文件(web.xml)可以配置哪些功能? 10
48、 JSP 有哪些的動作?分別有什么作用? 10
49、 JSP 與SERVLET 區別 10
50、 Tomcat 的class 加載的優先順序一覽 10
51、 Servlet 與CGI 的區別 10
52、 Servlet 中的init()方法什么時候被調用? 10
53、 用什么方法使服務器關閉之后,session 所保存的信息不會丟失? 10
54、 Servlet 的生命周期分為3 個階段? 和CGI 的區別? 11
55、 描述Cookie 和Session 的作用?區別和各自的應用范圍?Session 工作原理 11
56、 dao 是什么及作用 11
57、 解釋一下什么是servlet 11
58、 HTTP 請求的GET 與POST 方式的區別 11
59、 什么情況下調用doGet()和doPost()? 11
60、 request 對象的主要方法 11
61、 request.getAttribute() 和request.getParameter() 有何區別? 12
62、 jsp 有哪些內置對象?作用分別是什么? 分別有什么方法? 12
63、 JSP 的常用指令 12
64、 頁面間對象傳遞的方法 12
65、 MVC 的各個部分都有那些技術來實現?如何實現? 12
66、 Web 系統安全因素有哪些? 12
67、 我們在web 應用開發過程中經常遇到輸出某種編碼的字符,如iso8859-1 等,如何輸出一個某種編碼的字符串? 13
68、 web 運用程序的穩定、安全需要考慮哪些? 13
69、 介紹幾種WEB 服務器,問Tomcat 里面的文件組成? 13
70、 將ISO8859-1 字符串轉成GB2312 編碼,語句為? 13
71、 <jsp:include>與<%@include>的區別 13
72、 說出數據連接池的工作機制是什么? 13
73、 如何實現Servlet 單線程 13
74、 哪些方法可以提高JDBC 性能? 13
75、 Web 容器里面的對象存活周期? 13
76、 瀏覽器頁面與Tomcat 的交互過程? 14
四、 數據庫 14
77、 SQL 有哪三種注入方式?SQL 安全 14
78、 數據庫事務及隔離級別bbvrbtg 14
79、 事務四大屬性 14
80、 說說存儲過程定義,並描述一下優點和缺點? 14
82、 SqlServer 的完整性約束? 14
83、 一張學生表student,有字段班級classid,學號id,成績grade 15
84、 寫一條SQL 語句,查詢姓張學生中平均成績大於75 的學生信息 15
85、 查一下每門課程都大於80 的學生姓名 15
86、 truncate 與delete 的區別?(delete from table 和truncate table 的區別!) 15
87、 一學生表!有班及id,學號!成績!一求平均成績!二求比平均成績高的學生的所有信息 15
88、 查詢出M 頁的N 行數據(分頁的實現,求第M 也的記錄數) 15
89、 數據庫三范式是什么? 15
90、 join 與left join 的區別: 16
91、 用sql 語句分頁: 16
92、 oracle 中row_id 理解 16
93、 嵌入式數據庫和傳統數據庫的區別 16
94、 Inserted 和deleted 的含義? 16
95、 函數和過程的區別? 16
96、 數據庫優化的方案 16
97、 Oracle 中有哪幾種索引 16
98、 數據庫索引的優點和缺點 17
99、 觸發器有幾種? 17
100、 oracle 中除了數據庫備份,還有什么方法備份? 17
101、 寫出刪除表中重復記錄的語句oracle 17
102、 數據庫里面游標,索引是怎么用的? 17
103、 在Oracle 中數據庫中的一個表中,這個表沒有主鍵id 也沒有特定標示來查數據,怎么查? 17
104、 大數據量下的分頁解決方法 17
105、 寫一個用jdbc 連接並訪問oracle 數據的程序代碼 18
106、 JavaScript 有哪幾種數據類型 18
107、 在js 編碼中innerHTML,outhtml,innertext 區別 18
108、 寫一個簡單的json 對象? 18
109、 什么是json ,jquery? 18
110、 jQuery 中有id 為foo 的對象有att 屬性,如何獲取att 屬性的值? 18
111、 jQuery 中添加文本怎么寫在div 中 18
112、 你為什么要使用jquery? 18
113、 你使用jquery 遇到過哪些問題,你是怎么解決的? 18
114、 你知道jquery 中的選擇器嗎,請講一下有哪些選擇器? 19
115、 jquery 中的選擇器和css 中的選擇器有區別嗎? 19
116、 你覺得jquery 中的選擇器有什么優勢? 19
117、 你在使用選擇器的時候有有沒有什么覺得要注意的地方? 19
118、 jquery 對象和dom 對象是怎樣轉換的? 19
119、 你是如何使用jquery 中的ajax 的? 19
120、 你覺得jquery 中的ajax 好用嗎,為什么? 19
121、 jquery 中$.get()提交和$.post()提交有區別嗎? 19
122、 jquery 中的load 方法一般怎么用的? 19
123、 在jquery 中你是如何去操作樣式的? 19
124、 簡單的講敘一下jquery 是怎么處理事件的,你用過哪些事件? 19
125、 你使用過jquery 中的動畫嗎,是怎樣用的? 19
126、 你使用過jquery 中的插件嗎? 20
127、 你一般用什么去提交數據,為什么? 20
128、 在jquery 中引入css 有幾種方式? 20
129、 你在jquery 中使用過哪些插入節點的方法,它們的區別是什么? 20
130、 你使用過包裹節點的方法嗎,包裹節點有方法有什么好處? 20
131、 jquery 中如何來獲取或和設置屬性? 20
132、 如何來設置和獲取HTML 和文本的值? 20
133、 你jquery 中有哪些方法可以遍歷節點? 20
134、 子元素選擇器和后代選擇器元素有什么區別? 20
135、 在jquery 中可以替換節點嗎? 20
136、 你覺得beforeSend 方法有什么用? 20
137、 siblings() 方法和$('prev~div')選擇器是一樣的嘛? 20
138、 你在ajax 中使用過JSON 嗎,你是如何用的? 21
139、 有哪些查詢節點的選擇器? 21
140、 nextAll() 能替代$('prev~siblindgs')選擇器嗎? 21
141、 jQuery 中有幾種方法可以來設置和獲取樣式 21
142、 $(document).ready()方法和window.onload 有什么區別? 21
143、 jQuery 是如何處理緩存的? 21
144、 $.getScript()方法和$.getJson() 方法有什么區別? 21
145、 你讀過哪些有關於jQuery 的書嗎? 21
146、 $("#msg").text(); 和$("#msg").text("<b>new content</b>");有什么區別? 21
147、 radio 單選組的第二個元素為當前選中值,該怎么去取? 21
148、 選擇器中id,class 有什么區別? 21
149、 你使用過哪些數據格式,它們各有什么特點? 21
150、 jQuery 能做什么? 22
151、 在ajax 中data 主要有幾種方式? 22
152、 jQuery 中的hover()和toggle()有什么區別? 22
153、 你知道jQuery 中的事件冒泡嗎,它是怎么執行的,何如來停止冒泡事件? 22
154、 例如單擊超鏈接后會自動跳轉,單擊"提交"按鈕后表單會提交等,有時候我想阻止這些默認的行為,該怎么辦? 22
155、 jquery 表單提交前有幾種校驗方法?分別為?? 22
156、 在jquery 中你有沒有編寫過插件,插件有什么好處?你編寫過那些插件?它應該注意那些? 22
157、 怎樣給jquery 動態附加新的元素?那么怎樣給新生成的元素綁定事件呢? 22
158、 IE 與FireFox 腳本兼容性問題 22
159、 css+div 的優勢 23
160、 DIV 和Span 的區別? 23
161、 css 是什么層疊樣式表 23
162、 xml 有哪些解析技術,有什么區別? 23
163、 ajax 的工作原理? 23
164、 在javascript 中設置定時調用myfun()函數(周期為1 秒)的代碼是? 23
165、 XML 文檔定義有幾種形式?它們之間有何本質區別?解析XML 文檔有哪幾種方式? 23
166、 HTTP 請求返回的狀態碼有哪些?分別有什么含義? 24
167、 二叉樹遍歷有幾種方法 24
168、 JSON 和XML 的優缺點 24
一、 JDBC
1、 Java中訪問數據庫的步驟
導入驅動包、獲得連接、獲取語句對象、獲得結果集、關閉結果集、語句對象、連接。
2、 Statement,PreparedStatement,CallableStatement的功能、特點。
Statement,用於執行靜態 SQL 語句並返回它所生成結果的對象;(只執行一次的語句用這個)
PreparedStatement,表示預編譯的 SQL 語句的對象,執行前可以進行賦值操作;(反復使用的語句用這個,有效的防止sql注入)
CallableStatement執行存儲過程,預編譯的,帶參數的; 通過Sql=”{call 存儲過程的名稱(參數)}”;
3、 如何利用JDBC的API獲得插入數據的主鍵值
PreparedStatement pstmt = con.prepareStatement(“asdfsdf”,Statement.RETURN_GENERAT_KEYS);
pstmt.executeUpdate();
ResultSet rs = pstmt.getGeneratedKeys();
4、 Tomcat連接池如何配置
6以上:在MATE-INF下配置context.xml;
5.5:conf/server.xml配置,在conf/context.xml加入鏈接;並在WEB-INF/web.xml下配置數據源
二、 JSP
5、 JSP中動態INCLUDE與靜態INCLUDE的寫法是什么,區別是什么
解析方式 可否傳參數
動態include:<jsp:include page=”test.jsp” flush=”true”/> 可以傳參,適合包含動態頁面,可以動態刷新;
靜態include:<%@include file=”test.html” %> 只包含頁面代碼,不能傳參數。
6、 9大隱式對象
將對象的作用一起說出來
輸入、輸出對象:request、response、out
作用域對象:pageContext、session、application
servlet對象:page(代表servlet對象)、config(servlet配置)
錯誤對象:Exception isErrorPage=”true”
7、 EL和JSTL分別是什么
EL: Expression Language 表達式語言 ${}幫助我們方便的使用表達式寫法
JSTL: java Standard tag Library java標准標簽庫;把java代碼從頁面中分離出來,簡化開發,類似與html風格
8、 post和get有什么異同,實現文件上傳要用哪種方式
post:傳遞的參數隱藏了,長度更長,更安全;文件上傳只能用post
get:傳遞的參數在url后面;長度有限:255
9、 Request、Response對象的主要方法
按三個方面:設置編碼格式. 獲取參數內容 (getAttribute().....). 頁面跳轉方式
request:getAttribute()、setAttribute()、getParameter()、getParameterValues()、setCharaterEncoding()
response:setCharaterEcoding()、獲得其他對象的方法。。。
10、 jsp和html注釋有什么區別
Html看的到、jsp看不到
11、 常見EL表達式的用法
${}
12、 Session與Cookie的區別
Session和cookie都是 跟蹤回話的技術
Session:會話跟蹤,服務器端維護
Cookie:存儲用戶臨時數據,客戶端維護;javax.servlet.http.Cookie
三、 Servlet
13、 Servlet的生命周期
初始化、實例化、服務、銷毀
服務器加載servlet、服務器創建servlet實例、調用servlet實例的init方法、收到請求、調用service方法、調用doXxx方法處理請求並將輸出結果返回客戶端、等待下一個請求或由服務器卸載、調用destroy方法后被卸載。
javax.servlet
javax.servlet.http
Servlet接口》》GenericServlet抽象類》》HttpServlet抽象列》》用戶自定義Servlet;
容器提供實現;
init()、service()、doXxx()、destroy()
14、 JSP和Servlet有哪些相同點和不同點,他們之間的聯系是什么?
都是實現javaWEB的手段,JSP側重試圖,Servlet主要用於控制邏輯;
jsp:servlet的簡易方式,由java和html組合成一個.jsp文件,編譯后是一個“類servlet”
15、 簡述Model1,Model2
都是MVC設計模式
Model1:jsp+javabeans,M由javabeans實現;V、C放在jsp中
Model2:jsp+servlet+javabeans,M:javabeans,V:jsp,C:servlet
16、 重定向和轉發的區別,對應的方法是什么?
響應次數. 地址欄的改變與否 是否帶參數 , 說明他們都是跳轉頁面的方法
重定向:redirect,告訴瀏覽器請求另一個地址,地址欄url改變
轉 發:forward,請求不中斷,轉發到另一個資源,請求另一個地址后再把返回類容返回給客戶端,地址欄url不改變
17、 servletconfig和servletcontext
servletconfig:servlet的配置,init方法傳入的參數。
servletcontext:容器維護的一塊存儲空間,存放當前環境的一些信息和servlet相關信息,表示一個作用域。
18、 簡述開發一個servlet的步驟(非工具生成)
繼承HttpServlet抽象類,可以實現:init、destroy、doXxx,在web.xml中配置servlet、servlet-mapping
19、 getAttribute()
獲得屬性,取出數據
20、 過濾器的原理,責任鏈設計模式的應用
向web應用程序的請求和響應處理添加功能的web服務組件,處在用戶和web資源中間。
過濾器鏈FilterChain接口,調用過濾器鏈中的一系列過濾器。
21、 請寫出在你在web程序設計時,處理中文字符編碼問題的一些經驗
<%@ page pageEcoding=”utf-8” %>表示由jsp頁面轉譯成servlet使用的編碼形式
<%@ page contentType=”text/html; charset=utf-8” %>請求發送的信息和響應消息的編碼
工程的屬性也使用UTF-8
22、 forward 和redirect 的區別?
答:forward 是容器中控制權的轉向,是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL 的響應內容讀取過來,然后把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,所以它的地址欄中還是原來的地址。redirect 就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數重新請求,所以session,request 參數都可以獲取,並且從瀏覽器的地址欄中可以看到跳轉后的鏈接地址。前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,並且,這樣也有助於隱藏實際的鏈接;在有些情況下,比如,需要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。
23、 JSP 中動態INCLUDE 與靜態INCLUDE 的區別?【基礎】
答:動態INCLUDE 用jsp:include 動作實現<jsp:include page="included.jsp"flush="true" />它總是會檢查所含文件中的變化,適合用於包含動態頁面,並且可以帶參數;靜態INCLUDE 用include 偽碼實現,它不會檢查所含文件的變化,適用於包含靜態頁面<%@ include file="included.htm" %>
24、 JSP 的常用指令?【基礎】
25、 jsp 有哪些動作?作用分別是什么? 【基礎】
答:JSP 共有以下6 種基本動作:
jsp:include:在頁面被請求的時候引入一個文件;
jsp:useBean:尋找或者實例化一個JavaBean。;
jsp:setProperty:設置JavaBean 的屬性。;
jsp:getProperty:輸出某個JavaBean 的屬性;
jsp:forward:把請求轉到一個新的頁面;
Jsp:param
jsp:plugin:根據瀏覽器類型為Java 插件生成OBJECT 或EMBED 標記。
26、 jsp 有哪些內置對象?作用分別是什么? 【基礎】
答:JSP 共有以下9 種基本內置組件(可與ASP 的6 種內部組件相對應):
request:用戶端請求,此請求會包含來自GET/POST 請求的參數;
response:網頁傳回用戶端的回應;
pageContext:網頁的屬性是在這里管理;
session:與請求有關的會話期;
application:servlet 正在執行的內容;
out:用來傳送回應的輸出;
config:servlet 的構架部件;
page:JSP 網頁本身;
exception:針對錯誤網頁,未捕捉的例外。
27、 get 和post 的區別?【基礎】
答:Form 中的get 和post 方法,在數據傳輸過程中分別對應了HTTP 協議中的GET 和POST 方法。二者主要區別如下:+
1)Get 是用來從服務器上獲得數據,而Post 是用來向服務器上傳遞數據;
2)Get 將表單中數據按照variable=value 的形式,添加到action 所指向的URL 后面,並且兩者使用“?”連接,而各個變量之間使用“&”連接;Post 是將表單中的數據放在form 的數據體中,按照變量和值相對應的方式,傳遞到action所指向URL;
3)Get 是不安全的,因為在傳輸過程,數據被放在請求的URL 中;Post 的所有操作對用戶來說都是不可見的;
4)Get 傳輸的數據量小,這主要是因為受URL 長度限制;而Post 可以傳輸大量的數據,所以在上傳文件只能使用Post;
5)Get 限制Form 表單的數據集必須為ASCII 字符,而Post 支持整個ISO10646字符集;
6)Get 是Form 的默認方法
28、 什么情況下調用doGet()和doPost()?【基礎】
答:Jsp 頁面中的form 標簽里的method 屬性為get 時調用doGet(),為post時調用doPost()。
29、 如何從form 表單中得取checkbox 的值;【基礎】
答:可在頁面把checkbox 的name 屬性取同一個,value 屬性取每個條目的id,后台用getParamter(“name”)能取到checkbox 的一組值。
30、 JSP 和Servlet 有哪些相同點和不同點,他們之間的聯系是什么?【基礎】
答:JSP 是Servlet 技術的擴展,本質上是Servlet 的簡易方式,更強調應用的外表表達。JSP 編譯后是"類servlet"。Servlet 和JSP 最主要的不同點在於,Servlet 的應用邏輯是在Java 文件中,並且完全從表示層中的HTML 里分離開來。而JSP 的情況是Java 和HTML 可以組合成一個擴展名為.jsp 的文件。JSP 側重於視圖,Servlet 主要用於控制邏輯。
31、 jsp 的四種范圍?【基礎】
答:a.page 是代表與一個頁面相關的對象和屬性。一個頁面由一個編譯好的Java servlet 類(可以帶有任何的include 指令,但是沒有include 動作)表示。這既包括servlet 又包括被編譯成servlet 的JSP 頁面 b.request 是代表與Web 客戶機發出的一個請求相關的對象和屬性。一個請求可能跨越多個頁面,涉及多個Web 組件(由於forward 指令和include 動作的關系) c.session 是代表與用於某個Web 客戶機的一個用戶體驗相關的對象和屬性。一個Web 會話可以也經常會跨越多個客戶機請求 d.application 是代表與整個Web 應用程序相關的對象和屬性。這實質上是跨越整個Web 應用程序,包括多個頁面、請求和會話的一個全局作用域。
32、 Request 對象的主要方法? 【基礎】
答:setAttribute(String name,Object):設置名字為name 的屬性值
getAttribute(String name):返回由name 指定的屬性值
getAttributeNames():返回request 對象所有屬性的名字集合(枚舉)
getCookies():返回客戶端的所有Cookie 對象,結果是一個Cookie 數組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body 的長度
getHeader(String name):獲得HTTP 協議定義的文件頭信息
getHeaders(String name):返回指定名的request Header 的所有值(枚舉)
getHeaderNames():返回所有request Header 的名字(枚舉)
getInputStream():返回請求的輸入流,用於獲得請求中的數據
getMethod():獲得客戶端向服務器端傳送數據的方法
getParameter(String name):獲得客戶端請求中傳送的name 指定的參數值
getParameterNames():獲得客戶端傳送給服務器端的所有參數的名字(枚舉)
getParameterValues(String name):獲得有name 指定的參數的所有值
getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱
getQueryString():獲得查詢字符串
getRequestURI():獲取發出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP 地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關Session
getServerName():獲取服務器的名字`
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務器的端口號
removeAttribute(String name):刪除請求中的一個屬性
33、 如何實現servlet 的單線程模式?【基礎】
答:<%@page isThreadSafe=”false”%>
34、 頁面間對象傳遞的方法。【基礎】
答:request,session,application,cookie 等。
35、 詳細描述MVC。【基礎】
答:基於Java 的Web 應用系統采用MVC 架構模式,即model(模型)、view(視圖)、control(控制)分離設計;這是目前WEB 應用服務系統的主流設計方向。
Model:即處理業務邏輯的模塊,每一種處理一個模塊;
View:負責頁面顯示,顯示MODEL 處理結果給用戶,主要實現數據到頁面轉換過程;
Control:負責每個請求的分發,把FORM 數據傳遞給MODEL 處理,把處理結果的數據傳遞給VIEW 顯示。
36、 MVC 的各個部分都有那些技術來實現?如何實現? 【基礎】
答:MVC 是Model-View-Controller 的簡寫。"Model" 代表的是應用的業務邏輯(通過JavaBean,EJB 組件實現), "View" 是應用的表示面(由JSP 頁面產生),"Controller" 是提供應用的處理過程控制(一般是一個Servlet),通過這種設計模型把 應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用
37、 BS 與CS 的聯系與區別?【基礎】
答:C/S 是Client/Server 的縮寫,是客戶機與服務器結構的應用程序,服務器通常采用高性能的PC、工作站或小型機,並采用大型數據庫系統,如Oracle、Sybase、Informix 或SQL Server。客戶端需要安裝專用的客戶端軟件。B/S是Brower/Server 的縮寫,是瀏覽器和服務器結構的應用程序,即Web 應用程序,客戶機上只要安裝一個瀏覽器(Browser),如Netscape Navigator 或InternetExplorer,服務器安裝Oracle、Sybase、Informix 或SQL Server 等數據庫。在這種結構下,用戶界面完全通過WWW 瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在服務器端實現。瀏覽器通過Web Server 同數據庫進行數據交互。
C/S 與B/S 區別:
1)硬件環境不同:
C/S 一般建立在專用的網絡上, 小范圍里的網絡環境, 局域網之間再通過專門服務器提供連接和數據交換服務;B/S 建立在廣域網之上的, 不必是專門的網絡硬件環境,例與電話上網, 租用設備. 信息自己管理. 有比C/S 更強的適應范圍, 一般只要有操作系統和瀏覽器就行;
2)對安全要求不同:
C/S 一般面向相對固定的用戶群, 對信息安全的控制能力很強. 一般高度機密的信息系統采用C/S 結構適宜. 可以通過B/S 發布部分可公開信息;B/S 建立在廣域網之上, 對安全的控制能力相對弱, 可能面向不可知的用戶;
3)對程序架構不同:
C/S 程序可以更加注重流程, 可以對權限多層次校驗, 對系統運行速度可以較少考慮;B/S 對安全以及訪問速度的多重的考慮, 建立在需要更加優化的基礎之上.比C/S 有更高的要求B/S 結構的程序架構是發展的趨勢, 從MS 的.Net 系列的BizTalk 2000 Exchange 2000 等, 全面支持網絡的構件搭建的系統. SUN 和IBM 推的JavaBean 構件技術等,使B/S 更加成熟;
4)軟件重用不同:
C/S 程序可以不可避免的整體性考慮, 構件的重用性不如在B/S 要求下的構件的重用性好;B/S 對的多重結構,要求構件相對獨立的功能. 能夠相對較好的重用.就入買來的餐桌可以再利用,而不是做在牆上的石頭桌子;
5)系統維護不同:
C/S 程序由於整體性, 必須整體考察, 處理出現的問題以及系統升級. 升級難. 可能是再做一個全新的系統;B/S 構件組成,方面構件個別的更換,實現系統的無縫升級. 系統維護開銷減到最小.用戶從網上自己下載安裝就可以實現升級;
6)處理問題不同:
C/S 程序可以處理用戶面固定, 並且在相同區域, 安全要求高需求, 與操作系統相關. 應該都是相同的系統;B/S 建立在廣域網上, 面向不同的用戶群, 分散地域, 這是C/S 無法作到的. 與操作系統平台關系最小;
7)用戶接口不同:
C/S 多是建立的Window 平台上,表現方法有限,對程序員普遍要求較高;B/S 建立在瀏覽器上, 有更加豐富和生動的表現方式與用戶交流. 並且大部分難度減低,減低開發成本;
8)信息流不同:
C/S 程序一般是典型的中央集權的機械式處理, 交互性相對低;B/S 信息流向可變化, B-B B-C B-G 等信息、流向的變化, 更像交易中心。
38、 幾種會話跟蹤技術?【基礎】
Session Cookie URL重寫 隱藏域表單
39、 過濾器有哪些作用?【基礎】
答:可以驗證客戶是否來自可信的網絡,可以對客戶提交的數據進行重新編碼,可以從系統里獲得配置的信息,可以過濾掉客戶的某些不應該出現的詞匯,可以驗證用戶是否登錄,可以驗證客戶的瀏覽器是否支持當前的應用,可以記錄系統的日志等等。
40、 介紹在JSP 中如何使用JavaBeans?【基礎】
答:在JSP 中使用JavaBean 常用的動作有:
1)<jsp:useBean />:用來創建和查找bean 對象;
2)<jsp:setProperty />:用來設置bean 的屬性,即調用其setXxx()方法;
3)<jsp:getProperty />:用來獲得bean 的屬性,即調用其getXxx()方法。
41、 JSP 和Servlet 中的請求轉發分別如何實現?【基礎】
答:JSP 中的請求轉發可利用forward 動作實現:<jsp:forward />;Serlvet 中實現請求轉發的方式為:
getServletContext().getRequestDispatcher(path).forward(req,res)。
42、 Web.Xml 的作用?【基礎】
答:用於配置web 應用的信息;如listener、filter 及servlet 的配置信息等。
43、 寫出熟悉的JSTL 標簽。【基礎】
答:<c:if>、<c:choose>、<c: when>、<c: otherwise>、<c:forEach>、<c:set>。
44、 JSP 內置對象作用,如何取Cookie 的方法
使用request 對象的getCookies()方法取到所有客戶端cookies 信息。
(1) HttpServletRequest 類的request 對象
作用:代表請求對象,主要用於接受客戶端通過HTTP 協議連接傳輸到服務器端的數據。
(2) HttpServletResponse 類的respone 對象
作用:代表響應對象,主要用於向客戶端發送數據
(3) JspWriter 類的out 對象
作用:主要用於向客戶端輸出數據;Out 的基類是JspWriter
(4) HttpSession 類的session 對象
作用:主要用於來分別保存每個用戶信息,與請求關聯的會話;會話狀態維持是Web 應用開發者必須面對的問題。
(5) ServletContext 類的application 對象
作用:主要用於保存用戶信息,代碼片段的運行環境;它是一個共享的內置對象,即一個容器中的多個用戶共享一個application 對象,
故其保存的信息被所有用戶所共享.
(6) PageContext 類的pageContext 對象
作用:管理網頁屬性,為JSP 頁面包裝頁面的上下文,管理對屬於JSP 中特殊可見部分中已命名對象的訪問,它的創建和初始化都是由容器來完成的。
(7) ServletConfig 類的config 對象
作用:代碼片段配置對象,表示Servlet 的配置。
(8) Object 類的Page(相當於this)對象
作用:處理JSP 網頁,是Object 類的一個實例,指的是JSP 實現類的實例,即它也是JSP本身,只有在JSP 頁面范圍之內才是合法的。
(9)Exception
作用:處理JSP 文件執行時發生的錯誤和異常
45、 通過部署描述文件(web.xml)可以配置哪些功能?
1、配置項目的歡迎頁面。
2、配置Servlet 訪問URL
3、配置Web 容器、Servlet 的初始化參數
4、配置錯誤頁面,可以通過異常編號進行錯誤頁面跳轉。
5、Servlet 加載優先級。
6、Web 容器監聽器。
7、Web 請求過濾器。
8、設置會話的過期時間。
46、 JSP 有哪些的動作?分別有什么作用?
<jsp:include>:在頁面被請求的時候引入一個文件。
<jsp:useBean>:尋找或者實例化一個JavaBean。
<jsp:setProperty>:設置JavaBean 的屬性。
<jsp:getProperty>:輸出某個JavaBean 的屬性。
<jsp:forward>:把請求轉到一個新的頁面。
<jsp:param>:在請求轉發與include 中進行頁面傳參。
<jsp:plugin>:根據瀏覽器類型為Java 插件生成OBJECT 或EMBED 標記。
47、 JSP 與SERVLET 區別
JSP 在本質上就是SERVLET,但是兩者的創建方式不一樣.Servlet 完全是JAVA 程序代碼構成,擅長於流程控制;而.JSP 由HTML 代碼和JSP 標簽構成,可以方便地編寫動態網頁.因此在實際應用中采用Servlet 來控制業務流程,而采用JSP 來生成動態網頁,同時在MVC設計模式中JSP 充當視圖層,而Servlet 位於控制層。另外JSP 也是Servlet 技術的擴展,本質上就是Servlet,就是JSP 的另一種簡易體現形式,因為JSP 編譯后就是一個“類servlet”,再經由JVM 編譯生成Java 類文件來執行。
48、 Tomcat 的class 加載的優先順序一覽
第一步:加載JVM 類庫。一般是加載由虛擬機提供的基本的運行時類和系統擴展目錄($JAVA_HOME/jre/lib/ext)下的JAR 包。
第二步:加載系統環境變量的類庫。這個加載器用來加載CLASSPATH 環境變量中指定的類。
第三步:加載Tomcat 下面common 文件夾下面的公共類庫。
第四步:加載自己需要的catalina 類庫。
第五步:webapps 下面自己應用的類庫,包括webapp1、webapp1......等。
49、 Servlet 與CGI 的區別
Servlet 主要是運行在服務器端的一個組件,基於Java 語法構建,延用Java 的傳統優勢——可移植、穩健、易開發。CGI 不可移植,為某一特定平台編寫的CGI 應用只能運行於這一環境中。每一個CGI 應用存在於一個由客戶端請求激活的進程中,並且在請求被服務后被卸載。這種模式將引起很高的內存、CPU 開銷,而且在同一進程中不能服務多個客戶。
CGI(Common Gateway Interface)是HTTP服務器與你的或其它機器 上的程序進行“交談”的一種工具,其程序須運行在網絡服務器上。
Servlet 對CGI 的最主要優勢在於一個Servlet 被客戶端發送的第一個請求激活,然后它將繼續運行於后台,等待后續請求。每個請求將生成一個新的線程,而不是一個完整的進程,多個客戶能夠在同一個進程中同時得到服務,也就是說它是基於多線程模式。而CGI對每個請求都產生新的進程,服務完成后就銷毀,所以效率上低於servlet。
50、 Servlet中的init()方法什么時候被調用?
當客戶端第一次請求該Servlet 時,由容器調用該Servlet 類的init()方法對該Servlet進行初始化,該初始始化方法只被調用一次。
51、 用什么方法使服務器關閉之后,session 所保存的信息不會丟失?
使用cookie 實現,服務器端將需要保存的信息,通過Cookie 並寫入客戶端磁盤中,下次訪問時,客戶端瀏覽器攜帶寫入的信息提交至服務器,這樣可以使信息不會因服務器關閉而丟失。
52、 Servlet 的生命周期分為3 個階段? 和CGI的區別?
Servlet 的生命周期主要由3 個過程組成。
(1)init()方法:服務器初始化servlet。
(2)service()方法:初始化完畢,servlet 對象調用該方法響應客戶的請求。
(3)destroy()方法:調用該方法消滅servlet 對象。
其中,init()方法只在servlet 第一次被請求加載的時候被調用一次,當有客戶再請求servlet 服務時,web 服務器將啟動一個新的線程,在該線程中,調用service
方法響應客戶的請求。
53、 描述Cookie 和Session 的作用?區別和各自的應用范圍?Session 工作原理
Cookie 和Session 都是用來服務器端和客戶端進行會話跟蹤的一種技術。區別:Cookie 只能傳輸字符數據,字符是通過加密后寫到客戶端,下次請求時協帶至
服務器端,Cookie 協帶的數據大小為4KB,對數據量超出4KB 的數據,無法處理,Cookie數據一般是通過加密后存儲在客戶端,而Session 在服務器端和瀏覽器緩存中都保存在ID的值,通過此ID 來識別唯一的客戶端。Session 對數據存儲的大小沒有限制,但存儲的信息加重服務器的負載,另外Session 在分布式服務器的使用上也有限制,Session 無法跨域,也就是多台服務器無法共享會話。 Session 原理:當客戶端用戶訪問時,服務器都為每個用戶分配一個唯一的會話ID(Session ID) 保存在服務器內存中,服務器響應客戶端時,將Session ID 寫入瀏覽器緩存中,當下次客戶端請求時,就會將該Session ID 攜帶至服務器,服務器再根據ID 比對,識別不同客戶端請求,以此方式來不斷維持服務器和客戶端狀態跟蹤。
54、 dao 是什么及作用
DAO 是數據庫訪問接口,負責管理與數據庫打交道操作對象,將對數據維護與操作的方法通過DAO 封裝起來,使得這些操作可以從系統的業務邏輯中獨立出來,從而使系統中的數據庫操作變得統一和簡單化,方便開發人員對組件職責進行划分。
55、 解釋一下什么是servlet
Servlet 是用Java 編寫的服務器端程序,由服務器端調用和執行的Java 類。是使用JavaServlet 應用程序設計接口(API)及相關類和方法來構建的,而Java Servlet API 定義了servlet和Java 使能的服務器之間的一個標准接口,這使得Servlets 具有跨服務器平台的特性,當客戶機發送請求至服務器時,服務器可以將請求信息發送給Servlet,並讓Servlet 建立起服務器返回給客戶機的響應。Servlet 的功能很廣泛,例如可以創建響應至客戶端的所有HTML元素內容和動態數據內容,與其它組件通訊等等。
56、 HTTP 請求的GET 與POST 方式的區別
GET 和 POST.是HTTP 定義的與服務器交互的不同方法,是使用HTTP 的標准協議動詞,用於編碼和傳送變量名/變量值對參數,並且使用相關的請求語義。
1、Get 方式在通過URL 提交數據,數據在URL 中可以看到; POST 方式,數據放置在HTML HEADER內提交,無法在地址欄看到。
2、GET 方式提交的數據最多只能有1024 字節,而POST 則沒有此限制。
3、GET 一般用作小數據量的請求,POST 一般用作大數據量的請求,如:附件。
57、 什么情況下調用doGet()和doPost()?
根據客戶端的請求的方式來決定調用哪個方法處理請求,如果客戶端采用GET 方式發送請求,服務器端則采用doGET()來處理,如果采用post 方式,服務器端則采用doPOST()
58、 request 對象的主要方法
setAttribute(String name,Object):設置名字為name 的request 的參數值
getAttribute(String name):返回由name 指定的屬性值
getAttributeNames():返回request 對象所有屬性的名字集合,結果是一個枚舉的實例
getCookies():返回客戶端的所有Cookie 對象,結果是一個Cookie 數組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body 的長度
getHeader(String name):獲得HTTP 協議定義的文件頭信息
getHeaders(String name):返回指定名字的request Header 的所有值,結果是一個枚舉的實例
getHeaderNames():返回所以request Header 的名字,結果是一個枚舉的實例
getInputStream():返回請求的輸入流,用於獲得請求中的數據
getMethod():獲得客戶端向服務器端傳送數據的方法
getParameter(String name):獲得客戶端傳送給服務器端的有name 指定的參數值
getParameterNames():獲得客戶端傳送給服務器端的所有參數的名字,結果是一個枚舉的實例
getParametervalues(String name):獲得有name 指定的參數的所有值
getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱
getQueryString():獲得查詢字符串
getRequestURI():獲取發出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP 地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關Session
getServerName():獲取服務器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務器的端口號
removeAttribute(String name):刪除請求中的一個屬性
59、 request.getAttribute() 和request.getParameter() 有何區別?
request.getAttribute()獲取在請求對象中設置的屬性,該方法返回對象為Object 類型,而getParameter()方法是獲取指定的請求參數值,返回值為String 類型的字符串。
60、 jsp 有哪些內置對象?作用分別是什么? 分別有什么方法?
答:JSP 共有以下9 個內置的對象:
1) request 用戶端請求,此請求會包含來自GET/POST 請求的參數
2) response 網頁傳回用戶端的回應
3) pageContext 網頁的屬性是在這里管理
4) session 與請求有關的會話期
5) application servlet 正在執行的內容
6) out 用來傳送回應的輸出
7) config servlet 的構架部件
8) page JSP 網頁本身
9) exception 針對錯誤網頁,未捕捉的例外
具體說明如下:
request 表示HttpServletRequest 對象。它包含了有關瀏覽器請求的信息,並且提供了幾個用於獲取cookie, header, 和session 數據的有用的方法。
response 表示HttpServletResponse 對象,並提供了幾個用於設置送回瀏覽器的響應的方法(如cookies,頭信息等)
out 對象是javax.jsp.JspWriter 的一個實例,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。
pageContext 表示一個javax.servlet.jsp.PageContext 對象。它是用於方便存取各種范圍的名字空間、servlet 相關的對象的API,並且包裝了通用的servlet 相關功能的方法。
session 表示一個請求的javax.servlet.http.HttpSession 對象。Session 可以存貯用戶的狀態信息
applicaton 表示一個javax.servle.ServletContext 對象。這有助於查找有關servlet引擎和servlet 環境的信息
config 表示一個javax.servlet.ServletConfig 對象。該對象用於存取servlet 實例的初始化參數。
page 表示從該頁面產生的一個servlet 實例
61、 JSP 的常用指令
1) <%@include >用來在JSP 頁面包含靜態資源
2) <%@taglib >用來指定JSP 頁面標簽類型
3) <%@page >用來指定頁面相關屬性
62、 頁面間對象傳遞的方法
request、session、application、Cookie 等,其中比較常用的像request、Session。request主要是應用在同一請求周期內,可能進行對象或參數的共享傳遞。而Session 主要可以應用於同一客戶端會話周期內進行參數屬性的共享。
63、 MVC 的各個部分都有那些技術來實現?如何實現?
MVC 是Model-View-Controller 的簡寫。Model 代表的是應用的業務邏輯(通過JavaBean,EJB 組件實現), View 是應用的表示面(由JSP 頁面產生),Controller 是提供應用的處理過程控制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用。
64、 Web 系統安全因素有哪些?
1)操作系統、后台數據庫的安全問題:這里指操作系統和后台數據庫的漏洞,配置不當,如弱口令等等,導致黑客、病毒可以利用這些缺陷對網站進行攻擊。
2)Web 發布系統的漏洞:Web 業務常用的發布系統(即Web 服務器),如IIS、Apache等,這些系統存在的安全漏洞,會給入侵者可乘之機。
3)Web 應用程序的漏洞:主要指Web 應用程序的編寫人員,在編程的過程中沒有考慮到安全的因素,使得黑客能夠利用這些漏洞發起對網站的攻擊,比如SQL 注入、跨站腳本攻擊等等。
4)自身網絡的安全狀況:網站服務器所處的網絡安全狀況也影響着網站的安全,比如網絡中存在的DoS 攻擊等,也會影響到網站的正常運營。
65、 我們在web 應用開發過程中經常遇到輸出某種編碼的字符,如iso8859-1 等,如何輸出一個某種編碼的字符串?
66、 web 運用程序的穩定、安全需要考慮哪些?
Web 服務器的性能考慮主要有:並發用戶數、事務安全、負載均衡、時段流量、網絡帶寬網格安全等。
網絡安全方面:
(1) 關鍵數據的保護,例如用戶數據等
(2) 功能服務的正常提供。
(3) 網站的防攻擊能力。
(4) 對異常災害的恢復能力。
程序性能:
(1) 響應請求並運行得出結果的時間。
(2) 錯誤的檢測和攔截。
(3) 擴展性。
67、 介紹幾種WEB 服務器,問Tomcat 里面的文件組成?
Apache、Tomcat、Jetty、Jboss、Websphere、WebLogic
68、 將ISO8859-1 字符串轉成GB2312 編碼,語句為?
String s=new String(text.getBytes(“iso8859-1”),”gb2312”)
69、 <jsp:include>與<%@include>的區別
上面兩種都是在當前頁面加載或包含另一頁面內容,而使用<jsp:include>動作標簽實現時它總是會檢查所含文件中的變化,適合用於包含動態頁面,並且包含的頁頁要符合web容器語法要求,因為被包含的頁面會被web 引擎進行編譯和加載,同時包含時會發送http請求,所以可以攜帶參數。而<%@include>是用偽碼實現,定不會檢查所含文件的變化,只是簡單的將被加載的資源拷貝到了當前,而這種包含更多的是一種重用,不能實現參數共享。
70、 說出數據連接池的工作機制是什么?
web 服務器啟動時會建立一定數量的池連接,並一直維持不少於此數目的池連接。客戶端程序需要連接時,池驅動程序會返回一個未使用的池連接並將其表記為忙。如果當前沒有空閑連接,池驅動程序就新建一定數量的連接,新建連接的數量有配置參數決定。當使用的池連接調用完成后,池驅動程序將此連接表記為空閑,其他調用就可以使用這個連接。實現方式,返回的Connection 是原始Connection 的代理,代理Connection 的close 方法不是真正關連接,而是把它代理的Connection 對象還回到連接池中。
71、 如何實現Servlet 單線程
<%@ page isThreadSafe="false"%>
72、 Web 容器里面的對象存活周期?
當然由web 容器進行創建管理的對象主要有application,session,request,page 這四個級別的對象,而這4 種級別的對象,根據它們自身的特點來管理所持的對象,如:request中的對象的生命周期就是在請求范圍內,Session 在是會話周期內,page 是在當前JSP Page內,Application 是在服務器啟、停的周期內。
73、 瀏覽器頁面與Tomcat 的交互過程?
當一個JSP 頁面第一次被訪問的時候,JSP 引擎將執行以下步驟:
(1)將JSP 頁面翻譯成一個Servlet,這個Servlet 是一個java 文件,同時也是一個完整的java 程序,第一次運行將java文件轉換為二進制碼
(2)再由java 編譯器對這個二進制碼 進行編譯,得到可執行class 文件
(3)再由JVM 解釋器來解釋執行class 文件,生成向客戶端發送的應答,然后發送給客戶端
以上三個步驟僅僅在JSP 頁面第一次被訪問時才會執行,以后的訪問速度會因為class文件已經生成而大大提高。
四、 數據庫
74、 SQL 有哪三種注入方式?SQL 安全
動態SQL 拼裝注入、SQL 溢出漏洞、獲取管理員權限、
75、 數據庫事務及隔離級別
讀未提交 讀提交 重復讀 序列化
據但是第二個事務卻中途失敗退
出導致對數據兩個修改都失效了這是系統沒有執行任何鎖操作因此並發事務並沒有被隔離開來
2. 臟讀(Dirty Reads):一個事務開始讀取了某行數據但是另外一個事務已經更新了此數據但沒有能夠及時提交。這是相當危險很可能所有操作都被回滾
3. 不可重復讀(Non-repeatable Reads):一個事務對同一行數據重復讀取兩次但是卻得到了不同結果。例如在兩次讀取中途有另外一個事務對該行數據進行了修改並提交
4. 兩次更新問題(Second lost updates problem):無法重復讀取特例,有兩個並發事務同時讀取同一行數據然后其中一個對它進行修改提交而另一個也進行了修改提交這就會造成第一次寫操作失效
5. 幻讀(Phantom Reads):也稱為幻像(幻影)。事務在操作過程中進行兩次查詢,第二次查詢結果包含了第一次查詢中未出現的數據(這里並不要求兩次查詢SQL 語句相同)這是因為在兩次查詢過程中有另外一個事務插入數據造成的
76、 事務四大屬性
數據庫事務的屬性包括四大類,即ACID。ACID分別是四個英文單詞的首寫字母,這四個英文單詞是Atomicity(原子性)、 Consistency(一致性)、Isolation(隔離性)、Durability(持久性)。
1、原子性 Atomicity
事務的原子性指的是,事務中包含的程序作為數據庫的邏輯工作單位,它所做的對數據修改操作要么全部執行,要么完全不執行。這種特性稱為原子性。
2、一致性 Consistency
事務的一致性指的是在一個事務執行之前和執行之后數據庫都必須處於一致性狀態。這種特性稱為事務的一致性。假如數據庫的狀態滿足所有的完整性約束,就說該數據庫是一致的。
3、隔離性 Isolation
隔離性指並發的事務是相互隔離的。即一個事務內部的操作及正在操作的數據必須封鎖起來,不被其它企圖進行修改的事務看到。
4、持久性 Durability
持久性意味着當系統或介質發生故障時,確保已提交事務的更新不能丟失。即一旦一個事務提交,DBMS保證它對數據庫中數據的改變應該是永久性的,耐得住任何數據庫系統故障。持久性通過數據庫備份和恢復來保證。
嚴格來說數據庫事務屬性(ACID)都是由數據庫管理系統來進行保證的,在整個應用程序運行過程中應用無需去考慮數據庫的ACID實現。
77、 說說存儲過程定義,並描述一下優點和缺點?
CREATE PROCEDURE getUserInfo_PROC (存儲過程名)
AS
begin
//過程體
end
GO
優點:
(1) 減輕網絡流量
(2) 可被作為一種安全機制來使用
(3) 允許標准組件式編程
(4) 能夠實現較快的執行速度
缺點:
(1) 可移值性差
(2) 重構復雜
78、 數據庫中為什么要映射主外健?什么是事務處理?
主外鍵:保持數據完整性。數據庫事務是指作為單個邏輯工作單元執行的一系列操作。事務可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。事務內相關操作組合為一個要么全部成功要么全部失敗,可以簡化錯誤恢復並使應用程序更加可靠。一個邏輯工作單元要成為事務,必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)屬性。
79、 SqlServer 的完整性約束?
(1) 主鍵約束(Primary Key Constraint):要求主鍵列數據唯一,並且不允許為空
(2) 唯一約束(Unique Constraint):要求該列唯一,允許為空,但只能出現一個空值。
(3) 檢查約束(Check Constraint):某列取值范圍限制、格式限制等,如有關年齡的約束
(4) 默認約束(Default Constraint):某列的默認值,如我們的男性學員較多,性別默認為“男”
(5) 外鍵約束(Foreign Key Constraint):用於兩表間建立關系,需要指定引用主表的那列
80、 一張學生表student,有字段班級classid,學號id,成績grade
(1)求各個班的平均成績
Select classid,avg(grade) from student group by classid
(2)查詢出比該班平均成績高的學生的所有信息
select w.id,w. grade,b.avg_ grade from student w,(select classid,avg(grade) avg_grade from student group by classid) b where w. classid =b. classid and w.grade >b.avg_grade;
81、 寫一條SQL 語句,查詢姓張學生中平均成績大於75 的學生信息
select * from student where name in (select name from student where name like '張%' group by name having avg(score) > 75)
82、 查一下每門課程都大於80 的學生姓名
學生表student 分數表grade
select s.name from student s where s.id not in(select g.studentid from grade g where g.marks<=80)
或者
select s.name from student s where not exists(select 1 from grade g where g.studentid=s.id and g.marks<=80)
83、 truncate 與delete 的區別?(delete from table 和truncate table 的區別!)
truncate 是DDL 語言.delete 是DML 語言DDL 語言是自動提交的.命令完成就不可回滾.truncate 的速度也比delete 要快得多.
相同點:truncate 和不帶where 子句的delete, 以及drop 都會刪除表內的數據
不同點:
1. truncate 和delete 只刪除數據不刪除表的結構(定義)drop 語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index);
依賴於該表的存儲過程/函數將保留,但是變為invalid 狀態.
2.delete 語句是dml,這個操作會放到rollback segement 中,事務提交之后才生效;如果有相應的trigger,執行的時候將被觸發.truncate,drop 是ddl, 操作立即生效,原數據不放到rollback segment 中,不能回滾.操作不觸發trigger.
3.delete 語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動顯然drop 語句將表所占用的空間全部釋放truncate 語句缺省情況下見空間釋放到minextents 個extent,除非使用reusestorage; truncate 會將高水線復位(回到最開始).
4.速度,一般來說: drop> truncate > delete
5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及使用上,想刪除部分數據行用delete,注意帶上where 子句. 回滾段要足夠大.
想刪除表,當然用drop想保留表而
84、 一學生表!有班及id,學號!成績!一求平均成績!二求比平均成績高的學生的所有信息
select id,avg(成績) from table group by id select * from table where 成績> (select 成績from (select id,avg(成績) 成績from table group by id)as a )
85、 查詢出M 頁的N 行數據(分頁的實現,求第M 也的記錄數)
Select top N from table where id not in (select top (M-1)*N id from table )
86、 數據庫三范式是什么?
第一范式(1NF):
字段具有原子性,不可再分。所有關系型數據庫系統都滿足第一范式)數據庫表中的字段都是單一屬性的,不可再分。例如,姓名字段,其中的姓和名必須作
為一個整體,無法區分哪部分是姓,哪部分是名,如果要區分出姓和名,必須設計成兩個獨立的字段。
第二范式(2NF):
第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。要求數據庫表中的每個實例或行必須可以被惟一地區分。通常需要為表加上一個列,以存儲各個實例的惟一標識。這個惟一屬性列被稱為主關鍵字或主鍵。第二范式(2NF)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分通常需要為表加上一個列,以存儲各個實例的惟一標識。簡而言之,第二范式就是非主屬性非部分依賴於主關鍵字。
第三范式(3NF):
滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。
所以第三范式具有如下特征:
1,每一列只有一個值
2,每一行都能區分。
3,每一個表都不包含其他表已經包含的非主關鍵字信息。
例如,帖子表中只能出現發帖人的id,而不能出現發帖人的id,還同時出現發帖人姓名,否則,只要出現同一發帖人id 的所有記錄,它們中的姓名部分都必須嚴格保持一致,這就是數據冗余。
87、 join 與left join 的區別:
inner join(等值連接) 只返回兩個表中聯結字段相等的行
left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄
right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄
88、 用sql 語句分頁:
Mysql 數據庫:
SELECT TOP 頁大小* FROM table1 WHERE id NOT IN (
SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
) ORDER BY id
Oracle 數據庫:
在ORACLE 大數據量下的分頁解決方法。一般用截取ID 方法,還有是三層嵌套方法。
截取ID 的方法
select * from emp a, (select empno,rownum as num from emp)b where a.empno=b.empno and b.num between 5 and 7;
三層嵌套
SELECT * FROM ( SELECT A.*, rownum r FROM ( SELECT * FROM emp ) A WHERE rownum <=7 ) B WHERE r >5;
89、 oracle 中row_id 理解
ORACLE 的row_id 是一個偽列,其個是為18 個字節可將這18 個字節用6363 來划分,分別表示段編號,數據文件編號,數據塊
90、 嵌入式數據庫和傳統數據庫的區別
嵌入式數據庫主要像:SQLite、
傳統數據庫服務器:SQL Server 、Oracle、MySQL
嵌入式數據庫,SQLite 的主要特點:
1. 支持事件,不需要配置,不需要安裝,也不需要管理員;
2. 支持大部分SQL92;
3.一個完整的數據庫保存在磁盤上面一個文件,同一個數據庫文件可以在不同機器上面使用,最大支持數據庫到2T,字符和BLOB 的支持僅限制於可用內存;
4.整個系統少於3 萬行代碼,少於250KB 的內存占用(gcc),大部分應用比目前常見的客戶端/服務端的數據庫快,沒有其它依賴
5. 源代碼開放,代碼95%有較好的注釋,簡單易用的API。官方帶有TCL 的編譯版本。
關系數據庫特點:
1、更好的安全性、多用戶管理
2、強大的數據管理能力,如索引、視圖等關系對象
3、強大的數據庫編程式的設計,像T-SQL、存儲過程、游標
4、豐富的數據類型
91、 Inserted 和deleted 的含義?
inserted 表反映插入或更新操作時插入的記錄
deleted 表反映刪除或更新操作時刪除的記錄
92、 函數和過程的區別?
返回類型 sql調用
- 存儲過程:
1) 一般用於在數據庫中完成特定的業務 任務的
2) 可以定義返回類型,也可以不定義返回類型
3) SQL 語句中不可以調用
- 函數:
1) 一般用於特定的數據查詢或數據轉換處理
2) 申請時必須要定義返回類型,且程序體中必須定義return 語句。
3) 不能獨立執行,必須作為表達式的一部分調用
4) SQL 語句中可以調用。
93、 數據庫優化的方案
建立主鍵,為數據庫創建索引,建立存儲過程,觸發器,可提高查詢速度。
94、 Oracle 中有哪幾種索引
1.單列索引與復合索引
一個索引可以由一個或多個列組成,用來創建索引的列被稱為“索引列”。單列索引是基於單列所創建的索引,復合索引是基於兩列或者多列所創建的索引。
2.唯一索引與非唯一索引
唯一索引是索引列值不能重復的索引,非唯一索引是索引列可以重復的索引。無論是唯一索引還是非唯一索引,索引列都允許取NULL 值。默認情況下,Oracle 創建的
索引是不唯一索引。
3.B 樹索引
B 樹索引是按B 樹算法組織並存放索引數據的,所以B 樹索引主要依賴其組織並存放索引數據的算法來實現快速檢索功能。
4.位圖索引
位圖索引在多列查詢時,可以對兩個列上的位圖進行AND 和OR 操作,達到更好的查詢效果。
5.函數索引
Oracle 中不僅能夠直接對表中的列創建索引,還可以對包含列的函數或表達式創建索引,這種索引稱為“位圖索引
95、 數據庫索引的優點和缺點
優點:
1、通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性。
2、可以大大加快數據的檢索速度,這也是創建索引的最主要的原因。
3、可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。
4、在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。
5、通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。
缺點:
1、創建索引和維護索引要耗費時間,這種時間隨着數據量的增加而增加。
2、索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。
3、當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速
96、 觸發器有幾種?
共2 種,一種DML 觸發,就是遇到DML 事件時觸發執行,像insert\update\delete。一種DDL 觸發,遇到DDL 事件時觸發,像Login Datatabase、更改數據庫狀態、create 語句等
97、 oracle 中除了數據庫備份,還有什么方法備份?
Oracle 數據庫有三種標准的備份方法,它們分別是導出/導入(EXP/IMP)、熱備份和冷備份。導出備份是一種邏輯備份,冷備份和熱備份是物理備份。
10G 有幾種新功能進行備份,像數據磅
98、 寫出刪除表中重復記錄的語句oracle
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by
99、 數據庫里面游標,索引是怎么用的?
declare cur cursor keyset for get 返回null,load classnotfoundException
100、 在Oracle 中數據庫中的一個表中,這個表沒有主鍵id 也沒有特定標示來查數據,怎么查?
利用偽列標識進行查詢。
101、 大數據量下的分頁解決方法
答:最好的辦法是利用sql 語句進行分頁,這樣每次查詢出的結果集中就只包含某頁的數據
內容。再sql 語句無法實現分頁的情況下,可以考慮對大的結果集通過游標定位方式來獲取
某頁的數據。
sql 語句分頁,不同的數據庫下的分頁方案各不一樣,下面是主流的三種數據庫的分頁sql:
sql server:
String sql =
"select top " + pageSize + " * from students where id not in" +
"(select top " + pageSize * (pageNumber-1) + " id from students order by id)" +
"order by id";
mysql:
String sql =
"select * from students order by id limit " + pageSize*(pageNumber-1) + "," +
pageSize;
oracle:
String sql =
"select * from " +
(select *,rownum rid from (select * from students order by postime desc) where
rid<=" + pagesize*pagenumber + ") as t" +
"where t>" + pageSize*(pageNumber-1);
102、 寫一個用jdbc 連接並訪問oracle 數據的程序代碼
103、 JavaScript 有哪幾種數據類型
簡單:Number,Boolean,String,Null,Undefined
復合:Object,Array,Function
104、 在js 編碼中innerHTML,outhtml,innertext 區別
(1) innerHTML 設置或獲取位於對象起始和結束標簽內的HTML
(2) outerHTML 設置或獲取對象及其內容的HTML 形式
(3) innerText 設置或獲取位於對象起始和結束標簽內的文本
(4) outerText 設置(包括標簽)或獲取(不包括標簽)對象的文本
105、 寫一個簡單的json 對象?
var json_ =
{
stuId : 2012002,
stuName:‘李華明’,
stuAge:20,
stuSex:’男’
}
如果一個JavsScript 對象轉JSON 可以通過eval()函數轉換成JSON 對象進行訪問。
106、 什么是json ,jquery?
JSON: (javaScript Object Notation)是一種輕量級的數據交換格式。
JSON 兩種結構:
名稱/值對的集合,不同的語言中,它被理解為對象,記錄,結構,字典,哈希表,有鍵列表,關聯數組。值的有序列表,數組
jQuery:
jQuery 由美國人John Resig 創建是一個優秀的javascript 框架使用戶能夠方便的處理HTML documents events 實現動畫效果,並且方便地為網站提供AJAX 交互。
107、 jQuery 中有id 為foo 的對象有att 屬性,如何獲取att 屬性的值?
$(‘foo’).att(‘attr’).val()
108、 jQuery 中添加文本怎么寫在div 中
可以通過jQuery 提供的元素選擇器或ID 選擇器為實現,如:
$(‘div’).append(‘Hello ’);要求只能有一個div 否則$(‘div’)返回的是數組$(‘#ID 名稱’).append(“hello”);
109、 你為什么要使用jquery?
因為jQuery 是輕量級的框架,大小不到30kb,它有強大的選擇器,出色的DOM 操作的封裝,有可靠的事件處理機制(jQuery 在處理事件綁定的時候相當的可靠),完善的ajax(它的ajax 封裝的非常的好,不需要考慮復雜瀏覽器的兼容性和XMLHttpRequest 對象的創建和使用的問題。) 出色的瀏覽器的兼容性。而且支持鏈式操作,隱式迭代。行為層和結構層的分離,還支持豐富的插件,jquery 的文檔也非常的豐富。
110、 你使用jquery 遇到過哪些問題,你是怎么解決的?
答:這個答案是開發的,看你是否有相關的項目經驗。例前台拿不到值,JSON 可是出現的錯誤(多了一個空格等)這編譯是不會報錯的jquery 庫與其他庫沖突:
1>如果其他庫在jquery 庫之前導入的話
1 我們可以通過jquery.noconflict()將變量的$的控制權過度給其他庫
2 自定義快捷鍵,用一個變量接住jquery.noconflict()
3 通過函數傳參
2>如果jquery 庫在其他庫之前導入就直接使用jquery 今天在處理一個數據問題時,發現jQuery.ajax()方法返回的值一直有問題,清除緩存后數據無誤,多次測試后發現返回的值都是之前的值,並且一直未執行url(后台為JAVA,設置斷點一直未進入)。在網上查找下,發現是未設置type 的原因。如果沒設置jQuery.ajax 的type="Post",那么ajax 就會默認type="Get",這就會導致之前數據被緩存起來。加上type="Post",問題解決!
111、 你知道jquery 中的選擇器嗎,請講一下有哪些選擇器?
jQuery 中的選擇器大致分為:基本選擇器,層次選擇器,過濾選擇器,表單選擇器
112、 jquery 中的選擇器和css 中的選擇器有區別嗎?
jQuery 選擇器支持CSS 里的選擇器,jQuery 選擇器可用來添加樣式和添加相應的行為CSS中的選擇器是只能添加相應的樣式
113、 你覺得jquery 中的選擇器有什么優勢?
簡單的寫法$('ID') 來代替document.getElementById()函數支持CSS1 到CSS3 選擇器完善的處理機制(就算寫錯了id 也不會報錯)
114、 你在使用選擇器的時候有有沒有什么覺得要注意的地方?
1) 選擇器中含有".","#","[" 等特殊字符的時候需要進行轉譯
2) 屬性選擇器的引號問題
3) 選擇器中含有空格的注意事項
115、 jquery 對象和dom 對象是怎樣轉換的?
jquery 轉DOM 對象:jQuery 對象是一個數組對象,可以通過[index]的豐富得到相應的DOM 對象還可以通過get[index]去得到相應的DOM 對象。DOM 對象轉jQuery 對象:$(DOM對象)
116、 你是如何使用jquery 中的ajax 的?
如果是一些常規的ajax 程序的話,使用load(),$.get(),$.post(),就可以搞定了, 一般我會使用的是$.post() 方法。如果需要設定beforeSend(提交前回調函數),error(失敗后處理),success
117、 你覺得jquery 中的ajax 好用嗎,為什么?
答: 好用的。因為jQuery 提供了一些日常開發中夙瑤的快捷操作,例load,ajax,get,post等等,所以使用jQuery 開發ajax 將變得極其簡單,我們就可以集中精力在業務和用戶的體驗上,不需要去理會那些繁瑣的XMLHttpRequest 對象了。
118、 jquery 中$.get()提交和$.post()提交有區別嗎?
1) $.get() 方法使用GET 方法來進行異步請求的。$.post() 方法使用POST 方法來進行異步請求的。
2) get 請求會將參數跟在URL 后進行傳遞,而POST 請求則是作為HTTP 消息的實體內容發送給Web 服務器的,這種傳遞是對用戶不可見的。
3) get 方式傳輸的數據大小不能超過2KB 而POST 要大的多
4) GET 方式請求的數據會被瀏覽器緩存起來,因此有安全問題。
119、 jquery 中的load 方法一般怎么用的?
答:load 方法一般在載入遠程HTML 代碼並插入到DOM 中的時候用通常用來從Web 服務器上獲取靜態的數據文件。如果要傳遞參數的話,可以使用$.get() 或$.post()
120、 在jquery 中你是如何去操作樣式的?
addClass() 來追加樣式
removeClass() 來刪除樣式
toggle() 來切換樣式
121、 簡單的講敘一下jquery 是怎么處理事件的,你用過哪些事件?
答: 首先去裝載文檔,在頁面家在完畢后,瀏覽器會通過javascript 為DOM 元素添加事件。
122、 你使用過jquery 中的動畫嗎,是怎樣用的?
【參考】答:使用過。hide() 和show() 同時修改多個樣式屬性。像高度,寬度,不透明度。fadeIn()和fadeOut() fadeTo() 只改變不透明度slideUp() 和slideDown() slideToggle() 只改變高度animate() 屬於自定義動畫的方法。
123、 你使用過jquery 中的插件嗎?
【參考】答:看個人的實力和經驗來回答了。
124、 你一般用什么去提交數據,為什么?
【參考】答:一般我會使用的是$.post() 方法。如果需要設定beforeSend(提交前回調函數),error(失敗后處理),success(成功后處理)及complete(請求完成后處理)回調函數等,這個時候我會使用$.ajax()
125、 在jquery 中引入css 有幾種方式?
【參考】答:四種行內式,內嵌式,導入式,鏈接式
126、 你在jquery 中使用過哪些插入節點的方法,它們的區別是什么?
【參考】append(),appendTo(),prepend(),prependTo(),after(),insertAfter()before(),insertBefore() 大致可以分為內部追加和外部追加
append() 表式向每個元素內部追加內容。appendTo() 表示講所有的元素追加到指定的元素中。例$(A)appendTo(B) 是將A 追加到B
中下面的方法解釋類似
127、 你使用過包裹節點的方法嗎,包裹節點有方法有什么好處?
【參考】 wrapAll(),wrap(), wrapInner() 需要在文檔中插入額外的結構化標記的時候可以使用這些包裹的方法應為它不會帛畫原始文檔的語義
128、 jquery 中如何來獲取或和設置屬性?
【參考】jQuery 中可以用attr()方法來獲取和設置元素屬性removeAttr() 方法來刪除元素屬性
129、 如何來設置和獲取HTML 和文本的值?
【參考】html()方法類似於innerHTML 屬性可以用來讀取或者設置某個元素中的HTML 內容注意:html() 可以用於xhtml 文檔不能用於xml 文檔text() 類似於innerText 屬性可以用來讀取或設置某個元素中文本內容。val() 可以用來設置和獲取元素的值
130、 你jquery 中有哪些方法可以遍歷節點?
children() 取得匹配元素的子元素集合,只考慮子元素不考慮后代元素
next() 取得匹配元素后面緊鄰的同輩元素
prev() 取得匹配元素前面緊鄰的同輩元素
siblings() 取得匹配元素前后的所有同輩元素
closest() 取得最近的匹配元素find() 取得匹配元素中的元素集合包括子代和后代
131、 子元素選擇器和后代選擇器元素有什么區別?
【參考】答:子代元素是找子節點下的所有元素,后代元素是找子節點或子節點的子節點中的元素
132、 在jquery 中可以替換節點嗎?
【參考】可以在jQuery 中有兩者替換節點的方式replaceWith() 和replaceAll() 例如在<ptitle="hao are you">hao are you</p>替換成<strong>I am fine<strong>$('p').replaceWith('<strong>I am fine</strong>'); replaceAll 與replaceWith 的用法前后調換一下即可。
133、 你覺得beforeSend 方法有什么用?
【參考】發送請求前可以修改XMLHttpRequest 對象的函數,在beforeSend 中如果返回false可以取消本次的Ajax 請求。XMLHttpRequest 對象是唯一的參數所以在這個方法里可以做驗證
134、 siblings() 方法和$('prev~div')選擇器是一樣的嘛?
【參考】 $('prev~div') 只能選擇'#prev'元素后面的同輩<div>元素而siblings()方法與前后的文職無關,只要是同輩節點就都能匹配。
135、 你在ajax 中使用過JSON 嗎,你是如何用的?
【參考】使用過,在$.getJSON() 方法的時候就是。因為$.getJSON() 就是用於加載JSON 文件的
136、 有哪些查詢節點的選擇器?
【參考】我在公司使用過:first 查詢第一個,:last 查詢最后一個,:odd 查詢奇數但是索引從0 開始:even 查詢偶數, eq(index)查詢相等的,:gt(index)查詢大於index 的,:lt 查詢小於index:header 選取所有的標題等
137、 nextAll() 能替代$('prev~siblindgs')選擇器嗎?
【參考】能。使用nextAll() 和使用$('prev~siblindgs') 是一樣的
138、 jQuery 中有幾種方法可以來設置和獲取樣式
答:addClass() 方法,attr() 方法
139、 $(document).ready()方法和window.onload 有什么區別?
【參考】 兩個方法有相似的功能,但是在實行時機方面是有區別的。
1) window.onload 方法是在網頁中所有的元素(包括元素的所有關聯文件)完全加載到瀏覽器后才執行的。
2) $(document).ready() 方法可以在DOM 載入就緒時就對其進行操縱,並調用執行綁定的函數。
140、 jQuery 是如何處理緩存的?
【參考】要處理緩存就是禁用緩存.
1) 通過$.post() 方法來獲取數據,那么默認就是禁用緩存的。
2) 通過$.get()方法來獲取數據,可以通過設置時間戳來避免緩存。可以在URL 后面加上+(+new Date)例$.get('ajax.xml?'+(+new Date),function () { //內容
});
3) 通過$.ajax 方法來獲取數據,只要設置cache:false 即可。
141、 $.getScript()方法和$.getJson() 方法有什么區別?
【參考】
1) $.getScript() 方法可以直接加載.js 文件,並且不需要對javascript 文件進行處理,javascript 文件會自動執行。
2) $.getJson() 是用於加載JSON 文件的,用法和$.getScript()
142、 你讀過哪些有關於jQuery 的書嗎?
【參考】
《jquery 基礎教程》《jquery 實戰》《鋒利的jquery 》《巧用jquery 》
《jQuery 用戶界面庫學習指南》等
143、 $("#msg").text(); 和$("#msg").text("<b>new content</b>");有什么區別?
【參考】
1 $("#msg").text() 是返回id 為msg 的元素節點的文本內容
2 $("#msg").text("<b>new content</b>"); 是將“<b>new content</b>” 作為普通文本串寫入id 為msg 的元素節點內容中, 頁面顯示粗體的<b>new content</b>
144、 radio 單選組的第二個元素為當前選中值,該怎么去取?
【參考】 $('input[name=items]').get(1).checked = true;
145、 選擇器中id,class 有什么區別?
【參考】在網頁中每個id 名稱只能用一次,class 可以允許重復使用
146、 你使用過哪些數據格式,它們各有什么特點?
【參考】HTML 格式,JSON 格式,javascript 格式,XML 格式
1) HTML 片段提供外部數據一般來說是最簡單的。
2) 如果數據需要重用,而且其他應用程序也可能一次受到影響,那么在性能和文件大小方面具有優勢的JSON 通常是不錯的選擇。
3) 而當遠程應用程序未知時,XML 則能夠為良好的互操作性提供最可靠的保證。
147、 jQuery 能做什么?
【參考】
1) 獲取頁面的元素
2) 修改頁面的外觀
3) 改變頁面大的內容
4) 響應用戶的頁面操作
5) 為頁面添加動態效果
6) 無需刷新頁面,即可以從服務器獲取信息
7) 簡化常見的javascript 任務
148、 在ajax 中data 主要有幾種方式?
【參考】三種,html 拼接的,json 數組,form 表單經serialize()序列化的。
149、 jQuery 中的hover()和toggle()有什么區別?
【參考】
hover()和toggle()都是jQuery 中兩個合成事件。hover()方法用於模擬光標懸停事件。toggle()方法是連續點擊事件。
150、 你知道jQuery 中的事件冒泡嗎,它是怎么執行的,何如來停止冒泡事件?
【參考】 知道,事件冒泡是從里面的往外面開始觸發。在jQuery 中提供了stopPropagation()方法可以停止冒泡。
151、 例如單擊超鏈接后會自動跳轉,單擊"提交"按鈕后表單會提交等,有時候我想阻止這些默認的行為,該怎么辦?
【參考】可以用event.preventDefault()或在事件處理函數中返回false,即return false;
152、 jquery 表單提交前有幾種校驗方法?分別為??
【參考】
formData:返回一個數組,可以通過循環調用來校驗
jaForm:返回一個jQuery 對象,所有需要先轉換成dom 對象
fieldValue:返回一個數組beforeSend()
153、 在jquery 中你有沒有編寫過插件,插件有什么好處?你編寫過那些插件?它應該注意那些?
【參考】
插件的好處:對已有的一系列方法或函數的封裝,以便在其他地方重新利用,方便后期維護和提高開發效率插件的分類:封裝對象方法插件、封裝全局函數插件、選擇器插件
注意的地方:
1) 插件的文件名推薦命名為jquery.[插件名].js,以免和其他的javaScript 庫插件混淆。
2) 所有的對象方法都應當附加到jQuery.fn 對象上,而所有的全局函數都應當附加到jQuery對象本身上。
3) 插件應該返回一個jQuery 對象,以保證插件的可鏈式操作。
4) 避免在插件內部使用$作為jQuery 對象的別名,而應使用完整的jQuery 來表示,這樣可以避免沖突或使用閉包來避免。
5) 所有的方法或函數插件,都應當一分好結尾,否則壓縮的時候可能出現問題。在插件頭部加上分號,這樣可以避免他人的不規范代碼給插件帶來影響。
6) 在插件中通過$.extent({})封裝全局函數,選擇器插件,擴展已有的object 對象
7) 通過$.fn.extend({})封裝對象方法插件
154、 怎樣給jquery 動態附加新的元素?那么怎樣給新生成的元素綁定事件呢?
【參考】jQuery 的html()可以給現在元素附加新的元素直接在元素還未生成前就綁定肯定是無效的,因為所綁定的元素目前根本不存在。所以我們可以通過live 和livequery 來動態綁定事件
155、 IE 與FireFox 腳本兼容性問題
(1) window.event:表示當前的事件對象,IE 有這個對象,FF 沒有,FF 通過給事件處理函數傳遞事件對象
(2) 獲取事件源IE 用srcElement 獲取事件源,而FF 用target 獲取事件源
(3) 添加,去除事件IE:element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)
FF : element.addEventListener(“click”, function, true) element.removeEventListener(“click”,function, true)
(4) 獲取標簽的自定義屬性IE:div1.value 或div1[“value”]FF:可用div1.getAttribute(“value”)
(5) document.getElementByName()和document.all[name]IE;document.getElementByName()和document.all[name]均不能獲取div 元素
FF:可以
(6) input.type 的屬性
IE:input.type 只讀
FF:input.type 可讀寫
(7) innerText textContent outerHTML
IE:支持innerText, outerHTML
FF:支持textContent
(8) 是否可用id 代替HTML 元素
IE:可以用id 來代替HTML 元素
FF:不可以這里只列出了常見的,還有不少
156、 css+div 的優勢
Div+CSS 標准的優點:
1.大大縮減頁面代碼,提高頁面瀏覽速度,縮減帶寬成本;
2.結構清晰,容易被搜索引擎搜索到,天生優化了seo
3.縮短改版時間。只要簡單的修改幾個CSS 文件就可以重新設計一個有成百上千頁面的站點。
4.強大的字體控制和排版能力。CSS 控制字體的能力比糟糕的FONT 標簽好多了,有了CSS,我們不再需要用FONT 標簽或者透明的1 px GIF 圖片來控制標題,改變字體顏色,字體樣式等等。
5.CSS 非常容易編寫。你可以象寫html 代碼一樣輕松地編寫CSS。
6.提高易用性。使用CSS 可以結構化HTML
7.可以一次設計,隨處發布。更好的控制頁面布局
157、 DIV 和Span 的區別?
DIV(division)是一個塊級元素,可以包含段落、標題、表格,乃至諸如章節、摘要和備注等。而SPAN 是行內元素,SPAN 的前后是不會換行的,它沒有結構的意義,純粹是應用樣式,當其他行內元素都不合適時,可以使用SPAN在HTML 視圖中工作時,可以在<DIV> 內編輯文本,將某些字包含在<SPAN> 元素內,以強調那些字。與<DIV> 不同,<SPAN> 和它周圍的文本一起移動
158、 css 是什么層疊樣式表
層疊樣式表,用來進行頁面樣式設計,美化頁面顯示
159、 xml 有哪些解析技術,有什么區別?
有DOM,SAX,STAX 等
DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM 的樹結構所造成的,這種結構占用的內存較多,而且DOM 必須在解析文件之前把整個文檔裝入內存,適合對XML 的隨機訪問SAX:不現於DOM,SAX 是事件驅動型的XML 解析方式。它順序讀取XML 文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML 文件,適合對XML 的順序訪問
第86 頁共188 頁
問
160、 ajax 的工作原理?
Ajax 基本上就是把JavaScript 技術和XMLHttpRequest 對象放在Web 表單和服務器之間。當用戶填寫表單時,數據發送給一些JavaScript 代碼而不是直接發送給服務
器。相反,JavaScript 代碼捕獲表單數據並向服務器發送請求。同時用戶屏幕上的表單也不會閃爍、消失或延遲。換句話說,JavaScript 代碼在幕后發送請求,用戶甚至不知道請求的發出。更好的是,請求是異步發送的,就是說JavaScript 代碼(和用戶)不用等待服務器的響應。因此用戶可以繼續輸入數據、滾動屏幕和使用應用程序。然后,服務器將數據返回JavaScript 代碼(仍然在Web 表單中),后者決定如何處理這些數據。它可以迅速更新表單數據,讓人感覺應用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數據。JavaScript 代碼甚至可以對收到的數據執行某種計算,再發送另一個請求,完全不需要用戶干預!這就是XMLHttpRequest 的強大之處。它可以根據需要自行與服務器進行交互,用戶甚至可以完全不知道幕后發生的一切。結果就是類似於桌面應用程序的動態、快速響應、高交互性的體驗。
161、 在javascript 中設置定時調用myfun()函數(周期為1 秒)的代碼是?
setInterval(myfun(),1000)
162、 XML 文檔定義有幾種形式?它們之間有何本質區別?解析XML 文檔有哪幾種方式?
兩種形式dtd 、schema,
本質區別:schema 本身是xml 的,可以被XML 解析器解析(這也是從DTD 上發展schema 的根本目的)。
解析的中有:DOM、SAX、JDOM、DOM4J 等。
DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM 的樹結構所造成的,這種結構占用的內存較多,而且DOM 必須在解析文件之前把整個文檔裝入內存,適合對XML 的隨機訪問SAX:不現於DOM,SAX 是事件驅動型的XML 解析方式。它順序讀取XML 文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML 文件,適合對XML的順序訪問。
163、 HTTP 請求返回的狀態碼有哪些?分別有什么含義?
3XX:重定向,這類狀態碼代表需要客戶端采取進一步的操作才能完成請求。通常,這些狀態碼用來重定向,后續的請求地址(重定向目標)在本次響應的Location 域中指明。
302:請求的資源現在臨時從不同的URI 響應請求
303:對應當前請求的響應可以在另一個URI 上被找到,而且客戶端應當采用GET 的方式訪問那個資源。
4XX:請求錯誤,這類的狀態碼代表了客戶端看起來可能發生了錯誤,妨礙了服務器的處理。像,403、404、405 錯誤
5XX:服務器錯誤,這類狀態碼代表了服務器在處理請求的過程中有錯誤或者異常狀態發生,也有可能是服務器意識到以當前的軟硬件資源無法完成對請求的處理。
像,500、501、502 等錯誤
164、 二叉樹遍歷有幾種方法
有3 種方法。先序遍歷、中序遍歷、后序遍歷
165、 JSON 和XML 的優缺點
1) 在可讀性方面,JSON 和XML 的數據可讀性基本相同。JSON 和XML 的可讀性可謂不相上下,一邊是建議的語法,一邊是規范的標簽形式,很難分出勝負。
2) 在可擴展性方面,XML 天生有很好的擴展性,JSON 當然也有,沒有什么是XML 能擴展,JSON 不能的。
3) 在編碼難度方面,XML 有豐富的編碼工具,比如Dom4j、JDom 等,JSON 也有json.org提供的工具,但是JSON 的編碼明顯比XML 容易許多,即使不借助工具也能寫出JSON的代碼,可是要寫好XML 就不太容易了。
4) 在解碼難度方面,XML 的解析得考慮子節點父節點,讓人頭昏眼花,而JSON 的解析難度幾乎為0。這一點XML 輸的真是沒話說。
5) 在流行度方面,XML 已經被業界廣泛的使用,而JSON 才剛剛開始,但是在Ajax 這個特定的領域,未來的發展一定是XML 讓位於JSON。到時Ajax 應該變成Ajaj(AsynchronousJavascript and JSON)了。
6) JSON 和XML 同樣擁有豐富的解析手段。
7) JSON 相對於XML 來講,數據的體積小。
8) JSON 與JavaScript 的交互更加方便。
9) JSON 對數據的描述性比XML 較差。
10) JSON 的速度要遠遠快於XML。