1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. JAVA筆試題目之邏輯題

        時間:2023-02-25 10:20:01 曉怡 筆試題目 我要投稿
        • 相關推薦

        JAVA筆試題目之邏輯題

          在學習、工作中,我們最熟悉的就是試題了,借助試題可以更好地檢查參考者的學習能力和其它能力。你所見過的試題是什么樣的呢?以下是小編整理的JAVA筆試題目之邏輯題,僅供參考,希望能夠幫助到大家。

        JAVA筆試題目之邏輯題

          JAVA筆試題目之邏輯題 篇1

          一、邏輯題(寫解答步驟) 20分

          假設有一個池塘,里面有無窮多的水,F有2個空水壺,容積分別為5升和6升。問題是如何只用這2個水壺從池塘里取出3升的水?

          答:1)先用5升的水壺裝滿水,倒入六升的水壺中。六升的水壺中還空出 一升水體積;

          2)再把五升水壺裝滿水,倒入六升的.水壺中,5升水壺中還剩4升水;

          3)把六升水壺中的水倒掉,把5升水壺中的水倒入6升水壺中,則6升水壺中差2升就滿了;

          4)再把容積五升的水壺倒滿水,把這些水倒入容積六升的壺中,容積五升的水壺中剛好剩下三升水。

          一個年輕人拿一張100元人民幣去商店買玩具.玩具進價18元,賣21元,店主沒有零錢,給鄰居借了100元,找給年輕人79元.后來鄰居發現鈔票是假的,店主無奈又還給鄰居100元。問:店主在這次買賣中到底損失多少錢?.

          答:97元

          現在有十堆蘋果,其中九堆中的每個蘋果重量都是一斤,只有一堆中的每個蘋果的重量是九兩,目前只有一個秤,要求是:只能秤一次就能確定哪一堆中的每個蘋果的重量是九兩

          答:第一堆拿一個,第二堆拿兩個。(一次加一個)

          25匹賽馬,5個跑道,也就是說每次有5匹馬可以同時比賽。問最少比賽多少次可以知道跑得最快的5匹馬

          答:7次

          二、流程圖 20分

          請畫出通過自動取款機取款的流程圖,各種情況盡量都考慮到。(比如密碼不正確怎么處理?是否有取款限額等怎么處理?)

          無固定答案,視情況給分。

          三、英文翻譯 10分

          Although Manager IT continuously is facing the reduction cost and maximum limit uses existing technical the difficult problem, but at the same time, they also must unceasingly diligently. well serve the customer, quickly responds the enterprise strategy keypoint, thus wins the bigger competitive ability.

          盡管IT管理不斷地面臨成本減少并且現有技術應用的最大限制等難題,但是同時,他們也在不斷的努力。更好的服務客戶,快速響應企業的要點,然后贏得更大的競爭力。

          JAVA筆試題目之邏輯題 篇2

          1. 下面哪些是Thread類的方法()

          A start() B run() C exit() D getPriority()

          答案:ABD

          解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System類的方法,如System.exit(0)。

          2. 下面關于java.lang.Exception類的說法正確的是()

          A 繼承自Throwable B Serialable CD 不記得,反正不正確

          答案:A

          解析:Java異常的基類為java.lang.Throwable,java.lang.Error和java.lang.Exception繼承 Throwable,RuntimeException和其它的Exception等繼承Exception,具體的RuntimeException繼承RuntimeException。

          擴展:錯誤和異常的區別(Error vs Exception)

          1) java.lang.Error: Throwable的子類,用于標記嚴重錯誤。合理的應用程序不應該去try/catch這種錯誤。絕大多數的錯誤都是非正常的,就根本不該出現的。

          java.lang.Exception: Throwable的子類,用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運行條件,而非嚴重錯誤,并且鼓勵用戶程序去catch它。

          2) Error和RuntimeException 及其子類都是未檢查的異常(unchecked exceptions),而所有其他的Exception類都是檢查了的異常(checked exceptions).

          checked exceptions: 通常是從一個可以恢復的程序中拋出來的,并且最好能夠從這種異常中使用程序恢復。比如FileNotFoundException, ParseException等。檢查了的異常發生在編譯階段,必須要使用try…catch(或者throws)否則編譯不通過。

          unchecked exceptions: 通常是如果一切正常的話本不該發生的異常,但是的確發生了。發生在運行期,具有不確定性,主要是由于程序的邏輯問題所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。從語言本身的角度講,程序不該去catch這類異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復,但是并不鼓勵終端程序員這么做,因為完全沒要必要。因為這類錯誤本身就是bug,應該被修復,出現此類錯誤時程序就應該立即停止執行。 因此,面對Errors和unchecked exceptions應該讓程序自動終止執行,程序員不該做諸如try/catch這樣的事情,而是應該查明原因,修改代碼邏輯。

          RuntimeException:RuntimeException體系包括錯誤的類型轉換、數組越界訪問和試圖訪問空指針等等。

          處理RuntimeException的原則是:如果出現 RuntimeException,那么一定是程序員的錯誤。例如,可以通過檢查數組下標和數組邊界來避免數組越界訪問異常。其他(IOException等等)checked異常一般是外部錯誤,例如試圖從文件尾后讀取數據等,這并不是程序本身的錯誤,而是在應用環境中出現的外部錯誤。

          3. 下面程序的運行結果是()

          String str1 = "hello";

          String str2 = "he" + new String("llo");

          System.err.println(str1 == str2);

          答案:false

          解析:因為str2中的llo是新申請的內存塊,而==判斷的是對象的地址而非值,所以不一樣。如果是String str2 = str1,那么就是true了。

          4. 下列說法正確的有()

          A. class中的constructor不可省略

          B. constructor必須與class同名,但方法不能與class同名

          C. constructor在一個對象被new時執行

          D.一個class只能定義一個constructor

          答案:C

          解析:這里可能會有誤區,其實普通的類方法是可以和類名同名的,和構造方法唯一的區分就是,構造方法沒有返回值。

          5. 具體選項不記得,但用到的知識如下:

          String []a = new String[10];

          則:a[0]~a[9] = null

          a.length = 10

          如果是int []a = new int[10];

          則:a[0]~a[9] = 0

          a.length = 10

          6. 下面程序的運行結果:()

          public static void main(String args[]) {

          Thread t = new Thread() {

          public void run() {

          pong();

          }

          };

          t.run();

          System.out.print("ping");

          }

          static void pong() {

          System.out.print("pong");

          }

          #FormatImgID_0#

          A pingpong B pongping C pingpong和pongping都有可能 D 都不輸出

          答案:B

          解析:這里考的是Thread類中start()和run()方法的區別了。start()用來啟動一個線程,當調用start方法后,系統才會開啟一個新的線程,進而調用run()方法來執行任務,而單獨的調用run()就跟調用普通方法是一樣的,已經失去線程的特性了。因此在啟動一個線程的時候一定要使用start()而不是run()。

          7. 下列屬于關系型數據庫的是()

          A. Oracle B MySql C IMS D MongoDB

          答案:AB

          解答:IMS(Information Management System )數據庫是IBM公司開發的兩種數據庫類型之一;

          一種是關系數據庫,典型代表產品:DB2;

          另一種則是層次數據庫,代表產品:IMS層次數據庫。

          非關系型數據庫有MongoDB、memcachedb、Redis等。

          8. GC線程是否為守護線程?()

          答案:是

          解析:線程分為守護線程和非守護線程(即用戶線程)。

          只要當前JVM實例中尚存在任何一個非守護線程沒有結束,守護線程就全部工作;只有當最后一個非守護線程結束時,守護線程隨著JVM一同結束工作。

          守護線程最典型的應用就是 GC (垃圾回收器)

          9. volatile關鍵字是否能保證線程安全?()

          答案:不能

          解析:volatile關鍵字用在多線程同步中,可保證讀取的可見性,JVM只是保證從主內存加載到線程工作內存的值是最新的讀取值,而非cache中。但多個線程對

          volatile的寫操作,無法保證線程安全。例如假如線程1,線程2 在進行read,load 操作中,發現主內存中count的值都是5,那么都會加載這個最新的值,在線程1堆count進行修改之后,會write到主內存中,主內存中的count變量就會變為6;線程2由于已經進行read,load操作,在進行運算之后,也會更新主內存count的變量值為6;導致兩個線程及時用volatile關鍵字修改之后,還是會存在并發的情況。

          10. 下列說法正確的是()

          A LinkedList繼承自List

          B AbstractSet繼承自Set

          C HashSet繼承自AbstractSet

          D WeakMap繼承自HashMap

          答案:AC

          解析:下面是一張下載的Java中的集合類型的繼承關系圖,一目了然。

          #FormatImgID_1#

          11. 存在使i + 1 < i的數嗎()

          答案:存在

          解析:如果i為int型,那么當i為int能表示的最大整數時,i+1就溢出變成負數了,此時不就

          擴展:存在使i > j || i <= j不成立的數嗎()

          答案:存在

          解析:比如Double.NaN或Float.NaN,感謝@BuilderQiu網友指出。

          12. 0.6332的數據類型是()

          A float B double C Float D Double

          答案:B

          解析:默認為double型,如果為float型需要加上f顯示說明,即0.6332f

          13. 下面哪個流類屬于面向字符的輸入流( )

          A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader

          答案:D

          解析:Java的IO操作中有面向字節(Byte)和面向字符(Character)兩種方式。

          面向字節的操作為以8位為單位對二進制的數據進行操作,對數據不進行轉換,這些類都是InputStream和OutputStream的子類。

          面向字符的操作為以字符為單位對數據進行操作,在讀的時候將二進制數據轉為字符,在寫的時候將字符轉為二進制數據,這些類都是Reader和Writer的子類。

          總結:以InputStream(輸入)/OutputStream(輸出)為后綴的是字節流;

          以Reader(輸入)/Writer(輸出)為后綴的是字符流。

          14. Java接口的修飾符可以為()

          A private B protected C final D abstract

          答案:CD

          解析:接口很重要,為了說明情況,這里稍微啰嗦點:

          (1)接口用于描述系統對外提供的所有服務,因此接口中的成員常量和方法都必須是公開(public)類型的,確保外部使用者能訪問它們;

          (2)接口僅僅描述系統能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

          (3)接口不涉及和任何具體實例相關的細節,因此接口沒有構造方法,不能被實例化,沒有實例變量,只有靜態(static)變量;

          (4)接口的中的變量是所有實現類共有的,既然共有,肯定是不變的東西,因為變化的東西也不能夠算共有。所以變量是不可變(final)類型,也就是常量了。

          (5) 接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行為來修改屬性。有的人會說了,沒有關系,可以通過 實現接口的對象的行為來修改接口中的屬性。這當然沒有問題,但是考慮這樣的情況。如果接口 A 中有一個public 訪問權限的靜態變量 a。按照 Java 的語義,我們可以不通過實現接口的對象來訪問變量 a,通過 A.a = xxx; 就可以改變接口中的變量 a 的值了。正如抽象類中是可以這樣做的,那么實現接口 A 的所有對象也都會自動擁有這一改變后的 a 的值了,也就是說一個地方改變了 a,所有這些對象中 a 的值也都跟著變了。這和抽象類有什么區別呢,怎么體現接口更高的抽象級別呢,怎么體現接口提供的統一的協議呢,那還要接口這種抽象來做什么呢?所以接口中 不能出現變量,如果有變量,就和接口提供的統一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實現接口的對象提供一個統 一的屬性。

          通俗的講,你認為是要變化的東西,就放在你自己的實現中,不能放在接口中去,接口只是對一類事物的屬性和行為更高層次的抽象。對修改關閉,對擴展(不同的實現 implements)開放,接口是對開閉原則的一種體現。

          所以:

          接口的方法默認是public abstract;

          接口中不可以定義變量即只能定義常量(加上final修飾就會變成常量)。所以接口的屬性默認是public static final 常量,且必須賦初值。

          注意:final和abstract不能同時出現。

          15. 不通過構造函數也能創建對象嗎()

          A 是 B 否

          答案:A

          解析:Java創建對象的幾種方式(重要):

          (1) 用new語句創建對象,這是最常見的創建對象的方法。

          (2) 運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。

          (3) 調用對象的'clone()方法。

          (4) 運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。

          (1)和(2)都會明確的顯式的調用構造函數 ;(3)是在內存上對已有對象的影印,所以不會調用構造函數 ;(4)是從文件中還原類的對象,也不會調用構造函數。

          坐完筆試后,很多人都希望能提前預知面試題目,最好的方法就是整理一些經典的面試題,java面試的專業性比較強,如果你的基礎不夠扎實,那么最好找些經典的java面試題及答案分析,提前參透一下吧!

          java面試題1、說說HashMap和Hashtable的差別

          答案分析:

          都屬于Map接口的類,實現了將惟一鍵映射到特定的值上。

          HashMap類沒有分類或排序。他允許一個null鍵和多個null值。

          Hashtable類似于HashMap,不過不允許null鍵和null值。他也比HashMap慢,因為他是同步的。

          java面試題2、Anonymous Inner Class (匿名內部類)是否能extends(繼承)其他類,是否implements(實現)interface(接口)?

          答案分析:

          匿名的內部類是沒有名字的內部類。不能extends(繼承)其他類,但一個內部類能作為一個接口,由另一個內部類實現。

          java面試題3、STRING與STRINGBUFFER的區別是什么?

          答案分析:

          STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字符串中的內容經常進行操作,特別是內容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

          java面試題4、什么時候用assert

          答案分析:

          斷言是個包含布爾表達式的語句,在執行這個語句時假定該表達式為true。如果表達式計算為false,那么系統會報告一個AssertionError,他用于調試目的。

          java面試題5、Set里的元素是不能重復的,那么用什么方法來區分重復和否呢?是用==還是equals()?他們有何差別?

          答案分析:

          Set里的元素是不能重復的,那么用iterator()方法來區分重復和否。equals()是判讀兩個Set是否相等。

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

          java面試題6、List, Set, Map是否繼承自Collection接口?

          答案分析:

          List,Set是

          Map不是

          JAVA筆試題目之邏輯題 篇3

          1. J2EE 是什么?它包括哪些技術?

          解答:從整體上講,J2EE 是使用 Java 技術開發企業級應用的工業標準,它是 Java 技術不斷適應和促進企業級應用過程中的產物.適用于企業級應用的 J2EE,提供一個平臺 獨立的、可移植的、多用戶的、安全的和基于標準的企業級平臺,從而簡化企業應用的開發、管理和部署。J2EE 是一個標準,而不是一個現成的產品。

          主要包括以下這些技術:

          1) Servlet

          Servlet 是 Java 平臺上的 CGI 技術。Servlet 在服務器端運行,動態地生成 Web 頁面。與傳統的 CGI和許多其它類似 CGI 的技術相比,Java Servlet 具有更高的效率并更容易使用。對于 Servlet,重復的請求不會導致同一程序的多次轉載,它是依靠線程的方式來支持并發訪問的。

          2)JSP

          JSP(Java Server Page)是一種實現普通靜態 HTML 和動態頁面輸出混合編碼的技術。從這一點來看,非常類似 MicrosoftASP、PHP 等技術。借助形式上的內容和外觀表現的分離,Web 頁面制作的任務可以比較方便地劃分給頁面設計人員和程序員,并方便地通過JSP 來合成。在運行時態,JSP 將會被首先轉換成 Servlet,并以 Servlet 的形態編譯運行,因此它的效率和功能與 Servlet 相比沒有差別,一樣具有很高的效率。

          3) EJB

          EJB 定義了一組可重用的組件:Enterprise Beans。開發人員可以利用這些組件,像搭積木一樣建立分布式應用。

          4)JDBC

          JDBC(Java Database Connectivity , Java 數據庫連接)API 是 一 個 標 準 SQL(Structured QueryLanguage,結構化查詢語言)數據庫訪問接口,它使數據庫開發人員能夠用標準 Java API 編寫數據庫應用程序。JDBC API 主要用來連接數據庫和直接調用 SQL 命令執行各種 SQL 語句。利用 JDBC API 可以執行一般的 SQL 語句、 動態 SQL 語句及帶 IN 和 OUT 參數的存儲過程。 Java 中的 JDBC 相當于 Microsoft平臺中的 ODBC(Open DatabaseConnectivity)。

          2.測試生命周期、測試過程分為幾個階段,以及各階段的含義?

          解答:軟件測試生命周期一般包括 6 個階段:1)計劃 2)分析,3)設計,4)構建,5)測試周期,6)最后測試和實施,1) 計劃:產品定義階段2). 分析:外部文檔階段3). 設計:文檔架構階段4). 構建:單元測試階段5). 測試周期:錯誤修正,重復系統測試階段6). 最后的測試和實施:代碼凍結階段

          4. 什么是 Web 容器?

          解答:容器就是一種服務程序,在服務器一個端口就有一個提供相應服務的程序,而這個程序就是處理從客戶端發出的請求,如 JAVA 中的 Tomcat 容器,ASP 的 IIS 或 PWS 都是這樣的容器。

          5. 運行時異常與一般異常有何異同?

          解答:異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java 編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。

          9.試述數據庫完整保護的主要任務和措施。

          解答:數據庫的完整性保護也就是數據庫中數據正確性的維護。數據庫完整性包括三個內容:實體完整性規則,參照物完整性規則以及用戶定義完整性規則。前兩個是有 DBMS 自動處理。實體完整性規則是說針對于基表中的關鍵字中屬性值不能為空值,是數據庫完整性的基本要求,主關鍵字和元組的唯一性對應。參照物完整性規則是不允許引用不存在的元組:即基表中的外關鍵字要么為空,要么關聯基表中必存在元組。用戶定義完整性規則針對具體的數據環境由用戶具體設置的規則,它反應了具體應用中的語義要求。一個完整性規則一般由下面三部分組成:完整性約束條件設置,完整性約束條件的檢查以及完整性約束條件的處理.后兩部分在數據庫中一般有相應的模塊處理。另外觸發器也可以做完整性的保護,但觸發器大量用于主動性領域。

          12. 類有哪三個基本特性?各特性的優點?

          解答:類具有封裝性、繼承性和多態性。

          封裝性:類的封裝性為類的成員提供公有、缺省、保護和私有等多級訪問權限,目的是隱藏類中的私有變量和類中方法的實現細節。

          繼承性:類的繼承性提供從已存在的類創建新類的機制,繼承(inheritance)使一個新類自動擁有被繼承類(父類)的全部可繼承的成員。

          多態性:類的多態性提供類中方法執行的多樣性,多態性有兩種表現形式:重載和覆蓋。

          13.談談對 XML 的理解?說明 Web 應用中 Web.xml 文件的作用?

          解答:XML(Extensible Markup Language)即可擴展標記語言,它與 HTML 一樣,都是 SGML(Standard GeneralizedMarkup Language,標準通用標記語言)。Xml 是 Internet 環境中跨平臺的,依賴于內容的技術,是當前處理結構化文檔信息的有力工具。擴展標記語言 XML 是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然 XML 占用的空間比二進制數據要占用更多的空間,但 XML 極其簡單易于掌握和使用。web.xml的作用是配置歡迎頁,servlet,filter,listener 等的。

          14.jsp 有哪些內置對象?作用分別是什么?(至少三個)

          解答:1)request 表示 HttpServletRequest 對象。它包含了有關瀏覽器請求的信息,并且提供了幾個用于獲取cookie, header 和 session 數據的有用的方法。

          2)response 表示 HttpServletResponse 對象,并提供了幾個用于設置送回瀏覽器的響應的方法(如cookies,頭信息等)。

          3) out 對象是javax.jsp.JspWriter 的一個實例, 并提供了幾個方法使你能用于向瀏覽器回送輸出結果。

          4) pageContext 表示一個 javax.servlet.jsp.PageContext 對象。它是用于方便存取各種范圍的名字空間、servlet 相關的對象的 API,并且包裝了通用的servlet 相關功能的方法。

          5)session 表示一個請求的 javax.servlet.http.HttpSession 對象。Session 可以存貯用戶的狀態信息。

          6)application 表示一個 javax.servle.ServletContext 對象。這有助于查找有關 servlet 引擎和servlet 環境的信息。

          7)config 表示一個 javax.servlet.ServletConfig 對象。該對象用于存取 servlet 實例的初始化參數。

          8)page 表示從該頁面產生的一個servlet 實例。9)exception 針對錯誤網頁,未捕捉的例外

          15.事務是什么?有哪些屬性,并簡要說明這些屬性的含義。

          解答:事務(Transaction)是訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務通常由高級數據庫操縱語言或編程語言(如 SQL,C++或 Java)書寫的用戶程序的執行所引起,并用形如 begin transaction 和 end transaction 語句(或函數調用)來界定。事務由事務開始(begintransaction)和事務結束(end transaction)之間執行的全體操作組成。事務應該具有 4 個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為 ACID 特性。

         。╝tomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要么都做,要么都不做。

          一致性(consistency)。事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。

          隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對并發的其他事務是隔離的,并發執行的`各個事務之間不能互相干擾。

          持久性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

          19、HashMap 和 Hashtable 的區別?

          解答:HashMap 是 Hashtable 的輕量級實現(非線程安全的實現) ,他們都實現了 Map 接口,主要區別在于HashMap 允許空(null)鍵值(key),由于非線程安全,效率上高于 Hashtable。HashMap 允許將 null 作為一個 entry 的 key 或者 value, Hashtable 不允許HashMap 把 Hashtable 的 contains方法去掉了,改成 containsvalue 和 containsKey。因為 contains 方法容易讓人引起誤解Hashtable繼承自 Dictionary 類,而 HashMap 是 Java1.2 引進的 Map interface 的一個實現。最大的不同是,Hastable 的方法是 synchronize 的,而 HashMap 不是,在多個線程訪問 Hashtable 時,不需要自己為s它的方法實現同步,而 HashMap 就必須為之提供同步。

          20.請說出 ArrayList,Vector, LinkedList 的存儲性能和特性

          解答: ArrayList 和 Vector 都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector 由于使用了 synchronized 方法(線程安全),通常性能上較ArrayList 差,而 LinkedList 使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。

          21. 描述 J2EE 框架的多層結構,并簡要說明各層的作用。

          解答:1)Presentation layer(表示層)a. 表示邏輯(生成界面代碼)b. 接收請求 c. 處理業務層拋出的異常 d. 負責規則驗證(數據格式,數據非空等)e. 流程控制

          2) Service layer(服務層/業務層)a.封裝業務邏輯處理,并且對外暴露接口b.負責事務,安全等服務

          3) Persistence layer(持久層) a 封裝數據訪問的邏輯,暴露接口 b.提供方便的數據訪問的方案(查詢語言,API,映射機制等)

          4)Domain layer(域層) a. 業務對象以及業務關系的表示b. 處理簡單的業務邏輯c. 域層的對象可以穿越表示層,業務層,持久層軟件分層結構使得代碼維護非常方便,設計明確,各層獨立,專注自己擅長的領域。

          23.簡要描述如何結合 struts、hibernate、spring 開發 Web 應用?

          解答:Struts 可以將 jsp 頁面的表單關聯起來,就是把 JSP 頁面的表單數據封裝成 javaBean,這樣的話,在 action 中你再也不需要使用傳統的 request.getParameter("name");還有 struts 有一個控制器,你在 struts 編程中的控制器(XxxAction)都是繼承總的 ActionServlet,它能集中處理請求,然后轉到相關的頁面。還有 struts 的表單驗證組件,不用你寫 js 驗證了,只需要你配置一下文件就可以了。另外 struts 的令牌機制可以防表單重復提交。

          Spring 是一個輕量級容器,非侵入性.包含依賴注入,AOP 等。它是為了解決企業應用程序開發復雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個組件,同時為J2EE 應用程序開發提供集成的框架。

          Hibernate:它可以讓我們以 OO 的方式操作數據庫,這讓我們看到了 hibernate 的強大之處,體驗到操作數據的方便。但 hibernate 最耀眼之處是 hibernate 的緩存機制,而不是以 OO 的方式操作數據庫。Hibernate 的緩存機制不外乎是一級緩存 session,二級緩存 sessionFactory,和第三方緩存 如 ehcache 。 也就 是 hibernate 的 最 強大 的地 方 是 它的 緩存 , 理解了 這 個 才能 真正 的 理解hibernate,Hibernate 的命名查詢/命名參數查詢, 就是將 hql 語句放在一個單獨的 xml 文件之中, 它仍然讓人們以面向對象的方式去操縱數據,而不用在以 OO 的方式寫著代碼的同時,然后再轉變思維,用面向關系的方式去寫那些 sql 語句。但 hibernate不僅做了這些,它的native sql 查詢方式,完

          全滿足 sql 語句的偏愛者,它像 ibatis 一樣,將 sql 語句放在配置文件之中

          27.列出自己常用的 jdk 包.

          解答:JDK 常用的 package

          java.lang:這個是系統的基礎類,比如 String 等都是這里面的,這個 package 是唯一一個可以不用 import 就可以使用的 Package

          java.io: 這里面是所有輸入輸出有關的類,比如文件操作等

          java.net: 這里面是與網絡有關的類,比如 URL,URLConnection 等。

          java.util : 這個是系統輔助類,特別是集合類 Collection,List,Map 等。

          java.sql: 這個是數據庫操作的類,Connection, Statememt,ResultSet 等

          JAVA筆試題目之邏輯題 篇4

          1)Java 中能創建 Volatile 數組嗎?

          能,Java 中可以創建 volatile 類型數組,不過只是一個指向數組的引用,而不是整個數組。我的意思是,如果改變引用指向的數組,將會受到 volatile 的保護,但是如果多個線程同時改變數組的元素,volatile 標示符就不能起到之前的保護作用了。

          2)volatile 能使得一個非原子操作變成原子操作嗎?

          一個典型的例子是在類中有一個 long 類型的成員變量。如果你知道該成員變量會被多個線程訪問,如計數器、價格等,你最好是將其設置為 volatile。為什么?因為 Java 中讀取 long 類型變量不是原子的,需要分成兩步,如果一個線程正在修改該 long 變量的值,另一個線程可能只能看到該值的一半(前 32 位)。但是對一個 volatile 型的 long 或 double 變量的讀寫是原子。

          3)volatile 修飾符的有過什么實踐?

          一種實踐是用 volatile 修飾 long 和 double 變量,使其能按原子類型來讀寫。double 和 long 都是64位寬,因此對這兩種類型的讀是分為兩部分的,第一次讀取第一個 32 位,然后再讀剩下的 32 位,這個過程不是原子的,但 Java 中 volatile 型的 long 或 double 變量的讀寫是原子的。volatile 修復符的另一個作用是提供內存屏障(memory barrier),例如在分布式框架中的應用。簡單的說,就是當你寫一個 volatile 變量之前,Java 內存模型會插入一個寫屏障(write barrier),讀一個 volatile 變量之前,會插入一個讀屏障(read barrier)。意思就是說,在你寫一個 volatile 域時,能保證任何線程都能看到你寫的值,同時,在寫之前,也能保證任何數值的更新對所有線程是可見的,因為內存屏障會將其他所有寫的值更新到緩存。

          4)volatile 類型變量提供什么保證?(答案)

          volatile 變量提供順序和可見性保證,例如,JVM 或者 JIT為了獲得更好的性能會對語句重排序,但是 volatile 類型變量即使在沒有同步塊的情況下賦值也不會與其他語句重排序。 volatile 提供 happens-before 的保證,確保一個線程的修改能對其他線程是可見的。某些情況下,volatile 還能提供原子性,如讀 64 位數據類型,像 long 和 double 都不是原子的,但 volatile 類型的 double 和 long 就是原子的。

          5) 10 個線程和 2 個線程的同步代碼,哪個更容易寫?

          從寫代碼的'角度來說,兩者的復雜度是相同的,因為同步代碼與線程數量是相互獨立的。但是同步策略的選擇依賴于線程的數量,因為越多的線程意味著更大的競爭,所以你需要利用同步技術,如鎖分離,這要求更復雜的代碼和專業知識。

          6)你是如何調用 wait()方法的?使用 if 塊還是循環?為什么?(答案)

          wait() 方法應該在循環調用,因為當線程獲取到 CPU 開始執行的時候,其他條件可能還沒有滿足,所以在處理前,循環檢測條件是否滿足會更好。下面是一段標準的使用 wait 和 notify 方法的代碼:

          // The standard idiom for using the wait method

          參見 Effective Java 第 69 條,獲取更多關于為什么應該在循環中來調用 wait 方法的內容。

        【JAVA筆試題目之邏輯題】相關文章:

        邏輯題目筆試題07-22

        類似德勤筆試題目的邏輯題12-04

        常見的筆試邏輯題11-26

        筆試題目邏輯考題07-20

        邏輯考題筆試題目07-20

        筆試題目邏輯考題02-11

        JAVA筆試必備題01-15

        JAVA筆試基礎題11-26

        Java招聘筆試題目12-07

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>