① 軟體開發初學者應該看什麼書
學習軟體開發都需要看《c和指針》、《c缺陷和陷阱》、《c專家編程》,這三本書是一個初級C程序員必看的三本書,同時也是應屆新員工必須好好學習的教材,非常適合剛畢業的大學生學習 。
另外還有:
C++語言提升:
《Effective C++:改善程序與設計的55個具體做法》
《More Effective C++:35個改善編程與設計的有效方法(中文版)》
《C++沉思錄》
《C++Templates中文版》
《深度探索 C++ 對象模型》
《泛型編程與STL》
一個由C轉向C++的程序員,從來沒有系統的學習過C++的語法,往往是用到的什麼學習什麼。如果要系統入門,《C++ primer》倒是不錯。
設計類《代碼大全》:
《重構-改善既有代碼的設計》
《代碼整潔之道》
《實現模式》
《程序員應該知道的97件事》
這幾本書一般講的是函數以及更低層次的設計。《代碼大全》完完整整的讀完過,而且做了很多的筆記,獲益良多。《重構》就不必說了,其他幾本書前面大致看了一下,也非常不錯,計劃有時間要好好學習一下。
架構:
《軟體體系結構的藝術》
《領域驅動設計:軟體核心復雜性應對之道》
《軟體架構師應該知道的97件事》
《企業應用架構模式》
《面向模式的軟體體系結構卷1:模式系統》
《軟體架構設計》
《架構師需要知道的97件事》
敏捷開發:
《測試驅動開發》
《敏捷軟體開發——原則、模式與實踐》
《Scrum敏捷項目管理》
《硝煙中的Scrum和XP——我們如何實施Scrum》
《敏捷軟體開發》
② 初學者java程序員怎樣快速提升自己技術
一、提升對java技術的思考
很多人口裡嚷著要提升java技術,行動也有,但就是不奏效,是怎麼回事呢?因為行動前沒有好好的思考,比如老是盯著已經掌握熟練的java技術練習,你為什麼不考慮多練練你不熟習的java技術呢?那麼應該思考些什麼關於java技術的問題呢?
1、這個技術能解決什麼問題(why)
2、比較適合在哪些場景應用(where+when)
3、這個技術跟我已經掌握的哪個知識或技能類似,有什麼差別、有什麼特點、有什麼優點和缺點(what)
4、了解前面的問題後,你在開始考慮提升java技術那麼效果會比較好。
二、善於模仿,把他人的變成你的
你的代碼剛開始是怎麼學會的呢?不外乎模仿,但是模仿也有訣竅,有的人模仿的快,有的人模仿的慢。時常強調,多去看看其他人的代碼是怎麼編寫的,你可以從其他人的代碼中模仿出很多的東西,甚至你可以嘗試去修改其他人的代碼,讓它跟你的想法更加接近,看看你下次是不是可以這樣做,看看學習效率有沒有提高或者變得簡單,長此以往,你的java技術一定會有質的提升。
③ adobe系列軟體有哪些,都叫什麼名字
Adobe DN 樣機軟體
鏈接:https://pan..com/s/1HtVFhcUmRWzPpoYAMDEHvA
adobe dimension 2020是由原來的Project Felix軟體升級更名而來的,是一款強大的3d設計軟體,其最大的特色在於可以將Photoshop和Illustrator製作的圖片文件轉換為3d模型,實時創建真實的3d圖像,讓用戶的品牌更加立體化,能夠應用於產品模型,品牌可視化效果,包裝設計等領域。adobe dimension 2020也稱之為adobe dimension3.0,這是因為兩個版本一個是根據年份命名,一個是根據版本命名,事實上是同一軟體。通過此軟體,用戶可以引入Ps和Ai文件,在工作流程中進行編輯並支持畫板。同時支持3D格式,可以導入Autodesk FBX,STL,Sketchup SKP和OBJ文件。
④ 有哪些適合自學的編程書籍推薦
一般來說c語言是編程入門基礎
推薦c語言程序設計 何欽銘 顏暉主編
有配套的pta習題還有視頻
⑤ 操作系統
1980年,IBM推出了IBM PC新機型,它採用INTEL 8086CPU,具有160KB的磁碟驅動器和其他的輸入輸出設備。為了配合這種機型,IBM公司需要一個16位的操作系統,此時就出現了三個互相競爭的系統:CP/M-86、P-System,以及微軟公司的MS-DOS。最後微軟的MS-DOS取得了戰爭的勝利,成為IBM新機型的操作系統。1981年,微軟花費半年時間編寫的MS-DOS 1.0和IBM PC同時在IT界亮相。當時的MS-DOS為了適應IBM的計劃以及和CP/M系統相兼容,在許多方面的設計都和CP/M相似。但那時CP/M系統仍是業界標准,MS-DOS的兼容性受到人們懷疑。
資料是老了點,但夠用了,呵呵
在接下來的幾年中,微軟公司的MS-DOS在各種壓力中推出了1.1、1.25幾個改進版本。這時MS-DOS才得到了業界同行的認可,DEC、COMPAQ公司都採用MS-DOS作為其PC機的操作系統。
1983年的3月,微軟公司發布了MS-DOS 2.0,這個版本較以前有了很大的改進,它可以靈活地支持外部設備,同時引進了UNIX系統的目錄樹文件管理模式。這時的MS-DOS開始超越CP/M系統。
接著,2.01、2.11、3.0版本的MS-DOS問世,MS-DOS也漸漸成為了16位操作系統的標准。
1987年的4月,微軟推出了MS-DOS 3.3,它支持1.44MB的磁碟驅動器,支持更大容量的硬碟等。它的流行確立了MS-DOS在個人電腦操作系統的霸主地位。
MS-DOS的最後一個版本是6.22版,這以後的DOS就和Windows相結合了。6.22版的MS-DOS已是一個十分完善的版本,眾多的內部、外部命令使用戶比較簡單地對電腦進行操作,另外其穩定性和可擴展性都十分出色。
DOS的優點
DOS曾經佔領了個人電腦操作系統領域的大部分,全球絕大多數電腦上都能看到它的身影。由於DOS系統並不需要十分強勁的硬體系統來支持,所以從商業用戶到家庭用戶都能使用。
1、文件管理方便
DOS採用了FAT(文件分配表)來管理文件,這是對文件管理方面的一個創新。所謂FAT(文件分配表),就是管理文件的連結指令表,它用鏈條的形式將表示文件在磁碟上的實際位置的點連起來。把文件在磁碟上的分配信息集中到FAT表管理。它是MS-DOS進行文件管理的基礎。同時DOS也引進了UNIX系統的目錄樹管理結構,這樣很利於文件的管理。
2、外設支持良好
DOS系統對外部設備也有很好的支持。DOS對外設採取模塊化管理,設計了設備驅動程序表,用戶可以在Config.sys文件中提示系統需要使用哪些外設。
3、小巧靈活
DOS系統的體積很小,就連完整的MS-DOS 6.22版也只有數MB的樣子,這和現在Windows龐大的身軀比起來可稱得上是螞蟻比大象了。其實想啟動DOS系統只需要一張軟盤即可,DOS的系統啟動文件有IO.SYS、MSDOS.SYS和COMMAND.COM三個,只要有這三個文件就可以使用DOS啟動電腦,並且可以執行內部命令、運行程序和進行磁碟操作。
Windows系統固然是當前最流行的操作系統,但微軟向下兼容的特點決定了Windows是基於DOS的,Windows95、Windows98、WindowsME都是以DOS為基礎。Windows系統體積的龐大、代碼的繁冗使得Windows系統極不穩定。當Windows出現了問題,而其本身又無法解決的時候就只有使用DOS來完成任務了。
4、應用程序眾多
能在DOS下運行的軟體很多,各類工具軟體是應有盡有。由於DOS當時是PC機上最普遍的操作系統,所以支持它的軟體廠商十分多。現在許多Windows下運行的軟體都是從DOS版本發展過去的,如WORD、WPS等,一些編程軟體如Fox Pro等也是由DOS版本的FoxBase進化而成的。
同時DOS的兼容性也很不錯,許多軟體或外設在DOS下都能正常地工作。
DOS的不足
雖然DOS有不少的優點,但同時它也具有一些不足。DOS是一個單用戶、單任務的操作系統,只支持一個用戶使用,並且一次只能運行一個程序,這和Windows、Linux等支持多用戶、多任務的操作系統相比就比較遜色了。
DOS採用的是字元操作界面,用戶對電腦的操作一般是通過鍵盤輸入命令來完成的。所以想要操作DOS就必須學習相應的命令。另外它的操作也不如圖形界面來得直觀,對DOS的學習還是比較費力的,這對家庭用戶多少造成了一些困難。
DOS對多媒體的支持也不盡人意。在DOS中,大多數多媒體工作也都是在Windows 3.x中完成,那時的Windows 3.x只是DOS的一種應用程序。但Windows 3.x對多媒體的支持也很有限,無法支持3D加速卡等技術。對互聯網也沒有一個十分令人滿意的解決方案。
這些都顯示Windows等操作系統代替DOS是歷史的必然。
DOS作為一個曾經輝煌一時的操作系統霸主,對於現在的人們還是有不小的作用。它的小巧靈活對於電腦修理人員來說有很大用處。Windows中許多故障還只能DOS下解決。另外學習DOS對學習其他的操作系統,如Linux、UNIX等也有一定幫助。
自從微軟1985年推出Windows 1.0以來,Windows系統經歷了十多年風風雨雨。從最初運行在DOS下的Windows 3.x,到現在風靡全球的Windows 9x、Windows 2000,Windows幾乎代替了DOS曾經擔當的位子,成為了新一帶的操作系統大亨。
鮮艷的色彩、動聽的音樂、前所未有的易用性,以及令人興奮的多任務操作,使電腦操作成為一種享受。點幾下滑鼠就能完成工作,還可以一邊用「CD播放器」放CD,一邊用WO
RD寫文章,這是多麼悠閑的事情,這都是Windows帶給人們的禮物。
最初的Windows 3.x系統只是DOS的一種16位應用程序,但在Windows 3.1中出現了剪貼板、文件拖動等功能,這些和Windows的圖形界面使用戶的操作變得簡單。當32位的Windows 95發布的時候,Windows3.x中的某些功能被保留了下來。
Windows的流行讓人們感到吃驚,幾乎所有家庭用戶的電腦上都安裝了Windows,大部分的商業用戶也選擇了它。一時間,藍天白雲出現在世界各個角落。
Windows 98是Windows 9x的最後一個版本,在它以前有Windows 95和Windows 95 OEM兩個版本,Windows 95 OEM也就是常說的Windows 97,其實這三個版本並沒有很大的區別,它們都是前一個版本的改良產品。越到後來的版本可以支持的硬體設備種類越多,採用的技術也越來越先進。Windows ME(Windows千禧版)具有Windows 9x和Windows 2000的特徵,它實際上是由Windows 98改良得到的,但在界面和某些技術方面是模仿Windows 2000。微軟聲稱在Windows ME中去除掉了DOS,不再以DOS為基礎。但實際上並不是如此,DOS仍然存在,只不過不能通過正常步驟進入,各種媒體上已有《恢復WindowsME的實DOS模式》一類的文章出現。Windows 2000即Windows NT 5.0,這是微軟為解決Windows 9x系統的不穩定和Windows NT的多媒體支持不足推出的一個版本。它分為Windows 2000 Perfessional和Windows 2000 Sever兩種版本,前者是面向普通用戶的,後者則是面向網路伺服器的。後者的硬體要求要高於前者。
Windows的優點
Windows之所以如此流行,是因為它有許多吸引用戶的地方。
1、界面圖形化
以前DOS的字元界面使得一些用戶操作起來十分困難,Mac首先採用了圖形界面和使用滑鼠,這就使得人們不必學習太多的操作系統知識,只要會使用滑鼠就能進行工作,就連幾歲的小孩子都能使用。這就是界面圖形化的好處。在Windows中的操作可以說是「所見即所得」,所有的東西都擺在你眼前,只要移動滑鼠,單擊、雙擊即可完成。
2、多用戶、多任務
Windows系統可以使多個用戶用同一台電腦而不會互相影響。Windows 9x在此方面做得很不好,多用戶設置形同虛設,根本起不到作用。Windows 2000在此方面就做得比較完善,管理員(Administrator)可以添加、刪除用戶,並設置用戶的權利范圍。多任務是現在許多操作系統都具備的,這意味著可以同時讓電腦執行不同的任務,並且互不幹擾。比如一邊聽歌一邊寫文章,同時打開數個瀏覽器窗口進行瀏覽等都是利用了這一點。這對現在的用戶是必不可少的。
3、網路支持良好
Windows 9x和Windows 2000中內置了TCP/IP協議和撥號上網軟體,用戶只需進行一些簡單的設置就能上網瀏覽、收發電子郵件等。同時它對區域網的支持也很出色,用戶可以很方便得在Windows中實現資源共享。
4、出色的多媒體功能
這也是Windows吸引人們的一個亮點。在Windows中可以進行音頻、視頻的編輯/播放工作,可以支持高級的顯卡、音效卡使其「聲色具佳」。MP3以及ASF、SWF等格式的出現使電腦在多媒體方面更加出色,用戶可以輕松地播放最流行的音樂或觀看影片。
5、硬體支持良好
Windows 95以後的版本包括Windows 2000都支持「即插即用(Plug and Play)」技術,這使得新硬體的安裝更加簡單。用戶將相應的硬體和電腦連接好後,只要有其驅動程序Windows就能自動識別並進行安裝。用戶再也不必像在DOS一樣去改寫Config.sys文件了,並且有時候需要手動解決中斷沖突。幾乎所有的硬體設備都有Windows下的驅動程序。隨著Windows的不斷升級,它能支持的硬體和相關技術也在不斷增加,如USB設備、AGP技術等。
6、眾多的應用程序
在Windows下有眾多的應用程序可以滿足用戶各方面的需求。Windows下有數種編程軟體,有無數的程序員在為Windows編寫著程序。
此外,Windows NT、Windows 2000系統還支持多處理器,這對大幅度提升系統性能很有幫助。
Windows的不足
Windows眾多的功能導致了它體積的龐大,程序代碼的繁冗。這些都使得Windows系統不是十分穩定,也背上了「瘟舊屋」、「瘟酒吧」的稱號。一些Windows系統補丁、防死機的軟體都應運而生。系統的不穩定使得一些用戶在使用時提心吊膽,生怕突然出故障,導致自己的工作成果化為清煙。
Windows也是一個十分脆弱的系統,有時一個小故障就有可能導致系統無法正常啟動。
它對於自身的修復能力實在不敢恭維,故障的解決不能很好地支持,許多修理工作必須在DOS下完成。
Windows系統是漏洞百出,雖然有些漏洞並不會干擾用戶的一般操作,但在網路方面的漏洞卻能對用戶造成影響。這些漏洞使一些人有入侵系統和攻擊系統的機會,其中有利用NetBIOS進行非法共享,對Windows 9x系統進行藍屏攻擊等。
雖然Windows的操作比較簡單,但有時候卻不是很靈活,有些工作還需要DOS的輔助。
但無論如何,Windows使更多的普通人能夠更方便地使用電腦。從這點來看,它對PC時代的貢獻簡直是無與倫比的。
⑥ 打算幾個人瘋狂的看法么我
「寫這篇文章(也許會寫成一本書),我想講述一個程序員從學習編程開始,到第一份作250元工資,再到後來月薪6-7萬的成長歷程。就講我為什麼要做程序員,講我怎樣入門,學習……這篇文章里不會有太多技術方面的東西,就是一個程序員的成長歷程,也許有些內容在你身上都會找到影子。」
點開絕影的博客,只有一個主題——《瘋狂的程序員》,卻有了142255次點擊: 953個評論(截止記者發稿),而這個博客不過開張了一個多月。《瘋狂的程序員》大概分為學校、公司、創業三個階段,講述了一個普通程序員的故事,卻引起了圈裡的強烈共鳴。應網友的要求,帶著大家的好奇和疑問記者采訪了博客主人絕影。
記者:究竟是什麼原因使你創作這篇系列小說而且保持很快的頻率去堅持?
絕影:早在去年5月份的時候,我和幾個朋友開始准備創業的事情,當時我們准備上一個醞釀了很久的CASE。這個CASE我們認為很有前途創業也很有意義,那時候我們就想,從我們創業開始,我們就寫篇小說,記錄我們創業的點點滴滴,最後CASE做完了,小說也出來了,小說的名字就叫《瘋狂的程序員》。
當時我們真的覺得我們很瘋狂,特別是我認為我的朋友,他超前的理念和對未來的展望真的讓我覺得我們在做一件非常有意義也非常瘋狂的事情。――這種理念和我們的熱情不是一般人所具有的。
記者:有沒有「導火線」事件讓你最終下定決心來寫?
絕影:年底那段時間,我感覺我的情緒非常不好,非常煩躁,據我了解我很多朋友、同行也和我差不多,年底了,情緒起伏很大。那段時間,我開始和朋友在群里討論這個問題,我很想幫助朋友也幫助我自己把心情穩定下來,因為心情對工作的影響是很大的。我問:我們應該怎麼辦?群里一個叫簡單的人的朋友說:「寫小說,拍電視,開公司,慈善工程,到國家安全機構工作。」雖然他可能是說著玩,但我忽然想起5月份的計劃,而且那段時間我不是很忙,所以我跟他們說:「寫小說,是個好點子。」
記者:未來是否有出版的打算?
絕影:我開始寫這篇小說的時候並沒有打算到出版,畢竟作為一個程序員自己主要的工作還是寫程序。小說寫到這里,有幾家出版社跟我有些聯系,考慮到如果簽了出版合同就無法在Blog上發表小說全文,所以我在群里作了一些調查,大部分朋友還是支持出版。所以現在就繼續寫,如果有好的出版社也可能會考慮出版。
記者:小說可以理解為你分享你的感悟么?有人會問「你憑什麼寫東西來影響別人,你的經歷和體會有什麼過人之處」。這個問題你會怎麼回答?
絕影:寫這部小說的目的並不是要分享我的感悟,我只是想把一個程序員成長歷程原原本本記錄下來,供大家參考。
別人問我「你憑什麼寫東西來影響別人,你的經歷和體會有什麼過人之處」,我會告訴他,我不是什麼「資深」,也不是什麼「專家」,比起很多人,我也的確沒有什麼過人之出,也談不上什麼「感悟」。我並沒有告訴大家你應該怎樣怎樣學習,或者你應該怎樣怎樣做,或者學什麼什麼好。我把我成長的經歷,我的經驗和一些我自己的看法告訴大家,你覺得有道理,正確的,你可以記住。你覺得什麼講得不對,或者是在吹牛,你大可以一笑了之。
記者:你的該系列引起了程序員圈內不小的反響,看到網友的關注、評論你的心情怎樣?
絕影:當初寫這部小說的時候,我並沒有想到會有這么多人來關注、能夠引起這么多共鳴。在網友們的評論中,很少有罵我的,我認為是我站的角度不一樣。從一開始,我就把自己放在一個普通程序員的角度,講一個普通程序員的故事,也許你已經是個成功的程序員,甚至做到了項目經理、軟體架構師,當你來看這篇小說,也許你能回憶起N年前的你。也許你還是個學生正在學習寫程序,當你來看這篇小說,也許會覺得小說寫的正是你。也許你剛接觸程序員這個領域,當你來看這篇小說,也許會讓你對「程序員」有個完整的立體的認識。
記者:讀者們是否體會到了你創作的意圖、他們怎麼反應……作為創作者你怎麼看待這些?
絕影:當初在寫的時候,我還真怕很多人不了解我的創作意圖,有些朋友告訴我:要寫技術性的文章,否則大家只喜歡能博人一笑的文章。但是現在來看,很多讀者的確體會到了我的創作意圖,大部分人的評論並不是簡單地「搞笑」、「支持」等等。當然,我會很關心這個問題,因為如果大家對文章的理解偏離了我的創作目的,那麼這篇小說是相當失敗也沒有任何意義的,我不會繼續下去。
記者:你認為你的創作讓大家得到了什麼,你自己得到了什麼?進一步來說,你覺得你辛苦的創作得到的這些值得么?
絕影:我認為這篇小說針對的最主要的群體應該是剛學習寫程序或者剛加入程序員這個行業工作不久的年輕人。在「公告」里我說了,他們最需要的並不是什麼高級技術,現在高級技術的書很多。有些人也許會認為一個高手帶我或者一本好書就能讓我立刻從菜鳥變成大蝦。我要告訴他們,不是這樣,沒有這樣的人也沒有這樣的書。我想讓大家知道的是寫程序和做任何工作一樣,都要一步一個腳印踏踏實實地來,至少小說中的「絕影」就是這樣。
我創作這篇小說覺得很值得,很有意義。本身我從程序員開始,最後一步一步到公司的項目經理。像老總這樣級別的人,他們也許無法也沒機會去了解、理解程序員這個群體,但是我能。我不光是希望我帶過的程序員,也希望整個「程序員」這個群體都能有更多人來關注。
也許我可以在群裡面跟大家講一些我的經歷,經驗,但不可能群里的所有人天天都在線,隨時都能看到。所以寫成小說,發到Blog上,讓更多的人看到,這是件很有意義的事情。
記者:你怎麼看待程序員這個職業,有沒有什麼話要共勉?
絕影:我想說「程序員」首先是「人」。「程序員」的人生不應該是枯燥無味整天跟機器打交道,也不應該如圈外描述那樣「連找女朋友都困難」。所以大家在小說中看到「絕影」的生活也是豐富多彩,有自己的想法,有自己的朋友。所以我希望所有的「程序員」或者希望成為「程序員」的朋友,能有豐富多彩地生活,能去處心浮氣躁踏踏實實地去學習不斷提高自己,能充滿熱情滿懷希望地去面對工作。同時我也想告誡大家,不要因為小說中的「絕影」學的32位匯編就盲目跟風,「聞道有先後,術業有專攻,如是而已」,任何事情,只要把他做到及至,都會很成功。
同時我也很感動,大多數時候我都是半夜兩三點才發表文章,很多朋友跟我說:「等也要等到看了小說才睡覺。」我想對這樣朋友真誠地說聲謝謝,謝謝你們的支持。
絕影的博客:「寫這篇文章(也許會寫成一本書),我想講述一個程序員從學習編程開始,到第一份作250元工資,再到後來月薪6-7萬的成長歷程。就講我為什麼要做程序員,講我怎樣入門,學習……這篇文章里不會有太多技術方面的東西,就是一個程序員的成長歷程,也許有些內容在你身上都會找到影子。」
點開絕影的博客,只有一個主題——《瘋狂的程序員》,卻有了142255次點擊: 953個評論(截止記者發稿),而這個博客不過開張了一個多月。《瘋狂的程序員》大概分為學校、公司、創業三個階段,講述了一個普通程序員的故事,卻引起了圈裡的強烈共鳴。應網友的要求,帶著大家的好奇和疑問記者采訪了博客主人絕影。
記者:究竟是什麼原因使你創作這篇系列小說而且保持很快的頻率去堅持?
絕影:早在去年5月份的時候,我和幾個朋友開始准備創業的事情,當時我們准備上一個醞釀了很久的CASE。這個CASE我們認為很有前途創業也很有意義,那時候我們就想,從我們創業開始,我們就寫篇小說,記錄我們創業的點點滴滴,最後CASE做完了,小說也出來了,小說的名字就叫《瘋狂的程序員》。
當時我們真的覺得我們很瘋狂,特別是我認為我的朋友,他超前的理念和對未來的展望真的讓我覺得我們在做一件非常有意義也非常瘋狂的事情。――這種理念和我們的熱情不是一般人所具有的。
記者:有沒有「導火線」事件讓你最終下定決心來寫?
絕影:年底那段時間,我感覺我的情緒非常不好,非常煩躁,據我了解我很多朋友、同行也和我差不多,年底了,情緒起伏很大。那段時間,我開始和朋友在群里討論這個問題,我很想幫助朋友也幫助我自己把心情穩定下來,因為心情對工作的影響是很大的。我問:我們應該怎麼辦?群里一個叫簡單的人的朋友說:「寫小說,拍電視,開公司,慈善工程,到國家安全機構工作。」雖然他可能是說著玩,但我忽然想起5月份的計劃,而且那段時間我不是很忙,所以我跟他們說:「寫小說,是個好點子。」
⑦ 華為面試請教,請各位前輩指教,萬分感謝!
一、優秀程序員必備七要件
程序員是一個要求技術含量很高的職業,同時要求有不斷進取的精神和不達目的決不罷休的精神狀態,以下就是簡單總結的如何做個有些的程序員,希望對各位的求職和工作能夠有所幫助。
1.踏實的工作態度。低承諾,高實現:如果你的承諾確實是管理人員想聽到的,
他就會喜歡你。但是,如果不能按照承諾及時交付軟體,他就不會再喜歡你。而且如果你沒有承諾的也超額完成,可想而知,老伴對你的印象會有多大的改變。但是切忌,如果自己真的有能力還是應該提前說出來,只要不過分誇大就好。萬事適可而止、恰到好處就好。
2、認真負責,少犯錯誤。軟體很可能會因為一個細小的錯誤而不能正常運行,所以說不要在軟體中放入錯誤,優秀的程序員不在他們的代碼中放入錯誤。盡量精準的設計,會讓你的工作事半功倍。
3、充滿熱情,努力工作。作為一個優秀的程序員是充滿熱情和努力工作的,他們具有很強的組織性,而且講究方法,他們有能力將事情結構化。此外,大多數程序員勤奮工作的熱情是令人難以置信的。他們嘔心瀝血,不眠不休就是為了最後的勝利,如果你也具備這種精神,那麼你就算半個合格的程序員。
4、有預見性,知道未知因素。看到別人看不到的未知因素,並且提前做好預備工作,這說明你至少是個有經驗的程序員。你的前途可以說是一片光明。
5、有團隊合作精神,能善於和別人相處。一般開發工作都是以小組進行的,所以一定要與小組成員友好相處,軟體開發是小組成員協調努力的結果。不要把功勞歸結為某個人,同時也不要把錯誤看作是別人的錯誤。
6、堅持到底,善始善終。其實開發軟體是一件非常辛苦的工作,所以一旦認定目標,就要朝向最終目標努力努力再努力,始終朝向最終目標。這其實也是非常重要的能力。特別是在與一些人面談工作時,你要尋找的一件事情就是在小組已經交付的產品上他實際參與的工作。具備這種能力是作為一個優秀程序員的必備條件。
7、超凡的學習能力。在軟體技術領域,技術的更新日新月異,所以作為程序員必須學習不斷涌現的技術,掌握盡可能多的技能。優秀的開發人員是渴望學習的人。善於學習的人才能在這一領域立於不敗之地。也是程序員必須具備的條件之一。
二、程序員的職業要求
一般的程序員都有四年的在專業領域的學習,需要一個在程序領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。大約有20%的人在這一領域的計算機科學和工程學擁有更高的學位。還有很小一部分程序員是自學的,盡管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。一個程序員雖然有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。所以要盡量抓住有用的工作和實習機會,這樣的話在畢業後你就會發現,多實習讓你有更多的經驗,在找工作的時候就有更多的機會。
對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,你的技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。
三、一位大四程序員的面試經歷和體會
1.面試經過
大約在年前我接到了台灣瑞晟(Realtek)蘇州公司的面試通知,通知我2月21日到蘇州工業園區面試,接到面試後的幾天我把一些專業課溫習了一遍,特別是C++和數據結構,由於大學幾年裡,我一直專研這些方面,加上通過了高級程序員的考試,對於一些常用的演算法我差不多也 達到了爛熟於胸的地步,當時的感覺是如果問了我這些方面的問題我應該是沒有問題的!
21日那天我被安排在4:30面試,由一位技術人員單獨給我面試,在問了一些簡單的問題之後 ,他給我出了一道編程題目,題目是這樣的:
(由於具體面試的題目比較煩瑣,我將其核心思想提取出來分解成……(亂碼)
1) 寫一個函數計算當參數為n(n很大)時的值 1-2+3-4+5-6+7......+n
哼,我的心裡冷笑一聲!沒想到這么簡單,我有點緊張的心情頓時放鬆起來!
於是很快我給出我的解法:
long fn(long n)
{
long temp=0;
int i,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++)
{
temp=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}
搞定!當我用期待的目光看著面試官的時候,他微笑著跟我說,執行結果肯定是沒有問題! 但當n很大的時候我這個程序執行效率很低,在嵌入式系統的開發中,程序的運行效率很重要 ,能讓CPU少執行一條指令都是好的,他讓我看看這個程序還有什麼可以修改的地方,把程序 優化一下!聽了這些話,我的心情當時變的有點沉重,沒想到他的要求很嚴格,之後我對程序 進行了嚴格的分析,給出了改進了的方案!
long fn(long n)
{
long temp=0;
int j=1,i=1,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
while(j<=n)
{
temp=temp+i;
i=-i;
i>0?i++:i--;
j++;
}
return temp;
}
雖然我不敢保證我這個演算法是最優的,但是比起上一個程序,我將所有涉及到乘法指令的語 句改為執行加法指令,既達到要題目的要求而且運算時間上縮短了很多!而代價僅僅是增加了 一個整型變數!但是我現在的信心已經受了一點打擊,我將信將疑的看者面試官,他還是微笑 著跟我說:「不錯,這個程序確實在效率上有了很大的提高!」我心裡一陣暗喜!但他接著說這個程序仍然不能達到他的要求,要我給出更優的方案!天啊!還有優化!我當時真的有點崩 潰了,想了一會後,我請求他給出他的方案!然後他很爽快的給出了他的程序!
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
搞笑,當時我目瞪口呆,沒想到他是這個意思,這么簡單的代碼我真的不會寫嗎,但是我為 什麼沒有往那方面上想呢!他說的沒有錯,在n很大很大的時候這三個程序運行時間的差別簡 直是天壤之別!當我剛想開口說點什麼的時候,他卻先開口了:「不要認為CPU運算速度快就 把所有的問題都推給它去做,程序員應該將代碼優化再優化,我們自己能做的決不要讓CPU做 ,因為CPU是為用戶服務的,不是為我們程序員服務的!」多麼精闢的語言,我已經不想再說 什麼了!接著是第二個問題:
他要求我用一種技巧性的編程方法來用一個函數實現兩個函數的功能n為如:
fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!
fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!
現在用一個函數fn(int n,int flag)實現,當flag為0時 ,實現fn1功能,如果flag為1時實現fn2功能!他的要求還是效率,效率,效率!說實在話, 如果我心情好的話我應該能給出一種比較好的演算法,但我那時真的沒有什麼心思再想了,我在紙上胡亂畫了一些諸如6!=6*5!的公式後直截了當的跟他說要他給出他的答案!面試官也沒有 說什麼,給出了他的思路:
定義一個二維數組 float t[2][5]存入[2!,3!,4!,5!,6!},{5! ,6! ,7!,8!,9!]然後給出一個循環:
for(i=0;i<6;i++)
{
temp=temp+n/t[flag][i];
}
最後得到計算值!呵呵,典型的空間換時間的演算法!
這些總共花了50分鍾的時間,還有十分鍾我就跟他很隨意的聊聊天,聊了一些編程以及生活 的問題,那時的我已經很放鬆了,因為我知道這次面試結果只有一個:失敗。5:30的時候面試官要我等通知,於是我離開了他們公司。這就是面試的整個經過!
2.由面試想到的
真的是很失敗啊!我記得那天下好大的雨,氣溫也很低,我邊走邊想,從5:30一直走到7:30 ,全身都濕透了,又冷又餓,但是我只是一直走,腦子裡面充滿了疑惑,我也想讓雨把自己淋 醒!看到這里有些朋友可能覺得那些面試題目不算什麼如果讓自己做的話肯定能全部答對,我 肯定相信你,因為我從未懷疑過中國程序員的能力,我認為中國有世界上最好的程序員,我也 從未認為自己是高手,所以我做不出來不代表中國程序員比台灣或者別的地方的程序員差,所以我就從我的角度,我的所見所想來談一些感想:
不錯全世界都有優秀的程序員,中國也不例外,但是我疑惑的是:到底中國和台灣或者國外 的優秀的程序員的比例到底是多少?台灣我不知道,中國100個程序員里有幾個是優秀的呢?我 根本算不上,從上面的表現就足以說明一切了!是1個?5個?10個?50個?這個數字我不敢亂 猜,恐遭網友一頓痛罵,那麼我們國內有多少人學習計算機呢?拿我們學校來說,計算機97級 4個班,98級5個班,99級10個班,2000級17個班,人多了,老師怎麼辦?我們學校的做法是讓 研究生上課,然後呢?補考一抓一大把,大把大把的補考費落入了學校的口袋,還說現在的學生素質低!真是好笑,我都不知道學校這么做是為了什麼,為國內培養大量的程序員嗎?學生 們能真正學到計算機知識嗎?好了,我敢講,在我們學校學習編程學生和優秀程序員(注意我 指的是優秀,只會編幾個糟爛程序的人算不上)的比例應該是100:0.1 在這種比例下雖然我們中國學習編程的人鋪天蓋地,但是想想有多少個人能真正為中國軟體 業發展作出貢獻,有多少人能真正寫出優秀的程序名揚海外!
我從學習編程以來,不管是自學還是老師指導,從來都是解決問題就好,編出程序來就行, 我的疑惑是:我們有真正的強調過程序的效率,程序的質量嗎?我們有仔細分析過我們寫的東 西,看看有沒有可以改進的地方,看看有沒有簡單的方法來達到同樣的目的呢?我問心自問, 我發現,我從來沒有對我寫出來的程序進行過優化,最多就是進行詳細的測試,然後Debug, 但是這就足夠了嗎?
這些天我偶爾發現我曾經寫過的一個游戲,那是一年做為 其中一員時候,感覺應該拿點東西出來,然後花了一個星期的時間寫出來的!程序不算復雜,但是用到了不少數據結構的東西,也用到了一些精彩的演算法,加上windows的界面和游戲的可 玩性,寫完後受到了不少好評,我當時真的很佩服自己!
但是現在看呢:沒有一句注釋,好多 醜陋的函數名比如:void chushihua(),好多沒有必要的變數,可以用簡單語句完成工作的我 使用華麗的演算法,大量使用全局變數.....,說不好聽的話,六百多行的程序除了能運行之外就是一陀屎!如果一年前我能聽到一些反面意見的話,大概我能早一點覺悟,但是自原代碼在 網站發布以來聽到的都是贊美之詞,沒有一個人向我提出程序改進的意見,這又說明了一個什 么問題呢?很值得思考啊!
還有一個疑惑是:我們說的和做的真的一樣嗎?我在學校的時候曾經受學院指派承辦過一個 計算機大賽,請了一個老師出決賽的題目,主要是一些演算法題目,這個老師可能是我上大學以 來唯一敬佩的老師了,從程序調試到打分,對於每個程序都仔細分析其時間效率和空間效率, 然後綜合打分,四十個人的卷子,老師從下午三點一直調試到晚上十點,在有些寫的精彩的語 句後還加上批註。我真是高興很遇到這樣的老師並且和他做深入的交流,但在事後,卻發生了 一件不愉快的事,在比賽中獲得第二名的學生找到我,說他程序全部調試成功應該給他滿分, 並且應該得第一,我說不過他,最後調出了他的原程序和第一名的原程序對比,錯,兩個程 序都運行的很好,這時,那個同學開口了:「我的程序寫的十分簡捷明了,僅僅數行就完成了 題目要求,而他的卻寫了一大堆,為什麼給他的分多過給我的分。」我當時很是氣憤,如果不 是老師負責的話,那麼現在第一名和第二名的位置真的要互調了,拜託,不是程序的行數越少 程序的質量就越高,我記得我跟他大談這方面的道理,最後說服他了!哈哈,但是我,只能說 說而已,我不知道還有多少人一樣,說起來頭頭是道,但心裡卻壓根就從未重視過它!
四、優秀的編程人員應該掌握的十種編程語言
優秀的編程人員應該掌握的十種編程語言
引:位於聖地亞哥軟體編程公司Interknowlogy.com CEO Tim Huckaby表示,「我的一個導師曾經告訴我編程語言僅為一種語言。若你是一名優秀的程序編制人員,編程語言就是一些句法變換而已,並沒有其他重要部分。」
在求職過程中能夠了解多些編程語言,無疑是有很大優勢的。
確實,以量取勝是有優勢的。當然不排除存在一些恰好在合適的時間、合適的地點正好知曉合適的編程語言的情況,不過絕大部分編程者都會善意建議你階段性學習一種新語言,這對於作為一名合格的網站開發人員來說,是非常有必要的。
位於聖地亞哥軟體編程公司Interknowlogy.com CEO Tim Huckaby表示,「我的一個導師曾經告訴我編程語言僅為一種語言。若你是一名優秀的程序編制人員,編程語言就是一些句法變換而已,並沒有其他重要部分。」
不過,Huckaby表示,當時他的公司還在初創期,暫時不會考慮增添新人,不過知曉特定編程語言的入門級別人員有所例外。
Huckaby表示,「我們會聘用那些有激情、態度端正、聰明的剛從學校畢業、懂得.Net或Java語言的學生,因為這種人員,我們可以再次對他進行.Net培訓。」
加州Sebastopol市Grandview Systems的軟體開發負責人Wayne Duqaine表示,「不要只集中在一兩種語言上。當我在1969年開始時,FORTRAN、COBOL和S/360 Assembler是當時流行的語言。而今,Java、C和VB則是通用的程序編制語言。十年的時光中,有許多新語言都變成了流行語言。我粗略的計算一下,在三十年的時光中,我已經學會了近24種不同語言。」
五、幾道經典C語言筆試題
1.
int main()
{
int i, n = 20;
for (i = 0; i < n; i--)
printf("*");
return 0;
}
Change/add only one character and print '*' exactly 20 times.
(there are atleast 3 solutions to this problem :-)
2. display below like:
1
212
32123
4321234
543212345
3. search for maximum and minimum value, before save into arrange for any 5 natural number (use multiful for grammer)
ex)
save to any 5 natural number
30 20 75 15 64 <enter>
minimum : 15
maximum : 75
4. use ms-sql of join grammer. show query fot result
Table.1
ac_country
--------------------------------------
country_cd country_nm
--------------------------------------
kor koera
jpn japan
usa usa
cha china
Table.2
ac_currency1
-------------------------------------------
country_cd currency_cd currency_nm
-------------------------------------------
kor won W
jpn yen Y
usa usd US
# Result
-------------------------------------------
country_nm currency_cd currency_nm
-------------------------------------------
korea won W
japan yen Y
usa usd US
Result Query :
5.use ms-sql of join grammer. show query fot result
table.1
account
--------------------------------------
userid cost date
--------------------------------------
use01 10,000 2007-01-02
use02 5,000 2007-01-03
use05 7,000 2007-01-03
use03 5,000 2007-01-03
use01 5,000 2007-01-04
use04 5,000 2007-01-05
use02 10,000 2007-01-05
use01 1,000 2007-01-05
table.2
userinfo
-----------------------------------------------
code userid money register
-----------------------------------------------
AAA use01 8,500 2007-01-02
AAA use02 5,000 2007-01-03
AAA use03 2,000 2007-01-04
AAA use04 4,500 2007-01-05
BBB use05 5,500 2007-01-02
table.3
stateinfo
-------------------------------------
connect state indate
-------------------------------------
AAA-use01 Yes 2007-01-03
AAA-use02 No 2007-01-05
AAA-use03 No 2007-01-04
AAA-use04 Yes 2007-01-05
BBB-use05 NO 2007-01-04
#result
----------------------------------------------------------
userid money account_count account_total state
----------------------------------------------------------
use01 8,500 3 16,000 Yes
use02 5,000 2 15,000 No
use03 2,000 1 5,000 No
use04 4,500 1 5,000 Yes
Result Query :
6. show 2 query each fot result.A, result.B
table.data_table
-----------------------
F_DATE
-----------------------
2007-04-17 11:42:55.200
2007-04-18 01:45:33.403
2007-04-18 01:47:01.500
2007-04-17 11:40:15.000
2007-04-18 11:41:25.700
2007-04-18 11:41:49.420
2007-04-17 11:44:58.000
2007-04-18 11:45:23.340
#Result.A
----------
F_DATE
----------
2007-04-17
2007-04-18
Result Query :
#Result.B
----------
F_DATE
----------
2
Result Query :
⑧ 程序員應該知道的97件事中文版
http://..com/share/.html
⑨ 什麼是浮點數啊
浮點數是表示小數的一種方法。所謂浮點就是小數點的位置不固定,與此相反有定點數,即小數點的位置固定浮點數的實現在各種平台上差異很大,有的處理器有浮點運算單元(FPU,FloatingPointUnit),稱為硬浮點(Hardfloat)實現。
整數可以看做是一種特殊的定點數,即小數點在末尾。8086/8088中沒有浮點數處理指令,不過從486起,CPU內置了浮點數處理器,可以執行浮點運算。
一般的浮點數有點象科學計數法,包括符號位、指數部分和尾數部分。 有的處理器沒有浮點運算單元,只能做整數運算,需要用整數運算來模擬浮點運算,稱為軟浮點(Softfloat)實現。
擴展推薦:
編程學習過程中可以看得書推薦。《代碼大全(第二版)》出自著名IT暢銷書作者史蒂夫·邁克康奈爾之手,曾被《軟體開發》雜志授予優異產品震撼大獎。
《每個程序員都應該知道的97件事情》( 97 things every programmer should know )對於編程初學者來說這本書都可以算上一個優質的入門書籍。本書提供了豐富的編程實踐及理念,提供了大量的實例,並且書的排版格式閱讀起來十分簡潔方便
《計算機程序設計藝術 (第一卷)》由著名的計算機科學家教授Donald Knuth編著,並得到行業內眾多頂尖程序員的一致好評。甚至連比爾蓋茨也對這本書贊譽有加。
⑩ 學習軟體開發都需要看什麼書
學習軟體開發都需要看《c和指針》、《c缺陷和陷阱》、《c專家編程》,這三本書是一個初級C程序員必看的三本書,同時也是應屆新員工必須好好學習的教材,非常適合剛畢業的大學生學習 。
另外還有:
C++語言提升:
《Effective C++:改善程序與設計的55個具體做法》
《More Effective C++:35個改善編程與設計的有效方法(中文版)》
《C++沉思錄》
《C++Templates中文版》
《深度探索 C++ 對象模型》
《泛型編程與STL》
一個由C轉向C++的程序員,從來沒有系統的學習過C++的語法,往往是用到的什麼學習什麼。如果要系統入門,《C++ primer》倒是不錯。
設計類《代碼大全》:
《重構-改善既有代碼的設計》
《代碼整潔之道》
《實現模式》
《程序員應該知道的97件事》
這幾本書一般講的是函數以及更低層次的設計。《代碼大全》完完整整的讀完過,而且做了很多的筆記,獲益良多。《重構》就不必說了,其他幾本書前面大致看了一下,也非常不錯,計劃有時間要好好學習一下。
架構:
《軟體體系結構的藝術》
《領域驅動設計:軟體核心復雜性應對之道》
《軟體架構師應該知道的97件事》
《企業應用架構模式》
《面向模式的軟體體系結構卷1:模式系統》
《軟體架構設計》
《架構師需要知道的97件事》
敏捷開發:
《測試驅動開發》
《敏捷軟體開發——原則、模式與實踐》
《Scrum敏捷項目管理》
《硝煙中的Scrum和XP——我們如何實施Scrum》
《敏捷軟體開發》