❶ 璇烽梾钖勪綅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,但是我善于利用各种各样的工具,前段时间发现了一个猿圈测评的工具,我用它测试程序员候选人,通过测试结果判断是否值得邀约来面试,这个我觉得很赞,你可以试试看