導航:首頁 > 軟體知識 > 程序員兩輪面試分別都問一些什麼

程序員兩輪面試分別都問一些什麼

發布時間:2024-05-29 14:37:43

❶ 璇烽棶鍚勪綅JAVA闈㈣瘯閮介棶涓浜涗粈涔堥棶棰

JAVA紼嬪簭鍛橀潰璇32闂

絎涓錛岃皥璋坒inal, finally, finalize鐨勫尯鍒銆
絎浜岋紝Anonymous Inner Class (鍖垮悕鍐呴儴綾) 鏄鍚﹀彲浠extends(緇ф壙)鍏跺畠綾伙紝鏄鍚﹀彲浠implements(瀹炵幇)interface(鎺ュ彛)?

絎涓夛紝Static Nested Class 鍜 Inner Class鐨勪笉鍚岋紝璇村緱瓚婂氳秺濂(闈㈣瘯棰樻湁鐨勫緢絎肩粺)銆

絎鍥涳紝&鍜&&鐨勫尯鍒銆

絎浜旓紝HashMap鍜孒ashtable鐨勫尯鍒銆

絎鍏錛孋ollection 鍜 Collections鐨勫尯鍒銆

絎涓冿紝浠涔堟椂鍊欑敤assert銆

絎鍏錛孏C鏄浠涔? 涓轟粈涔堣佹湁GC?

絎涔濓紝String s = new String("xyz");鍒涘緩浜嗗嚑涓猄tring Object?

絎鍗侊紝Math.round(11.5)絳夋柤澶氬皯? Math.round(-11.5)絳夋柤澶氬皯?

絎鍗佷竴錛宻hort s1 = 1; s1 = s1 + 1;鏈変粈涔堥敊? short s1 = 1; s1 += 1;鏈変粈涔堥敊?

絎鍗佷簩錛宻leep() 鍜 wait() 鏈変粈涔堝尯鍒?

絎鍗佷笁錛孞ava鏈夋病鏈塯oto?

絎鍗佸洓錛屾暟緇勬湁娌℃湁length()榪欎釜鏂規硶? String鏈夋病鏈塴ength()榪欎釜鏂規硶?

絎鍗佷簲錛孫verload鍜孫verride鐨勫尯鍒銆侽verloaded鐨勬柟娉曟槸鍚﹀彲浠ユ敼鍙樿繑鍥炲肩殑綾誨瀷?

絎鍗佸叚錛孲et閲岀殑鍏冪礌鏄涓嶈兘閲嶅嶇殑錛岄偅涔堢敤浠涔堟柟娉曟潵鍖哄垎閲嶅嶄笌鍚﹀憿? 鏄鐢==榪樻槸equals()? 瀹冧滑鏈変綍鍖哄埆?

絎鍗佷竷錛岀粰鎴戜竴涓浣犳渶甯歌佸埌鐨剅untime exception銆

絎鍗佸叓錛宔rror鍜宔xception鏈変粈涔堝尯鍒?

絎鍗佷節錛孡ist, Set, Map鏄鍚︾戶鎵胯嚜Collection鎺ュ彛?

絎浜屽嶮錛宎bstract class鍜宨nterface鏈変粈涔堝尯鍒?

絎浜屽嶮涓錛宎bstract鐨刴ethod鏄鍚﹀彲鍚屾椂鏄痵tatic,鏄鍚﹀彲鍚屾椂鏄痭ative錛屾槸鍚﹀彲鍚屾椂鏄痵ynchronized?

絎浜屽嶮浜岋紝鎺ュ彛鏄鍚﹀彲緇ф壙鎺ュ彛? 鎶借薄綾繪槸鍚﹀彲瀹炵幇(implements)鎺ュ彛? 鎶借薄綾繪槸鍚﹀彲緇ф壙瀹炰綋綾(concrete class)?

絎浜屽嶮涓夛紝鍚鍔ㄤ竴涓綰跨▼鏄鐢╮un()榪樻槸start()?

絎浜屽嶮鍥涳紝鏋勯犲櫒Constructor鏄鍚﹀彲琚瑲verride?

絎浜屽嶮浜旓紝鏄鍚﹀彲浠ョ戶鎵縎tring綾?

絎浜屽嶮鍏錛屽綋涓涓綰跨▼榪涘叆涓涓瀵硅薄鐨勪竴涓猻ynchronized鏂規硶鍚庯紝鍏跺畠綰跨▼鏄鍚﹀彲榪涘叆姝ゅ硅薄鐨勫叾瀹冩柟娉?

絎浜屽嶮涓冿紝try {}閲屾湁涓涓猺eturn璇鍙ワ紝閭d箞緔ц窡鍦ㄨ繖涓猼ry鍚庣殑finally {}閲岀殑code浼氫笉浼氳鎵ц岋紝浠涔堟椂鍊欒鎵ц岋紝鍦╮eturn鍓嶈繕鏄鍚?

絎浜屽嶮鍏錛岀紪紼嬮: 鐢ㄦ渶鏈夋晥鐜囩殑鏂規硶綆楀嚭2涔樹互8絳夋柤鍑?

絎浜屽嶮涔濓紝涓や釜瀵硅薄鍊肩浉鍚(x.equals(y) == true)錛屼絾鍗村彲鏈変笉鍚岀殑hash code錛岃繖鍙ヨ瘽瀵逛笉瀵?

絎涓夊嶮錛屽綋涓涓瀵硅薄琚褰撲綔鍙傛暟浼犻掑埌涓涓鏂規硶鍚庯紝姝ゆ柟娉曞彲鏀瑰彉榪欎釜瀵硅薄鐨勫睘鎬э紝騫跺彲榪斿洖鍙樺寲鍚庣殑緇撴灉錛岄偅涔堣繖閲屽埌搴曟槸鍊間紶閫掕繕鏄寮曠敤浼犻?

絎涓夊嶮涓錛宻wtich鏄鍚﹁兘浣滅敤鍦╞yte涓婏紝鏄鍚﹁兘浣滅敤鍦╨ong涓婏紝鏄鍚﹁兘浣滅敤鍦⊿tring涓?

絎涓夊嶮浜岋紝緙栫▼棰: 鍐欎竴涓猄ingleton鍑烘潵銆

浠ヤ笅鏄絳旀

絎涓錛岃皥璋坒inal, finally, finalize鐨勫尯鍒銆
final鈥斾慨楗扮︼紙鍏抽敭瀛楋級濡傛灉涓涓綾昏澹版槑涓篺inal錛屾剰鍛崇潃瀹冧笉鑳藉啀媧劇敓鍑烘柊鐨勫瓙綾伙紝涓嶈兘浣滀負鐖剁被琚緇ф壙銆傚洜姝や竴涓綾諱笉鑳芥棦琚澹版槑涓 abstract鐨勶紝鍙堣澹版槑涓篺inal鐨勩傚皢鍙橀噺鎴栨柟娉曞0鏄庝負final錛屽彲浠ヤ繚璇佸畠浠鍦ㄤ嬌鐢ㄤ腑涓嶈鏀瑰彉銆傝澹版槑涓篺inal鐨勫彉閲忓繀欏誨湪澹版槑鏃剁粰瀹氬垵鍊礆紝鑰屽湪浠ュ悗鐨勫紩鐢ㄤ腑鍙鑳借誨彇錛屼笉鍙淇鏀廣傝澹版槑涓篺inal鐨勬柟娉曚篃鍚屾牱鍙鑳戒嬌鐢錛屼笉鑳介噸杞
finally鈥斿啀寮傚父澶勭悊鏃舵彁渚 finally 鍧楁潵鎵ц屼換浣曟竻闄ゆ搷浣溿傚傛灉鎶涘嚭涓涓寮傚父錛岄偅涔堢浉鍖歸厤鐨 catch 瀛愬彞灝變細鎵ц岋紝鐒跺悗鎺у埗灝變細榪涘叆 finally 鍧楋紙濡傛灉鏈夌殑璇濓級銆
finalize鈥旀柟娉曞悕銆侸ava 鎶鏈鍏佽鎬嬌鐢 finalize() 鏂規硶鍦ㄥ瀮鍦炬敹闆嗗櫒灝嗗硅薄浠庡唴瀛樹腑娓呴櫎鍑哄幓涔嬪墠鍋氬繀瑕佺殑娓呯悊宸ヤ綔銆傝繖涓鏂規硶鏄鐢卞瀮鍦炬敹闆嗗櫒鍦ㄧ『瀹氳繖涓瀵硅薄娌℃湁琚寮曠敤鏃跺硅繖涓瀵硅薄璋冪敤鐨勩傚畠鏄鍦 Object 綾諱腑瀹氫箟鐨勶紝鍥犳ゆ墍鏈夌殑綾婚兘緇ф壙浜嗗畠銆傚瓙綾昏嗙洊 finalize() 鏂規硶浠ユ暣鐞嗙郴緇熻祫婧愭垨鑰呮墽琛屽叾浠栨竻鐞嗗伐浣溿俧inalize() 鏂規硶鏄鍦ㄥ瀮鍦炬敹闆嗗櫒鍒犻櫎瀵硅薄涔嬪墠瀵硅繖涓瀵硅薄璋冪敤鐨勩

絎浜岋紝Anonymous Inner Class (鍖垮悕鍐呴儴綾) 鏄鍚﹀彲浠extends(緇ф壙)鍏跺畠綾伙紝鏄鍚﹀彲浠implements(瀹炵幇)interface(鎺ュ彛)?
鍖垮悕鐨勫唴閮ㄧ被鏄娌℃湁鍚嶅瓧鐨勫唴閮ㄧ被銆備笉鑳絜xtends(緇ф壙) 鍏跺畠綾伙紝浣嗕竴涓鍐呴儴綾誨彲浠ヤ綔涓轟竴涓鎺ュ彛錛岀敱鍙︿竴涓鍐呴儴綾誨疄鐜般

絎涓夛紝Static Nested Class 鍜 Inner Class鐨勪笉鍚岋紝璇村緱瓚婂氳秺濂(闈㈣瘯棰樻湁鐨勫緢絎肩粺)銆
Nested Class 錛堜竴鑸鏄疌++鐨勮存硶錛夛紝Inner Class (涓鑸鏄疛AVA鐨勮存硶)銆侸ava鍐呴儴綾諱笌C++宓屽楃被鏈澶х殑涓嶅悓灝卞湪浜庢槸鍚︽湁鎸囧悜澶栭儴鐨勫紩鐢ㄤ笂銆傚叿浣撳彲瑙乭ttp: //www.frontfree.net/articles/services/view.asp?id=704&page=1
娉錛 闈欐佸唴閮ㄧ被錛圛nner Class錛夋剰鍛崇潃1鍒涘緩涓涓猻tatic鍐呴儴綾葷殑瀵硅薄錛屼笉闇瑕佷竴涓澶栭儴綾誨硅薄錛2涓嶈兘浠庝竴涓猻tatic鍐呴儴綾葷殑涓涓瀵硅薄璁塊棶涓涓澶栭儴綾誨硅薄

絎鍥涳紝&鍜&&鐨勫尯鍒銆
&鏄浣嶈繍綆楃︺&&鏄甯冨皵閫昏緫榪愮畻絎︺

絎浜旓紝HashMap鍜孒ashtable鐨勫尯鍒銆
閮藉睘浜嶮ap鎺ュ彛鐨勭被錛屽疄鐜頒簡灝嗘儫涓閿鏄犲皠鍒扮壒瀹氱殑鍊間笂銆
HashMap 綾繪病鏈夊垎綾繪垨鑰呮帓搴忋傚畠鍏佽鎬竴涓 null 閿鍜屽氫釜 null 鍊箋
Hashtable 綾諱技浜 HashMap錛屼絾鏄涓嶅厑璁 null 閿鍜 null 鍊箋傚畠涔熸瘮 HashMap 鎱錛屽洜涓哄畠鏄鍚屾ョ殑銆

絎鍏錛孋ollection 鍜 Collections鐨勫尯鍒銆
Collections鏄涓猨ava.util涓嬬殑綾伙紝瀹冨寘鍚鏈夊悇縐嶆湁鍏抽泦鍚堟搷浣滅殑闈欐佹柟娉曘
Collection鏄涓猨ava.util涓嬬殑鎺ュ彛錛屽畠鏄鍚勭嶉泦鍚堢粨鏋勭殑鐖舵帴鍙c

絎涓冿紝浠涔堟椂鍊欑敤assert銆
鏂璦鏄涓涓鍖呭惈甯冨皵琛ㄨ揪寮忕殑璇鍙ワ紝鍦ㄦ墽琛岃繖涓璇鍙ユ椂鍋囧畾璇ヨ〃杈懼紡涓 true銆傚傛灉琛ㄨ揪寮忚$畻涓 false錛岄偅涔堢郴緇熶細鎶ュ憡涓涓 AssertionError銆傚畠鐢ㄤ簬璋冭瘯鐩鐨勶細
assert(a > 0); // throws an AssertionError if a <= 0
鏂璦鍙浠ユ湁涓ょ嶅艦寮忥細
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 搴旇ユ繪槸浜х敓涓涓甯冨皵鍊箋
Expression2 鍙浠ユ槸寰楀嚭涓涓鍊肩殑浠繪剰琛ㄨ揪寮忋傝繖涓鍊肩敤浜庣敓鎴愭樉紺烘洿澶氳皟璇曚俊鎮鐨 String 娑堟伅銆
鏂璦鍦ㄩ粯璁ゆ儏鍐典笅鏄紱佺敤鐨勩傝佸湪緙栬瘧鏃跺惎鐢ㄦ柇璦錛岄渶瑕佷嬌鐢 source 1.4 鏍囪幫細
javac -source 1.4 Test.java
瑕佸湪榪愯屾椂鍚鐢ㄦ柇璦錛屽彲浣跨敤 -enableassertions 鎴栬 -ea 鏍囪般
瑕佸湪榪愯屾椂閫夋嫨紱佺敤鏂璦錛屽彲浣跨敤 -da 鎴栬 -disableassertions 鏍囪般
瑕佺郴緇熺被涓鍚鐢ㄦ柇璦錛屽彲浣跨敤 -esa 鎴栬 -dsa 鏍囪般傝繕鍙浠ュ湪鍖呯殑鍩虹涓婂惎鐢ㄦ垨鑰呯佺敤鏂璦銆
鍙浠ュ湪棰勮℃e父鎯呭喌涓嬩笉浼氬埌杈劇殑浠諱綍浣嶇疆涓婃斁緗鏂璦銆傛柇璦鍙浠ョ敤浜庨獙璇佷紶閫掔粰縐佹湁鏂規硶鐨勫弬鏁般備笉榪囷紝鏂璦涓嶅簲璇ョ敤浜庨獙璇佷紶閫掔粰鍏鏈夋柟娉曠殑鍙傛暟錛屽洜涓轟笉綆℃槸鍚﹀惎鐢ㄤ簡鏂璦錛屽叕鏈夋柟娉曢兘蹇呴』媯鏌ュ叾鍙傛暟銆備笉榪囷紝鏃㈠彲浠ュ湪鍏鏈夋柟娉曚腑錛屼篃鍙浠ュ湪闈炲叕鏈夋柟娉曚腑鍒╃敤鏂璦嫻嬭瘯鍚庣疆鏉′歡銆傚彟澶栵紝鏂璦涓嶅簲璇ヤ互浠諱綍鏂瑰紡鏀瑰彉紼嬪簭鐨勭姸鎬併

絎鍏錛孏C鏄浠涔? 涓轟粈涔堣佹湁GC? (鍩虹)銆
GC鏄鍨冨溇鏀墮泦鍣ㄣ侸ava 紼嬪簭鍛樹笉鐢ㄦ媴蹇冨唴瀛樼$悊錛屽洜涓哄瀮鍦炬敹闆嗗櫒浼氳嚜鍔ㄨ繘琛岀$悊銆傝佽鋒眰鍨冨溇鏀墮泦錛屽彲浠ヨ皟鐢ㄤ笅闈㈢殑鏂規硶涔嬩竴錛
System.gc()
Runtime.getRuntime().gc()

絎涔濓紝String s = new String("xyz");鍒涘緩浜嗗嚑涓猄tring Object?
涓や釜瀵硅薄錛屼竴涓鏄鈥渪yx鈥,涓涓鏄鎸囧悜鈥渪yx鈥濈殑寮曠敤瀵硅薄s銆

絎鍗侊紝Math.round(11.5)絳夋柤澶氬皯? Math.round(-11.5)絳夋柤澶氬皯?
Math.round(11.5)榪斿洖錛坙ong錛12錛孧ath.round(-11.5)榪斿洖錛坙ong錛-11;

絎鍗佷竴錛宻hort s1 = 1; s1 = s1 + 1;鏈変粈涔堥敊? short s1 = 1; s1 += 1;鏈変粈涔堥敊?
short s1 = 1; s1 = s1 + 1;鏈夐敊錛宻1鏄痵hort鍨嬶紝s1+1鏄痠nt鍨,涓嶈兘鏄懼紡杞鍖栦負short鍨嬨傚彲淇鏀逛負s1 =(short)(s1 + 1) 銆俿hort s1 = 1; s1 += 1姝g『銆

絎鍗佷簩錛宻leep() 鍜 wait() 鏈変粈涔堝尯鍒? 鎼炵嚎紼嬬殑鏈鐖
sleep()鏂規硶鏄浣跨嚎紼嬪仠姝涓孌墊椂闂寸殑鏂規硶銆傚湪sleep 鏃墮棿闂撮殧鏈熸弧鍚庯紝綰跨▼涓嶄竴瀹氱珛鍗蟲仮澶嶆墽琛屻傝繖鏄鍥犱負鍦ㄩ偅涓鏃跺埢錛屽叾瀹冪嚎紼嬪彲鑳芥e湪榪愯岃屼笖娌℃湁琚璋冨害涓烘斁寮冩墽琛岋紝闄ら潪(a)鈥滈啋鏉モ濈殑綰跨▼鍏鋒湁鏇撮珮鐨勪紭鍏堢駭
(b)姝e湪榪愯岀殑綰跨▼鍥犱負鍏跺畠鍘熷洜鑰岄樆濉炪
wait()鏄綰跨▼浜や簰鏃訛紝濡傛灉綰跨▼瀵逛竴涓鍚屾ュ硅薄x 鍙戝嚭涓涓獁ait()璋冪敤錛岃ョ嚎紼嬩細鏆傚仠鎵ц岋紝琚璋冨硅薄榪涘叆絳夊緟鐘舵侊紝鐩村埌琚鍞ら啋鎴栫瓑寰呮椂闂村埌銆

絎鍗佷笁錛孞ava鏈夋病鏈塯oto?
Goto鈥攋ava涓鐨勪繚鐣欏瓧錛岀幇鍦ㄦ病鏈夊湪java涓浣跨敤銆

絎鍗佸洓錛屾暟緇勬湁娌℃湁length()榪欎釜鏂規硶? String鏈夋病鏈塴ength()榪欎釜鏂規硶錛
鏁扮粍娌℃湁length()榪欎釜鏂規硶錛屾湁length鐨勫睘鎬с
String鏈夋湁length()榪欎釜鏂規硶銆

絎鍗佷簲錛孫verload鍜孫verride鐨勫尯鍒銆侽verloaded鐨勬柟娉曟槸鍚﹀彲浠ユ敼鍙樿繑鍥炲肩殑綾誨瀷?
鏂規硶鐨勯噸鍐橭verriding鍜岄噸杞絆verloading鏄疛ava澶氭佹х殑涓嶅悓琛ㄧ幇銆傞噸鍐橭verriding鏄鐖剁被涓庡瓙綾諱箣闂村氭佹х殑涓縐嶈〃鐜幫紝閲嶈澆Overloading鏄涓涓綾諱腑澶氭佹х殑涓縐嶈〃鐜般傚傛灉鍦ㄥ瓙綾諱腑瀹氫箟鏌愭柟娉曚笌鍏剁埗綾繪湁鐩稿悓鐨勫悕縐板拰鍙傛暟錛屾垜浠璇磋ユ柟娉曡閲嶅啓 (Overriding)銆傚瓙綾葷殑瀵硅薄浣跨敤榪欎釜鏂規硶鏃訛紝灝嗚皟鐢ㄥ瓙綾諱腑鐨勫畾涔夛紝瀵瑰畠鑰岃█錛岀埗綾諱腑鐨勫畾涔夊傚悓琚鈥滃睆钄解濅簡銆傚傛灉鍦ㄤ竴涓綾諱腑瀹氫箟浜嗗氫釜鍚屽悕鐨勬柟娉曪紝瀹冧滑鎴栨湁涓嶅悓鐨勫弬鏁頒釜鏁版垨鏈変笉鍚岀殑鍙傛暟綾誨瀷錛屽垯縐頒負鏂規硶鐨勯噸杞(Overloading)銆侽verloaded鐨勬柟娉曟槸鍙浠ユ敼鍙樿繑鍥炲肩殑綾誨瀷銆

絎鍗佸叚錛孲et閲岀殑鍏冪礌鏄涓嶈兘閲嶅嶇殑錛岄偅涔堢敤浠涔堟柟娉曟潵鍖哄垎閲嶅嶄笌鍚﹀憿? 鏄鐢==榪樻槸equals()? 瀹冧滑鏈変綍鍖哄埆?
Set閲岀殑鍏冪礌鏄涓嶈兘閲嶅嶇殑錛岄偅涔堢敤iterator()鏂規硶鏉ュ尯鍒嗛噸澶嶄笌鍚︺俥quals()鏄鍒よ諱袱涓猄et鏄鍚︾浉絳夈
equals()鍜==鏂規硶鍐沖畾寮曠敤鍊兼槸鍚︽寚鍚戝悓涓瀵硅薄equals()鍦ㄧ被涓琚瑕嗙洊錛屼負鐨勬槸褰撲袱涓鍒嗙葷殑瀵硅薄鐨勫唴瀹瑰拰綾誨瀷鐩擱厤鐨勮瘽錛岃繑鍥炵湡鍊箋

絎鍗佷竷錛岀粰鎴戜竴涓浣犳渶甯歌佸埌鐨剅untime exception銆
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, , DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

絎鍗佸叓錛宔rror鍜宔xception鏈変粈涔堝尯鍒?
error 琛ㄧず鎮㈠嶄笉鏄涓嶅彲鑳戒絾寰堝洶闅劇殑鎯呭喌涓嬬殑涓縐嶄弗閲嶉棶棰樸傛瘮濡傝村唴瀛樻孩鍑恆備笉鍙鑳芥寚鏈涚▼搴忚兘澶勭悊榪欐牱鐨勬儏鍐點
exception 琛ㄧず涓縐嶈捐℃垨瀹炵幇闂棰樸備篃灝辨槸璇達紝瀹冭〃紺哄傛灉紼嬪簭榪愯屾e父錛屼粠涓嶄細鍙戠敓鐨勬儏鍐點

絎鍗佷節錛孡ist, Set, Map鏄鍚︾戶鎵胯嚜Collection鎺ュ彛?
List錛孲et鏄

Map涓嶆槸

絎浜屽嶮錛宎bstract class鍜宨nterface鏈変粈涔堝尯鍒?
澹版槑鏂規硶鐨勫瓨鍦ㄨ屼笉鍘誨疄鐜板畠鐨勭被琚鍙鍋氭娊璞$被錛坅bstract class錛夛紝瀹冪敤浜庤佸壋寤轟竴涓浣撶幇鏌愪簺鍩烘湰琛屼負鐨勭被錛屽苟涓鴻ョ被澹版槑鏂規硶錛屼絾涓嶈兘鍦ㄨョ被涓瀹炵幇璇ョ被鐨勬儏鍐點備笉鑳藉壋寤篴bstract 綾葷殑瀹炰緥銆傜劧鑰屽彲浠ュ壋寤轟竴涓鍙橀噺錛屽叾綾誨瀷鏄涓涓鎶借薄綾伙紝騫惰╁畠鎸囧悜鍏蜂綋瀛愮被鐨勪竴涓瀹炰緥銆備笉鑳芥湁鎶借薄鏋勯犲嚱鏁版垨鎶借薄闈欐佹柟娉曘侫bstract 綾葷殑瀛愮被涓哄畠浠鐖剁被涓鐨勬墍鏈夋娊璞℃柟娉曟彁渚涘疄鐜幫紝鍚﹀垯瀹冧滑涔熸槸鎶借薄綾諱負銆傚彇鑰屼唬涔嬶紝鍦ㄥ瓙綾諱腑瀹炵幇璇ユ柟娉曘傜煡閬撳叾琛屼負鐨勫叾瀹冪被鍙浠ュ湪綾諱腑瀹炵幇榪欎簺鏂規硶銆
鎺ュ彛錛坕nterface錛夋槸鎶借薄綾葷殑鍙樹綋銆傚湪鎺ュ彛涓錛屾墍鏈夋柟娉曢兘鏄鎶借薄鐨勩傚氱戶鎵挎у彲閫氳繃瀹炵幇榪欐牱鐨勬帴鍙h岃幏寰椼傛帴鍙d腑鐨勬墍鏈夋柟娉曢兘鏄鎶借薄鐨勶紝娌℃湁涓涓鏈夌▼搴忎綋銆傛帴鍙e彧鍙浠ュ畾涔塻tatic final鎴愬憳鍙橀噺銆傛帴鍙g殑瀹炵幇涓庡瓙綾葷浉浼礆紝闄や簡璇ュ疄鐜扮被涓嶈兘浠庢帴鍙e畾涔変腑緇ф壙琛屼負銆傚綋綾誨疄鐜扮壒孌婃帴鍙f椂錛屽畠瀹氫箟錛堝嵆灝嗙▼搴忎綋緇欎簣錛夋墍鏈夎繖縐嶆帴鍙g殑鏂規硶銆傜劧鍚庯紝瀹冨彲浠ュ湪瀹炵幇浜嗚ユ帴鍙g殑綾葷殑浠諱綍瀵硅薄涓婅皟鐢ㄦ帴鍙g殑鏂規硶銆傜敱浜庢湁鎶借薄綾伙紝瀹冨厑璁鎬嬌鐢ㄦ帴鍙e悕浣滀負寮曠敤鍙橀噺鐨勭被鍨嬨傞氬父鐨勫姩鎬佽仈緙栧皢鐢熸晥銆傚紩鐢ㄥ彲浠ヨ漿鎹㈠埌鎺ュ彛綾誨瀷鎴栦粠鎺ュ彛綾誨瀷杞鎹錛宨nstanceof 榪愮畻絎﹀彲浠ョ敤鏉ュ喅瀹氭煇瀵硅薄鐨勭被鏄鍚﹀疄鐜頒簡鎺ュ彛銆

絎浜屽嶮涓錛宎bstract鐨刴ethod鏄鍚﹀彲鍚屾椂鏄痵tatic,鏄鍚﹀彲鍚屾椂鏄痭ative錛屾槸鍚﹀彲鍚屾椂鏄痵ynchronized?
閮戒笉鑳

絎浜屽嶮浜岋紝鎺ュ彛鏄鍚﹀彲緇ф壙鎺ュ彛? 鎶借薄綾繪槸鍚﹀彲瀹炵幇(implements)鎺ュ彛? 鎶借薄綾繪槸鍚﹀彲緇ф壙瀹炰綋綾(concrete class)?
鎺ュ彛鍙浠ョ戶鎵挎帴鍙c傛娊璞$被鍙浠ュ疄鐜(implements)鎺ュ彛錛屾娊璞$被鏄鍚﹀彲緇ф壙瀹炰綋綾伙紝浣嗗墠鎻愭槸瀹炰綋綾誨繀欏繪湁鏄庣『鐨勬瀯閫犲嚱鏁般

絎浜屽嶮涓夛紝鍚鍔ㄤ竴涓綰跨▼鏄鐢╮un()榪樻槸start()?
鍚鍔ㄤ竴涓綰跨▼鏄璋冪敤start()鏂規硶錛屼嬌綰跨▼鎵浠h〃鐨勮櫄鎷熷勭悊鏈哄勪簬鍙榪愯岀姸鎬侊紝榪欐剰鍛崇潃瀹冨彲浠ョ敱JVM璋冨害騫舵墽琛屻傝繖騫朵笉鎰忓懗鐫綰跨▼灝變細絝嬪嵆榪愯屻俽un()鏂規硶鍙浠ヤ駭鐢熷繀欏婚鍑虹殑鏍囧織鏉ュ仠姝涓涓綰跨▼銆

絎浜屽嶮鍥涳紝鏋勯犲櫒Constructor鏄鍚﹀彲琚瑲verride?
鏋勯犲櫒Constructor涓嶈兘琚緇ф壙錛屽洜姝や笉鑳介噸鍐橭verriding錛屼絾鍙浠ヨ閲嶈澆Overloading銆

絎浜屽嶮浜旓紝鏄鍚﹀彲浠ョ戶鎵縎tring綾?
String綾繪槸final綾繪晠涓嶅彲浠ョ戶鎵褲

絎浜屽嶮鍏錛屽綋涓涓綰跨▼榪涘叆涓涓瀵硅薄鐨勪竴涓猻ynchronized鏂規硶鍚庯紝鍏跺畠綰跨▼鏄鍚﹀彲榪涘叆姝ゅ硅薄鐨勫叾瀹冩柟娉?
涓嶈兘錛屼竴涓瀵硅薄鐨勪竴涓猻ynchronized鏂規硶鍙鑳界敱涓涓綰跨▼璁塊棶銆

絎浜屽嶮涓冿紝try {}閲屾湁涓涓猺eturn璇鍙ワ紝閭d箞緔ц窡鍦ㄨ繖涓猼ry鍚庣殑finally {}閲岀殑code浼氫笉浼氳鎵ц岋紝浠涔堟椂鍊欒鎵ц岋紝鍦╮eturn鍓嶈繕鏄鍚?
浼氭墽琛岋紝鍦╮eturn鍓嶆墽琛屻

絎浜屽嶮鍏錛岀紪紼嬮: 鐢ㄦ渶鏈夋晥鐜囩殑鏂規硶綆楀嚭2涔樹互8絳夋柤鍑?
鏈塁鑳屾櫙鐨勭▼搴忓憳鐗瑰埆鍠滄㈤棶榪欑嶉棶棰樸

2 << 3

絎浜屽嶮涔濓紝涓や釜瀵硅薄鍊肩浉鍚(x.equals(y) == true)錛屼絾鍗村彲鏈変笉鍚岀殑hash code錛岃繖鍙ヨ瘽瀵逛笉瀵?
涓嶅癸紝鏈夌浉鍚岀殑hash code銆

絎涓夊嶮錛屽綋涓涓瀵硅薄琚褰撲綔鍙傛暟浼犻掑埌涓涓鏂規硶鍚庯紝姝ゆ柟娉曞彲鏀瑰彉榪欎釜瀵硅薄鐨勫睘鎬э紝騫跺彲榪斿洖鍙樺寲鍚庣殑緇撴灉錛岄偅涔堣繖閲屽埌搴曟槸鍊間紶閫掕繕鏄寮曠敤浼犻?
鏄鍊間紶閫掋侸ava 緙栫▼璇璦鍙鐢卞間紶閫掑弬鏁般傚綋涓涓瀵硅薄瀹炰緥浣滀負涓涓鍙傛暟琚浼犻掑埌鏂規硶涓鏃訛紝鍙傛暟鐨勫煎氨鏄瀵硅ュ硅薄鐨勫紩鐢ㄣ傚硅薄鐨勫唴瀹瑰彲浠ュ湪琚璋冪敤鐨勬柟娉曚腑鏀瑰彉錛屼絾瀵硅薄鐨勫紩鐢ㄦ槸姘歌繙涓嶄細鏀瑰彉鐨勩

絎涓夊嶮涓錛宻wtich鏄鍚﹁兘浣滅敤鍦╞yte涓婏紝鏄鍚﹁兘浣滅敤鍦╨ong涓婏紝鏄鍚﹁兘浣滅敤鍦⊿tring涓?
switch錛坋xpr1錛変腑錛宔xpr1鏄涓涓鏁存暟琛ㄨ揪寮忋傚洜姝や紶閫掔粰 switch 鍜 case 璇鍙ョ殑鍙傛暟搴旇ユ槸 int銆 short銆 char 鎴栬 byte銆俵ong,string 閮戒笉鑳戒綔鐢ㄤ簬swtich銆

絎涓夊嶮浜岋紝緙栫▼棰: 鍐欎竴涓猄ingleton鍑烘潵銆
Singleton妯″紡涓昏佷綔鐢ㄦ槸淇濊瘉鍦↗ava搴旂敤紼嬪簭涓錛屼竴涓綾籆lass鍙鏈変竴涓瀹炰緥瀛樺湪銆
涓鑸琒ingleton妯″紡閫氬父鏈夊嚑縐嶇嶅艦寮:
絎涓縐嶅艦寮: 瀹氫箟涓涓綾伙紝瀹冪殑鏋勯犲嚱鏁頒負private鐨勶紝瀹冩湁涓涓猻tatic鐨刾rivate鐨勮ョ被鍙橀噺錛屽湪綾誨垵濮嬪寲鏃跺疄渚嬭瘽錛岄氳繃涓涓猵ublic鐨刧etInstance鏂規硶鑾峰彇瀵瑰畠鐨勫紩鐢,緇ц岃皟鐢ㄥ叾涓鐨勬柟娉曘
public class Singleton {
private Singleton(){}
//鍦ㄨ嚜宸卞唴閮ㄥ畾涔夎嚜宸變竴涓瀹炰緥錛屾槸涓嶆槸寰堝囨錛
//娉ㄦ剰榪欐槸private 鍙渚涘唴閮ㄨ皟鐢
private static Singleton instance = new Singleton();
//榪欓噷鎻愪緵浜嗕竴涓渚涘栭儴璁塊棶鏈琧lass鐨勯潤鎬佹柟娉曪紝鍙浠ョ洿鎺ヨ塊棶
public static Singleton getInstance() {
return instance;
}
}
絎浜岀嶅艦寮:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//榪欎釜鏂規硶姣斾笂闈㈡湁鎵鏀硅繘錛屼笉鐢ㄦ瘡嬈¢兘榪涜岀敓鎴愬硅薄錛屽彧鏄絎涓嬈
//浣跨敤鏃剁敓鎴愬疄渚嬶紝鎻愰珮浜嗘晥鐜囷紒
if (instance==null)
instance錛漬ew Singleton();
return instance; }
}
鍏朵粬褰㈠紡:
瀹氫箟涓涓綾伙紝瀹冪殑鏋勯犲嚱鏁頒負private鐨勶紝鎵鏈夋柟娉曚負static鐨勩
涓鑸璁や負絎涓縐嶅艦寮忚佹洿鍔犲畨鍏ㄤ簺
絎涓夊嶮涓 Hashtable鍜孒ashMap
Hashtable緇ф壙鑷狣ictionary綾伙紝鑰孒ashMap鏄疛ava1.2寮曡繘鐨凪ap interface鐨勪竴涓瀹炵幇

HashMap鍏佽稿皢null浣滀負涓涓猠ntry鐨刱ey鎴栬卾alue錛岃孒ashtable涓嶅厑璁

榪樻湁灝辨槸錛孒ashMap鎶奌ashtable鐨刢ontains鏂規硶鍘繪帀浜嗭紝鏀規垚containsvalue鍜宑ontainsKey銆傚洜涓篶ontains鏂規硶瀹規槗璁╀漢寮曡搗璇瑙c

鏈澶х殑涓嶅悓鏄錛孒ashtable鐨勬柟娉曟槸Synchronize鐨勶紝鑰孒ashMap涓嶆槸錛屽湪
澶氫釜綰跨▼璁塊棶Hashtable鏃訛紝涓嶉渶瑕佽嚜宸變負瀹冪殑鏂規硶瀹炵幇鍚屾ワ紝鑰孒ashMap
灝卞繀欏諱負涔嬫彁渚涘栧悓姝ャ

Hashtable鍜孒ashMap閲囩敤鐨刪ash/rehash綆楁硶閮藉ぇ姒備竴鏍鳳紝鎵浠ユц兘涓嶄細鏈夊緢澶х殑宸寮傘

❷ java 二面一般會面試什麼內容

Java程序員應聘一般要經過筆試和面試。作為一個技術人員,特別是剛出道的,筆試的成績是比較重要。以下是我經過幾次筆試總結的一些經驗教訓。

一般來說,試題會分為三個部分,Java基礎、資料庫基礎和綜合題。

首先是Java基礎,這個很簡單,也就是考考你對Java語言本身的理解,包括語法,類庫的使用等。有選擇題,也會有寫代碼題。寫代碼的時候認真仔細就是了。基礎題答案一般都比較死,所以盡量不要錯。在這,出一道我遇到的題考考大家,Java編程:把American,Japan,China,France,Brazil按英文字母排序。說說思路就行了:)

其次是資料庫。准確的說,考的不是資料庫,而是SQL語句。一般題型是,給兩三個表,然後讓你根據需求寫SQL。最普通的就是學生表、選課表和成績表。要掌握的就是連接查詢,還有就是一些函數(建表、表操作等就不說了哈)。其實這些都相當簡單,但是往往被新手忽略。我就遭過,因為有半年沒寫過SQL了,連接查詢搞忘完了,有兩次筆試都空起,結果可想而知。這些是必備技術,千萬不能空起啊!

然後是綜合題。之所以說是綜合題,是因為包含的內容比較多,一般都是主觀題。這里,人家是想看看你對Java高級技術以及周邊技術的了解程度和運用能力,說白了,就是考概念和考應用題。這里說的Java高級技術,也就是J2EE架構中的技術,這些不會的話,人家是不得要你的。如果你會一些流行的技術框架,那就更好了。所謂Java周邊技術,包括HTTP,HTML,XML,UML,JavaScript,CSS等,要求一般不是很高,要了解,比如讓你用HTML寫個表單你要會。關於剛才提到的技術或者框架,希望要了解其工作的原理和機制,一般要考,比如讓你說說Struts的MVC。關於應用題,可能出一道網路應用來考。

以上就是我筆試的經驗,一般是這樣,不過我也遇到過變態的。一次筆試,就被徹底甩翻,C/C++、資料庫、Java技術、Shell編程、網路協議、Unix、軟體工程全部上了。

如果筆試做的好,那就成功大半了,不過不要輕視面試哦!

❸ 程序員面試經常被提到的問題

java 程序員常用面試題- -

Java程序員面試三十二問

Java程序員面試三十二問
作者:佚名 來自:未知

第一,談談final, finally, finalize的區別。

第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以

implements(實現)interface(介面)?

第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。

第四,&和&&的區別。

第五,HashMap和Hashtable的區別。

第六,Collection 和 Collections的區別。

第七,什麼時候用assert.

第八,GC是什麼? 為什麼要有GC?

第九,String s = new String("xyz");創建了幾個String Object?

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

第十一,short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

第十二,sleep() 和 wait() 有什麼區別?

第十三,Java有沒有goto?

第十四,數組有沒有length()這個方法? String有沒有length()這個方法?

第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?

第十六,Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()?

它們有何區別?

第十七,給我一個你最常見到的runtime exception.

第十八,error和exception有什麼區別?

第十九,List, Set, Map是否繼承自Collection介面?

第二十,abstract class和interface有什麼區別?

第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是

synchronized?

第二十二,介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體

類(concrete class)?

第二十三,啟動一個線程是用run()還是start()?

第二十四,構造器Constructor是否可被override?

第二十五,是否可以繼承String類?

第二十六,當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它

方法?

第二十七,try {}里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行

,什麼時候被執行,在return前還是後?

第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?

第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對



第三十,當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後

的結果,那麼這里到底是值傳遞還是引用傳遞?

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

第三十二,編程題: 寫一個Singleton出來。

以下是答案

第一,談談final, finally, finalize的區別。

final?修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父

類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,

可以保證它們在使用中不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能

讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載finally?再異常處理時提供 finally

塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入

finally 塊(如果有的話)。

finalize?方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去

之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是

在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執

行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。

第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以

implements(實現)interface(介面)?

匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個介面

,由另一個內部類實現。

第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。

Nested Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內部類與C++嵌套

類最大的不同就在於是否有指向外部的引用上。具體可見http:

//www.frontfree.net/articles/services/view.asp?id=704&page=1

註: 靜態內部類(Inner Class)意味著1創建一個static內部類的對象,不需要一個外部類對象,2

不能從一個static內部類的一個對象訪問一個外部類對象

第四,&和&&的區別。

&是位運算符。&&是布爾邏輯運算符。

第五,HashMap和Hashtable的區別。

都屬於Map介面的類,實現了將惟一鍵映射到特定的值上。

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

Hashtable 類似於 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步

的。

第六,Collection 和 Collections的區別。

Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。

Collection是個java.util下的介面,它是各種集合結構的父介面。

第七,什麼時候用assert。

斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為 true。如果表達式計算為

false,那麼系統會報告一個 AssertionError。它用於調試目的:

assert(a > 0); // throws an AssertionError if a <= 0

斷言可以有兩種形式:

assert Expression1 ;
assert Expression1 : Expression2 ;

Expression1 應該總是產生一個布爾值。
Expression2 可以是得出一個值的任意表達式。這個值用於生成顯示更多調試信息的 String 消息。

斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標記:

javac -source 1.4 Test.java

要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。
要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。
要系統類中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。

可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用於驗證傳遞給私有方法的參數。

不過,斷言不應該用於驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參

數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試後置條件。另外,斷言不應該以任

何方式改變程序的狀態。

第八,GC是什麼? 為什麼要有GC? (基礎)。

GC是垃圾收集器。Java 程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收

集,可以調用下面的方法之一:

System.gc()
Runtime.getRuntime().gc()

第九,String s = new String("xyz");創建了幾個String Object?

兩個對象,一個是"xyx",一個是指向"xyx"的引用對象s。

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

第十一,short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型。可修改為

s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。

第十二,sleep() 和 wait() 有什麼區別? 搞線程的最愛

sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿後,線程不一定立即恢復執行。

這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)"醒來"的線程具有更

高的優先順序,(b)正在運行的線程因為其它原因而阻塞。

wait()是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對

象進入等待狀態,直到被喚醒或等待時間到。

第十三,Java有沒有goto?

Goto?java中的保留字,現在沒有在java中使用。

第十四,數組有沒有length()這個方法? String有沒有length()這個方法?

數組沒有length()這個方法,有length的屬性。
String有有length()這個方法。

第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?

方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類

之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其

父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子

類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或

有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改

變返回值的類型。

第十六,Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它

們有何區別?

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

等。

equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的

內容和類型相配的話,返回真值。

第十七,給我一個你最常見到的runtime exception。

ArithmeticException, ArrayStoreException, BufferOverflowException,

BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException,

CMMException, , DOMException, EmptyStackException,

IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException,

IllegalStateException, ImagingOpException, IndexOutOfBoundsException,

MissingResourceException, NegativeArraySizeException, NoSuchElementException,

NullPointerException, ProfileDataException, ProviderException, RasterFormatException,

SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException,

UnsupportedOperationException

第十八,error和exception有什麼區別?

error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能

處理這樣的情況。

exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。

第十九,List, Set, Map是否繼承自Collection介面?

List,Set是

Map不是

第二十,abstract class和interface有什麼區別?

聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基

本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而

可以創建一個變數,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象

靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代

之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。

介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的

介面而獲得。介面中的所有方法都是抽象的,沒有一個有程序體。介面只可以定義static final成員變數

。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即

將程序體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何對象上調用介面的方法。

由於有抽象類,它允許使用介面名作為引用變數的類型。通常的動態聯編將生效。引用可以轉換到介面類

型或從介面類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了介面。

第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是

synchronized?

都不能

第二十二,介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類

(concrete class)?

介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類

必須有明確的構造函數。

第二十三,啟動一個線程是用run()還是start()?

啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味著它可以由

JVM調度並執行。這並不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。

第二十四,構造器Constructor是否可被override?

構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。

第二十五,是否可以繼承String類?

String類是final類故不可以繼承。

第二十六,當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它

方法?

不能,一個對象的一個synchronized方法只能由一個線程訪問。

第二十七,try {}里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行

,什麼時候被執行,在return前還是後?

會執行,在return前執行。

第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?

有C背景的程序員特別喜歡問這種問題。

2 << 3

第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?

不對,有相同的hash code。

第三十,當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後

的結果,那麼這里到底是值傳遞還是引用傳遞?

是值傳遞。Java 編程語言只由值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數

的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的。

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int

、 short、 char 或者 byte。long,string 都不能作用於swtich。

第三十二,編程題: 寫一個Singleton出來。

Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。

一般Singleton模式通常有幾種種形式:

第一種形式: 定義一個類,它的構造函數為private的,它有一個static的private的該類變數,

在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。

public class Singleton {
private Singleton(){}
//在自己內部定義自己一個實例,是不是很奇怪?
//注意這是private 只供內部調用
private static Singleton instance = new Singleton();
//這里提供了一個供外部訪問本class的靜態方法,可以直接訪問
public static Singleton getInstance() {
return instance;
}
}

第二種形式:

public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//這個方法比上面有所改進,不用每次都進行生成對象,只是第一次
//使用時生成實例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}

其他形式:

定義一個類,它的構造函數為private的,所有方法為static的。

一般認為第一種形式要更加安全些

第三十三 Hashtable和HashMap

Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現

HashMap允許將null作為一個entry的key或者value,而Hashtable不允許

還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為

contains方法容易讓人引起誤解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,

不需要自己為它的方法實現同步,而HashMap就必須為之提供外同步。

Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以性能不會有很大的差異。

❹ 程序員面試問題及答案

程序員面試問題及答案

程序員是從事程序開發、維護的專業人員。我整理的程序員面試問題及答案,希望大家喜歡!

1、兩柱香問題

題目:有兩柱不均勻的香,每柱香燃燒完需要1個小時,問:怎樣用兩柱香切出一個15分鍾的時間段?這個題的重點就是怎麼切。

解答:將甲香的一頭點著,將乙香的兩頭點著,當乙香燃燒完時,說明已經過了半個小時,同時也說明甲香也正好燃燒了一半,此時,將甲香的另一頭點著,從此時起到甲香完全燒完,正好15分鍾。

2、燈管問題

在房裡有三盞燈,房外有三個開關,在房外看不見房內的情況,你只能進門一次,你用什麼方法來區分那個開關控制那一盞燈?

解答:打開一盞燈10分鍾,關掉,打開第二盞,進去看看哪盞亮,摸摸哪盞熱,熱的是第一個打開的開關開的,亮的是第二個開關開的',另一個就是第三個。

3、兩位盲人問題

他們都各自買了兩對黑襪和兩對白襪,八對襪了的布質、大小完全相同,而每對襪了都有一張商標紙連著。兩位盲人不小心將八對襪了混在一起。 他們每人怎樣才能取回黑襪和白襪各兩對呢?

答案:每一對分開,一人拿一隻,因為襪子不分左右腳的;

4、果凍問題

你有一桶果凍,其中有黃色,綠色,紅色三種,閉上眼睛,同時抓取兩個果凍。抓取多少個就可以確定你肯定有兩個同一顏色的果凍?

答案:2次4個!

5、喝啤酒問題

假如每3個空啤酒瓶可以換一瓶啤酒,某人買了10瓶啤酒,那麼他最多可以喝到多少瓶啤酒?

答案:喝完10瓶後用9個空瓶換來3瓶啤酒(喝完後有4個空瓶)喝完這三瓶又可以換到1瓶啤酒(喝完後有2個空瓶),這時他有2個空酒瓶,如果他能向老闆先借一個空酒瓶,就湊夠了3個空瓶可以換到一瓶啤酒,把這瓶喝完後將空瓶還給老闆就可以了。

所以他最多可以喝10+3+1+1=15瓶

6、三人住旅館

有三個人去住旅館,住三間房,每一間房$10元,於是他們一共付給老闆$30,第二天,老闆覺得三間房只需要$25元就夠了於是叫小弟退回$5給三位客人,誰知小弟貪心,只退回每人$1,自己偷偷拿了$2,這樣一來便等於那三位客人每人各花了九元,於是三個人一共花了$27,再加上小弟獨吞了不$2,總共是$29。可是當初他們三個人一共付出$30那麼還有$1呢?

答案:他們所消費的27元里已經包括小弟的2元了,再加退還的3元=30元。這種題一定不要亂了陣腳,根據一條思路做:這30元現在的分布是:老闆拿25元,伙計拿2元,三人各拿1元,正好!

7、三筐蘋果問題

有三筐水果,一筐裝的全是蘋果,第二筐裝的全是橘子,第三筐是橘子與蘋果混在一起。筐上的標簽都是騙人的,(就是說筐上的標簽都是錯的)你的任務是拿出其中一筐,從裡面只拿一隻水果,然後正確寫出三筐水果的標簽。

答案:從標著「混合」標簽的筐里拿一隻水果,就可以知道另外兩筐裝的是什麼水果了。

分析:從混合的拿出一個來,如果是蘋果,而貼蘋果的筐里有可能是橘子和混合,如果是混合,說明貼橘子的筐里是橘子,不成立(因為前提說了,每個標簽都是錯的)。所以貼蘋果的筐里是橘子,則貼橘子的筐里是混合。

8、汽車加油問題

一輛載油500升的汽車從A開往1000公里外的B,已知汽車每公里耗油量為1升,A處有無窮多的油,其他任何地點都沒有油,但該車可以在任何地點存放油以備中轉,問從A到B最少需要多少油

解答:嚴格證明該模型最優比較麻煩,但確實可證,大膽猜想是解題關鍵。題目可歸結為求數列an=500/(2n 1) n=0,1,2,3......的和Sn什麼時候大於等於1000,解得n>6當n=6時,S6=977.57,所以第一個中轉點離起始位置距離為1000-977.57=22.43公里.所以第一次中轉之前共耗油22.43*(2*7 1)=336.50升此後每次中轉耗油500升,所以總耗油量為7*500 336.50=3836.50升。

9、兩個人猜數問題

教授選出兩個從2到9的數,把它們的和告訴學生甲,把它們的積告訴學生乙,讓他們輪流猜這兩個數, 甲說:「我猜不出」, 乙說:「我猜不出」, 甲說:「我猜到了」, 乙說:「我也猜到了」, 問這兩個數是多少?

解答:3和4。設兩個數為n1,n2,n1> =n2,甲聽到的數為n=n1 n2,乙聽到的數為m=n1*n2,證明n1=3,n2=4是唯一解。證明:要證以上命題為真,不妨先證n=7

1)必要性:

i) n> 5 是顯然的,因為n <4不可能,n=4或者n=5甲都不可能回答不知道

ii) n> 6 因為如果n=6的話,那麼甲雖然不知道(不確定2 4還是3 3)但是無論是2,4還是3,3乙都不可能說不知道(m=8或者m=9的話乙說不知道是沒有道理的)

iii) n <8 因為如果n> =8的話,就可以將n分解成 n=4 x 和 n=6 (x-2),那麼m可以是4x也可以是6(x-2)而4x=6(x-2)的必要條件是x=6即n=10,那樣n又可以分解成8 2,所以總之當n> =8時,n至少可以分解成兩種不同的合數之和,這樣乙說不知道的時候,甲就沒有理由馬上說知道。以上證明了必要性。

2)充分性

當n=7時,n可以分解成2 5或3 4

顯然2 5不符合題意,捨去,容易判斷出3 4符合題意,m=12,證畢

於是得到n=7 m=12 n1=3 n2=4是唯一解。

10、猴子吃香蕉問題

一個小猴子邊上有100 根香蕉,它要走過50 米才能到家,每次它最多搬50 根香蕉,每走1 米就要吃掉一根,請問它最多能把多少根香蕉搬到家裡。

解答:設 小猴從0 走到50, 到A 點時候他可以直接抱香蕉回家了, 可是到A 點時候他至少消耗了3A 的香蕉( 到A, 回0, 到A), 一個限制就是小猴只能抱50 只香蕉, 那麼在A 點小猴最多49 只香蕉.100-3A=49, 所以A=17. 這樣折騰完到家的時候香蕉剩100-3A-(50-A)=50-2A=16.


;

❺ hr面試程序員問什麼問題,程序員在面試的時候的注意事項

01 和優秀開發者溝通
如果你本身沒有編程背景,那就盡量找到一些優秀的開發人員給你指點迷津。
02 問專業的問題

1. 簡要介紹一下你自己以及你最近在做的項目嗎?
作用:這個問題可以讓你更好地了解你的候選人,而談論近期工作能了解他對工作的熱情和奉獻。

2. 其他時間有別的項目要做嗎
作用:鑒於你的項目的時間長短和工作復雜程度,你可能只想找一個能完全投入到這個項目的人。但是很多程序員都會同時兼顧好幾個項目,你要確保彼此雙方的需求是什麼。

3. 你是怎麼看待自己的身份的?開發?產品經理?還是二者都是?
作用:理想的回答一般是『二者都是』, 但是你要認真評估每個候選人可能給你團隊帶來的有利和不利影響。產品經理可以幫助設計新的功能和交互,但是你也需要足夠的開發才能跟上方向從而建構你想要的內容。

4. 你會如何管理一個程序員團隊?
作用:這個問題可以幫你了解候選人的領導能力和風格。

5. 告訴他們公司想要的人是怎樣的。
作用:直截了當地告訴對方你的期望。像工作時間,項目長短,目標等等,這些都是對方很想知道的。就像你評價他是否適合公司一樣,對方也會評價你的公司是否適合他。

03 去合適的地方招聘
你不能指望天上會掉下個好程序員給你,微軟和谷歌的優秀程序員也不會自己蹦到你跟前。你的機會在於,很多這樣的程序員都擁有或追求商業想法。
你可以多去一些網站、活動大賽等地方探索發掘,這比你在社交網站上找到他們的運氣要大得多。

· 編程大賽
編程大賽就是程序員高手們雲集在一起,合作共同完成一個軟體的開發。
猿圈會定期舉辦此類招聘編程大賽,幫助企業挑選優質人才,提高企業品牌僱主形象。

· 開放性源代碼貢獻者
一些網站比如GitHub,提供在線代碼存儲庫, 程序員可以自由對開源項目貢獻自己的代碼。
所以,在招聘之前,你可以先去這種網站上找一找有潛力的候選人。

· 大學
· 軟體開發大會
盡可能多的去參加一些和你的產品相關的軟體開發大會。

· 技術博客
你能根據他們的博客判斷他們的技術技能、解決問題的能力以及寫作和溝通能力。

04 沒通過編程測試,堅決不錄用

你只能記住一條原則,那必須是,沒有讓候選人參加編程測試之前,千萬不能決定錄用與否。

通常情況下,出於項目的緊迫,我們會傾向於選擇看起來靠譜的第一個程序員,但是不拿到他的編程測試結果,不要沖動地下offer。

我也是個不懂代碼的HR,但是我善於利用各種各樣的工具,前段時間發現了一個猿圈測評的工具,我用它測試程序員候選人,通過測試結果判斷是否值得邀約來面試,這個我覺得很贊,你可以試試看

閱讀全文

與程序員兩輪面試分別都問一些什麼相關的資料

熱點內容
全民k歌怎麼同步數據 瀏覽:629
醫院生物技術可以做什麼 瀏覽:350
電子數據怎麼看真假 瀏覽:583
冰飲店代理什麼好 瀏覽:549
如何核對大量數據excle 瀏覽:749
貸記卡消費為什麼叫借記交易 瀏覽:587
天蠍男就不回信息是什麼意思 瀏覽:679
什麼技術可以掛職 瀏覽:362
烏海市市場在哪裡 瀏覽:490
未在本席位指定交易意味什麼 瀏覽:322
西遊之路飛羽需要多少數據 瀏覽:190
重慶衣服批發市場哪個大 瀏覽:297
哪些nba球員被交易不知情 瀏覽:963
產品組合包括哪些東西 瀏覽:787
村代理點代收是什麼意思 瀏覽:11
寫源程序怎麼寫 瀏覽:834
深圳車公廟到羅湖人才市場怎麼走 瀏覽:356
smartbox是什麼產品 瀏覽:23
什麼是保存數據的視頻 瀏覽:447
交易費率是指什麼 瀏覽:409