色www,五月婷婷深爱五月,午夜国产一级片,色噜噜综合,国产大胸无码视频,清纯美女被操黄网站在线观看,波多野结衣av高清一区二区三区

JAVA筆試題目之邏輯題

時(shí)間:2023-02-25 10:20:01 曉怡 筆試題目 我要投稿
  • 相關(guān)推薦

JAVA筆試題目之邏輯題

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

JAVA筆試題目之邏輯題

  JAVA筆試題目之邏輯題 篇1

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

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

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

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

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

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

  一個(gè)年輕人拿一張100元人民幣去商店買(mǎi)玩具.玩具進(jìn)價(jià)18元,賣(mài)21元,店主沒(méi)有零錢(qián),給鄰居借了100元,找給年輕人79元.后來(lái)鄰居發(fā)現(xiàn)鈔票是假的,店主無(wú)奈又還給鄰居100元。問(wèn):店主在這次買(mǎi)賣(mài)中到底損失多少錢(qián)?.

  答:97元

  現(xiàn)在有十堆蘋(píng)果,其中九堆中的每個(gè)蘋(píng)果重量都是一斤,只有一堆中的每個(gè)蘋(píng)果的重量是九兩,目前只有一個(gè)秤,要求是:只能秤一次就能確定哪一堆中的每個(gè)蘋(píng)果的重量是九兩

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

  25匹賽馬,5個(gè)跑道,也就是說(shuō)每次有5匹馬可以同時(shí)比賽。問(wèn)最少比賽多少次可以知道跑得最快的5匹馬

  答:7次

  二、流程圖 20分

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

  無(wú)固定答案,視情況給分。

  三、英文翻譯 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管理不斷地面臨成本減少并且現(xiàn)有技術(shù)應(yīng)用的最大限制等難題,但是同時(shí),他們也在不斷的努力。更好的服務(wù)客戶(hù),快速響應(yīng)企業(yè)的要點(diǎn),然后贏得更大的競(jìng)爭(zhēng)力。

  JAVA筆試題目之邏輯題 篇2

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

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

  答案:ABD

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

  2. 下面關(guān)于java.lang.Exception類(lèi)的說(shuō)法正確的是()

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

  答案:A

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

  擴(kuò)展:錯(cuò)誤和異常的區(qū)別(Error vs Exception)

  1) java.lang.Error: Throwable的子類(lèi),用于標(biāo)記嚴(yán)重錯(cuò)誤。合理的應(yīng)用程序不應(yīng)該去try/catch這種錯(cuò)誤。絕大多數(shù)的錯(cuò)誤都是非正常的,就根本不該出現(xiàn)的。

  java.lang.Exception: Throwable的子類(lèi),用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運(yùn)行條件,而非嚴(yán)重錯(cuò)誤,并且鼓勵(lì)用戶(hù)程序去catch它。

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

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

  unchecked exceptions: 通常是如果一切正常的話(huà)本不該發(fā)生的異常,但是的確發(fā)生了。發(fā)生在運(yùn)行期,具有不確定性,主要是由于程序的邏輯問(wèn)題所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。從語(yǔ)言本身的角度講,程序不該去catch這類(lèi)異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復(fù),但是并不鼓勵(lì)終端程序員這么做,因?yàn)橥耆珱](méi)要必要。因?yàn)檫@類(lèi)錯(cuò)誤本身就是bug,應(yīng)該被修復(fù),出現(xiàn)此類(lèi)錯(cuò)誤時(shí)程序就應(yīng)該立即停止執(zhí)行。 因此,面對(duì)Errors和unchecked exceptions應(yīng)該讓程序自動(dòng)終止執(zhí)行,程序員不該做諸如try/catch這樣的事情,而是應(yīng)該查明原因,修改代碼邏輯。

  RuntimeException:RuntimeException體系包括錯(cuò)誤的類(lèi)型轉(zhuǎn)換、數(shù)組越界訪(fǎng)問(wèn)和試圖訪(fǎng)問(wèn)空指針等等。

  處理RuntimeException的原則是:如果出現(xiàn) RuntimeException,那么一定是程序員的錯(cuò)誤。例如,可以通過(guò)檢查數(shù)組下標(biāo)和數(shù)組邊界來(lái)避免數(shù)組越界訪(fǎng)問(wèn)異常。其他(IOException等等)checked異常一般是外部錯(cuò)誤,例如試圖從文件尾后讀取數(shù)據(jù)等,這并不是程序本身的錯(cuò)誤,而是在應(yīng)用環(huán)境中出現(xiàn)的外部錯(cuò)誤。

  3. 下面程序的運(yùn)行結(jié)果是()

  String str1 = "hello";

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

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

  答案:false

  解析:因?yàn)閟tr2中的llo是新申請(qǐng)的內(nèi)存塊,而==判斷的是對(duì)象的地址而非值,所以不一樣。如果是String str2 = str1,那么就是true了。

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

  A. class中的constructor不可省略

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

  C. constructor在一個(gè)對(duì)象被new時(shí)執(zhí)行

  D.一個(gè)class只能定義一個(gè)constructor

  答案:C

  解析:這里可能會(huì)有誤區(qū),其實(shí)普通的類(lèi)方法是可以和類(lèi)名同名的,和構(gòu)造方法唯一的區(qū)分就是,構(gòu)造方法沒(méi)有返回值。

  5. 具體選項(xiàng)不記得,但用到的知識(shí)如下:

  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. 下面程序的運(yùn)行結(jié)果:()

  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類(lèi)中start()和run()方法的區(qū)別了。start()用來(lái)啟動(dòng)一個(gè)線(xiàn)程,當(dāng)調(diào)用start方法后,系統(tǒng)才會(huì)開(kāi)啟一個(gè)新的線(xiàn)程,進(jìn)而調(diào)用run()方法來(lái)執(zhí)行任務(wù),而單獨(dú)的調(diào)用run()就跟調(diào)用普通方法是一樣的,已經(jīng)失去線(xiàn)程的特性了。因此在啟動(dòng)一個(gè)線(xiàn)程的時(shí)候一定要使用start()而不是run()。

  7. 下列屬于關(guān)系型數(shù)據(jù)庫(kù)的是()

  A. Oracle B MySql C IMS D MongoDB

  答案:AB

  解答:IMS(Information Management System )數(shù)據(jù)庫(kù)是IBM公司開(kāi)發(fā)的兩種數(shù)據(jù)庫(kù)類(lèi)型之一;

  一種是關(guān)系數(shù)據(jù)庫(kù),典型代表產(chǎn)品:DB2;

  另一種則是層次數(shù)據(jù)庫(kù),代表產(chǎn)品:IMS層次數(shù)據(jù)庫(kù)。

  非關(guān)系型數(shù)據(jù)庫(kù)有MongoDB、memcachedb、Redis等。

  8. GC線(xiàn)程是否為守護(hù)線(xiàn)程?()

  答案:是

  解析:線(xiàn)程分為守護(hù)線(xiàn)程和非守護(hù)線(xiàn)程(即用戶(hù)線(xiàn)程)。

  只要當(dāng)前JVM實(shí)例中尚存在任何一個(gè)非守護(hù)線(xiàn)程沒(méi)有結(jié)束,守護(hù)線(xiàn)程就全部工作;只有當(dāng)最后一個(gè)非守護(hù)線(xiàn)程結(jié)束時(shí),守護(hù)線(xiàn)程隨著JVM一同結(jié)束工作。

  守護(hù)線(xiàn)程最典型的應(yīng)用就是 GC (垃圾回收器)

  9. volatile關(guān)鍵字是否能保證線(xiàn)程安全?()

  答案:不能

  解析:volatile關(guān)鍵字用在多線(xiàn)程同步中,可保證讀取的可見(jiàn)性,JVM只是保證從主內(nèi)存加載到線(xiàn)程工作內(nèi)存的值是最新的讀取值,而非cache中。但多個(gè)線(xiàn)程對(duì)

  volatile的寫(xiě)操作,無(wú)法保證線(xiàn)程安全。例如假如線(xiàn)程1,線(xiàn)程2 在進(jìn)行read,load 操作中,發(fā)現(xiàn)主內(nèi)存中count的值都是5,那么都會(huì)加載這個(gè)最新的值,在線(xiàn)程1堆count進(jìn)行修改之后,會(huì)write到主內(nèi)存中,主內(nèi)存中的count變量就會(huì)變?yōu)?;線(xiàn)程2由于已經(jīng)進(jìn)行read,load操作,在進(jìn)行運(yùn)算之后,也會(huì)更新主內(nèi)存count的變量值為6;導(dǎo)致兩個(gè)線(xiàn)程及時(shí)用volatile關(guān)鍵字修改之后,還是會(huì)存在并發(fā)的情況。

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

  A LinkedList繼承自L(fǎng)ist

  B AbstractSet繼承自Set

  C HashSet繼承自AbstractSet

  D WeakMap繼承自HashMap

  答案:AC

  解析:下面是一張下載的Java中的集合類(lèi)型的繼承關(guān)系圖,一目了然。

  #FormatImgID_1#

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

  答案:存在

  解析:如果i為int型,那么當(dāng)i為int能表示的最大整數(shù)時(shí),i+1就溢出變成負(fù)數(shù)了,此時(shí)不就

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

  答案:存在

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

  12. 0.6332的數(shù)據(jù)類(lèi)型是()

  A float B double C Float D Double

  答案:B

  解析:默認(rèn)為double型,如果為float型需要加上f顯示說(shuō)明,即0.6332f

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

  A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader

  答案:D

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

  面向字節(jié)的操作為以8位為單位對(duì)二進(jìn)制的數(shù)據(jù)進(jìn)行操作,對(duì)數(shù)據(jù)不進(jìn)行轉(zhuǎn)換,這些類(lèi)都是InputStream和OutputStream的子類(lèi)。

  面向字符的操作為以字符為單位對(duì)數(shù)據(jù)進(jìn)行操作,在讀的時(shí)候?qū)⒍M(jìn)制數(shù)據(jù)轉(zhuǎn)為字符,在寫(xiě)的時(shí)候?qū)⒆址D(zhuǎn)為二進(jìn)制數(shù)據(jù),這些類(lèi)都是Reader和Writer的子類(lèi)。

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

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

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

  A private B protected C final D abstract

  答案:CD

  解析:接口很重要,為了說(shuō)明情況,這里稍微啰嗦點(diǎn):

  (1)接口用于描述系統(tǒng)對(duì)外提供的所有服務(wù),因此接口中的成員常量和方法都必須是公開(kāi)(public)類(lèi)型的,確保外部使用者能訪(fǎng)問(wèn)它們;

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

  (3)接口不涉及和任何具體實(shí)例相關(guān)的細(xì)節(jié),因此接口沒(méi)有構(gòu)造方法,不能被實(shí)例化,沒(méi)有實(shí)例變量,只有靜態(tài)(static)變量;

  (4)接口的中的變量是所有實(shí)現(xiàn)類(lèi)共有的,既然共有,肯定是不變的東西,因?yàn)樽兓臇|西也不能夠算共有。所以變量是不可變(final)類(lèi)型,也就是常量了。

  (5) 接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無(wú)法通過(guò)行為來(lái)修改屬性。有的人會(huì)說(shuō)了,沒(méi)有關(guān)系,可以通過(guò) 實(shí)現(xiàn)接口的對(duì)象的行為來(lái)修改接口中的屬性。這當(dāng)然沒(méi)有問(wèn)題,但是考慮這樣的情況。如果接口 A 中有一個(gè)public 訪(fǎng)問(wèn)權(quán)限的靜態(tài)變量 a。按照 Java 的語(yǔ)義,我們可以不通過(guò)實(shí)現(xiàn)接口的對(duì)象來(lái)訪(fǎng)問(wèn)變量 a,通過(guò) A.a = xxx; 就可以改變接口中的變量 a 的值了。正如抽象類(lèi)中是可以這樣做的,那么實(shí)現(xiàn)接口 A 的所有對(duì)象也都會(huì)自動(dòng)擁有這一改變后的 a 的值了,也就是說(shuō)一個(gè)地方改變了 a,所有這些對(duì)象中 a 的值也都跟著變了。這和抽象類(lèi)有什么區(qū)別呢,怎么體現(xiàn)接口更高的抽象級(jí)別呢,怎么體現(xiàn)接口提供的統(tǒng)一的協(xié)議呢,那還要接口這種抽象來(lái)做什么呢?所以接口中 不能出現(xiàn)變量,如果有變量,就和接口提供的統(tǒng)一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實(shí)現(xiàn)接口的對(duì)象提供一個(gè)統(tǒng) 一的屬性。

  通俗的講,你認(rèn)為是要變化的東西,就放在你自己的實(shí)現(xiàn)中,不能放在接口中去,接口只是對(duì)一類(lèi)事物的屬性和行為更高層次的抽象。對(duì)修改關(guān)閉,對(duì)擴(kuò)展(不同的實(shí)現(xiàn) implements)開(kāi)放,接口是對(duì)開(kāi)閉原則的一種體現(xiàn)。

  所以:

  接口的方法默認(rèn)是public abstract;

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

  注意:final和abstract不能同時(shí)出現(xiàn)。

  15. 不通過(guò)構(gòu)造函數(shù)也能創(chuàng)建對(duì)象嗎()

  A 是 B 否

  答案:A

  解析:Java創(chuàng)建對(duì)象的幾種方式(重要):

  (1) 用new語(yǔ)句創(chuàng)建對(duì)象,這是最常見(jiàn)的創(chuàng)建對(duì)象的方法。

  (2) 運(yùn)用反射手段,調(diào)用java.lang.Class或者java.lang.reflect.Constructor類(lèi)的newInstance()實(shí)例方法。

  (3) 調(diào)用對(duì)象的'clone()方法。

  (4) 運(yùn)用反序列化手段,調(diào)用java.io.ObjectInputStream對(duì)象的 readObject()方法。

  (1)和(2)都會(huì)明確的顯式的調(diào)用構(gòu)造函數(shù) ;(3)是在內(nèi)存上對(duì)已有對(duì)象的影印,所以不會(huì)調(diào)用構(gòu)造函數(shù) ;(4)是從文件中還原類(lèi)的對(duì)象,也不會(huì)調(diào)用構(gòu)造函數(shù)。

  坐完筆試后,很多人都希望能提前預(yù)知面試題目,最好的方法就是整理一些經(jīng)典的面試題,java面試的專(zhuān)業(yè)性比較強(qiáng),如果你的基礎(chǔ)不夠扎實(shí),那么最好找些經(jīng)典的java面試題及答案分析,提前參透一下吧!

  java面試題1、說(shuō)說(shuō)HashMap和Hashtable的差別

  答案分析:

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

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

  Hashtable類(lèi)似于HashMap,不過(guò)不允許null鍵和null值。他也比HashMap慢,因?yàn)樗峭降摹?/p>

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

  答案分析:

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

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

  答案分析:

  STRING的長(zhǎng)度是不可變的,STRINGBUFFER的長(zhǎng)度是可變的。如果你對(duì)字符串中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時(shí),那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

  java面試題4、什么時(shí)候用assert

  答案分析:

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

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

  答案分析:

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

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

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

  答案分析:

  List,Set是

  Map不是

  JAVA筆試題目之邏輯題 篇3

  1. J2EE 是什么?它包括哪些技術(shù)?

  解答:從整體上講,J2EE 是使用 Java 技術(shù)開(kāi)發(fā)企業(yè)級(jí)應(yīng)用的工業(yè)標(biāo)準(zhǔn),它是 Java 技術(shù)不斷適應(yīng)和促進(jìn)企業(yè)級(jí)應(yīng)用過(guò)程中的產(chǎn)物.適用于企業(yè)級(jí)應(yīng)用的 J2EE,提供一個(gè)平臺(tái) 獨(dú)立的、可移植的、多用戶(hù)的、安全的和基于標(biāo)準(zhǔn)的企業(yè)級(jí)平臺(tái),從而簡(jiǎn)化企業(yè)應(yīng)用的開(kāi)發(fā)、管理和部署。J2EE 是一個(gè)標(biāo)準(zhǔn),而不是一個(gè)現(xiàn)成的產(chǎn)品。

  主要包括以下這些技術(shù):

  1) Servlet

  Servlet 是 Java 平臺(tái)上的 CGI 技術(shù)。Servlet 在服務(wù)器端運(yùn)行,動(dòng)態(tài)地生成 Web 頁(yè)面。與傳統(tǒng)的 CGI和許多其它類(lèi)似 CGI 的技術(shù)相比,Java Servlet 具有更高的效率并更容易使用。對(duì)于 Servlet,重復(fù)的請(qǐng)求不會(huì)導(dǎo)致同一程序的多次轉(zhuǎn)載,它是依靠線(xiàn)程的方式來(lái)支持并發(fā)訪(fǎng)問(wèn)的。

  2)JSP

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

  3) EJB

  EJB 定義了一組可重用的組件:Enterprise Beans。開(kāi)發(fā)人員可以利用這些組件,像搭積木一樣建立分布式應(yīng)用。

  4)JDBC

  JDBC(Java Database Connectivity , Java 數(shù)據(jù)庫(kù)連接)API 是 一 個(gè) 標(biāo) 準(zhǔn) SQL(Structured QueryLanguage,結(jié)構(gòu)化查詢(xún)語(yǔ)言)數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)接口,它使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠用標(biāo)準(zhǔn) Java API 編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。JDBC API 主要用來(lái)連接數(shù)據(jù)庫(kù)和直接調(diào)用 SQL 命令執(zhí)行各種 SQL 語(yǔ)句。利用 JDBC API 可以執(zhí)行一般的 SQL 語(yǔ)句、 動(dòng)態(tài) SQL 語(yǔ)句及帶 IN 和 OUT 參數(shù)的存儲(chǔ)過(guò)程。 Java 中的 JDBC 相當(dāng)于 Microsoft平臺(tái)中的 ODBC(Open DatabaseConnectivity)。

  2.測(cè)試生命周期、測(cè)試過(guò)程分為幾個(gè)階段,以及各階段的含義?

  解答:軟件測(cè)試生命周期一般包括 6 個(gè)階段:1)計(jì)劃 2)分析,3)設(shè)計(jì),4)構(gòu)建,5)測(cè)試周期,6)最后測(cè)試和實(shí)施,1) 計(jì)劃:產(chǎn)品定義階段2). 分析:外部文檔階段3). 設(shè)計(jì):文檔架構(gòu)階段4). 構(gòu)建:單元測(cè)試階段5). 測(cè)試周期:錯(cuò)誤修正,重復(fù)系統(tǒng)測(cè)試階段6). 最后的測(cè)試和實(shí)施:代碼凍結(jié)階段

  4. 什么是 Web 容器?

  解答:容器就是一種服務(wù)程序,在服務(wù)器一個(gè)端口就有一個(gè)提供相應(yīng)服務(wù)的程序,而這個(gè)程序就是處理從客戶(hù)端發(fā)出的請(qǐng)求,如 JAVA 中的 Tomcat 容器,ASP 的 IIS 或 PWS 都是這樣的容器。

  5. 運(yùn)行時(shí)異常與一般異常有何異同?

  解答:異常表示程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見(jiàn)運(yùn)行錯(cuò)誤。java 編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。

  9.試述數(shù)據(jù)庫(kù)完整保護(hù)的主要任務(wù)和措施。

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

  12. 類(lèi)有哪三個(gè)基本特性?各特性的優(yōu)點(diǎn)?

  解答:類(lèi)具有封裝性、繼承性和多態(tài)性。

  封裝性:類(lèi)的封裝性為類(lèi)的成員提供公有、缺省、保護(hù)和私有等多級(jí)訪(fǎng)問(wèn)權(quán)限,目的是隱藏類(lèi)中的私有變量和類(lèi)中方法的實(shí)現(xiàn)細(xì)節(jié)。

  繼承性:類(lèi)的繼承性提供從已存在的類(lèi)創(chuàng)建新類(lèi)的機(jī)制,繼承(inheritance)使一個(gè)新類(lèi)自動(dòng)擁有被繼承類(lèi)(父類(lèi))的全部可繼承的成員。

  多態(tài)性:類(lèi)的多態(tài)性提供類(lèi)中方法執(zhí)行的多樣性,多態(tài)性有兩種表現(xiàn)形式:重載和覆蓋。

  13.談?wù)剬?duì) XML 的理解?說(shuō)明 Web 應(yīng)用中 Web.xml 文件的作用?

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

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

  解答:1)request 表示 HttpServletRequest 對(duì)象。它包含了有關(guān)瀏覽器請(qǐng)求的信息,并且提供了幾個(gè)用于獲取cookie, header 和 session 數(shù)據(jù)的有用的方法。

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

  3) out 對(duì)象是javax.jsp.JspWriter 的一個(gè)實(shí)例, 并提供了幾個(gè)方法使你能用于向?yàn)g覽器回送輸出結(jié)果。

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

  5)session 表示一個(gè)請(qǐng)求的 javax.servlet.http.HttpSession 對(duì)象。Session 可以存貯用戶(hù)的狀態(tài)信息。

  6)application 表示一個(gè) javax.servle.ServletContext 對(duì)象。這有助于查找有關(guān) servlet 引擎和servlet 環(huán)境的信息。

  7)config 表示一個(gè) javax.servlet.ServletConfig 對(duì)象。該對(duì)象用于存取 servlet 實(shí)例的初始化參數(shù)。

  8)page 表示從該頁(yè)面產(chǎn)生的一個(gè)servlet 實(shí)例。9)exception 針對(duì)錯(cuò)誤網(wǎng)頁(yè),未捕捉的例外

  15.事務(wù)是什么?有哪些屬性,并簡(jiǎn)要說(shuō)明這些屬性的含義。

  解答:事務(wù)(Transaction)是訪(fǎng)問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。事務(wù)通常由高級(jí)數(shù)據(jù)庫(kù)操縱語(yǔ)言或編程語(yǔ)言(如 SQL,C++或 Java)書(shū)寫(xiě)的用戶(hù)程序的執(zhí)行所引起,并用形如 begin transaction 和 end transaction 語(yǔ)句(或函數(shù)調(diào)用)來(lái)界定。事務(wù)由事務(wù)開(kāi)始(begintransaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。事務(wù)應(yīng)該具有 4 個(gè)屬性:原子性、一致性、隔離性、持續(xù)性。這四個(gè)屬性通常稱(chēng)為 ACID 特性。

  (atomicity)。一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。

  一致性(consistency)。事務(wù)必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的。

  隔離性(isolation)。一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的`各個(gè)事務(wù)之間不能互相干擾。

  持久性(durability)。持續(xù)性也稱(chēng)永久性(permanence),指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其有任何影響。

  19、HashMap 和 Hashtable 的區(qū)別?

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

  20.請(qǐng)說(shuō)出 ArrayList,Vector, LinkedList 的存儲(chǔ)性能和特性

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

  21. 描述 J2EE 框架的多層結(jié)構(gòu),并簡(jiǎn)要說(shuō)明各層的作用。

  解答:1)Presentation layer(表示層)a. 表示邏輯(生成界面代碼)b. 接收請(qǐng)求 c. 處理業(yè)務(wù)層拋出的異常 d. 負(fù)責(zé)規(guī)則驗(yàn)證(數(shù)據(jù)格式,數(shù)據(jù)非空等)e. 流程控制

  2) Service layer(服務(wù)層/業(yè)務(wù)層)a.封裝業(yè)務(wù)邏輯處理,并且對(duì)外暴露接口b.負(fù)責(zé)事務(wù),安全等服務(wù)

  3) Persistence layer(持久層) a 封裝數(shù)據(jù)訪(fǎng)問(wèn)的邏輯,暴露接口 b.提供方便的數(shù)據(jù)訪(fǎng)問(wèn)的方案(查詢(xún)語(yǔ)言,API,映射機(jī)制等)

  4)Domain layer(域?qū)樱?a. 業(yè)務(wù)對(duì)象以及業(yè)務(wù)關(guān)系的表示b. 處理簡(jiǎn)單的業(yè)務(wù)邏輯c. 域?qū)拥膶?duì)象可以穿越表示層,業(yè)務(wù)層,持久層軟件分層結(jié)構(gòu)使得代碼維護(hù)非常方便,設(shè)計(jì)明確,各層獨(dú)立,專(zhuān)注自己擅長(zhǎng)的領(lǐng)域。

  23.簡(jiǎn)要描述如何結(jié)合 struts、hibernate、spring 開(kāi)發(fā) Web 應(yīng)用?

  解答:Struts 可以將 jsp 頁(yè)面的表單關(guān)聯(lián)起來(lái),就是把 JSP 頁(yè)面的表單數(shù)據(jù)封裝成 javaBean,這樣的話(huà),在 action 中你再也不需要使用傳統(tǒng)的 request.getParameter("name");還有 struts 有一個(gè)控制器,你在 struts 編程中的控制器(XxxAction)都是繼承總的 ActionServlet,它能集中處理請(qǐng)求,然后轉(zhuǎn)到相關(guān)的頁(yè)面。還有 struts 的表單驗(yàn)證組件,不用你寫(xiě) js 驗(yàn)證了,只需要你配置一下文件就可以了。另外 struts 的令牌機(jī)制可以防表單重復(fù)提交。

  Spring 是一個(gè)輕量級(jí)容器,非侵入性.包含依賴(lài)注入,AOP 等。它是為了解決企業(yè)應(yīng)用程序開(kāi)發(fā)復(fù)雜性而創(chuàng)建的?蚣艿闹饕獌(yōu)勢(shì)之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個(gè)組件,同時(shí)為J2EE 應(yīng)用程序開(kāi)發(fā)提供集成的框架。

  Hibernate:它可以讓我們以 OO 的方式操作數(shù)據(jù)庫(kù),這讓我們看到了 hibernate 的強(qiáng)大之處,體驗(yàn)到操作數(shù)據(jù)的方便。但 hibernate 最耀眼之處是 hibernate 的緩存機(jī)制,而不是以 OO 的方式操作數(shù)據(jù)庫(kù)。Hibernate 的緩存機(jī)制不外乎是一級(jí)緩存 session,二級(jí)緩存 sessionFactory,和第三方緩存 如 ehcache 。 也就 是 hibernate 的 最 強(qiáng)大 的地 方 是 它的 緩存 , 理解了 這 個(gè) 才能 真正 的 理解hibernate,Hibernate 的命名查詢(xún)/命名參數(shù)查詢(xún), 就是將 hql 語(yǔ)句放在一個(gè)單獨(dú)的 xml 文件之中, 它仍然讓人們以面向?qū)ο蟮姆绞饺ゲ倏v數(shù)據(jù),而不用在以 OO 的方式寫(xiě)著代碼的同時(shí),然后再轉(zhuǎn)變思維,用面向關(guān)系的方式去寫(xiě)那些 sql 語(yǔ)句。但 hibernate不僅做了這些,它的native sql 查詢(xún)方式,完

  全滿(mǎn)足 sql 語(yǔ)句的偏愛(ài)者,它像 ibatis 一樣,將 sql 語(yǔ)句放在配置文件之中

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

  解答:JDK 常用的 package

  java.lang:這個(gè)是系統(tǒng)的基礎(chǔ)類(lèi),比如 String 等都是這里面的,這個(gè) package 是唯一一個(gè)可以不用 import 就可以使用的 Package

  java.io: 這里面是所有輸入輸出有關(guān)的類(lèi),比如文件操作等

  java.net: 這里面是與網(wǎng)絡(luò)有關(guān)的類(lèi),比如 URL,URLConnection 等。

  java.util : 這個(gè)是系統(tǒng)輔助類(lèi),特別是集合類(lèi) Collection,List,Map 等。

  java.sql: 這個(gè)是數(shù)據(jù)庫(kù)操作的類(lèi),Connection, Statememt,ResultSet 等

  JAVA筆試題目之邏輯題 篇4

  1)Java 中能創(chuàng)建 Volatile 數(shù)組嗎?

  能,Java 中可以創(chuàng)建 volatile 類(lèi)型數(shù)組,不過(guò)只是一個(gè)指向數(shù)組的引用,而不是整個(gè)數(shù)組。我的意思是,如果改變引用指向的數(shù)組,將會(huì)受到 volatile 的保護(hù),但是如果多個(gè)線(xiàn)程同時(shí)改變數(shù)組的元素,volatile 標(biāo)示符就不能起到之前的保護(hù)作用了。

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

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

  3)volatile 修飾符的有過(guò)什么實(shí)踐?

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

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

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

  5) 10 個(gè)線(xiàn)程和 2 個(gè)線(xiàn)程的同步代碼,哪個(gè)更容易寫(xiě)?

  從寫(xiě)代碼的'角度來(lái)說(shuō),兩者的復(fù)雜度是相同的,因?yàn)橥酱a與線(xiàn)程數(shù)量是相互獨(dú)立的。但是同步策略的選擇依賴(lài)于線(xiàn)程的數(shù)量,因?yàn)樵蕉嗟木(xiàn)程意味著更大的競(jìng)爭(zhēng),所以你需要利用同步技術(shù),如鎖分離,這要求更復(fù)雜的代碼和專(zhuān)業(yè)知識(shí)。

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

  wait() 方法應(yīng)該在循環(huán)調(diào)用,因?yàn)楫?dāng)線(xiàn)程獲取到 CPU 開(kāi)始執(zhí)行的時(shí)候,其他條件可能還沒(méi)有滿(mǎn)足,所以在處理前,循環(huán)檢測(cè)條件是否滿(mǎn)足會(huì)更好。下面是一段標(biāo)準(zhǔn)的使用 wait 和 notify 方法的代碼:

  // The standard idiom for using the wait method

  參見(jiàn) Effective Java 第 69 條,獲取更多關(guān)于為什么應(yīng)該在循環(huán)中來(lái)調(diào)用 wait 方法的內(nèi)容。

【JAVA筆試題目之邏輯題】相關(guān)文章:

邏輯題目筆試題07-22

類(lèi)似德勤筆試題目的邏輯題12-04

常見(jiàn)的筆試邏輯題11-26

筆試題目邏輯考題07-20

邏輯考題筆試題目07-20

筆試題目邏輯考題02-11

JAVA筆試必備題01-15

JAVA筆試基礎(chǔ)題11-26

Java招聘筆試題目12-07