基礎(chǔ)面試題及答案在后面_第1頁
基礎(chǔ)面試題及答案在后面_第2頁
基礎(chǔ)面試題及答案在后面_第3頁
基礎(chǔ)面試題及答案在后面_第4頁
基礎(chǔ)面試題及答案在后面_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、JAVA基礎(chǔ)部分-選擇題(單選)1.在Java語言中,字符串“Java程序員”在內(nèi)存中所占用的字節(jié)數(shù)是:()。A.10B.7C.13D.142. (單選)下列表達式中,可以得到精確結(jié)果的是()。A.double d1 = 3.0 - 2.6;B.double d4 = 2.5 * 1.5;C.double d2 = 30/300;D.double d3 = 1/2 + 0.5;3.(多選)所謂“水仙花”數(shù)是一個整數(shù)等于各位數(shù)字立方的和,例如:153 = 111+555+333,下面的程序用于輸出21000內(nèi)的水仙花數(shù):for (int n = 2; n <= 1000; n+) 空白處

2、if (s = n) System.out.println(n); 下列選項中,空白處可以填入的代碼是:()。 A.int s = 0, n1 = n; while (n1 > 0) int t = n1 % 10; s += t * t * t; n1 /= 10; B.int s = 0, n1 = n; while (n1 > 0) int t = n1 / 10;s+= t * t * t; n1 %= 10; C.int s = 0; for(int n1 = n; n1>0; n1 /= 10) int t = n1%10; s += t * t * t; D.i

3、nt s = 0; for(int n1 = n; n1>0; n1 %= 10) int t = n1 / 10; s += t * t * t; 4.下列語句序列執(zhí)行后,k 的值是 ( ) int x=6, y=10, k=5; switch( x % y ) case 0: k=x*y; case 6: k=x/y; case 12: k=x-y; default: k=x*y-x; A.60B.5C.0D.545.設(shè) a = 8,則表達式 a >>> 2 的值是: (無符號右移動)( )A.1B.2C.3D.46.下列程序class Test public st

4、atic void main(String args) doSomething(1); doSomething(1,2); /insert code here在程序中插入下列哪一行代碼可以編譯通過: A static void doSomething(int args)B static void doSomething(int. args)C static coid doSomething(int.args,int x)D static void doSomething(int x,int.args)簡答題1.現(xiàn)有一個長度為20的數(shù)組,數(shù)組內(nèi)的數(shù)字0-9之間的任意數(shù)字,統(tǒng)計出數(shù)組中每個元素出現(xiàn)

5、的次數(shù)?現(xiàn)有一個字符串"fdasafdasfdasa",現(xiàn)統(tǒng)計出子串"as"出現(xiàn)的次數(shù).2.請描述冒泡排序算法的基本思想。3.一個數(shù)組中只有0,1兩種數(shù)字,進行排序,0全部在前,1全部在后OOP部分1.(單選)關(guān)于下列代碼說法正確的是:public class A private int counter = 0; public static int getInstanceCount() return counter; public A() counter+; public static void main(String args) A a1 = new

6、A(); A a2 = new A(); A a3 = new A(); System.out.println(A.getInstanceCount(); A.該類編譯失敗B.輸出:1C.輸出:3D.輸出:02.試圖編譯和運行以下代碼,將獲得什么結(jié)果(JAVA)class Base int i = 99; public void amethod() System.out.println("Base.amethod()"); Base() amethod(); public class RType extends Base int i = -1; public static

7、void main(String argv) Base b = new RType(); System.out.print(b.i+"t"); b.amethod(); RType r = (RType)b; System.out.print(r.i+"t"); public void amethod() System.out.print("RType.amethod()"+"t"); A RType.amethod -1 RType.amethod -1B RType.amethod 99 RType.ameth

8、od -1C 99 RType.amethod 99D 編譯時錯誤(Compile time error)3、下邊程序運行的結(jié)果是? ( )class Base Base() System.out.print("Base"); public class Alpha extends Base public static void main( String args ) new Alpha(); new Base(); A.BaseB.BaseBaseC.程序編譯失敗.D.程序運行但沒有任何輸出4.指出下列程序運行的結(jié)果 public class Example String

9、str=new String("good"); charch='a','b','c' public static void main(String args) Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+" and "); System.out.print(ex.ch); public void change(String str,char ch) str="test ok" ch0

10、='g' A.good and abcB.good and gbcC.test ok and abcD.test ok and gbcOOP部分-簡答題1.抽象類和接口的區(qū)別2.靜態(tài)變量和實例變量的區(qū)別?3.String s = new String("xyz");創(chuàng)建了幾個String Object ?4字符串連接時為什么推薦使用StringBuffer而不是直接用String+String的方式,請簡述原因?5.final, finally, finalize的區(qū)別。6.線程繼承Thread類 如果某個類繼承了Thread類,那么此時這個類就是一個線程類

11、,如果要創(chuàng)建此類的線程對象 A extends Thread A a = new A(); a.start()實現(xiàn)Runnable接口 如果某個類實現(xiàn)了Runnable接口,此時這個類不是線程類,這個類中只有將線程要執(zhí)行的任務寫好了如果此時用用線程來執(zhí)行這個任務A implements RunnableA a = new A();/創(chuàng)建一個線程對象指向該任務Thread th = new Thread(Runnable r,name);th.start()生命周期:5種狀態(tài)新建,就緒,運行,阻塞,死亡多線程并發(fā)問題:臟數(shù)據(jù):污染了數(shù)據(jù) -前提條件:多個線程訪問同一個對象如何避免臟數(shù)據(jù)的產(chǎn)生:線

12、程同步 - synchronized可以用來修飾方法,代碼塊:本質(zhì)是給對象加鎖如果修飾方法:給調(diào)用方法的對象(this)加鎖如果修飾代碼塊: sychronized(要加鎖的對象) 一般情況下,加鎖的對象都為this線程間的通信 - 線程間要交流生產(chǎn)者消費者Object類下的幾個方法來實現(xiàn)了線程間的通信wait() :一定出現(xiàn)在sychronized的方法中notify() notifyAll()線程池:Excutors.newFixedThreadPool(int nThread) - ExcutorServiceexecute()ThreadLocal:將數(shù)據(jù)綁定到當前線程上,那么在整個線

13、程過程中都可以使用該數(shù)據(jù)IO流: RandomAccessFile:隨機訪問流(任意訪問流)特殊之處:1.這個流既可以讀文件,也可以寫文件2.可以定位到文件的任意位置,而且可以獲取當前的偏移量RandomAccessFile(File dest,String mode)read() write() - 按照字節(jié)seek(long pos)getFilePointer() - long數(shù)據(jù)庫部分-選擇題1.當在執(zhí)行過程中,如果QUANTITY的值是空的話,哪個語句將顯示一個0?A.SELECT id_number,100/quantity FROM inventory;B.SELECT id_n

14、umber,NVL(100/quantity,0) FROM inventory;C.SELECT id_number,NULL(100/quantity,0) FROM inventory;D.SELECT idnumber,TOCHAR(100/quantity,0) FROM inventory;2.分析下面SQL語句,在什么情況下引起這個語句失???STUDEN表結(jié)構(gòu):ID NUMBER(9) FIRSTNAME VARCHAR2(25) LASTNAME VARCHAR2(25)SELECT * FROM student WHERE id=(SELECT id FROM student

15、 WHERE UPPER(first_name)='KATE' AND UPPER(last_name)='HENRY');A.在數(shù)據(jù)表中沒有學生的名字是Kate HenryB.數(shù)據(jù)表中學生的名字叫Kate的多于一個C.數(shù)據(jù)表中的學生的名字叫Kate Henry的多于一個D.FIRSTNAME和LASTNAME的值在數(shù)據(jù)庫中是小寫的3.分析下面的SQL語句,這個語句為什么會出現(xiàn)一個錯誤?CREATE TABLE sale_items(id_number NUMBER(9),description VARCHAR(25) AS SELECT id_number,d

16、escription FROM inventory WHERE quantity>500;A.一個子句丟失B.一個關(guān)鍵字丟失C.where子句不能應用在創(chuàng)建表上D.數(shù)據(jù)類型在新表中不需要被定義4.在SQL語言中,關(guān)于主鍵描述正確的是()(多選)A 只能包含一列B 可以包含兩列C 可以包含一列或者多列D 以上都不正確數(shù)據(jù)庫簡答題1.寫SQL語句顯示員工表中工資超過平均工資的員工。2.假如訂單表orders用來存儲訂單信息,cid代表客戶編號,money代表單次訂購額,現(xiàn)要查詢每個客戶的訂購次數(shù)和每個客戶的訂購總金額?統(tǒng)計單筆消費超過50元的用戶總共的消費次數(shù)以及消費總金額,總金額>2

17、0003. 表PERSONNEL 的結(jié)構(gòu)如下:ID NUMBER(9)NAME VARCHAR2(25)MANAGER_ID NUMBER(9)在這里, 部門的管理者也看作是雇員,寫出SQL語句查詢每個雇員的姓名以及管理者的姓名4.ORACLE數(shù)據(jù)庫有哪幾種約束類型?5.請分別寫出mysql與oracle的分頁查詢語句(查詢第3-第7條數(shù)據(jù))6.寫一個查詢,來查詢出掙到傭金(comm)的雇員姓名ename,部門名稱,和部門所處的位置loc。(有employ表和dept表)7.寫一個查詢,查出在名字里面有一個"A"的所有雇員姓名ename和其所在的部門loc的名稱。8顯示所有

18、薪金高于各自部門平均薪金的人?9.查詢平均成績大于60分的同學的學號和平均成績;Servlet部分1.JSP九大內(nèi)置對象,Servlet域?qū)ο笠约案髯缘淖饔梅秶?.說出Servlet的生命周期?5.請簡述mvc架構(gòu)。同時說明在自己熟悉的架構(gòu)中mvc分別對應什么?框架部分1.請描述一下spring MVC工作原理。2.Spring的核心是什么?JAVA基本部分-選擇題1.D2.B解析: 此題考查java的浮點運算的精度問題,浮點數(shù)是以二進制得形式存儲得,如0.5 = 2得-1次方選項A 返回結(jié)果0.3999999999999999選項B 返回結(jié)果3.75選項C 返回結(jié)果0.0 因為30

19、和300都是整數(shù),只要把任何一個定義成浮點型數(shù)據(jù),數(shù)據(jù)會更精確選項D 返回結(jié)果0.5 原理同選項C3.AC解析: 固定算法,只是用while循環(huán)或for循環(huán)4.D解析: switch分支結(jié)構(gòu)如果在case的語句體中添加break;語句,那么只要找到對應的case 的常量,就執(zhí)行對應case常量后的語句,如果沒有break語句就繼續(xù)執(zhí)行后面所有case 后的語句 如果最后有default也會執(zhí)行。5.B解析: Java中的位運算符: int類型占4個字節(jié),一個字節(jié)占8位,所以一個int數(shù)字占用32位。 >>表示右移,如果該數(shù)為正,則高位補0,若為負數(shù),則

20、高位補1; >>>表示無符號右移,也叫邏輯右移,即若該數(shù)為正,則高位補0,而若該數(shù)為負數(shù),則右移后高位同樣補0。6.BD解析: 根據(jù)題意,方法名稱不變,參數(shù)的個數(shù)可變,解決方案是用可變參數(shù) 類型.類型名稱 比如:int. args 可變參數(shù)其本質(zhì)是一個數(shù)組,且必須放在方法參數(shù)的最后一個位置,可以接受零個或多個參數(shù),在方法中使用數(shù)組方式來訪問,比如:args0 args1.簡答:1.int ary = 1,2,1,4,5,6; int counts = new int10; for(int i:ary) countsi+; for(int j:counts) Syst

21、em.out.print(j+" "); 2.答案:1冒泡排序的基本思想 冒泡排序是交換排序中一種簡單的排序方法。它的基本思想是對所有相鄰記錄的關(guān)鍵字值進行比效,如果是逆順(aj>aj+1),則將其交換,最終達到有序化。其處理過程為: (1)將整個待排序的記錄序列劃分成有序區(qū)和無序區(qū),初始狀態(tài)有序區(qū)為空,無序區(qū)包括所有待排序的記錄。 (2)對無序區(qū)從前向后依次將相鄰記錄的關(guān)鍵字進行比較,若逆序?qū)⑵浣粨Q,從而使得關(guān)鍵字值小的記錄向上"飄浮"(左移),關(guān)鍵字值大的記錄好像石塊,向下“墮落”(右移)。 每經(jīng)過一趟冒泡排序,都使無序區(qū)中關(guān)鍵字值最大的記錄進

22、入有序區(qū),對于由n個記錄組成的記錄序列,最多經(jīng)過n-1趟冒泡排序,就可以將這n個記錄重新按關(guān)鍵字順序排列。 2原始的冒泡排序算法 對由n個記錄組成的記錄序列,最多經(jīng)過(n-1)趟冒泡排序,就可以使記錄序列成為 有序序列,第一趟定位第n個記錄,此時有序區(qū)只有一個記錄;第二趟定位第n-1個記錄,此時有序區(qū)有兩個記錄;以此類推,算法框架為: for(i=n;i>1;i-) 定位第i個記錄; 若定位第i個記錄,需要從前向后對無序區(qū)中的相鄰記錄進行關(guān)鍵字的比較,它可以用如下所示的語句實現(xiàn)。下面給出完整的冒泡排序算法: for(int i=0;i<arr.length-1;i+)/外層循環(huán)控制

23、排序趟數(shù) for(int j=0;j<arr.length-1-i;j+)/內(nèi)層循環(huán)控制每一趟排序多少次 if(arrj>arrj+1) int temp=arrj; arrj=arrj+1; arrj+1=temp; 3.答案:int ary = 1,0,1,1,0,0,1,1,1,0,0,1,0,1; int index = 0; for(int i=0;i<ary.length;i+) if(aryi=0) aryi = 1; aryindex+ = 0; for(int i:ary) System.out.print(i+" "); OOP部分-選

24、擇題1.A2.B3.B7.B解析: 數(shù)組和對象在作為數(shù)的參數(shù)傳遞的時候,是引用傳遞,如果在方法中對其做過修改,則真的會影響原始數(shù)據(jù)OOP部分-簡答題1.2.答案:在語法定義上的區(qū)別:靜態(tài)變量前要加static 關(guān)鍵字,而實例變量前則不加。在程序運行時的區(qū)別:實例變量屬于某個對象的屬性,必須創(chuàng)建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量。 靜態(tài)變量不屬于某個實例對象,而是屬于類,所以也稱為類變量,只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實例對象, 靜態(tài)變量就會被分配空間,靜態(tài)變量就可以被使用了??傊?,實例變量必須創(chuàng)建對象后才可以通過這個對象來使用,靜態(tài)變量則可以直接使

25、用類名來引用。3.答案:只要是new,都是重新分配堆空間,如果不區(qū)分棧和堆,這里創(chuàng)建了1個String Object。如果是從jvm角度來說的話,它是創(chuàng)建了兩個對象,String s是在棧里創(chuàng)建了一個變量,new String("xyz")是在堆里創(chuàng)建了一個對象并被s引用到。 如果是String s = "xyz",那就要看常量池里有沒有"xyz",如果有直接引用,如果沒有則創(chuàng)建再引用 這里"xyz"本身就是pool中的一個對象,而在運行時執(zhí)行new String()時,將pool中的對象復制一份放到heap中,并

26、且把heap中的這個對象的引用交給s持有。ok,這條語句就創(chuàng)建了2個String對象。 難度等級:中4.答案:每次String+String都會生成一個新的String,而使用StringBuffer則不會出現(xiàn)此種情況,可以減少String對象的實例化次數(shù)。5.(1)final為關(guān)鍵字;可以修飾類,方法,變量(2)finalize()為方法;由JVM進行調(diào)用,用于對對象進行垃圾回收(3)finally:用于標識代碼塊,與try進行配合,不論try中的代碼執(zhí)行完或沒有執(zhí)行完(這里指有異常),該代碼塊之中的程序必定會進行;通常用于釋放資源 A demoGC = new A();demoG

27、C = null;System.gc();System.out.println("gc was runed ");public class A Overrideprotected void finalize() throws Throwable System.out.println("Demo finalized"); System.out.println(Thread.currentThread().getName(); super.finalize();數(shù)據(jù)庫部分-選擇題1.C2.B解析: nvl(expr1,expr2)將null轉(zhuǎn)換為非

28、null值 如果expr1位null,則取值expr2,expr2是實際值 expr1和expr2可以是任何數(shù)據(jù)類型,但兩個參數(shù)的數(shù)據(jù)類型必須是一致的3.D通過現(xiàn)有的表生成一個新的物理表create table 表名 as select 子句 where 字句(不成立的條件)4.C數(shù)據(jù)庫簡答題1.SELECT * from staff where salary>(SELECT AVG(salary) from staff)SELECT dept_id from staff UNION All SELECT id from department MAX()MIN(expr)COUNT(DI

29、STINCT expr,expr.)SUM(expr)UNION 求去重后的并集UNION All 求全并集minus 差集 2. 統(tǒng)計單筆消費超過50元的用戶總共的消費次數(shù)以及消費總金額,總金額>2000select cid,COUNT(*),SUM(money) from orders where money>50 GROUP BY cid HAVING SUM(money)>20003. SELECT , as mgrName from staff s1 LEFT JOIN staff s2 ON s1.mgr_id=s2.id4.答案:五種

30、:1.主鍵約束 PRIMARY KEY2.外鍵約束 FOREIGN KEY3.唯一約束 UNIQUE4.檢查約束 CHECK5.非空約束 NOT NULL5.答案:mysql分頁查詢: select * from staff LIMIT 0,2oracle的分頁語句:3是起始記錄號,6是終止記錄號select * from ( select e.*, rownum rn from emp e ) emp_alias where emp_alias.rn>=3 and emp_alias.rn<=6 mysql分頁語句:0是起始記錄的前一個數(shù)字,3是每頁顯示多少條數(shù)據(jù)

31、60;select *from 表名 limit 0,36. SELECT ,,d.location from staff s,department d where s.dept_id=d.id and comm is not NULL7. select ,d.location from staff s,department d where s.dept_id=d.id and LIKE '%a%'8. SELECT ,s.salary from staff s,(select AVG(salary) av,dept

32、id did from staff group by deptid) tmp where s.salary>tmp.av and s.dept_id=tmp.didServlet部分1.1、request對象2、response對象3、session對象4、application對象5、out 對象6、pageContext 對象7、config 對象8、page 對象9、exception 對象四大域?qū)ο?HttpServletRequest:一次請求HttpSession:一次會話ServletContext:整個服務器生命周期PageContext:當前頁面2.答案:Servlet

33、 生命周期:實例化->初始化->服務->銷毀。init():在Servlet的生命周期中,僅執(zhí)行一次init()方法。它是在服務器裝入Servlet時執(zhí)行的,負責初始化Servlet對象??梢耘渲梅掌?,以在啟動服務器或客戶機首次訪問Servlet時裝入Servlet。無論有多少客戶機訪問Servlet,都不會重復執(zhí)行init()。 service():它是Servlet的核心,負責響應客戶的請求。每當一個客戶請求一個HttpServlet對象,該對象的Service()方法就要調(diào)用,而且傳遞給這個方法一個“請求”(ServletRequest)對象和一個“響應”(ServletResponse)對象作為參數(shù)。在HttpServlet中已存在Service()方法。默認的服務功能是調(diào)用與HTTP請求的方法相應的do功能。 destroy(): 僅執(zhí)行一次,在服務器端停止且卸載Servlet時執(zhí)行該方法。當Servlet對象退出生命周期時,負責釋放占用的資源。一個Servlet在運行service()方法時可能會產(chǎn)生其他的線程,因

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論