『壹』 求一些java_web方向面試的問答題
應聘Java筆試時可能出現問題
Java基礎方面:
1、作用域public,private,protected,以及不寫時的區別
Public、Protected、Private是成員訪問修飾符;
final、abstract、transient、synchronized、native、strictfp是非訪問成員修飾符。
可見性 Public Protected Default Private
同一個類 是 是 是 是
同一個包中的類 是 是 是 否
同一個包中的子類 是 是 是 否
同一包外的子類 是 是 否 否
同一包外的非子類 是 否 否 否
Java的基本包
java.lang 其中包含有:
介面:Comparable、Cloneable、Runable等
類:八個基本數據類型封裝類、Math、Runtime、Object、String、StringBuffer、Thread、Exception等
集合框架
集合是將多個元素組成一個單元的對象。集合用於存儲、檢索和操縱數據。
集合框架提供管理對象集合的介面和類。它包含幾個組件,介面是表示集合的抽象數據類型,用於操縱集合;類是用於存儲集合的實際數據對象;演算法是用於操縱集合的。
2、ArrayList和Vector的區別,HashMap和Hashtable的區別
答:就ArrayList與Vector主要從二方面來說.
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半
ArrayList,Vector, LinkedList的存儲性能和特性
ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或後向遍歷,但是插入數據時只需要記錄本項的前後項即可,所以插入速度較快。
就HashMap與HashTable主要從三方面來說.
一.歷史原因:Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一實現
二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
三.值:只有HashMap允許在一個集合中有一個null鍵和在一個集合中有多個null值
Hashtable是HashMap的同步版本;HashMap允許有null值和一個null鍵,但是,Hashtable不允許有任何內容為null
Hashtable類的對象必須覆蓋Object類的hashCode()和equals()方法
關於其他集合類型:
一.ArrayList 提供快速遍歷和快速訪問。現在設計了新的 RandomAccess 介面,它指出這種列表支持快速隨機訪問。Vector也實現了RandomAccess 介面。
二.遍歷HashSet與HashMap時,其順序是未知的(但添加刪除快)。LinkedHashSet和LinkedHashSet是按照元素的插入的順序遍歷的(遍歷快)。
三.TreeSet和TreeMap將保證元素按照元素的自然順序進行排列。也可以使用一個用戶自己實現的比較規則。
四、HashSet有一個散列表支持它。它為基本操作提供固定時間性能。TreeSet它確保了排序集將按元素升序,根據自然順序排序。
Dictionary類
主要用於將關鍵字轉換成值,該類接收一個關鍵字並返回一個值。Dictionary是一個抽象類,它是H
Hashtable的超類。
Properties類
擴展了Hashtable類,但Properties對象的關鍵字和值必須是String類型,並能將對象寫入一個輸出流並保存在一個文件中,然後可以把它讀回一個輸入流。
如果需要維護和搜索一個部件列表,它們由唯一的字母數字序列號標示,其中的部件是Part類型,這時應該使用哪種集合?如果我們改變需求,你也需要能夠按順序、按它們的序列號列印出部件?
1、應該選擇HashMap
2、應該選擇TreeMap
3、char型變數中能不能存貯一個中文漢字?為什麼?
答:是能夠定義成為一個中文的,因為java中以unicode編碼,一個char佔16個位元組,所以放一個中文是沒問題的
4、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
答:多線程有兩種實現方法,分別是繼承Thread類與實現Runnable介面
同步的實現方面有兩種,分別是synchronized,wait與notify
GC是什麼? 為什麼要有GC?
GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。
7、垃圾回收機制,如何優化程序?
當一個對象失去引用或者離開了作用域後,就成為垃圾而被Java運行環境自動清除,清除垃圾就是清除這些對象。
Java垃圾回收機制的特點是:
1、 垃圾回收機制自動運行。系統提供一個低優先順序的線程來跟蹤內存的分配情況。如果發現某個內存單元不再使用,就清除它。
2、 何時清除垃圾是不可預期的。
3、 垃圾回收機制隨JVM的不同而不同。
Java的垃圾搜索器為內存管理器提供一種自動解決方案。缺點是不能完全控制它什麼時候執行以及什麼時候不執行。
當垃圾搜集器運行時,其目的是查找和刪除不能被訪問的對象。
垃圾搜集器受JVM控制,JVM決定什麼時候運行垃圾搜集器。從Java程序內可以請求JVM運行垃圾搜集器,但是,在任何情況下都無法保證JVM會答應你的請求。JVM通常會在它感到內存減少時運行垃圾搜集器。
垃圾收集器運行時,當它發現一個對象不能被任何活線程訪問時,它將認為該對象符合刪除條件,它可能在某時刪除該對象。
垃圾收集器不能保證有足夠的內存,它只能保證可以使用的內存將盡可能被有效的管理。
使對象符合垃圾搜集器搜索條件的情況有:出現空引用、重新為引用變數賦值、隔離引用。
強制執行垃圾搜集:
Runtime對象為直接與虛擬機通信提供一種機制。System類可以調用與其相同的方法。
請求垃圾收集器的最簡單的方法是:System.gc();
看看這些怎樣,要是感覺可以的話可以把這個面試題傳給你啊,有四十頁吧,挺全的。
『貳』 Java面試題:常用的Web伺服器有哪些
javaweb實習生面試需要准備些什麼,一般會出什麼筆試面試題?呵呵轉型會問問,i++,++i。以及線程方面的,還有一些資料庫的語句比如回滾還有一些查詢語句,post和get區別,面試看面試官:一種是根據你說的問你,比如你做過什麼項目讓你介紹,根據你說的項目問你一些東西。一種是著急用人的,會問你一些他們要做的項目方面的技術問題,這個是比較看運氣。建議:最好能熟練的掌握SSH和SSI架構或許會問你未來規劃,其實這個很重要,建議:說你對技術的規劃,不要說你的職位和公司還有工資的規劃
『叄』 javaweb開發實習生面試需要掌握哪些
javaweb實習生面試需要准備些什麼,一般會出什麼筆試面試題?
呵呵 轉型會問問,i++,++i。以及線程方面的,還有一些資料庫的語句比如回滾還有一些查詢語句,post和get區別,
面試看面試官:一種是根據你說的問你,比如你做過什麼項目讓你介紹,根據你說的項目問你一些東西。一種是著急用人的,會問你一些他們要做的項目方面的技術問題,這個是比較看運氣。
建議:最好能熟練的掌握SSH和SSI架構
或許會問你未來規劃 ,其實這個很重要,建議:說你對技術的規劃,不要說你的職位和公司還有工資的規劃
『肆』 java 筆試簡答題什麼是web容器
WEB容器:給處於其中(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接與容器中的環境變數介面交互,不必關注其它系統問題。主要有WEB伺服器來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的介面嚴格遵守J2EE規范中的WEB APPLICATION 標准。我們把遵守以上標準的WEB伺服器就叫做J2EE中的WEB容器。
『伍』 java web面試
你先回參加一個筆試,那裡面是一些習題,java基礎,資料庫,面向對象,數據結構,編程,演算法,考的比較雜,好公司的題還都挺難的
你自學時別的也看看。,只懂java web是不夠的
面試時不做題。技術方面會問你做過什麼項目,都用到了什麼技術,你負責的是哪一個部分,你說的時候要說含金量比較高的哪些項目,然後他還有可能問你一個技術的問題,比如:什麼是反射。然後又根據這裡面的一個問題一直問你,有的公司會有好幾輪面試:第一輪是群面。面試者坐在一起,他問一個問題。你們舉手回答,這使得問題一般也是生活問題,好的就進行到下一輪,有時也會問你的興趣愛好,盡量說一些團隊合作的興趣愛好,因為編程在公司中講究的是團隊合作,不善於合作是不行的。
『陸』 javaweb開發面試喜歡問哪些問題
這個一般不會看源碼的,反正我面試的時候就沒有被要求讓我給他源碼的。
他可能會問你做這些項目的一些思路吧,還有演算法最多了。基礎題有筆試呢,所以沒有必要帶個u盤
『柒』 javaweb實習生面試需要准備些什麼,一般會出什麼筆試面試題
1.一般有面試題,看一下【java面試寶典】
2.自信點,聲音大一點,不要怕,想像和熟人一樣對話
3.最好在簡歷中有亮點,學校的獎勵,一些活動的獎勵等,而且有自己的練習的項目經驗或者其他外接的項目經驗最好了
4或者說自己主動提出自己學習中有項目經驗,一般會問你:介紹下項目的功能,用到的技術,碰到的難題,先准備好
總的說來,要樂觀自信,有項目經驗最好,掌握常見的面試題,語言表達可以,溝通流暢,這樣肯定能過,對於很想進的公司的那得充分准備好,找下往上該公司往年的面試題
這是自己經歷而來的,如果滿意,請採納,謝謝
『捌』 java面試/筆試題
1.JSP、Servlet、JavaBean技術的出現給我們構建強大的企業應用系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是框架,Struts便應運而生。
經過長達五年的發展,Struts已經逐漸成長為一個穩定、成熟的框架,並且佔有了MVC框架中最大的市場份額。但是Struts某些技術特性上已經落後於新興的MVC框架。面對Spring MVC、Webwork2 這些設計更精密,擴展性更強的框架,Struts受到了前所未有的挑戰。但站在產品開發的角度而言,Struts仍然是最穩妥的選擇。
Struts2.0為其它框架提供了更好的集成。
使得與Spring的集成非常的容易。
2.Struts的工作流程:
在web應用啟動時就會載入初始化ActionServlet,ActionServlet從
struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象
當ActionServlet接收到一個客戶請求時,將執行如下流程.
-(1)檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回請求路徑無效信息;
-(2)如果ActionForm實例不存在,就創建一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中;
-(3)根據配置信息決定是否需要表單驗證.如果需要驗證,就調用ActionForm的validate()方法;
-(4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActuibErrors對象,就表示表單驗證成功;
-(5)ActionServlet根據ActionMapping所包含的映射信息決定將請求轉發給哪個Action,如果相應的Action實例不存在,就先創建這個實例,然後調用Action的execute()方法;
-(6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉發給ActionForward對象指向的JSP組件;
-(7)ActionForward對象指向JSP組件生成動態網頁,返回給客戶;
3.在struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調用。
4.(1) 對JDBC訪問資料庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。
(2) Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作
(3)hibernate使用Java反射機制,而不是位元組碼增強程序來實現透明性。
(4)hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系資料庫,從一對一到多對多的各種復雜關系。
5.原理:
(1).讀取並解析配置文件
(2).讀取並解析映射信息,創建SessionFactory
(3).打開Sesssion
(4).創建事務Transation
(5).持久化操作
(6).提交事務
(7).關閉Session
(8).關閉SesstionFactory
6.
Hibernate的最大的好處就是簡化資料庫的操作,允許你的代碼以對象模式來訪問資料庫內容,
比如通常我們找一個User的資料需要select出所需要的資料,而通過hibnate我們可以把這個User的資料作為一個對象來看待
,通過User.getName()或者User.getId()等操作來獲得,這樣就完全統一了上層JAVA或者C#等OO語言中對於資料庫的非OO操作的不和諧了.
另外對於復雜的表和表之間的關聯我們也不用去使用復雜的Select等SQL來操作,而使用對象可以方便獲得,
比如多對多關系某用戶屬於的部門的名稱,雖然底層資料庫使用了3個表的主鍵關聯操作,
但是我們可以通過User.getDep().getName()來簡單的獲得,這個就是持久化對象的好處了
7.
(1)、spring能簡化企業級開發, spring可以用簡單的java bean來代替實現復雜的EJB。(大部分情況下)
(2)、spring是一個輕量級的IOC和AOP框架,可以spring的IOC實現松耦合,而作為一個AOP框架他又能分離系統服務,實現內聚開發
(3)、spring是非侵入式,基於spring的系統可以不依賴於spring的類。
良好的spring運用可以使程序代碼清晰,容易維護,容易測試。
8.
Spring是個很不錯的框架。內部最核心的就是IOC了,
動態注入,讓一個對象的創建不用new了,可以自動的生產,這其實就是利用java里的反射
反射其實就是在運行時動態的去創建、調用對象,Spring就是在運行時,跟xml Spring的配置
文件來動態的創建對象,和調用對象里的方法的 。
Spring還有一個核心就是AOP這個就是面向切面編程,可以為某一類對象 進行監督和控制(也就是
在調用這類對象的具體方法的前後去調用你指定的 模塊)從而達到對一個模塊擴充的功能。這些都是通過
配置類達到的。
Spring目的:就是讓對象與對象(模塊與模塊)之間的關系沒有通過代碼來關聯,都是通過配置類說明
管理的(Spring根據這些配置 內部通過反射去動態的組裝對象)
要記住:Spring是一個容器,凡是在容器里的對象才會有Spring所提供的這些服務和功能。
Spring里用的最經典的一個設計模式就是:模板方法模式。(這里我都不介紹了,是一個很常用的設計模式)
Spring里的配置是很多的,很難都記住,但是Spring里的精華也無非就是以上的兩點,把以上兩點跟理解了
也就基本上掌握了Spring.
9.
(1).spring mvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模塊負責負責對請求進行真正的處理工作。
(2).DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.
(3).DispatcherServlet請請求提交到目標Controller
(4).Controller進行業務邏輯處理後,會返回一個ModelAndView
(5).Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
(6).視圖對象負責渲染返回給客戶端。
『玖』 java web面試應該注意哪些方面。比如知識點什麼的。
java的基礎知識點就太多了,要說也不能窮盡,這個主要是靠自己在平時的積累和項目的開發經驗,外邊考的多的一般是繼承,多態,線程,集合等等,但是筆試或者是面試中很有可能問許多集體的內容,比如hashMap和hashTable的異同點,集合的主要框架,這些要多看資料,我的建議是到網上去多下點筆試題,看到了就會有感覺,基礎知識牢靠的話,筆試很容易過。面試的時候(我只能說關於技術的部分),java web面試,首先面試官要看你有沒有項目的經驗,所以簡歷中肯定要有項目的經驗。再者,簡歷中的項目一定要是你親身經歷的,或者是你對這個項目很了解(不論是從技術或者是從源碼),因為面試官在你介紹的項目的時候很可能打斷你要你介紹具體的實現方法。 在介紹自己項目的時候,一定要發覺自己在項目中的閃光點,也就是有和一般的項目有重大區別的地方(可以對面試官詳訴)。然後就是你在項目中所使用的技術,你要有一定的了解,比如說spring,你首先要知道使用spring框架的好處,然後就是spring的主要組成(ioc和aop),當然面試官回問一些關於技術的實際問題(比如說載入的applicationContext.xml可不可以改名字,怎麼實現),這個就看你的項目經驗了。總的來說,關於技術方面你要知道使用技術的優點,基本的組成,這個可以多網上去搜索關於特定技術的面試問題。Mybatis我不是很懂所以給不了你答案,Struts好像學java web的都在用,但在實際開發中好像用的真的不是很多,面試的問題一般是關於它的配置問題,比如要返回一個json對象怎麼設置,幾個配置文件怎麼糅合,我也不知道說什麼好,如果可以的話,還是上網上搜搜看。好了,說的就是這么多,希望你能有收獲。
『拾』 有哪些經典的 Web 前端或者 JavaScript 面試筆試題
一、不定項選擇題 (每題3分,共30分)
1. 聲明一個對象,給它加上name屬性和show方法顯示其name值,以下代碼中正確的是( D )
A. var obj = [name:"zhangsan",show:function(){alert(name);}];
B. var obj = {name:」zhangsan」,show:」alert(this.name)」};
C. var obj = {name:」zhangsan」,show:function(){alert(name);}};
D. var obj = {name:」zhangsan」,show:function(){alert(this.name);}};
2. 以下關於Array數組對象的說法不正確的是( CD )
A. 對數組里數據的排序可以用sort函數,如果排序效果非預期,可以給sort函數加一個排序函數的參數
B. reverse用於對數組數據的倒序排列
C. 向數組的最後位置加一個新元素,可以用pop方法
D. unshift方法用於向數組刪除第一個元素
3. 要將頁面的狀態欄中顯示「已經選中該文本框」,下列JavaScript語句正確的是( A )
A. window.status=」已經選中該文本框」
B. document.status=」已經選中該文本框」
C. window.screen=」已經選中該文本框」
D. document.screen=」已經選中該文本框」
4. 點擊頁面的按鈕,使之打開一個新窗口,載入一個網頁,以下JavaScript代碼中可行的是( AD )
A.
onclick=」open(『new.html』, 『_blank』)」/>
B.
onclick=」window.location=』new.html』;」/>
C.
onclick=」location.assign(『new.html』);」/>
D.
5. 使用JavaScript向網頁中輸出
hello
,以下代碼中可行的是( BD )
A.
document.write(
hello
);
B.
document.write(「
hello
」);
C.
hello
D.
document.write(「hello」);
6. 分析下面的代碼:
function writeIt (value) { document.myfm.first_text.value=value;}
以下說法中正確的是( CD )
A. 在頁面的第二個文本框中輸入內容後,當滑鼠離開第二個文本框時,第一個文本框的內容不變
B. 在頁面的第一個文本框中輸入內容後,當滑鼠離開第一個文本框時,將在第二個文本框中復制第一個文本框的內容
C. 在頁面的第二個文本框中輸入內容後,當滑鼠離開第二個文本框時,將在第一個文本框中復制第二個文本框的內容
D. 在頁面的第一個文本框中輸入內容後,當滑鼠離開第一個文本框時,第二個文本框的內容不變
7. 下面的JavaScript語句中,( D )實現檢索當前頁面中的表單元素中的所有文本框,並將它們全部清空
A. for(vari=0;i< form1.elements.length;i++) {
if(form1.elements.type==」text」)
form1.elements.value=」";}
B. for(vari=0;i
if(forms[0].elements.type==」text」)
forms[0].elements.value=」";
}
C. if(document.form.elements.type==」text」)
form.elements.value=」";
D. for(vari=0;i
for(var j=0;j
if(document.forms.elements[j].type==」text」)
document.forms.elements[j].value=」";
}
}
8. 在表單(form1)中有一個文本框元素(fname),用於輸入電話號碼,格式如:010-82668155,要求前3位是010,緊接一個「-」,後面是8位數字。要求在提交表單時,根據上述條件驗證該文本框中輸入內容的有效性,下列語句中,( A )能正確實現以上功能
A. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」|| str.substr(4).length!=8 ||
isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
B. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」 && str.substr(4).length!=8 &&
isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
C. var str= form1.fname.value;
if(str.substr(0,3)!=」010-」|| str.substr(3).length!=8 ||
isNaN(parseFloat(str.substr(3))))
alert(「無效的電話號碼!」);
D. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」&& str.substr(4).length!=8 &&
!isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
9. 關於正則表達式聲明6位數字的郵編,以下代碼正確的是( C )
A. var reg = /\d6/;
B. var reg = \d{6}\;
C. var reg = /\d{6}/;
D. var reg = new RegExp(「\d{6}」);
10. 關於JavaScript里的xml處理,以下說明正確的是( BCD )
A. Xml是種可擴展標記語言,格式更規范,是作為未來html的替代
B. Xml一般用於傳輸和存儲數據,是對html的補充,兩者的目的不同
C. 在JavaScript里解析和處理xml數據時,因為瀏覽器的不同,其做法也不同
D. 在IE瀏覽器里處理xml,首先需要創建ActiveXObject對象
二、問答題
1. 列舉瀏覽器對象模型BOM里常用的至少4個對象,並列舉window對象的常用方法至少5個 (10分)
對象:Window document location screen history navigator
方法:Alert() confirm() prompt() open() close()
2. 簡述列舉文檔對象模型DOM里document的常用的查找訪問節點的方法並做簡單說明 (10分)
Document.getElementById 根據元素id查找元素
Document.getElementByName 根據元素name查找元素
Document.getElementTagName 根據指定的元素名查找元素
三、程序題
1、補充按鈕事件的函數,確認用戶是否退出當前頁面,確認之後關閉窗口; (10分)
function closeWin(){
//在此處添加代碼
if(confirm(「確定要退出嗎?」)){
window.close();
}
}
2、寫出簡單描述html標簽(不帶屬性的開始標簽和結束標簽)的正則表達式,並將以下字元串中的html標簽去除掉(15分)
var str = 「
這里是div
裡面的段落
」;
//
varreg = /<\/?\w+\/?>/gi;
varstr = 「
這里是div
裡面的段落
」;
alert(str.replace(reg,」"));
3、完成foo()函數的內容,要求能夠彈出對話框提示當前選中的是第幾個單選框。(10分)
function foo() {
//在此處添加代碼
var rdo =document.form1.radioGroup;
for(var i =0 ;i
if(rdo.checked){
alert(「您選擇的是第」+(i+1)+」個單選框」);
}
}
}
4、完成函數showImg(),要求能夠動態根據下拉列表的選項變化,更新圖片的顯示 (15分)
function showImg (oSel) {
//在此處添加代碼
var str = oSel.value;
document.getElementById(「pic」).src= str+」.jpg」;
}