工作經驗很重要,其次是技能!
因為面試會問你什麼,這是你不能盡善的!
我當年找工作,他問我有沒有經驗,做沒做過,我說沒有!剛畢業!我覺得我太誠實了,但是我也是實話實說!後來他和我說話就不耐煩了,什麼都不問,就說我們公司要招有經驗的人,能上來就可以著手工作的!
再後來因為屢次失敗,所以我想我被他們逼著變滑頭了,他們問我有沒有經驗我就說有,雖然我沒有但是我當然有準備,我問過前輩們都在公司里做過什麼,主要負責些項目的什麼環節,我全拿來了,而且他也不可能查我有沒有在那工作過,當然因為沒有所以有點心虛,就說做的時間不長。不過我肯定奏效了!比你說你一點經驗也沒有強多了!
碰到的情況太多了,面試有的會問很多問題,我以前被問過session保存的值過大丟失怎麼辦;資料庫刪除有幾種,區別是什麼;java多線程;演算法怎麼樣,現場給我編一個冒泡排序吧;還有筆試的,筆試java的很少,很多都是資料庫或者JQ,JS之類的。總之這些技能方面的知識還是必須的。
但是真的,經驗很重要!
❷ java怎麼讓數組的數字從大到小排序
將數字從大到小排序的方法:
例如簡一點的冒泡排序,將第一個數字和後面的數字逐個比較大小,如果小於,則互換位置,大於則不動。此時,第一個數為數組中的最大數。然後再將第二個數與後面的數逐個比較,以次類推。
示例代碼如下:
publicclassTest{
publicstaticvoidmain(String[]args){
int[]array={12,3,1254,235,435,236,25,34,23};
inttemp;
for(inti=0;i<array.length;i++){
for(intj=i+1;j<array.length;j++){
if(array[i]<array[j]){
temp=array[i];
array[i]=array[j];
array[j]=temp; //兩個數交換位置
}
}
}
for(inti=0;i<array.length;i++){
System.out.print(array[i]+"");
}
}
}
數組對於每一門編程語言來說都是重要的數據結構之一,當然不同語言對數組的實現及處理也不盡相同。
Java 語言中提供的數組是用來存儲固定大小的同類型元素。
你可以聲明一個數組變數,如 numbers[100] 來代替直接聲明 100 個獨立變數 number0,number1,....,number99
(2)java程序員冒泡排序擴展閱讀
Java中利用數組進行數字排序一般有4種方法:
1、選擇排序是先將數組中的第一個數作為最大或最小數,然後通過循環比較交換最大數或最小數與一輪比較中第一個數位置進行排序。
2、冒泡排序也是先將數組中的第一個數作為最大或最小數,循環比較相鄰兩個數的大小,滿足條件就互換位置,將最大數或最小數沉底。
3、快速排序法主要是運用Arrays類中的Arrays.sort方法()實現。
4、插入排序是選擇一個數組中的數據,通過不斷的插入比較最後進行排序。
❸ 一個「熟練」程序員和一個「有能力」程序員誰更牛
一、宏觀方面
一、 JAVA。
要想成為JAVA(高級)工程師肯定要學習JAVA。一般的程序員或許只需知道一些JAVA的語法結構就可以應付了。但要成為JAVA(高級)
工程師,您要對JAVA做比較深入的研究。您應該多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、線程。如果可能,希望您
對JAVA的所有包都瀏覽一下,知道大概的API,這樣您就發現其實您想實現的很多功能,通過JAVA的API都可以實現了,就不必自己費太多的腦經 了。
二、 設計模式。
其實寫代碼是很容易的事情,我相信您也有同感。但如何寫得好就比較難了。這個「好」字包括代碼可重用性,可維護性,可擴展性等。如何寫出好的代
碼往往要藉助一些設計模式。當然長期的代碼經驗積累,只要您用心,會使您形成自己代碼風格。相信您的代碼也比較符合代碼的可重用性,可維護性,可擴展性。
但既然前人已經給我們總結出了經驗,我們何不踩著前人的肩膀前進?
三、 XML。
現在的系統中不使用XML幾乎是不可能的。XML的功能非常強大,它可以做數據轉換、做系統的配置、甚至可保存您的系統業務數據。因此您必須了解
XML,包括它的語法,結構。您還需要比較熟練的使用解析XML的一些API,比如JDOM,SAX等,因為在我們一般的項目中,XML往往擔當系統配置
信息的作用,您需要用這些API解析這些配置信息,開發完美的項目。
四、 精通使用一種或兩種框架。
「框架都會有許多可重用的代碼,良好的層次關系和業務控制邏輯,基於框架的開
發使你可以省出很多的開發成本」。這里希望您能精通,更多的是希望您能通過框架的使用了解框架的思想。這樣您在開發一個項目時思路會開闊一些,比如您
會想到把SQL語句與您的JAVA代碼分開,再比如您會考慮把您的業務邏輯配置到XML或者資料庫中,這樣整個項目就很容易擴張了。
五、 熟悉主流資料庫。其實真正比較大的項目都是有人專門做資料庫的,但往往很多項目要求作為(高級)工程師的您也參與資料庫的設計以及SQL的編寫。所以為了
更好的為國家做貢獻,建議您還是多了解一些主流資料庫,比如SQLSERVER,ORACLE,多連接SQL和存儲過程以及觸發器。如果您不是「科班」出
身,您還需要補充一些資料庫原理方面的知識。
六、 精通一種或兩種WEBServer。
因為作為JAVA工程師,特別時
想成為高級JAVA工程師的您,您不可避免地要部署您的項目到WebServer上,而且只有當您精通一種WebServer,您才可能最大限度地使用它
的資源,這往往可以節省很多時間和精力。
七、 UML。
您肯定想成為高級工程師,因此您有必要了解或熟練或精通UML,這取決於您有多大決心想成為高級工程師和項目經理。在比較正規的開發團隊
中,UML是討論項目的交流工具,您要想做一個軟體工程師,您至少要能看懂,您要想做高級工程師,您要能通過它來描述您對項目的理解,盡管這不是必須,但
卻很重要。
八、 站在高度分析問題:
這不是一個知識點,也不是通過書本就能學得到的。只所以提到這一點,是因為我比您還著急,我希望您更快的成為一個高級的軟體工程師,而
不是一個一般的軟體工程師。希望您在工作中多向您的系統分析員、需求分析員、系統設計員學習,多站在他們角度上去看您在開發的項目。在最好在項目之初先在
您的腦海里對項目有個大致的分析、設計,然後和他們進行比較,找找差別,想想缺點。
九、 工具。
您在這個階段可能接觸到不同的工具了,盡管您還需要使用JB或者IDEA,但能可能對
ROSE,Together要多了解一些,因為您要畫UML了。不要再對Dreamweaver等HTML編輯器情有獨鍾了,那些JSP頁面讓初級程序員去寫吧
二、微觀方面
1.Core Java部分
這是最基礎的,對於一個java高級開發/設計人員,你需要對這一部分達到精通的水平,重點內容如下:
a.面向對象編程思想(封裝繼承多態介面)
b.字元串處理
c.java.lang包,java.util包等常用包
d.java異常處理
2.Java高級部分
a.Java I/O流
b.Java多線程技術
c.Java網路編程
d.Java Swing
後兩項可以了解即可,如果項目需要可以深入研究
3.前端基本技能
* HTML + CSS網頁開發
* JavaScript
* Jquery
* 瀏覽器兼容性 CSS hack(了解)
4.熟練使用JSP + Servlet進行開發
5.MVC設計模式,原理,以及相關框架,如Struts
6.SSH框架
7.緩存技術 session & cookie
8.熟練使用一種以上Java開發工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
9.熟練使用XML
JDOM w3c.dom SAX
10.Java設計模式
工廠模式,單例模式 ==
11.Java反射機制
反射的各種用法
12.了解或熟悉 C, C++, .NET
13.熟悉JDK的配置,環境變數
14.資料庫oracle必學,其他最好了解一種以上(mysql,sql server,access==)
oracle:視圖,索引,存儲過程,觸發器,游標,包,常用函數 ==
15.資料庫原理
事務的原理,鎖機制,表連接,復雜查詢語句(工作經驗),性能調優,鎖表以及解決方案==
16.JDBC,連接池
17.Ajax,反向Ajax
18.HTTP協議,request 和 response的原理,HTTP status(了解常用的),Https原理
19.熟悉Linux基本命令,使用過Linux/Unix系統,可以編寫shell腳本,可以在Linux上部署項目
20.了解windows系統批處理腳本bat
21.了解HTML5,最好學習過
22.熟悉一種JS框架,如Prototype
23.J2EE原理 熟悉一種以上web容器如Tomcat,JBoss,websphere,weblogic==
24.熟悉ant或maven
25.熟悉一門腳本語言,如python ,ruby
26.了解php/ asp
27.了解ftp協議及原理
28.熟練使用Junit測試,熟悉Mockito等測試工具
29,熟悉javac,javadoc,native,native2ascii等常用命令
30.熟悉常用的排序演算法,如冒泡排序,快速排序等,最好自己研究過一些的演算法。
31.了解Flex(不學也沒關系)
32.了解敏捷開發模式
33.工作流workflow至少用過一種,如OSworkflow,了解原理
34.使用過VPN了解其原理
35.熟悉jstl表達式和el表達式
36.熟悉webservice,WSDL,SOAP
37.圖片處理,如圖片上傳,預覽,限制大小等
38.版本控制工具,CVS VSS SVN
39,JSON技術,JSON+AJAX
40.分頁技術,最好自己實現過不僅僅是用過要知道原理
41.Java Mail
42.Java讀寫txt,excel,JXL技術
43.JVM原理,JVM內存管理,GC,Java堆棧池
44.熟練使用下面的工具:
office辦公軟體,word,excel,ppt等
plsql,sqldevelop 資料庫開發工具
outlook大公司都用
ue編輯器
瀏覽器控制台,調試
SHH/PUTTY 遠程
45.UML建模工具Rational Rose等
46. 使用log4j
47.使用過開放Api如網路,騰訊街景,新浪微博等
48.頁面靜態化技術(偽靜態頁面)
49.報表技術,使用過報表製作工具,如水晶易表。
50.定時任務,如Spring batch ,學會自定義batch任務(不適用第三方工具)
51.了解uuid
52.b/s 和 c/s架構
53.正則表達式
54.了解jndi jms
55.ERP
56.UNICODE編碼,亂碼解決
57.開源網路編輯器,如ckEditor
58.二進制原理
59.使用過,了解過開源論壇框架,如discuzz
60.GWT,Closure框架
61.了解大數據,雲計算
62.搜索引擎搜索技術
63.軟體工程,項目管理
❹ 如何成為優秀的程序員
首先是 來自自身內部的創造性的一面
雖然你可以從別人那裡學到很多東西,也可以已有的東西中得到靈感。但真正的創意靈感來自於你自己。例如喬布斯,他不是一名工程師,也不是程序員,但他很有創意,他推動蘋果公司創造了iOS,Siri。
或許你想問編程需要什麼創意?任何人都可以在線或離線學習一些課程,閱讀一些書籍就可以開始寫代碼了。但這些東西都是別人灌輸給你的,你需要有自己的一些想法和創意,想出自己的框架。例如Dennis Ritchie,他就創造性地編寫了C編程語言,而且目前這是使用最廣泛的語言。
它像任何口語一樣,每個人都知道一些語言,但不是每個人都是一個詩人或一個作家。你需要創造性的技能才能被稱為偉大的詩人或作家。
其次是技術方面
你需要從一些編程語言開始。過去很多人開始是以C語言開始編寫程序。然後很多人開始使用BASIC。現在人們從Python或PHP開始。其實從什麼語言開始不重要。重要的是一旦你掌握了這些概念,你就可以編寫演算法並繪制流程圖。
總的說來,如果你花太多時間做下面的事情,它可能會提高你的技能一點點,但你永遠不會是一個好的程序員:
只知道看書的程序員用永遠不會成為一個好程序員。俗話說All read and no practice makes Jack a ll boy,古人的話絕對是有道理的,不是說讓你不要閱讀,只是不要只有閱讀,你應該通過應用你學到的東西來構建簡單的應用程序。
通過記憶代碼和演算法。編程是思考而不是記憶。你可以擁有最好的記憶力,但是如果你沒有自己思考,你永遠不會是一個好的程序員。我們有計算機和互聯網為我們記住事情,你不需要記住任何東西 , 你只需要了解在哪裡以及如何找到你需要的信息。
通過編寫你看的書中的單個函數和演算法,即編寫愚蠢的冒泡排序函數和類似的無用演算法。
通過測試其他人的代碼。例如是否使用測試軟體或編寫單元測試等
通過閱讀和調試其他人的代碼。這可能會在短期內有所幫助,但是只是在對方的代碼寫得很好的情況下,你可以從中學到別人的一些良好的習慣;但閱讀不好的代碼作為例子會教你養成不良的習慣,而且你或許一直會記得這個錯誤的習慣。從長遠來看,花費太多時間閱讀和調試其他人的代碼將不利於你的成長。
讓別人來管理你。編程就是為自己思考,你需要自己管理自己,也就是上面所說的,要有自己創造性的思考。
成為優秀的程序員最好的打開方式就是:
你必須自己完整的完成一個項目。不要過多地把重點放在閱讀書籍,語法,演算法和功能上,也就是說,在開始時不要太關注細節。你可以簡單地坐下來思考一個你想為自己開發的應用程序/系統......如果實在需要的話,可以問你身邊的同事/老師的想法,但是你必須有自己的思考並且自己獨立去完成它。
一旦你想明白了,就把這個想法留在腦海,並且富有激情的去完成它,所有的一切都會慢慢地開始。你會想到你要實現的功能,你將開始研究如何實現這個或那個。
只有在這個時候,你才應該拿起一本書或在互聯網上搜索關於如何實現這個你認為可以做的很酷的功能的答案。隨著你的應用程序/系統的發展,你將會慢慢地開始考慮編寫更簡潔的代碼,以便在將來也可以派上用場,讓自己的工作更輕松。
只有通過把自己的想法帶入生活,你才能學會如何成為一名優秀的程序員。你應該把自己看成是一個藝術家,而不是像編寫代碼的人那樣去編譯和運行。如果你只是在別人的代碼上工作,或者只是閱讀書籍等,你將很快失去動力,你永遠不會發現或利用你的才華。
❺ 一個優秀的程序員應該學完哪些計算機理論的知識
1、循環隊列:將隊列存儲空間的最後一個位置繞到第一個位置,形成邏輯上的環狀空間。
2、入隊運算:在循環隊列的隊尾加入一個新元素。上溢:當循環隊列非空,且隊尾指針等於隊頭指針時,說明循環隊列已滿,不能進行入隊運算。
3、退隊運算:在循環隊列的隊頭位置退出一個元素並賦給指定的變數。首先將隊頭指針進一,然後將排頭指針指向的元素賦給指定的變數。下溢:當循環隊列為空時,不能進行退隊運算。