- 相關(guān)推薦
java實習(xí)生面試技巧三篇
篇一:實習(xí)生java面試題集及詳細(xì)答案
1.Java有那些基本數(shù)據(jù)類型,String是不是基本數(shù)據(jù)類型,他們有何區(qū)別。
Java語言提供了八種基本類型:
六種數(shù)字類型(四個整數(shù)型,兩個浮點(diǎn)型)
字節(jié)型byte 8位 短整型short 16位 整型int 32位
長整型long 64位 單精度float 32位 雙精度double 64位
一種字符類型
字符型char 8位
還有一種布爾型
布爾型:boolean 8位 可存儲"True"和"false"。
String本身就是一個對象而不是基本數(shù)據(jù)類型,String的變量名是對String類的引用。
2.字符串的操作:
寫一個方法,實現(xiàn)字符串的反轉(zhuǎn),如:輸入abc,輸出cba
public static String reverse(String s){
int length=s.length();
StringBuffer result=new StringBuffer(length);
for(int i=length-1;i>=0;i--)
result.append(s.charAt(i));
return result.toString();
}
寫一個方法,實現(xiàn)字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。 String s = "bbbwlirbbb";
s.replaceAll("wlirbbb","hhtccc");
3.數(shù)據(jù)類型之間的轉(zhuǎn)換
如何將數(shù)值型字符轉(zhuǎn)換為數(shù)字(Integer,Double)
使用Integer.parseInt()和Double.parseDouble()方法。
如何將數(shù)字轉(zhuǎn)換為字符
class my
{
int a=12;
Label label=new Label();
label.setText(String.valueOf(a));
}
如何取小數(shù)點(diǎn)前兩位,并四舍五入。
System.out.println("四舍五入取整:(3.856)="
+ new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));
4.日期和時間
如何取得年月日,小時分秒
Date dat=new Date();
dat.getYear(); dat.getMonth(); dat.getDay(); dat.getHours(); dat.getMinutes(); dat.getSeconds();
如何取得從1970年到現(xiàn)在的毫秒數(shù)
long now=dat.getTime();
如何獲取某個日期是當(dāng)月的最后一天
DateFormate df=DateFormate.getInstance();df.Format(dat);
如何格式化日期
DateFormate df=DateFormate.getInstance();
df.Format(dat);
5.數(shù)組和集合
數(shù)組與集合的區(qū)別:一:數(shù)組聲明了它容納的元素的類型,而集合不聲明。這是由于集合以object形式來存儲它們的元素。二:一個數(shù)組實例具有固定的大小,不能伸縮。集合則可根據(jù)需要動態(tài)改變大小。三:數(shù)組是一種可讀/可寫數(shù)據(jù)結(jié)構(gòu)沒有辦法創(chuàng)建一個只讀數(shù)組。然而可以使用集合提供的ReadOnly方 只讀方式來使用集合。該方法將返回一個集合的只讀版本。
6.文件和目錄(I/O)操作
如何列出某個目錄下的所有文件
如何列出某個目錄下的所有子目錄
判斷一個文件或目錄是否存在
如何讀寫文件
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class FileOpreate {
public static void main(String [] args)
{
FileOpreate fo=new FileOpreate();
try
{
//文件的寫入
/*String[] testStr=new String[50];
for(int i=0;i<testStr.length;i++)
{
testStr[i]="我的測試數(shù)據(jù)00"+i;
}
fo.writeFile("D:\","test.txt",testStr);
*/
//文件的寫入
/*String str="測試";
fo.writeFile("D:\","test001.txt",str);*/
//創(chuàng)建或者刪除文件
/*if(fo.createAndDeleteFile("D:\","test001.txt"))
{
fo.createAndDeleteFile("D:\","test002.txt");
}*/
//創(chuàng)建或者刪除文件夾
/*fo.createAndDeleteFolder("D:\","2009-07-06");*/
//輸出一個文件內(nèi)的文件名稱
/*fo.readFolderByFile("D:\");*/
//判斷一個文件是否是空的
/*fo.fileIsNull("D:\","test002.txt");*/
//讀取全部的文件內(nèi)容
/*fo.readAllFile("D:\","test.txt");*/
//一行一行讀取文件內(nèi)容
fo.readLineFile("D:\","test.txt");
}
catch(Exception e)
{
e.printStackTrace();
}
}
7.Java多態(tài)的實現(xiàn)(繼承、重載、覆蓋)
多態(tài)可分為:
1)編譯多態(tài):主要是體現(xiàn)在重載,系統(tǒng)在編譯時就能確定調(diào)用重載函數(shù)的哪個版本。
2)運(yùn)行多態(tài):主要體現(xiàn)在OO設(shè)計的繼承性上,子類的對象也是父類的對象,即上溯造型,所以子類對象可以作為父類對象使用,父類的對象變量可以指向子類對象。因此通過一個父類發(fā)出的方法調(diào)用可能執(zhí)行的是方法在父類中的實現(xiàn),也可能是某個子類中的實現(xiàn),它是由運(yùn)行時刻具體的對象類型決定的。
8.編碼轉(zhuǎn)換,怎樣實現(xiàn)將GB2312編碼的字符串轉(zhuǎn)換為ISO-8859-1編碼的字符串。
String str = new String("字符串".getBytes("GB2312"),"ISO-8859-1");
9.使用StringBuffer類與String類進(jìn)行字符串連接時有何區(qū)別?
JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數(shù)據(jù)。這個String類提供了數(shù)值不可改變的字符串。而這個StringBuffer類提供的字符串進(jìn)行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態(tài)構(gòu)造字符數(shù)據(jù)。
10.談?wù)刦inal, finally, finalize的區(qū)別。
final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。 finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。
finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關(guān)閉文件等。
11.String s = new String("xyz");創(chuàng)建了幾個String Object?
兩個,一個是string s,另一個是”xyz”。
12.Java有沒有g(shù)oto?
goto是java中的保留字,現(xiàn)在沒有在java中使用。
13.數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?
數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。String有l(wèi)ength()這個方法。
14.Overload和Override的區(qū)別。
override(重寫)
1)方法名、參數(shù)、返回值相同。
2)子類方法不能縮小父類方法的訪問權(quán)限。
3)子類方法不能拋出比父類方法更多的異常(但子類方法可以不拋出異常)。
4)存在于父類和子類之間。
5)方法被定義為final不能被重寫。
overload(重載)
1)參數(shù)類型、個數(shù)、順序至少有一個不相同。
2)不能重載只有返回值不同的方法名。
3)存在于父類和子類、同類中。
15.abstract class和interface有什么區(qū)別?
Interface只能有成員常量,只能是方法的聲明;
而abstract class可以有成員變量,可以聲明普通方法和抽象方法。
聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類為。取而代之,在子類中實現(xiàn)該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現(xiàn)與子類相似,除了該實現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來決定某對象的類是否實現(xiàn)了接口。
16.是否可以繼承String類?
String類是final類故不可以繼承。
17.面向?qū)ο蟮奶卣饔心男┓矫?
1)抽象:抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細(xì)節(jié)。抽象包括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。
2)繼承:繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。
派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。
3)封裝:封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥嬎闶加谶@個基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護(hù)的接口訪問其他對象。
4) 多態(tài)性:多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應(yīng)用程序函數(shù)同名問題。
18.int 和 Integer 有什么區(qū)別?
Java 提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)。
Int是java的原始數(shù)據(jù)類型,
Integer是java為int提供的封裝類。
Java為每個原始類型提供了封裝類。
原始類型封裝類booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble
引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲,當(dāng)引用類型和原始類型用作某個類的實例數(shù)據(jù)時所指定的缺省值。對象引用實例變量的缺省值為 null,而原始類型實例變量的缺省值與它們的類型有關(guān)。
19.作用域public,private,protected,以及不寫時的區(qū)別?
20.用java寫一個冒泡排序。
/**
* 對int數(shù)組進(jìn)行升序排序
*
* @param intVal:要排序的數(shù)組
* @param asc:值為true,表示升序排序;傳入值為false,表示降序排序
* @return 返回排序后的int數(shù)組
*/
public static int[] intArraySort(int [] intVal,boolean asc){
int [] vals=intVal;
int temp;
if(vals.length>0){
if(asc==true){
for(int i=0;i<=vals.length-2;i++){
for(int j=0;j<vals.length-i-1;j++){
if(vals[j]>vals[j+1]){
//升序排列
篇二:java實習(xí)生試題
JAVA測試題
答案寫答題紙上
一、選擇題:
1. 以下定義一維數(shù)組的語句中,正確的是: C
A. int a[5]
B. int a[]=new [5];
C. int a[];
int a=new int[5];
D. int a[]={1,2,3,4,5};
2. 假定一個類的構(gòu)造方法為 “ A(int aa, int bb) { a=aa; b=aa*bb; } ”,則執(zhí)行“ A x = new A(4,5); ” 語句后,x.a 和x.b的值分別是:C
A. 4 和5 B. 5和4 C .4和20 D. 20和5
3. 對于任意一個類,用戶所能定義的構(gòu)造方法的個數(shù)至多為 D
A.0個 B.1個 C.2個 D.任意個
4. 假設(shè)類A有構(gòu)造方法A(int a),則在類A的其他構(gòu)造方法中調(diào)用該構(gòu)造方法的語句格式應(yīng)為 D
A. A(x)
B. this. A(x)
C. this(x)
D. super(x)
5.關(guān)于實例方法和類方法,以下描述正確的是:B
A. 實例方法只能訪問實例變量
B. 類方法既可以訪問類變量,也可以訪問實例變量
C. 類方法只能通過類名來調(diào)用
D. 實例方法只能通過對象來調(diào)用
6.接口是Java面向?qū)ο蟮膶崿F(xiàn)機(jī)制之一,以下說法正確的是:B
A. Java支持多重繼承,一個類可以實現(xiàn)多個接口;
B. Java只支持單重繼承,一個類可以實現(xiàn)多個接口;
C. Java只支持單重繼承,一個類只可以實現(xiàn)一個接口;
D. Java支持多重繼承,但一個類只可以實現(xiàn)一個接口。
7. 關(guān)于接口的定義和實現(xiàn),以下描述正確的是: A
A. 接口定義中的方法都只有定義沒有實現(xiàn)
B. 接口定義中的變量都必須寫明final和static
C. 如果一個接口由多個類來實現(xiàn),則這些類在實現(xiàn)該接口中的方法時應(yīng)采用統(tǒng)一的代碼
D. 如果一個類實現(xiàn)一個接口,則必須實現(xiàn)該接口中的所有方法,但方法未必聲明為public.
8. 在 Java的異常處理語句try-catch-final 中,以下描述正確的是:
A. try后面是可能產(chǎn)生異常的代碼,catch后面是捕獲到某種異常對象時進(jìn)行處理的代碼,final后面是沒有捕獲到異常時要執(zhí)行的代碼
B. try后面是可能產(chǎn)生異常的代碼,catch后面是捕獲到某種異常對象時進(jìn)行處理的代碼,final后面是無論是否捕獲到異常都必須執(zhí)行的代碼
C. catch 語句和final語句都可以缺省
D. catch 語句用來處理程序運(yùn)行時的非致命性錯誤,而final語句用來處理程序運(yùn)行時的致命性錯誤
9下列關(guān)于繼承的說法哪個是正確的? A
A.子類只繼承父類public方法和屬性;
B.子類繼承父類的非私有屬性和方法;
C.子類只繼承父類的方法,而不繼承父類的屬性;’
D.子類將繼承父類的所有的屬性和方法。
10.下列關(guān)于抽象類的說法四個是正確的?
A.某個抽象類的父類是抽象類,則達(dá)個子類必須里載父類的所有抽象方法;
B.接口和抽象類是同一回事;
C.絕對不能用抽象類去創(chuàng)建對象;
D.抽象類中不可以有非抽象方法。
二、問答題
1:談?wù)刦inal, finally, finalize的區(qū)別。
2:Overload和Override的區(qū)別。
3:abstract class和interface有什么區(qū)別?
4:sleep() 和 wait() 有什么區(qū)別?
5:jsp有哪些內(nèi)置對象?作用分別是什么?
6:jsp有哪些動作?作用分別是什么?
7:JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?
8:SERVLET 中forward() 與redirect()的區(qū)別?
三、編程題:
1:編程題: 寫一個Singleton出來。
2:寫一段程序用遞歸計算n!
3:寫一段程序?qū)崿F(xiàn)給一個字符串按字符的反排列打印顯示。
篇三:java工程師筆試題(包含實習(xí)生、高級工程師)
筆試題
1.abstract class和interface的區(qū)別?
2.try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
3.int 和 Integer 有什么區(qū)別?
4.說出ArrayList,Vector, LinkedList的存儲性能和特性?
5.描述一下JVM加載class文件的原理機(jī)制?
6.STRING與STRINGBUFFER的區(qū)別?
7.List、Map、Set三個接口,存取元素時,各有什么特點(diǎn)?
8.談?wù)刦inal, finally, finalize的區(qū)別
9.sleep() 和 wait() 有什么區(qū)別?
10.GC是什么? 為什么要有GC?
11.jsp:include,jsp:forward兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)別?
12.簡述JSP的內(nèi)置對象及方法。
13.Servlet的基本架構(gòu)?
14.getServletContext()和getServletConfig()的意思
15.filter 的作用是什么?主要實現(xiàn)什么方法?request 和 response全稱是什么?
16.JS中的三種彈出式消息提醒(警告窗口、確認(rèn)窗口、信息輸入窗口)的命令是什么?
17.談?wù)刯avascript數(shù)組排序方法sort()的使用,重點(diǎn)介紹sort()參數(shù)的使用及其內(nèi)部機(jī)制
18.結(jié)合text這段結(jié)構(gòu),談?wù)刬nnerHTML outerHTML innerText之間的區(qū)別。
19.如何獲取表單select域的選擇部分的文本?
20.在JavaScript中定時調(diào)用函數(shù) foo() 如何寫?
21.hibernate和jdbc有什么區(qū)別
22.描述使用JDBC連接數(shù)據(jù)庫的過程
23.簡述JDBC連接池的實現(xiàn)方法
24.Jdo是什么?
25.Class.forName的作用?為什么要用?
26.請教一個面試中遇到的SQL語句的查詢問題
表中有A B C三列,用SQL語句實現(xiàn):當(dāng)A列大于B列時選擇A列否則選擇B列,當(dāng)B列大于C列時選擇B列否則選擇C列。
27.一個日期判斷的sql語句?
請取出tb_send表中日期(SendTime字段)為當(dāng)天的所有記錄?(SendTime字段為datetime型,包含日期與時間)
28.用一條SQL語句 查詢出每門課都大于80分的學(xué)生姓名
name kecheng fenshu
張三 語文 81
張三 數(shù)學(xué) 75
李四 語文 76
李四 數(shù)學(xué) 90
王五 語文 81
王五 數(shù)學(xué) 100
王五 英語 90
29.復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a 新表名:b)
30.拷貝表(拷貝數(shù)據(jù),源表名:a 目標(biāo)表名:b)
31.原表:
courseid coursename score
-------------------------------------
1 java 70
2 oracle 90
3 xml 40
4 jsp 30
5 servlet 80
-------------------------------------
為了便于閱讀,查詢此表后的結(jié)果顯式如下(及格分?jǐn)?shù)為60):
courseid coursename score mark
---------------------------------------------------
1 java 70 pass
2 oracle 90 pass
3 xml 40 fail
4 jsp 30 fail
5 servlet 80 pass
---------------------------------------------------
寫出此查詢語句
篇四:JAVA實習(xí)生問題
JAVA實習(xí)生問題:
1.我班只招三人。 2.實習(xí)從現(xiàn)在開始,至于結(jié)束,暫時沒有時間限制,因為公司項目較多,缺乏人手,項目周期長。 聽他們說他們現(xiàn)在接了一個安徽省的云平臺項目,這個就夠他們忙的了。 如果最后你們能夠成長起來,并且愿意留下來,他們也很高興,也就相當(dāng)于培養(yǎng)自己的員工。
3.工作內(nèi)容:項目組帶著做項目。 相當(dāng)于一邊學(xué)習(xí)一邊動手做。 所以興趣很重要,如果很有興趣,具有一定的分析問題解決問題的能力,遇到問題,則是自己積極想辦法解決,而且覺得很有成就感,在有興趣的前提下,跟著項目組做項目也是學(xué)的最快的;但是如果興趣并不是很大,那么就變成了壓力、痛苦和無聊。
4.此次公司招實習(xí)生,對基礎(chǔ)沒什么要求(只要學(xué)過java就行),重要的是興趣。 如果動手能力、自學(xué)能力較強(qiáng),具有較強(qiáng)的分析問題、解決問題的能力,即使基礎(chǔ)不是很好,也應(yīng)該問題不大。 有興趣,遇到問題就不會覺得難,而是自己積極的想辦法去解決。
5.對于女生來說,需要考慮的更多一些,比如安全問題,畢竟是在校外實習(xí)。 這些問題你們自己要考慮到,也都是要讓你們自己負(fù)責(zé)的。要慎重,自己考慮清楚。
6.公司招實習(xí)生的目的是幫著項目組做項目。 不是很想干的,最好別去。
7.工作有兩個方向,軟件開發(fā)or系統(tǒng)集成,方向自己選,看你們對哪一塊感興趣。 如果基礎(chǔ)好一點(diǎn),項目組就帶著你們做;如果基礎(chǔ)薄弱,不光帶著做,還會有培訓(xùn)。 實際上帶著做項目,是學(xué)的最快的,但是前提是有興趣。 至于具體做什么,要看是什么項目,是項目中的哪一部分。
篇五:Java項目經(jīng)理的面試經(jīng)驗之談
最近我們公司要招的人比較多,每天都要面上兩三個人,從剛實習(xí)完的到工作了幾年的都有。
我是個不愛照搬考題面試的人,就喜歡直接聊到哪算哪,一般過程是這樣的:
1、先介紹下過去做過的項目,負(fù)責(zé)哪些模塊。
這塊一般會被當(dāng)成開場白,因為泛泛介紹一下以后通常還會深入探討細(xì)節(jié)。不過有一個人例外,他直接在這個階段就打動我了。
他當(dāng)時除了介紹他的項目和模塊是干嘛的,還拿張紙給我畫了他們的代碼業(yè)務(wù)流程圖,從哪個模塊調(diào)用哪個模塊,哪個系統(tǒng)調(diào)用哪個系統(tǒng),先做什么再做什么,還包括了如果哪步出問題,他們是怎么處理的,有條有理,思維嚴(yán)謹(jǐn),雖然沒有涉及什么高級技術(shù),我當(dāng)時就下定決心這個人要了。后來入職的半個月也充分證明了這是我最正確的選擇之一,他總能提前干完還一直纏著問還有沒有活干了,比很多老員工效率要高。
2、介紹完畢,我通常會先就對方的項目介紹問清楚項目的來龍去脈,這個項目是些什么人在用,有哪些角色,每種角色能干什么事情。
這個階段就有人被淘汰了,有的人表達(dá)得結(jié)結(jié)巴巴,不懂如何描述,或者前后不連貫,想到哪算哪,最后對他的項目干嘛用的還是一頭霧水。感覺就是個照貓畫虎干死活的,我肯定這樣的人和產(chǎn)品需求人員溝通一定會出大問題,誤會和返工少不了,因為他沒法表達(dá)清楚他做的項目的業(yè)務(wù)。
3、開始就他用過的主流框架問些細(xì)節(jié)。
一般先問持久層,不外乎是hibernate mybatis或者jdbc,用jdbc的,先來解釋下他們是怎么開啟事務(wù)的,統(tǒng)一配好就不管了呢,還是會按需調(diào)整事務(wù)的特性。工作幾年的我一般不再問事務(wù)有什么意義,一年以下的我會問事務(wù)有什么用,沒有會怎么樣。結(jié)果令我很意外,那些做了半年多項目的實習(xí)生們,只有一個人答對了,事務(wù)能保證一致性,出錯會回滾,其他人都是些什么能讓條理更清晰啊,性能更好啊......少年們,事務(wù)對于使用數(shù)據(jù)庫的意義就像鹽對于炒菜一樣重要好不好,做為一個做了大半年增刪改查項目的人,請不要老拿:我們就是做功能的,原理不清楚來應(yīng)付。弄懂事務(wù)的意義10分鐘就可以了吧。
當(dāng)然也有人記得那個經(jīng)典的銀行轉(zhuǎn)帳的例子來講事務(wù)的作用,我很刁難地問了一個:如果出帳的帳戶和入帳的帳戶不在一個數(shù)據(jù)庫里怎么辦?然后就沒有然后了
然后我會問的一般還有,事務(wù)開啟了,有什么辦法在事務(wù)過程中,出了異常也不回滾數(shù)據(jù)庫操作。這個問題答不上來也沒關(guān)系,因為需要這么干的時候不多,在分布式系統(tǒng)里可能會有這種需要。我主要是觀察對方的反應(yīng),我最欣賞不知道的反應(yīng)是立即請教怎么樣能做到,最討厭的反應(yīng)是說不會有這種需要的,臉上帶著
一副懂這有什么用的不屑。
hibernate可問的問題還挺多的,但我不會問些什么save和saveOrUpdate有什么區(qū)別,我覺得這真是八股,一共就兩方法,一個保存不了換一個試試就解決了,百度都不需要。我更想問,怎么樣在代碼中動態(tài)控制延時加載的效果,怎么樣用hibernate實現(xiàn)只查一張表的部分字段而不是整個表get出來,這些對開發(fā)質(zhì)量更有實在意義。
其他的問題也不一一描述了。
4、三大框架的高級用法我不會怎么問,我不需要你深入研究透這個框架,當(dāng)然如果你真的研究透了絕對加分。我更希望你用得清晰,用得明明白白,而不只是“別人這么用的我也就這么照抄了”。
比如對于初級開發(fā)人員我有個喜歡問的很簡單的問題是,你從你的控制層,調(diào)service層的一個保存數(shù)據(jù)的方法時,service一般會返回什么類型的值。有的人回答boolean,有的人回答String,boolean的我會追問那如何獲得保存后的數(shù)據(jù)庫記錄主鍵,String的會追問保存失敗以后應(yīng)該返回什么。這個問題確實太簡單了,做法很多,但是我想看的是對方的思考方式是否有條理,合理,而不是逮著什么方便就怎么寫。有的新手會對著自己的代碼想,這樣寫好嗎,換個寫法是不是更優(yōu)雅合理,有的人卻是能實現(xiàn)就行了,讓他想想其中的道理時,就真的一頭霧水。
這個問題我最討厭的回答是:太久了,已經(jīng)忘了。這你都能忘你還能記得什么!你的項目真的是你做的么?
最喜歡的回答:我們封裝了一個返回結(jié)果的基本類,里面有一些處理結(jié)果標(biāo)識和通用的異常定義,不同的方法會返回不同的子類,子類中定義了調(diào)用端所需的各種信息對象DTO。沒有人類似這么答過,我自己YY而已。
5、接下來是知識廣度,從緩存到集群到分布式調(diào)用,nosql,MQ隊列,maven、svn,看他們對這些技術(shù)了解多少,也許因為項目經(jīng)歷所限,你沒機(jī)會用過這些技術(shù),但是隨便上一些技術(shù)網(wǎng)站,都能了解到現(xiàn)在流行什么,這些技術(shù)是為了解決什么問題存在的,你看這些技術(shù)也說明你注意到了一些問題的存在。視野開闊的人,說明他的求知欲強(qiáng)。也許應(yīng)聘者很多關(guān)于各種技術(shù)的回答是錯的,但是我能看出來他是想過還是沒想過,是有自己的一套認(rèn)知還是胡說八道。你說錯沒關(guān)系,我們團(tuán)隊里有懂的人,他以后會給你把觀點(diǎn)改正過來,但是想都沒想過,差距就顯而易見。
我隔壁辦公室的一個項目經(jīng)理招人的時候和我最大的差別就在這,他要那些盡可能答得正確的,懂得多的,有經(jīng)驗的,因為他們團(tuán)隊沒有架構(gòu)師,全靠程序員的知識準(zhǔn)確性保證質(zhì)量,他得依賴招來的人的知識準(zhǔn)確度。我不缺解決問題的人,尤其不缺依靠搜索引擎就能解決問題的人,我只要你能夠思考問題就行。
接下來說說我對各層次的人的印象,我這里是杭州。
新手:在公司呆過半年以上,做過一兩個簡單項目。
這類有好多都是只會簡單增刪改查,框架細(xì)節(jié)不知,java基礎(chǔ)的集合也了解甚少,只會用用最常見的兩三個,甚至有一半以上說不清request和session的區(qū)別,還有事務(wù)的作用。
工作兩三年的:分化嚴(yán)重,有的思維很清晰,知道自己的發(fā)展瓶頸,渴望有更好的項目鍛煉。有的日復(fù)一日,年復(fù)一年,毫無進(jìn)步,就是一只井底之蛙,熟練地用著自己的三板斧,稍微變化一下跳出熟悉的條條框框,就迷茫了。
研究生:這個有點(diǎn)特別,我一共遇到兩個,差別截然相反,他們都還沒畢業(yè),一個對互聯(lián)網(wǎng)大型分布式系統(tǒng)已經(jīng)很了解,看得出來不但有項目經(jīng)驗還基礎(chǔ)扎實,抵得上工作兩三年的人,而且有好機(jī)會,在大公司實習(xí)過,并且表現(xiàn)不錯,還想有更好的選擇。另一個就停留在很初級的階段,只能做最簡單的增刪改查,還是在讀研途中報的培訓(xùn)學(xué)的,雖然就培訓(xùn)生的水準(zhǔn)來說,他學(xué)得相當(dāng)不錯,原理常識也基本都懂得,只可惜自我定位不對,要價高得離譜,放棄。
老手:一般三五年以上,有的也是日復(fù)一日年復(fù)一年,還不如要一兩年的。有的就懂得相當(dāng)多,興趣已經(jīng)從如何實現(xiàn)需求有所轉(zhuǎn)移,比如如何管理技術(shù)團(tuán)隊,如何提高開發(fā)效率,提高代碼質(zhì)量。
最后我得補(bǔ)充,我的面試方式不一定具有通用參考價值,面試官都是各具個性的,有時我眼中欣賞的東西換個地方不一定會被欣賞,我不喜歡的可能有人會喜歡,最重要的,還是自身技術(shù)過硬,眼界開闊,思維表達(dá)清晰吧。
最后的最后我得說:我們公司招聘已經(jīng)滿員了,不用求報名。
【java實習(xí)生面試技巧】相關(guān)文章:
實習(xí)生面試技巧11-04
java實習(xí)生面試自我介紹07-21
java面試簡答試題09-25
面試的技巧02-10
面試的技巧09-25
java線程面試試題09-25
java面試自我介紹10-17
java面試的自我介紹04-09
Java面試問題及答案09-26