精品国产一级毛片大全,毛片一级在线,毛片免费观看的视频在线,午夜毛片福利

我要投稿 投訴建議

java實習(xí)生面試技巧

時間:2022-08-06 23:25:33 面試技巧 我要投稿
  • 相關(guān)推薦

java實習(xí)生面試技巧三篇

  篇一:實習(xí)生java面試題集及詳細(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

大學(xué)實習(xí)生面試技巧有哪些09-25

java面試簡答試題09-25

面試的技巧02-10

面試的技巧09-25

java線程面試試題09-25

java面試自我介紹10-17

java面試的自我介紹04-09

Java面試問題及答案09-26