<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-208  評(píng)論-469  文章-30  trackbacks-0

    北京一家JAVA開(kāi)發(fā)公司面試題(留給后人)
    cnliutian (手起刀落,小日本雞雞被砍掉)???? 2004-10-26 12:20:43 在 Java / Web 開(kāi)發(fā) 提問(wèn)
    1、jsp有哪些內(nèi)置對(duì)象?作用分別是什么?
    2、描述一下servlet的生命周期和基本架構(gòu)。
    3、多線程有幾種實(shí)現(xiàn)方法,都是什么?
    ????? 同步有幾種實(shí)現(xiàn)方法,都是什么?
    4、作用域public?? private?? protected以及不寫(xiě)時(shí)的區(qū)別?
    5、用JAVA實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢(寫(xiě)一段完整的程序)。
    6、用正則表達(dá)式判斷123456_78不是一個(gè)數(shù)字。
    7、排序都有哪幾種方法?請(qǐng)列舉。用JAVA實(shí)現(xiàn)一個(gè)快速排序。
    ---------------------------------------------------------------
    以上是北京一家JAVA開(kāi)發(fā)公司出的面試題,在這里貼出來(lái)是想留給剛出道且正在找工作的JAVA兄弟。
    也希望這里的高高手給出正確答案,以給后人一些借鑒,造福于后人!

    out---Jsp.jspWriter的對(duì)象,在html上顯示內(nèi)容
    request---HttpServlet的對(duì)象,包含請(qǐng)求信息
    response---HttpServlet的對(duì)象,對(duì)請(qǐng)求所作出的響應(yīng)
    session---HttpSession的對(duì)象,每個(gè)客戶與當(dāng)前請(qǐng)求建立的唯一的會(huì)話
    exception--throwable的子類,請(qǐng)求發(fā)生錯(cuò)誤時(shí)拋出的異常
    page--相當(dāng)于this

    servelt的生命自web服務(wù)器啟動(dòng)時(shí)開(kāi)始至服務(wù)器關(guān)閉時(shí)結(jié)束,jvm第一次加載后駐留在內(nèi)存中,所有請(qǐng)求共享同一個(gè)servlet,包括init(),service(),start(),stop(),destrop(),doGet(),doPost()等方法,第一次加載時(shí)首先call?? init()方法,然后service()方法,不說(shuō)了不說(shuō)了,太羅嗦了,

    1。當(dāng)一個(gè)線程進(jìn)入moniter(也就是說(shuō)站用一個(gè)object),另一個(gè)線程只有等待或返回,而我們把返回就稱為一種模式,這種模式的英文是Balking。??

    2。這兩個(gè)線程可以是有序的執(zhí)行,而不是讓OS來(lái)調(diào)度,這時(shí)我們要用一個(gè)object來(lái)調(diào)度,這種模式稱為Scheduler。(這個(gè)詞及其含義其實(shí)OS中就有)。??

    3。如果這兩個(gè)線程同時(shí)讀一個(gè)資源,我們可以讓他們執(zhí)行,但如果同時(shí)寫(xiě)的話,你閉著眼睛都會(huì)知道可能出現(xiàn)問(wèn)題,這時(shí)我們就要用另一種模式(Read/Write?? Lock)。??

    4。如果一個(gè)線程是為另一個(gè)線程服務(wù)的話,比如IE中負(fù)責(zé)數(shù)據(jù)傳輸?shù)木€程和界面顯示的線程,當(dāng)一個(gè)圖片沒(méi)有傳完時(shí),另一個(gè)線程就無(wú)法顯示,至少是部分沒(méi)有傳完。那么這時(shí)我們要用一個(gè)模式稱為生產(chǎn)者和消費(fèi)者,英文是Producer-Consumer。??

    5。兩個(gè)線程的消亡也可以不是完全又OS來(lái)控制的,這時(shí)我們需要給出一個(gè)條件,使得每個(gè)線程在符合條件是才消亡,也就是有序的消亡,我們稱為T(mén)wo-Phase?? Termination。

    1.?????? JSP有哪些內(nèi)置對(duì)象?作用分別是什么?
    (1)?? HttpServletRequest類的Request對(duì)象
    作用:代表請(qǐng)求對(duì)象,主要用于接受客戶端通過(guò)HTTP協(xié)議連接傳輸?shù)椒?wù)器端的數(shù)據(jù)。
    (2)?? HttpServletResponse類的Respone對(duì)象
    作用:代表響應(yīng)對(duì)象,主要用于向客戶端發(fā)送數(shù)據(jù)
    (3)?? JspWriter類的out對(duì)象
    作用:主要用于向客戶端輸出數(shù)據(jù);??
    ??????????????? Out的基類是JspWriter
    (4)?? HttpSession類的session對(duì)象
    作用:主要用于來(lái)分別保存每個(gè)用戶信息,與請(qǐng)求關(guān)聯(lián)的會(huì)話;
    ????????????????? 會(huì)話狀態(tài)維持是Web應(yīng)用開(kāi)發(fā)者必須面對(duì)的問(wèn)題。
    (5)?? ServletContex類的application對(duì)象
    作用:主要用于保存用戶信息,代碼片段的運(yùn)行環(huán)境;
    ??????????????? 它是一個(gè)共享的內(nèi)置對(duì)象,即一個(gè)容器中的多個(gè)用戶共享一個(gè)application對(duì)象,故其保存的信息被所有用戶所共享.
    (6)?? PageContext類的PageContext對(duì)象
    作用:管理網(wǎng)頁(yè)屬性,為JSP頁(yè)面包裝頁(yè)面的上下文,管理對(duì)屬于JSP中特殊可見(jiàn)部分中已命名對(duì)象的訪問(wèn),它的創(chuàng)建和初始化都是由容器來(lái)完成的。
    (7)?? ServletConfig類的Config對(duì)象
    作用:代碼片段配置對(duì)象,表示Servlet的配置。
    (8)?? Object類的Page(相當(dāng)于this)對(duì)象
    作用:處理JSP網(wǎng)頁(yè),是Object類的一個(gè)實(shí)例,指的是JSP實(shí)現(xiàn)類的實(shí)例,即它也是JSP本身,只有在JSP頁(yè)面范圍之內(nèi)才是合法的。
    (9)Exception
    作用:處理JSP文件執(zhí)行時(shí)發(fā)生的錯(cuò)誤和異常

    第8份JAVA面試題(出自北京一家JAVA公司,留給后人)
    cnliutian (手起刀落,小日本雞雞被砍掉)???? 2004-11-12 16:06:30 在 Java / Web 開(kāi)發(fā) 提問(wèn)
    1、要?jiǎng)?chuàng)建一個(gè)物理表,包括字段(id?? 整型?? 長(zhǎng)度30?? 主鍵,title?? 字符型?? 長(zhǎng)度200,content?? 大字段),請(qǐng)分別寫(xiě)出在Oracle和DB2環(huán)境下的建表SQL語(yǔ)句。

    2、在Oracle數(shù)據(jù)庫(kù)中有一張叫做content的表,該表結(jié)構(gòu)如下

    字段名?????? 類型???????????????????? 長(zhǎng)度???? 主鍵
    ------???????? ------???? ----?????? ------
    ? id BigDecimal?????????? 是
    Title???????? Varchar2???????????????????? 500
    content???????? clob

    假設(shè)該表中有50條數(shù)據(jù),要求查出第1000至第1100條之間的數(shù)據(jù),請(qǐng)給出查詢SQL語(yǔ)句。

    3、請(qǐng)描述HashMap和Hashtable的區(qū)別及各自用途。

    4、如何保證在JAVA應(yīng)用程序中,一個(gè)類class只有一個(gè)實(shí)例存在,并給出示例代碼。

    5、try{}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally{}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?

    6、一個(gè)try{}后最多可以有多少個(gè)catch()語(yǔ)句

    7、給出一個(gè)含有匿名內(nèi)部類的JAVA類文件示例代碼。

    8、分析下面代碼:

    1?? interface?? Inter{}
    2?? class?? A{}
    3?? class?? B?? extends?? A?? implements?? Inter{}
    4?? class?? C?? extends?? B{
    5 public?? static?? void?? main(String[]?? args){
    6 A?? a?? =?? new?? A();
    7 B?? b?? =?? new?? B();
    8 C?? c?? =?? new?? C();
    9 if(a?? instanceof?? B)
    10 System.out.println("Hello");
    11 if(b?? instanceof?? A)
    12 System.out.println("Hello");
    13 if(c?? instanceof?? C)
    14 System.out.println("Hello");
    15 if(c?? instanceof?? Inter)
    16 System.out.println("Hello");
    }
    ??? }
    當(dāng)運(yùn)行class?? C時(shí),程序中第10.12.14.16地中哪一行代碼將被執(zhí)行。


    ④JAVA高級(jí)程序員面試題(留給后人)
    cnliutian (手起刀落,小日本雞雞被砍掉)???? 2004-10-30 14:39:34 在 Java / Web 開(kāi)發(fā) 提問(wèn)
    1、簡(jiǎn)單描述一下awt與swing區(qū)別。
    2、簡(jiǎn)述java編程中事件處理模式。
    3、你編寫(xiě)過(guò)applet嗎?applet的安全權(quán)限如何?試列舉java?? application或者applet中與servlet/jsp通信可以采用的方式。

    2.采用動(dòng)態(tài)事件驅(qū)動(dòng)(直接事件驅(qū)動(dòng))
    1.applet的安全機(jī)制在java中有個(gè)稱沙箱的安全機(jī)制這樣也就限制了它:
    ??????? 如:不允許它調(diào)?? 其他程序。
    ??????????????? 文件讀寫(xiě)(本地磁盤(pán))。
    ????????? 等等。
    JAVA程序員面試題
    cnliutian (手起刀落,小日本雞雞被砍掉)???? 2004-11-11 14:11:42 在 Java / 非技術(shù)區(qū) 提問(wèn)
    1、數(shù)據(jù)庫(kù)
    表a和表b具有完全相同的結(jié)構(gòu),主鍵為indexid。寫(xiě)出一個(gè)sql語(yǔ)句把表b中不存在而表a中存在的數(shù)據(jù)插入到表b中。
    2、javascript部分
    頁(yè)面中有一個(gè)名稱都為unitprice的type=text對(duì)象。要求輸入的數(shù)據(jù)不能為空,寫(xiě)一個(gè)函數(shù)實(shí)現(xiàn)該功能,如果為空時(shí)給出提示。
    3、JSP部分
    ①session中存儲(chǔ)一個(gè)String變量,變量名稱為studentname,寫(xiě)出在jsp中如何得到這個(gè)session變量的值的語(yǔ)句。
    ②在jsp中引用使用<jsp:useBean?? id="?? "?? ...scope="?? "/>來(lái)引用javabean.
    Ⅰscope的值有哪些,這些值的區(qū)別是什么?
    Ⅱ不同的jsp頁(yè)面中引用javabean時(shí),id能否相同,如果能相同,對(duì)scope的值有什么要求?
    4、JAVA部分
    ①輸入一個(gè)維數(shù),輸出以下形式的矩陣和數(shù)列,以維數(shù)n=4為例:
    0000
    0111
    0122
    0123
    ②寫(xiě)出下面這段程序的運(yùn)行結(jié)果
    int?? a=2,b=3,c=1
    a+=--b+c;
    c-=b+a++;
    System.out.println("a="+a+",b="+b+",c="+c);
    5、有一個(gè)Vector對(duì)象,其中每一個(gè)元素都是一個(gè)String對(duì)象,請(qǐng)用for循環(huán)或while循環(huán)輸出Vector中的元素,要求格式為:"第i個(gè)元素為:aaa"
    6、有一個(gè)HashMap其中key為String對(duì)象,value為Integer對(duì)象,寫(xiě)一個(gè)方法打印出此Map中的所有鍵值?? 對(duì)形如?? key--value
    7、有一個(gè)String?? str="001,A001;002,A002;003,A003"的串,寫(xiě)一個(gè)方法,把此串存入列?? 一個(gè)HashMap或Hashtable中,說(shuō)明:如001為key,A001則為value。
    8、面向?qū)ο蟾拍睿?br />①面向?qū)ο蠡咎卣?br />②什么叫多態(tài)和重載,它們有什么區(qū)別?
    ③用你自己的話描述你理解的j2ee的本質(zhì)特征是什么?

    第一題:? 寫(xiě)一個(gè)方法,實(shí)現(xiàn)刪除鏈表中某個(gè)節(jié)點(diǎn)的操作(其他條件自己假設(shè),補(bǔ)充)
    public void delete()
    {
    ?if(front>=rear)
    ?{
    ?s[front] =0;
    ?front--;
    ?System.out.println("\ndelete successful");
    ?}
    ?else
    ?{
    ? System.out.println("the link is empty ,can't delete");
    ?}
    }
    第二題:? 寫(xiě)一個(gè)方法,實(shí)現(xiàn)堆棧的入棧操作 (其他條件自己假設(shè),補(bǔ)充)

    public class stack{
    ?private int[] s;
    ?int top,bottom;
    ?public stack(int size){
    ? s = new int[size];
    ? top = size-1;
    ? bottom = size-1;
    ? System.out.println("Size of the stack is:"+size);
    ?}
    ?public boolean isEmpty()
    ?{
    ? if(top==s.length-1)
    ? return true;
    ? else
    ? return false;
    ?}
    ?public void push(int n)
    ?{
    ? if(top<0)
    ? {
    ? System.out.println("The stack is full now,you can't push your data!");
    ? return;
    ? }
    ? else
    ? {?
    ? s[top] = n;
    ? top--;
    ? return ;
    ? }
    ?}
    ?public void pop()
    ?{
    ? if(top>=s.length-1)
    ? {
    ?? System.out.println("The stack is empty,Can't pop now!");
    ?? return;
    ? }
    ? else
    ? {
    ?? top++;
    ? }
    ?}
    ?public void print()
    ?{
    ? System.out.println("State of the stack:");
    ? for(int i=s.length-1;i>top;i--)
    ? {
    ?? System.out.print(s[i]+"? ");
    ? }
    ?}
    ?public static void main(String[] a)
    ?{
    ? stack st = new stack(5);
    ? System.out.println("List of the action to the stack:");
    ? System.out.println("push(3):");
    ? st.push(3);
    ? st.print();
    ? System.out.println("? ");
    ? System.out.println("push(6)");
    ? st.push(6);
    ? st.print();
    ? System.out.println("? ");
    ? System.out.println("push(10)");
    ? st.push(10);
    ? st.print();
    ? System.out.println("? ");
    ? System.out.println("pop()");
    ? st.pop();
    ? st.print();
    ? System.out.println("? ");
    ?
    ?}
    }

    ?

    第三題: 使用任意排序算法,寫(xiě)一個(gè)排序示例程序

    import java.io.*;
    class SelectionSort{
    ?
    ?public static void main(String[] args){
    ? int[] a={4,54,8,7,6,98,42,};
    ? sort(a);
    ? for(int i=0;i<a.length;i++){
    ?? System.out.print(a[i]+"?? ");
    ?? }
    ?? System.out.println("");
    }

    ?? static void sort(int[] data){
    ? int next, indexOfNext=0,n;
    ??? for (next=0;next<data.length-1;next++)
    ??? {
    ???
    ??????? indexOfNext=min(data,next,(data.length)-1);
    ???? swap(data,indexOfNext,next);
    ? }
    ? }
    ?
    ? static int min(int[] data,int start,int end){
    ?? int indexOfMin=start;
    ?? for (int i=start+1;i<=end;i++)
    ?? if(data[i]<data[indexOfMin])
    ?? indexOfMin=i;
    ??
    ?? return indexOfMin;
    ? }
    ? static void swap(int[] data,int first,int second){
    ?? int temp;
    ?? temp=data[first];
    ?? data[first]=data[second];
    ?? data[second]=temp;
    ?? }
    ?
    }

    第四題:
    編寫(xiě)一個(gè)servlet,把servlet源碼和此servlet在服務(wù)器上的配置文件web.xml作為附件發(fā)送到指定的郵箱
    ????? servlet的功能要求:記錄訪問(wèn)該servlet的客戶端的ip和訪問(wèn)時(shí)間,把記錄寫(xiě)入client_ip.log文件。 client_ip.log里的格式大致如下:

    ?9:36 2005-4-8 192.168.0.1
    ?9:36 2005-4-8 127.0.0.1

    <BR>獲取客戶的IP地址


    第五題
    ?數(shù)據(jù)庫(kù)中有兩個(gè)表tableA和tableB,他們都有一個(gè)int型的字段id,請(qǐng)寫(xiě)出一個(gè)sql語(yǔ)句,實(shí)現(xiàn)查詢id在tableA中有,而tableB中沒(méi)有的記錄
    ?例如tableA中有如下記錄
    ?----------------------------
    ?tableA.id tableA.name
    ?3? Mary
    ?4? Jack
    ?5? Lily
    ?----------------------------
    ?tableB.id
    ?3
    ?5
    ?查詢的結(jié)果應(yīng)該是
    ?----------------------------
    ?tableA.id tableA.name
    ?4? Jack


    select *
    from tableA
    where not exists
    (select *
    from tableB
    where tableA.id=tableB.id)
    第六題?? 簡(jiǎn)述jsp和servlet的聯(lián)系

    Java Servlet是JSP技術(shù)的基礎(chǔ),而且大型的Web應(yīng)用程序的開(kāi)發(fā)需要Java Servlet和JSP配合才能完成。現(xiàn)在許多Web服務(wù)器都支持Servlet,即使不直接支持Servlet的Web服務(wù)器,也可以通過(guò)附件的應(yīng)用服務(wù)器和模塊來(lái)支持Servlet,這得益于Java的跨平臺(tái)特性。另外,由于Servlet內(nèi)部以線程方式提供提供服務(wù),不必對(duì)于每個(gè)請(qǐng)求都啟動(dòng)一個(gè)進(jìn)程,并且利用多線程機(jī)制可以同時(shí)為多個(gè)請(qǐng)求服務(wù),因此Servlet的效率非常高。

    第七題?? 什么是sql注入漏洞,采用什么方法來(lái)堵住sql注入漏洞


    隨著B(niǎo)/S模式應(yīng)用開(kāi)發(fā)的發(fā)展,使用這種模式編寫(xiě)應(yīng)用程序的程序員也越來(lái)越多。但是由于這個(gè)行業(yè)的入門(mén)門(mén)檻不高,程序員的水平及經(jīng)驗(yàn)也參差不齊,相當(dāng)大一部分程序員在編寫(xiě)代碼的時(shí)候,沒(méi)有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。用戶可以提交一段數(shù)據(jù)庫(kù)查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù),這就是所謂的SQL Injection,即SQL注入

    第八題:簡(jiǎn)述你對(duì)xml的認(rèn)識(shí),舉例說(shuō)明xml能干什么,應(yīng)該怎么做

    XML是Extensible Markup Language的縮寫(xiě),意思是可擴(kuò)展置標(biāo)語(yǔ)言沒(méi)有于置標(biāo)電子文檔,使起數(shù)據(jù)具有結(jié)構(gòu)化的置標(biāo)語(yǔ)言。在我目前淺顯的認(rèn)識(shí)里:,
    XML 是用來(lái)傳遞數(shù)據(jù)的 ,
    XML 讓這些數(shù)據(jù)有了結(jié)構(gòu) -- 一個(gè)樹(shù)型結(jié)構(gòu)? ,
    xml 有全套的操作這種結(jié)構(gòu)的方法???
    xml 規(guī)范(或者說(shuō)的實(shí)際點(diǎn),xml parser)幫你確定你創(chuàng)建的字符串是合法的????
    xml 規(guī)范(或者說(shuō)的實(shí)際點(diǎn),xml parser)中有辦法驗(yàn)證這個(gè)合法性??
    對(duì)于XML能用來(lái)做什么,我覺(jué)得XML可以用來(lái)下面幾個(gè)方面
    1:有利于開(kāi)發(fā)靈活的web應(yīng)用軟件
    使用XML來(lái)描述數(shù)據(jù),可以使數(shù)據(jù)具有同意的組織結(jié)構(gòu),其他應(yīng)用軟件,對(duì)象,中間層和服務(wù)器都可以對(duì)使用XML描述的數(shù)據(jù)做進(jìn)一步的處理。并可以提交到瀏覽器中讓讀者閱讀
    2:可以輕松的實(shí)現(xiàn)數(shù)據(jù)在web上發(fā)布
    因?yàn)閄ML本身是純文本格式的,它可以不做任何修改就和HTML文檔一樣在網(wǎng)絡(luò)中傳輸。
    3:有利于信息的集成
    因?yàn)槭褂肵ML,可以把不同來(lái)源的結(jié)構(gòu)化數(shù)據(jù)很容易地組織到一起。應(yīng)用軟件可以在中間層的服務(wù)器上對(duì)來(lái)自于后段數(shù)據(jù)庫(kù)和其他的數(shù)據(jù)進(jìn)行集成。最后,數(shù)據(jù)以XML格式發(fā)送到客戶端或者是在其他服務(wù)器做進(jìn)一步處理。
    4:可以使用豐富的樣式來(lái)顯示數(shù)據(jù)
    XML采用結(jié)構(gòu)化的方式來(lái)組織數(shù)據(jù),描述的是數(shù)據(jù)本身,不涉及到數(shù)據(jù)的表現(xiàn)形式。通常來(lái)說(shuō),使用CSS和 XSL以及XSLT為數(shù)據(jù)的顯示提供分布的機(jī)制,也就是說(shuō)數(shù)據(jù)的顯示方式可以根據(jù)客戶的要求制定。
    5:可大大增強(qiáng)服務(wù)器的可伸縮性
    XML將數(shù)據(jù)本身和數(shù)據(jù)的顯示完全分離,從而可以在結(jié)構(gòu)化的數(shù)據(jù)中嵌套數(shù)據(jù)的顯示方式描述。這樣,能盡可能地減少客戶端與服務(wù)器之間的數(shù)據(jù)交換,減少服務(wù)器的工作量才能大大提高服務(wù)器的性能。
    6:采用統(tǒng)一的XML文檔格式來(lái)描述多種應(yīng)用的數(shù)據(jù)
    7:支持本地?cái)?shù)據(jù)處理
    因?yàn)閄ML文檔中的數(shù)據(jù)格式是統(tǒng)一的,當(dāng)客戶受到數(shù)據(jù)后,便可以使用客戶自己的應(yīng)用軟件來(lái)解析數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步的編輯和處理。
    8:可以使搜索變得更加簡(jiǎn)單和富有成效
    采用統(tǒng)一的XML標(biāo)識(shí)來(lái)組織來(lái)自不同數(shù)據(jù)庫(kù)的數(shù)據(jù),就可以在不了解數(shù)據(jù)庫(kù)數(shù)據(jù)組織形式的情況下進(jìn)行數(shù)據(jù)的檢索。
    9:可以實(shí)現(xiàn)數(shù)據(jù)的獨(dú)立更新
    10:開(kāi)放式的標(biāo)準(zhǔn)
    雖然XML的初衷是為了使具有不同結(jié)構(gòu)的數(shù)據(jù)文件采用統(tǒng)一的XML格式 在Internet上傳輸,

    第九題
    介紹你做的一個(gè)項(xiàng)目,包括實(shí)現(xiàn)了什么功能,通過(guò)什么方法來(lái)實(shí)現(xiàn)(算法,邏輯結(jié)構(gòu)...),怎么來(lái)保證它的安全和健壯性等.
    (如果沒(méi)有項(xiàng)目經(jīng)驗(yàn),可假設(shè)你要做一個(gè)OA系統(tǒng),描述一下你怎么來(lái)實(shí)現(xiàn)它)


    選做
    第十題:

    如何察看linux當(dāng)前系統(tǒng)正在運(yùn)行什么服務(wù)?

    第十一題:

    linux系統(tǒng)的用戶帳號(hào)保存在那一個(gè)或哪幾個(gè)文件里?

    第十二題

    簡(jiǎn)述MVC是什么

    MVC是 Model-View-Controller 的簡(jiǎn)稱,也就是 模型-視圖-控制器
    MVC用來(lái)處理驗(yàn)證、流程控制和更新應(yīng)用程序的狀態(tài)等問(wèn)題。
    Model(模型)
    模型包含應(yīng)用程序的核心功能。模型封裝了應(yīng)用程序的狀態(tài)。有時(shí)它包含的唯一功能就是狀態(tài)。它對(duì)視圖或控制器一無(wú)所知。
    View(視圖)
    視圖提供模型的表示。它是應(yīng)用程序的外觀。視圖可以訪問(wèn)模型的讀方法,但不能訪問(wèn)寫(xiě)方法。此外,它對(duì)控制器一無(wú)所知。當(dāng)更改模型時(shí),視圖應(yīng)得到通知。
    Controller(控制器)
    控制器對(duì)用戶的輸入作出反應(yīng)。它創(chuàng)建并設(shè)置模型。

    ?

    ?

    java面試題集

    基礎(chǔ)知識(shí):
    1.C++或Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。

    當(dāng)JAVA程序違反了JAVA的語(yǔ)義規(guī)則時(shí),JAVA虛擬機(jī)就會(huì)將發(fā)生的錯(cuò)誤表示為一個(gè)異常。違反語(yǔ)義規(guī)則包括2種情況。一種是JAVA類庫(kù)內(nèi)置的語(yǔ)義檢查。例如數(shù)組下標(biāo)越界,會(huì)引發(fā)IndexOutOfBoundsException;訪問(wèn)null的對(duì)象時(shí)會(huì)引發(fā)NullPointerException。另一種情況就是JAVA允許程序員擴(kuò)展這種語(yǔ)義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時(shí)用throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。

    2. Java的接口和C++的虛類的相同和不同處。

    由于Java不支持多繼承,而有可能某個(gè)類或?qū)ο笠褂梅謩e在幾個(gè)類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩?,現(xiàn)有的單繼承機(jī)制就不能滿足要求。與繼承相比,接口有更高的靈活性,因?yàn)榻涌谥袥](méi)有任何實(shí)現(xiàn)代碼。當(dāng)一個(gè)類實(shí)現(xiàn)了接口以后,該類要實(shí)現(xiàn)接口里面所有的方法和屬性,并且接口里面的屬性在默認(rèn)狀態(tài)下面都是public static,所有方法默認(rèn)情況下是public.一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。

    3. 垃圾回收的優(yōu)點(diǎn)和原理。并考慮2種回收機(jī)制。

    Java語(yǔ)言中一個(gè)顯著的特點(diǎn)就是引入了垃圾回收機(jī)制,使c++程序員最頭疼的內(nèi)存管理的問(wèn)題迎刃而解,它使得Java程序員在編寫(xiě)程序的時(shí)候不再需要考慮內(nèi)存管理。由于有個(gè)垃圾回收機(jī)制,Java中的對(duì)象不再有“作用域”的概念,只有對(duì)象的引用才有“作用域”。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個(gè)單獨(dú)的低級(jí)別的線程運(yùn)行,不可預(yù)知的情況下對(duì)內(nèi)存堆中已經(jīng)死亡的或者長(zhǎng)時(shí)間沒(méi)有使用的對(duì)象進(jìn)行清楚和回收,程序員不能實(shí)時(shí)的調(diào)用垃圾回收器對(duì)某個(gè)對(duì)象或所有對(duì)象進(jìn)行垃圾回收?;厥諜C(jī)制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收。

    4. 請(qǐng)說(shuō)出你所知道的線程同步的方法。

    wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象的lock。

    sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。

    notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。

    Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是讓它們競(jìng)爭(zhēng)。

    5. 請(qǐng)講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用。

    6. Error與Exception有什么區(qū)別?

    Error表示系統(tǒng)級(jí)的錯(cuò)誤和程序不必處理的異常,

    Exception表示需要捕捉或者需要程序進(jìn)行處理的異常。

    7. 在java中一個(gè)類被聲明為final類型,表示了什么意思?

    表示該類不能被繼承,是頂級(jí)類。

    8. 描述一下你最常用的編程風(fēng)格。

    9. heap和stack有什么區(qū)別。

    棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧按照后進(jìn)先出的方式進(jìn)行處理。

    堆是棧的一個(gè)組成元素

    10. 如果系統(tǒng)要使用超大整數(shù)(超過(guò)long長(zhǎng)度范圍),請(qǐng)你設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)這種超大型數(shù)字以及設(shè)計(jì)一種算法來(lái)實(shí)現(xiàn)超大整數(shù)加法運(yùn)算)。

    public class BigInt()

    {

    int[] ArrOne = new ArrOne[1000];

    String intString="";

    public int[] Arr(String s)

    {

    intString = s;

    for(int i=0;i<ArrOne.leght;i++)

    {

    11. 如果要設(shè)計(jì)一個(gè)圖形系統(tǒng),請(qǐng)你設(shè)計(jì)基本的圖形元件(Point,Line,Rectangle,Triangle)的簡(jiǎn)單實(shí)現(xiàn)

    12,談?wù)刦inal, finally, finalize的區(qū)別。

      final?修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個(gè)類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。

      finally?再異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。

      finalize?方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。

    13,Anonymous Inner Class (匿名內(nèi)部類) 是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?

      匿名的內(nèi)部類是沒(méi)有名字的內(nèi)部類。不能extends(繼承) 其它類,但一個(gè)內(nèi)部類可以作為一個(gè)接口,由另一個(gè)內(nèi)部類實(shí)現(xiàn)。

    ?

    14,Static Nested Class 和 Inner Class的不同,說(shuō)得越多越好(面試題有的很籠統(tǒng))。

      Nested Class (一般是C++的說(shuō)法),Inner Class (一般是JAVA的說(shuō)法)。Java內(nèi)部類與C++嵌套類最大的不同就在于是否有指向外部的引用上。具體可見(jiàn)http: //www.frontfree.net/articles/services/view.ASP?id=704&page=1

      注: 靜態(tài)內(nèi)部類(Inner Class)意味著1創(chuàng)建一個(gè)static內(nèi)部類的對(duì)象,不需要一個(gè)外部類對(duì)象,2不能從一個(gè)static內(nèi)部類的一個(gè)對(duì)象訪問(wèn)一個(gè)外部類對(duì)象

    第四,&和&&的區(qū)別。

      &是位運(yùn)算符。&&是布爾邏輯運(yùn)算符。

    15,HashMap和Hashtable的區(qū)別。

    ?

      都屬于Map接口的類,實(shí)現(xiàn)了將惟一鍵映射到特定的值上。

    ?

      HashMap 類沒(méi)有分類或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。

      Hashtable 類似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因?yàn)樗峭降摹?

    16,Collection 和 Collections的區(qū)別。

      Collections是個(gè)java.util下的類,它包含有各種有關(guān)集合操作的靜態(tài)方法。

      Collection是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。

    17,什么時(shí)候用assert。

      斷言是一個(gè)包含布爾表達(dá)式的語(yǔ)句,在執(zhí)行這個(gè)語(yǔ)句時(shí)假定該表達(dá)式為 true。如果表達(dá)式計(jì)算為 false,那么系統(tǒng)會(huì)報(bào)告一個(gè) Assertionerror。它用于調(diào)試目的:

    assert(a > 0); // throws an Assertionerror if a <= 0

    斷言可以有兩種形式:

    assert Expression1 ;

    assert Expression1 : Expression2 ;

      Expression1 應(yīng)該總是產(chǎn)生一個(gè)布爾值。

      Expression2 可以是得出一個(gè)值的任意表達(dá)式。這個(gè)值用于生成顯示更多調(diào)試信息的 String 消息。

      斷言在默認(rèn)情況下是禁用的。要在編譯時(shí)啟用斷言,需要使用 source 1.4 標(biāo)記:

      javac -source 1.4 Test.java

      要在運(yùn)行時(shí)啟用斷言,可使用 -enableassertions 或者 -ea 標(biāo)記。

      要在運(yùn)行時(shí)選擇禁用斷言,可使用 -da 或者 -disableassertions 標(biāo)記。

      要系統(tǒng)類中啟用斷言,可使用 -esa 或者 -dsa 標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言。

      可以在預(yù)計(jì)正常情況下不會(huì)到達(dá)的任何位置上放置斷言。斷言可以用于驗(yàn)證傳遞給私有方法的參數(shù)。不過(guò),斷言不應(yīng)該用于驗(yàn)證傳遞給公有方法的參數(shù),因?yàn)椴还苁欠駟⒂昧藬嘌?,公有方法都必須檢查其參數(shù)。不過(guò),既可以在公有方法中,也可以在非公有方法中利用斷言測(cè)試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。

    18,GC是什么? 為什么要有GC? (基礎(chǔ))。

      GC是垃圾收集器。Java 程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:

    System.gc()

    Runtime.getRuntime().gc()

    19,String s = new String("xyz");創(chuàng)建了幾個(gè)String Object?

      兩個(gè)對(duì)象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對(duì)象s。

    20,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

      Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

    21,short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?

      short s1 = 1; s1 = s1 + 1;有錯(cuò),s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型??尚薷臑閟1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。

    22,sleep() 和 wait() 有什么區(qū)別? 搞線程的最愛(ài)

      sleep()方法是使線程停止一段時(shí)間的方法。在sleep 時(shí)間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€(gè)時(shí)刻,其它線程可能正在運(yùn)行而且沒(méi)有被調(diào)度為放棄執(zhí)行,除非(a)“醒來(lái)”的線程具有更高的優(yōu)先級(jí) (b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?

      wait()是線程交互時(shí),如果線程對(duì)一個(gè)同步對(duì)象x 發(fā)出一個(gè)wait()調(diào)用,該線程會(huì)暫停執(zhí)行,被調(diào)對(duì)象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到。

    23,Java有沒(méi)有g(shù)oto?

      Goto?java中的保留字,現(xiàn)在沒(méi)有在java中使用。

    ?

    24,數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法?

      數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。

      String有有l(wèi)ength()這個(gè)方法。

    25,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?

      方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被“屏蔽”了。如果在一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。

    26,Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?

      Set里的元素是不能重復(fù)的,那么用iterator()方法來(lái)區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。

      equals()和==方法決定引用值是否指向同一對(duì)象equals()在類中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類型相配的話,返回真值。

    posted on 2006-11-29 01:10 EricWong 閱讀(588) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 欧洲乱码伦视频免费国产 | 无码一区二区三区免费视频| 老司机午夜精品视频在线观看免费| 亚洲国产精品线在线观看| 亚洲M码 欧洲S码SSS222| 日本妇人成熟免费中文字幕| 国产免费阿v精品视频网址| 美女视频免费看一区二区| 亚洲一卡2卡3卡4卡国产网站| 亚洲国产精品国自产拍AV| 亚洲国产人成精品| 爽爽日本在线视频免费| 99视频全部免费精品全部四虎| 99久久国产精品免费一区二区 | 免费91麻豆精品国产自产在线观看 | 亚洲精品第一国产综合野| 亚洲国产精品久久久久| 亚洲中文字幕久久精品无码APP | 亚洲av无码一区二区三区人妖| 亚洲国产成人超福利久久精品| 亚洲电影一区二区| 亚洲色自偷自拍另类小说| 亚洲精品无码专区久久同性男| 国产午夜影视大全免费观看| 成人毛片免费在线观看| 久久久久国产精品免费免费搜索| 91香蕉国产线在线观看免费| 国产午夜精品久久久久免费视| 在线看片免费人成视频久网下载| 一个人看的在线免费视频| 一级a性色生活片久久无少妇一级婬片免费放| 亚洲中文字幕久久精品无码VA| 亚洲一卡2卡3卡4卡乱码 在线 | 久久久99精品免费观看| A片在线免费观看| 性xxxx视频免费播放直播| 无码免费一区二区三区免费播放 | 亚洲Av无码乱码在线播放| 免费国产真实迷j在线观看| 国产精品黄页在线播放免费| 日韩一区二区三区免费体验|