① 有哪些值得每天一看的網站
-------------------------------------------2015年12月27日更新----------------------------------------------------果殼任意門 :首先推薦的網站,至於為什麼,點進去看看就知道啦。一、閱讀類:為你的視野插上翅膀,讓你接觸更多知識。看知乎 :每天三次,為你精選知乎最佳答案!360doc:一個網友們高質量文章交流的地方,你的網上圖書館。沒有過多碎片化信息,沒有過多浮躁氛圍,一個好的文章分享網站。博客中國:中國博客發源地,自媒體根據地。要想接觸多更多優質的博客,這個網站為你提供了一個很好的平台。要想聽到更多獨到見解多來這個網站是個很好的選擇。鮮果:在鮮果網是可以看到無數的優秀的blog推薦到這里,關注自己喜歡的人和事,避免了逐一閱讀博客讀取文章的不方便,享受一站式閱讀。此外鮮果網還可以關注網站最新發表動態,微信公共號的最新文章,讓閱讀變得更加便利。豆瓣:獲取知識書籍是一個不能不提的渠道,可是怎樣了解一本書的是不真的好適合閱讀,豆瓣是你的最佳選擇。完善的評價體系,眾多高素質網民的有價值評價,加上干凈的界面,使網站具有很好的口碑。另外豆瓣的音樂、電影和小組板塊也做的十分到位。南方周末:發表同名報刊的文章,曾經以敢於發表別的報紙不敢言及的新聞、真相以及言論著稱,有很多優秀的記者和主編,他們擅長從不同的角度來探討每一個問題,網站中可以看到很多有深度的文章。果殼: 果殼網是一個泛科技主題網站,提供負責任、有智趣、貼近生活的內容,同時也會用科學的角度揭露很多社會熱點傳播的錯誤知識。你可以在這里閱讀、分享、交流、提問,讓科技興趣成為人們文化生活和娛樂生活的重要元素。此外網站還有一個知名的科技博客——松鼠會:發表眾多有趣的科普文章。譯言網:發現 翻譯 閱讀中文之外的互聯網精華。匯集國內外報刊精華,網站上面有知名的《紐約時報》網路版的中文譯文,讓你不出家門,便知天下事。當然,都是深入報道和權威報道,相比電視那些片段新聞,要深刻的多。 我學網: 李開復老師創辦的一個網站,致力於為大學生成長路上指點迷津,授業解惑,讓大學生全面發展。二、視頻類:讓知識變得更加生動有趣的媒介。網易公開課:在這里你可以觀看到來自於世界級名校的公開課程,內容涵蓋人文、社會、藝術、科學、金融等各個領域,讓優質教育資源無國界傳播。網易雲課堂、慕課網:想要學習更多的技能,那麼這個網站你就值得擁有。網站提供了海量、優質、最新的課程,你可以根據自身的學習程度,自主安排學習進度,讓你不用足不出戶便可接收到高質量培訓課程。MOOC學院、中國大學MOOC(慕課):MOOC(大型開放式網路課程),在這里學習最大的特點是可以盡可能多的模擬真實上課環節,在學習的過程中和同學討論課程問題,記錄自己的上課筆記和心得,每節課結束後都有課後作業,課程體系中還有幾次考試,成績合格可以獲得相應的網路證書。eNet網路學院、我要自學網:這兩個均屬於建立較早的主要提供各類電腦軟體教程的網站,最大的優點就是全面覆蓋面相當廣泛。你想游刃有餘的運用各個軟體的話多來這兩個網站充充電。大番薯網:網上關於計算機專業的教程很多但是大學其他專業的教學課程比較難找,而這一網站專注於分享大學絕大多數專業的相關課程,為你課下自學專業課提供了一個很好地渠道。三、博客類:共享與分享精神的體現、深度交流學習的方式。IT牛人博客聚合:一個專門搜集全網優秀IT類博客的網站,快速閱讀優秀博客的好網站。善用佳軟:致力於向網友介紹和發掘優秀軟體的博客站,內容質量十分高。闌夕的互聯網手冊:主要分析一些IT界熱門事件的博客,作者用自己獨特的視角對這些事件作以剖析,讓你對問題有更深層次的認識。左岸讀書_blog|一切成功均源自積累!:看這個博客,你會有一種看網路全書的感覺,博客的文章涉及眾多方面既有博主自己的發表也包括收集的很多網路優秀文章,很值得一看的博客。戰隼的學習探索:所有的知識中最重要的知識就是去學學習方法,博客分享了眾多諸如閱讀、思維、記憶...等很多讓你更加會學習的文章。劉未鵬 | Mind Hacks:一個啟發人思考的博客,授人以魚,不如授人以漁,讓你學會思考。阮一峰的網路日誌:一個能夠堅持保持做學問的態度,來寫文章的人。看了他的博客,就慢慢體會到 自己的無知。褪墨博客:褪墨是一個專注於時間管理,個人提升和生活健康的博客。博客的目標是:把事情做到更好。張佳瑋寫東西的地方:知乎名人張佳偉的個人博客,裡面的文章以隨筆、短小說為主,從他人看問題的角度獲得啟發。耍下:主要分享實用、小巧、免費的軟體的博客。四、工具下載類:取你所需,要你所想。九尾搜索_原谷粉搜搜:學術類資料搜索強力推薦的搜索引擎,高質的搜索結果,沒有廣告的困擾,一個難得的網站。網盤搜索、盤搜:網盤是一個獲取資源很好地途徑,但是一般人不具備一些搜索的技巧難以獲取網盤中資源,這兩個網站專門用來搜集各個網盤資源。谷歌婊_程序猿的摯愛:Google代理網站,如果用國內搜索引擎得不到想要的結果,用這個網站可得到與Google相同的搜索結果。讀遠:發掘優質電子書資源:網路「電子書下載」,會有大量網站跳出來,但一一打開後,你很難找到一個可以放心、快捷下載ebook的站點,它們不是「曲徑通幽」地投放鋪天蓋地的 廣告,就是逼迫要你注冊或者下載使用專用的下載工具。這個網站是我經過很多次體驗後,篩選出來的UI做的不錯,下載免費且非常方便的網站。最美應用、少數派 :發現好玩、好快、好用的手機應用。學習資料庫,各類學習資料,專業類視頻下載:下載類網站中可謂難得的良心網站,沒有注冊、積分等影響下載體驗的系統,眾多的優質資料真正做到免費共享和下載。類似的網站還有西東網 。80s電影下載、七七鋪、bt天堂: 提供大量電影、電視劇下載的網站,沒有過多廣告、下載步驟便捷、視頻大小適中...電影類下載網站的業界良心。碩鼠下載:每次在優酷、愛奇藝等視頻網站看到好的視頻想去下載時,總避免不了下載客戶端軟體,此外在一些網頁中看到的視頻不提供下載鏈接,碩鼠網站就是專門解決這些問題。只需提供要下載視頻的網頁地址,便可將視頻下載為下載網路視頻提供更好體驗。異次元軟體世界:異次元軟體世界與常見的軟體下載網站不同,其更注重分享「玩軟體」的感受,它精選推薦一些特別實用、有趣的精品軟體而不是追求大而全。網站提供相當詳細且精美的圖文評測。有大量綠色、實用軟體及資源下載。大軟坊: 清新漂亮的界面,干凈實用的布局,沒有大而全的軟體收錄體系但網站中的軟體你會覺得是那麼貼切自己需要。大軟坊是專為大學生提供軟體下載的利器網站,在大學生圈子中具有很高口碑。五、輕松有趣類: 讓你的心情愉悅,讓你的大腦放鬆。360 Aerial Panoramah:360°高清無死角任意放大的網站,讓你站在難以企及的視角觀察世界各地壯美絕倫的風光。有趣網址之家:收藏全球最有趣的網站。電影FM 分類電影:很有特色的一個電影網站,眾多經典電影無需下載,在該網站中直接可在線觀看。TOPYS :全球頂尖創意分享平台 OPEN YOUR MIND。抽屜新熱榜:匯聚搞笑段子、熱門圖片、有趣新聞。它將微博、門戶、社區、bbs、社交網站等海量內容聚合在一起,通過用戶推薦生成最熱榜單 。花瓣網、 500px:兩個相當優質的圖片靈感庫,網站可以欣賞到大量的攝影作品,唯美漂亮的圖片,幫你發現網路上你可能喜歡的熱門事物,素材。不許聯想:「後現代博父」之名的王小峰的個人博客,博客文風獨特,具有很強的批判性和趣味性,可有效提高你的音樂品味和文(che)學(dan)水平。一個:每天只為你准備一張圖片、一篇文字和一個問答,韓寒主編和監制。其宗旨就是希望讀者在復雜的世界裡,可以沉下心來,放慢速度,每天縱深的去閱讀一個報道、一個評論、一個文藝,幫助讀者找到他想問的人,回答一個問題。豆瓣FM: 豆瓣FM是一個提供伴隨式個性化音樂收聽服務的網站。你可以在豆瓣FM收聽個性化音樂,網站的界面極為簡潔明了,豆瓣FM系統可以通過判斷用戶在播放時的操作行為,從海量曲庫中自動發現並播出符合用戶音樂口味的歌曲。十年後: 這個網站可以讓你在閑暇之時去思考自己的夢想。網站是一個基於未來時間軸的社交網路。在這里,你可以在自己的時間軸上創建「盒子」,並利用這些盒子制定周密夢想,匿名分享未來人生。同時作為一名計算機專業的大學生IT類網站的收藏也是必不可少,下面為關於IT類的網站,對計算機喜愛的朋友請繼續往下看。--------------------------------------分割線----------------------------------------CSDN:CSDN是中國最大的開發者技術社區,多種項目於一體的大型綜合性IT門戶網站,有很強的專業性,其會員囊括了中國地區百分之九十以上的優秀程序員,在IT技術交流及其周邊國內中是第一位的網站。腦客愛刷題:專注於程序員面試題的內容型網站。SegmentFault:專業面向開發者的中文技術問答社區。做一名程序員,享受互聯網的精彩!:程序員的資料庫,提供各種資源和業界資訊。博客園:一個IT技術人員想為IT技術人員們提供一個純凈的技術交流空間,網站吸引了很多IT技術精英,把這里當作自己的網上家園,每天在這里分享著精彩的原創內容,也許他們看重的不是華麗的外表、誘人的虛名,而是純凈、專注、對技術人員的理解。w3school :W3School 是網際網路上最大的 WEB 開發者資源,是完全免費的,是非營利性的,一直在升級和更新,在w3school,你可以找到你所需要的所有的網站建設教程。StackOverFlow:最著名的程序員的問答平台,Stack Overflow現在已經成為了全球IT界最受歡迎的技術問答網站之一,在這里你的技術問題可以得到快速和專業的解答。GitHub :該網站是目前世界最大的開源技術社區,為IT開發者提供了一個發現、使用、並交流開源技術的平台。開源中國:對於英語不是很好的人來說上GitHub閱讀起來比較困難,那麼開源中國就是一個很好的替代網站,該網站是國內開源類網站中的佼佼者。 月光博客:月光博客是一個以討論電腦技術和互聯網科技為主的個人IT評論博客。月光博客的目標就是,做一個有特色的,專注於互聯網路和搜索引擎行業的原創IT評論博客。寫作和閱讀是快樂的事情,對於月光博客的作者和讀者,都是同樣的。
② 作為程序員,最常上的網站有哪些
推薦十二個值得程序員和想成為程序員的你,每天一看的網站:
1. GitHub — 開發者最最最重要的網站:https://github.com
這個不用多說了吧,代碼託管網站,上面有很多資源,想要什麼輪子,上去搜就好了。並且呢,上面有很多優秀的程序員,你可以在這里交到很多好朋友喔。
2. 掘金 — 幫助開發者成長的技術社區:https://juejin.im
現在國內優質的開發者交流學習社區,可以去看大佬們寫的文章,也可以自己分享 學習心的 ,與更多開發者交流。認識更多的小夥伴兒,提升個人影響力。
3. 演算法學習 LintCode:https://www.lintcode.com/
演算法學習網站,上去每天刷兩道演算法題,走遍天下都不怕。
4. 演算法學習 LeetCode:https://leetcode.com/
也是演算法題網站,同上。
5. 演算法學習 LeetCode 中文站:https://lingkou.com/
這個是上面演算法題網站的中文站點,英文不好的可以刷這個,英文好的推薦去刷英文網站的題目,還能提升英語能力。
6. 牛客網 — 面經和刷面試題:https://www.nowcoder.com
各個公司的面試題和面經分享,找工作前認真刷一刷,一定會有很大收獲!拿到心儀的 offer!
7. Web 開發練習題:https://www.freecodecamp.org/
這是國外發起的一個 Web 開發學習的網站,從簡單到深入,一步一步帶你學習 Web 開發。就像一本練習冊,並且當你完成相應的內容後,會得到相應的資格認證。
8. 網路前端技術學院 — 前端開發項目庫:http://ife..com
學前端的看這里,網路官方推出的前端開發學習技術學院,題目從簡單到困難,如果你把裡面的題都做會了,找個 BAT 的前端工作不成問題的。
9. Stack Overflow — 解決 bug 的社區:https://stackoverflow.com/
開發過程中遇到什麼 bug,上去搜一下,只要搜索的方式對,百分之 99 的問題都能搜到答案。在這里能夠與很多有經驗的開發者交流,如果你是有經驗的開發者,還可以來這兒幫助別人解決問題,提升個人影響力。
10. 程序員客棧:https://www.proginn.com/
程序員客棧是領先的程序員自由工作平台,如果你是有經驗有資質的開發者,都可以來上面注冊成為開發者,業余的時候做點項目,賺點零花錢。當然,如果你想成為一名自由工作者,程序員客棧也是可以滿足的。只要你有技術,不怕賺不到錢。
11. v2ex:https://www.v2ex.com/
V2EX 是一個關於分享和 探索 的地方,上面有很多各大公司的員工,程序員。你想要的應有盡有。
12. CSDN:https://www.csdn.net/
老牌專業 IT 技術社區,有很多厲害的開發者,當然也有很多小白。在上面可以寫文章,分享看法,也可以閱讀學習別人分享的內容。
想要成為一名厲害的,有影響力的程序員,一般平時要多分享自己的學習記錄和感悟,讓更多人認識你。同時你也多看看別人的分享,了解一下別人正在做什麼,別人是怎樣學習的,是怎樣解決問題的,多主動與大家溝通交流,多交一些相關方向的朋友。
③ 程序員學習一般去哪些網站
學習網站大體分兩類,一類國內網站,一類國外網站,國內的網站有w3c網,學習網頁前端知識,python,php,java官網,mysql數據官網,當然也有綜合類網站比如:菜鳥,最後就是論壇,官網都有友情鏈接過去。國外網站需要翻過去訪問。下面是部分知識點
1.確保堆棧上至少有 n 個額外空位。如果不能把堆棧擴展到相應的尺寸,函數返回假。失敗的原因包括將把棧擴展到比固定最大尺寸還大 (至少是幾千個元素)或分配內存失敗。 這個函數永遠不會縮小堆棧;
void lua_close (lu a_State *L);
2.銷毀指定 Lua 狀態機中的所有對象 (如果有垃圾收集相關的元方法的話,會調用它們),並且釋放狀態機中使用的所有動態內存。 在一些平台上,你可以不必調用這個函數, 因為當宿主程序結束的時候,所有的資源就自然被釋放掉了。 另一方面,長期運行的程序,比如一個後台程序或是一個網站伺服器, 會創建出多個 Lua 狀態機。那麼就應該在不需要時趕緊關閉它們。
int lu a_compare (lua_State *L, int index1, int index2, int op);
比較兩個 Lua 值。 當索引 index1 處的值通過 op 和索引 index2 處的值做比較後條件和叢滿足,函數返回 1 。 這個函數遵循 Lua 對應的操作規則(即有可能觸發元方法)。 反之,函數返回 0。 當任何一個索引無效時,函數也會返回 0 。
3.連接棧頂的 n 個值, 然後將這些值出棧,並把結果放在棧頂。如果 n 為 1 ,結果就是那個值放在棧上(即,函數什麼都不做); 如果 n 為 0 ,結果是一個空串。 連接依照 Lua 中通常語義完成()。
void lu a_ (lua_State *L, int fromidx, int toidx);
從索引 fromidx 處復制一個值到一個有效索引 toidx 處,覆蓋那裡的原有值。 不會影響其它位置的值。
void l ua_createtable (lua_State *L, int narr, int nrec);
4.創建一張新的空表壓棧。 參數 narr 建議了這張表作為序列使用時會指棚嫌有多少個元素;參數 nrec 建議了這張表可能擁有多少序列之外的元素。 Lua 會使用這些建議來預分配這張新表。 如果你知道這張表用途的更多信息,預分配可以提高性能。 否則,你可以使用函數
lua_mp
把函數導出成二進制代碼塊 。 函數接收棧頂的 Lu a 函數做參數, 然後生成它的二進制代碼塊。 若被導出的東西被再次載入, 載入的結果就相當於原來的函數。 當它在產生代碼塊的時候, lua_mp 通過調用函數 writer (r ) 來寫入數據,後面的 data 參數會被傳入 writer 。
5.如果唯手 strip 為真, 二進制代碼塊將不包含該函數的調試信息。
最後一次由 writer 的返回值將作為這個函數的返回值返回; 0 表示沒有錯誤。
該函數不會把 Lua 函數彈出堆棧。
希望能幫到你,謝謝!
④ 求比較全面的Java程序員面試題,包括答案,有的話請發到郵箱[email protected]
已經給您發過去了,是我當年面試用的資料,希望對您有幫助吧,祝您成功~~
⑤ 哪位大俠有java的面試題目
JAVA程序員面試32問(建議至頂)
第一,談談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演算法都大概一樣,所以性能不會有很大的差異。
⑥ 誰有程序員的面試題,例如東軟公司,或其他公司的程序員面試題
程序員面試一直是社區樂於討論的熱門話題。
這篇文章是站在面試官角度對於程序員面試問題的一個階段性反思和經驗總結。
【目標】
相信和不少朋友一樣,有了幾年工作經驗成為Senior後就開始了面試別人的經歷。作者在最初這個階段只是按照自己的想像把」找到基礎好的程序員「,」找到演算法能力優秀的程序員「,」找到有Android開發經驗的程序員「等作為面試的目標。但是,實際的經歷告訴作者,尤其是按「基礎好」,「演算法好」這些目標招到的人最終效果並不好。比如,有的面試者基礎知識和演算法掌握情況不錯,進程、線程、內存等概念清晰,基本的Hash,二叉樹,快速排序等數據結構和演算法也比較熟悉,但是進公司後在實際工作中表現得很糟糕。後來,作者才發現原來是作者的面試目標出了問題,作者原先的面試方法更像是大學的演算法或操作系統期末考試,按照這種方法讓許多並不合適的人通過了面試,同時也可能錯過了許多合適的人。
後來,作者的反思是,從公司的角度講,面試的根本目的是找到"能夠干好工作"的人,而「高學歷」,「演算法好」,「基礎好」,「有經驗」這些都是表象而不是根本,它們並不能直接和「工作好」劃等號。
【方法】
目標明確了,但接下來的問題是假設面試者是一個黑盒系統,「工作好」不是直接可觀測變數,你所能直接觀測的變數是基礎、演算法、經驗、學歷、性格、談吐、年齡等等。所以,實際上,你只能從「基礎好」,「演算法好」等可以直接觀測的量去推測「工作好」的概率,這就是一個在「X好「條件下"工作好「的條件概率問題:P(工作好 | X好)。
根據這個模型,面試所應該考察哪些方面就很明顯了,那就是選擇那種最具有區分性的方面來考察。比如,考察面試者的體型特徵沒有太大意義,因為P(工作好|高),P(工作好|矮),P(工作好|胖),P(工作好|瘦)的概率都差不多;所以,體型特徵不具有區分性,這不是面試所應該關注的內容。
面試官應當結合職位的要求明確哪些因素具有比較好的區分性。比如,如果要招一名技術門檻比較高的3D游戲引擎開發工程師,面試者A具有3D游戲引擎開發的經驗,但是在基礎知識和演算法面試方面表現一般;面試者B相反,基礎知識和演算法面試表現很好,但沒有游戲開發經驗,而你只能選擇其一。你選誰呢?其實,這就是兩個條件概率問題P(工作好|經驗好,基礎一般,演算法一般)和P(工作好|沒經驗,基礎好,演算法好)。這個問題就留給面試官來判斷了,就作者個人而言,對於技術門檻較高需要技術積累的職位,經驗更加說明問題,因此,作者更傾向於面試者A。
下面,作者再結合自己的經驗談談對面試中常見方面的看法。
【演算法】
演算法是Google和MS等大公司面試所重點考察的內容。作者個人很喜歡演算法,曾經參加ACM/ICPC拿過北京賽區的13名。但是,就個人經驗來看,作者所接觸過的絕大多數開發職位而言,演算法都不適合作為考察面試者優劣的主要因素。對於普通的非演算法性開發職位,考察面試者的演算法就相當於考察他打乒乓球好不好一樣,與目標「工作好」的相關性太低。就作者個人的經驗來看,差不多P(工作好|演算法好)=50%,也就是演算法面試沒有太大的區分性。
甚至,還有一種很不好的情況特別多地出現在演算法好的面試者身上,作者稱之為「只磨刀,不砍柴」。什麼意思呢?有類人只對什麼A*演算法,非同步編程,JVM類載入機制這種純技術問題感興趣,對實現用戶需求毫無興趣。這類人看起來有一定的技術能力,但是對公司來講貢獻十分有限,甚至不如技術一般但認真負責的人。所以,一旦遇到面試者演算法好,作者就特別留意考察會不會是這種「只磨刀,不砍柴」的人。
另外,雖然作者個人不了解Google和MS,但作者對於其特別重視考察演算法能力的面試策略是持懷疑態度的。即使在這樣的世界級大公司,演算法雖然重要,但可以想像在項目實施過程所遇到的各種各樣問題中,演算法問題絕大多數時候不會是主要瓶頸,沒有到那種需要每個人都是演算法高手的情況。實際上,絕大多數項目真正難點並不是一兩個演算法瓶頸,甚至也不是單點的技術瓶頸,而是系統性的組織、協調、設計、開發問題,有大量的看起來不是那麼有技術含量的臟活累活,也有許多問題是由於信息不足,並不是技術能力強就能克服這些困難。一個團隊最好優勢互補,有人演算法強,有人業務分析能力強,有人擅長後端服務,有人擅長前端界面,有人聰明,有人踏實,這是最好的。如果按照「演算法好」的單一標准選材,必定會把許多優秀的人才拒之門外。
補充:在更多地了解了Google和Facebook等一流公司的面試細節之後,作者對這個問題的認識有了一定的改變,實際上這些公司在面試過程中並不完全強調技巧性很強的演算法,而是更加註重編碼(Coding)能力,只是在進行編碼測試的過程中往往是通過一些簡單演算法題來進行的。作者對於這種面試方法越來越欣賞,並且也作為了作者們公司面試過程中的重點環節,因為編碼能力的測試是十分必要的,它有著知識性問題無法取代的作用,如果一個面試者連「判斷一個字元串是否是另一個字元串的子串」這樣的題目都無法正確並快速地實現,那麼基本上可以直接排除了。作者這里所強調的是不必考察高難度的演算法問題,並非不重視編碼能力測試,請讀者不要誤解
【基礎】
基礎面試是指考察諸如指針使用、進程線程概念等基礎知識的面試,十分類似於大學期末考試題。作者曾經以為基礎面試十分重要,但是現在不這么看了。在工作中基礎的確是重要的,但是在面試過程中,它必須具有區分性才有意義,也就是說P(工作好|基礎好)的概率要高,那麼考察指針使用,進程線程區別這樣的基礎題目才有它的意義。作者的實際經驗是,基礎面試並不具有很好的區分性,和演算法一樣, 差不多P(工作好|基礎好) = 50%。同時,基礎面試是最容易准備的,中國人有長期的應試教育經驗,要准備幾個把玩指針題目太容易了。
作者曾經遇到過這樣的面試者,他的C語言基礎和編譯、鏈接等原理掌握得非常好,給作者留下了深刻的印象,作者給的面試結論是:知識面不寬,只會C語言,但基礎很扎實,建議錄用。後來的事情證明了那個結論的前半部分是對的,但是」建議錄用「錯了。他在實際工作中表現得一塌糊塗,不理解需求,不理解整體架構;同時,上班時間不是花在項目上,而是花在閱讀諸如《程序員的自作者修養》之類的書籍上。最後,這位同事由於長期「不出活」離開了公司。
基礎不是不重要,而是「基礎好」不足以說明面試者能幹好工作,因為基礎是屬於局部性知識,而實際工作需要綜合性能力,二者有天壤之別。C語言、操作系統能考高分,但是不會寫程序的人在大學作者們還見得少嗎? 軟體開發就像蓋房子,綜合能力是設計和搭骨架,基礎知識是碼磚。張小龍原先Foxmail是Delphi開發的,他它不懂C#,你如果要招聘一個開發.NET Email客戶端的人,你考察他對CLR掌握得好不好有意義嗎? 讓張小龍來開發一個C#版的Foxmail真的會有困難嗎? 你招一個精通C#但沒有Email客戶端開發經驗的人來真的比張小龍靠譜嗎?
作者說基礎知識不重要,和古人說的「不積窪步無以至千里」是不是矛盾呢?不矛盾!「窪步」與「千里」是一種可累加關系,但再多的「基礎知識」都累加不成「綜合能力」。學習軟體開發要像持續集成一樣,一開始就是一個完整的系統,雖然規模不大,問題很多,但它麻雀雖小五臟俱全,從小系統到大系統,從簡單系統到復雜系統逐步演化。
所以,基礎好本身不足以說明太多的問題,必須進一步考察綜合能力。對於基礎面試表現不好的面試者,如果時間允許也要進一步考察,有的面試者其實是有能力的,只是沒有進行充分的准備。最理想的狀態當然是基礎和綜合能力俱佳,若不能兼顧,應當綜合能力優先。
【經驗】
這里所說的經驗不是通過工作了多少年來衡量的,而主要是指面試者的經歷,比如,是否完整地實現過一個軟體,或作為主要開發者完成過一個項目。經驗的重要性在於它能說明一個人的綜合能力。從項目的性質、規模和難度,面試官就可以大致判斷出面試者的綜合能力。如果一個面試者一直在大公司負責一個小模塊的開發維護,那麼基本可以判斷他不具備獨立或作為主要開發者承擔一個項目的能力,只適合在另一家大公司做類似的事情。對於門檻較高需要長期技術積累的職位,相關經驗更顯得尤為重要,比如,Linux內核開發,JVM開發,游戲引擎開發,資料庫實現,高級UX等。對於這類職位,沒有經驗的面試者即使綜合素質不錯也是需要長時間的學習和積累才能勝任。所以,基本上如果確定了你的職位屬於此類,那麼相關經驗毫無疑問應該成為首選因素,換句話說,P(工作好 | 相關經驗好)的概率是非常高的。
通過項目經驗判斷面試者的優劣比通過基礎和演算法測試更加靠譜,所以,面試過程中面試官應該花比較多的時間聽面試者介紹項目經驗,並進行深入地探討交流,了解面試者的知識面、思維能力、表達能力等。同時,可以結合項目提一些基礎知識和演算法的問題,比如,如果面試者做過C++相關的項目,那就可以問他如何進行內存管理?是否熟悉智能指針?如果面試者的回答不能令人滿意,那麼就基本上可以判斷他的項目做得不是很好。
要注意的是,經驗也是一個多維度的事物。比如,C++股票交易中間件系統,這就涉及(C++,中間件,股票) 3個維度。假如面試者A做過C++股票交易客戶端,面試者B做過C的股票交易中間件。從語言角度看,A最匹配,從項目性質看,B最匹配,你如何選擇?這就是在多個維度中,哪個維度更重要的問題,就這個例子而言,作者個人更傾向於B,因為作者認為中間件開發經驗是主要矛盾,而從C切換到C++並不是問題。所以,面試官需要判斷哪一種經驗是主要的,而哪一種經驗是次要的。比如,作者們招聘Android應用開發,這個職位的Android技術門檻並不高,它的真正難點在於做出好的用戶體驗(UX)。所以,如果一個面試者沒有Android的經驗作者們是可以接受的,但是作者希望他在UX方面有經驗,至少做過其他平台的移動應用開發。
【性格】
現在,作者來談作者認為最重要的因素:性格。這可能是許多初為面試官的朋友所難以想像的,怎麼會是性格最重要呢?說實話,當作者意識到這一點時,作者自己也很驚訝!說白了,還是 P(工作好|性格好)的概率最高啊。作者的實際經驗是,如果一個人的性格好,他能把工作做好的可能性是最高的,性格好遠比基礎好、演算法好要靠譜。
一個人如果技術上有缺陷,經驗上有不足,但性格好,在團隊中是很容易由其他人來補位的,他自己也很容易逐漸補起來;相反,如果一個人的性格不好,所有的技術優勢經驗優勢都發揮不出來,甚至還會起到負作用,而且性格缺點很難改變。作者一直談到實際工作所需要的是綜合性的能力,這種綜合能力的發揮中性格是至關重要的。項目中不止會遇到技術問題,要涉及溝通、協調,不同的人不同的部門既有合作又有磨擦,如何處理這些事情都需要一個良好的性格。可以說,在開發團隊里讓你與眾不同的不是你從哪個學校畢業,也不是你過去的經驗,而是你的性格
當然,性格是一個復雜的東西,它包含了很多的方面,並非所有方面都是程序員面試所需要關注的。作者的經驗是可以重點考察這些方面:
1) 態度積極還是消極。有的面試者在談吐中就會自然給你一種積極上進的感覺,或者你可以在他的經歷中發現他積極的因素,這些都不是太難看出來的。相反,有的面試者你能明顯感覺到他的消極情緒。積極性在工作中是十分重要的,積極的人能給團隊帶來朝氣,也更易於合作。基本上,如果確定面試者屬於態度積極的,他通過作者這一關的可能性就會大大增加;相反,如果確定屬於態度消極的,即使技術能力不錯作者也會十分謹慎。
2) IQ。作者的經驗是,總體來看,聰明的人在工作中的表現更為優秀。在面試中要考察一個人是否聰明並不一定要像Google和MS那樣找些專門測試IQ的智力題,其實,你只需要看他討論問題是不是很有邏輯性,思考和說話是不是反應敏捷就可以做出大致的判斷。另外,眼睛是人心靈的窗戶,一個人聰明與否,眼睛是會說話的。不過,聰明也不完全是優點,比如,當公司或項目遇到困難時,往往是聰明人先跑掉了,堅守的往往是IQ一般的人。
3) 語言表達能力。語言表達能力也是程序員十分重要的一項素質,它關繫到項目中的溝通是否順暢。面試官可以看看面試者能否用簡明的語言介紹清楚曾經做過的項目,能否抓住要點,能否考慮到聽者的相關背景。一般來講,語言表達能力強的人綜合能力都不會太差。(面試網 www.mian4.net)
4) 是否具有用戶意識。有人說程序員是做研發的,哪來什麼用戶?只有銷售、市場人員才會和用戶打交道。其實,這是完完全全的錯誤認識。你寫一個模塊,甚至一個API,只要有別人用,他就是你的用戶。有的程序員設計一個模塊或是一個軟體總是習慣於從使用者的角度來考慮,盡量地方便使用者,這就是一種良好的用戶意識。具有良好的用戶意識的人更能考慮別人的感受和整體的需要,而不是單純地從自己和局部來思考問題。當面試者談及過去的項目經驗時,面試官可以常常站在用戶的角度對其進行提問,從這個過程中觀察其是否具有良好的用戶意識。
5) 如何應對質疑和壓力。面試官應該對面試者的回答以及以往項目進行合理的質疑,看看他如何應對。曾經有一位面試者談到做游戲登錄伺服器的經歷,作者就問:「如果登錄伺服器掛了,怎麼辦呢」?他說原先雖然沒有考慮這個問題,但是可以怎麼怎麼改進。其實,大家都理解項目中有各種不完美,這裡面原因很多,只要面對質疑和壓力能從容應對努力往好的方向思考解決就可以了,不需要掩飾缺陷,更不應該有情緒。作者遇到過有的面試者,一旦你對其項目提出質疑,他馬上產生反抗情緒,或不高興,或不承認有問題,這很容易一下子看出來他在工作中容不得質疑和批評,這種人要想合作就很困難。
6) 個性特點。許多面試者喜歡在簡歷上寫「精通C++/Linux「,這些字眼看得人麻木,如果有人寫」喜歡C++/Linux「,作者就會有一種眼前一亮的感覺。「精通」是沒有感情色彩的敘述,而「喜歡」包含了面試者的個性,作者更願意看到面試者的個性。作者相信對某樣東西真正的熱情遠比你當前對它的掌握程度更為重要。其實,N年的經歷告訴作者們,同一個班的同學,同一個項目組的同事,雖然每天所學的知識,所接觸的工作都是相同的,但其實每個人的成績和表現差異是十分明顯的。那麼,到底本質的差異是什麼呢?其實,就是每個人的個性。是個性使得有的人業余時間去打球,有的人業余時間去看書,有的人喜歡Linux,有的人喜歡Mac。一個人在團隊中扮演的角色也和他的個性有很大的關系。面試官應該引導面試者展現自己的個性,並判斷其是否有益於團隊。
【總結】
最後總結起來,作者的經驗是:
1) 面試官的目標是找到」工作好「的人,一定要圍繞這個目標來進行面試,如果把面試當成了演算法或操作系統期末考試這就走入了誤區;
2) 面試過程是通過學歷、性格、基礎、經驗、演算法等可以測試的因素去綜合判斷面試者「工作好」的概率;
3) 在各種因素中,性格 > 經驗 > 基礎 > 演算法。性格是最重要的,如果性格不好,所有技術能力都會大打折扣,而且技術缺陷容易彌補,性格缺陷很難改變;經驗體現了一個人的綜合能力,你可以從面試者過去的經歷中判斷他能從事哪種工作,不能從事哪種工作;基礎和演算法則主要起到輔助參考的作用,基礎好的程序員一般適應性比較強,學新技術更快,但是切忌單純從基礎來判斷一個人的能力。
更多程序員面試問題請登陸楚湘人才網
⑦ 程序員刷題都有哪些好的網站推薦
PTA,拼題a。這是一個c語言的編程練題網站。程序員可以在這個裡面好好刷題。裡面有各種各樣的題型。如果你在大學的話,老師會給你一個提供答案的賬號。裡面還會向你解釋你哪裡有出錯。