第一篇:Java程序員職場全攻略
監(jiān)視內(nèi)存計數(shù)器
要監(jiān)視內(nèi)存不足的狀況,請從以下的對象計數(shù)器開始:
內(nèi)存信息:
Memory Available Bytes
Memory Pages/sec
Memory Available Bytes
如果您懷疑有內(nèi)存泄露,請監(jiān)視 MemoryAvailable Bytes 和 Memory Committed Bytes,以觀察內(nèi)存行為,并監(jiān)視您認(rèn)為可能在泄露內(nèi)存的進(jìn)程的 Process Private Bytes、Process Working Set 和Process Handle Count。如果您懷疑是內(nèi)核模式進(jìn)程導(dǎo)致了泄露,則還應(yīng)該監(jiān)視 Memory Pool Nonpaged Bytes、Memory Pool Nonpaged Allocs 和 Process(process_name)Pool Nonpaged Bytes。
CPU信息:
Processor % Processor Time 獲得處理器使用情況。
也可以選擇監(jiān)視 Processor % User Time 和 % Privileged Time 以獲得詳細(xì)信息。
Server Work Queues Queue Length 計數(shù)器會顯示出處理器瓶頸。隊列長度持續(xù)大于 4 則表示可能出現(xiàn)處理器擁塞。
System Processor Queue Length 用于瓶頸檢測
通過使用 Process % Processor Time 和 Process Working Set
Process % Processor Time過程的所有線程在每個處理器上的處理器時間總和。
硬盤信息:
Physical Disk % Disk Time
Physical Disk Avg.Disk Queue Length
例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果頁面讀取操作速率很低,同時 % Disk Time 和 Avg.Disk Queue Length的值很高,則可能有磁盤瓶徑。但是,如果隊列長度增加的同時頁面讀取速率并未降低,則內(nèi)存不足。
Physical Disk % Disk Time
Physical Disk Avg.Disk Queue Length
例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果頁面讀取操作速率很低,同時 % Disk Time 和 Avg.Disk Queue Length的值很高,則可能有磁盤瓶徑。但是,如果隊列長度增加的同時頁面讀取速率并未降低,則內(nèi)存不足。
請觀察 Processor Interrupts/sec 計數(shù)器的值,該計數(shù)器測量來自輸入/輸出(I/O)設(shè)備的服務(wù)請求的速度。如果此計數(shù)器的值明顯增加,而系統(tǒng)活動沒有相應(yīng)增加,則表明存在硬件問題。
Physical Disk Disk Reads/sec and Disk Writes/sec
Physical Disk Current Disk Queue Length
Physical Disk % Disk Time
LogicalDisk % Free Space
測試磁盤性能時,將性能數(shù)據(jù)記錄到另一個磁盤或計算機(jī),以便這些數(shù)據(jù)不會干擾您正在測試的磁盤。
可能需要觀察的附加計數(shù)器包括 Physical Disk Avg.Disk sec/Transfer、Avg.Disk Bytes/Transfer,和 Disk Bytes/sec。
Avg.Disk sec/Transfer 計數(shù)器反映磁盤完成請求所用的時間。較高的值表明磁盤控制器由于
失敗而不斷重試該磁盤。這些故障會增加平均磁盤傳送時間。對于大多數(shù)磁盤,較高的磁盤平均傳送時間是大于 0.3 秒。
也可以查看 Avg.Disk Bytes/Transfer 的值。值大于 20 KB 表示該磁盤驅(qū)動器通常運行良好;如果應(yīng)用程序正在訪問磁盤,則會產(chǎn)生較低的值。例如,隨機(jī)訪問磁盤的應(yīng)用程序會增加平均 Disk sec/Transfer 時間,因為隨機(jī)傳送需要增加搜索時間。
Disk Bytes/sec 提供磁盤系統(tǒng)的吞吐率。
決定工作負(fù)載的平衡
要平衡網(wǎng)絡(luò)服務(wù)器上的負(fù)載,需要了解服務(wù)器磁盤驅(qū)動器的繁忙程度。使用 Physical Disk % Disk Time 計數(shù)器,該計數(shù)器顯示驅(qū)動器活動時間的百分比。如果 % Disk Time 較高(超過 90%),請檢查 Physical Disk Current Disk Queue Length 計數(shù)器以查看正在等待磁盤訪問的系統(tǒng)請求數(shù)量。等待 I/O 請求的數(shù)量應(yīng)當(dāng)保持在不大于組成物理磁盤的主軸數(shù)的 1.5 到 2 倍。
盡管廉價磁盤冗余陣列(RAID)設(shè)備通常有多個主軸,大多數(shù)磁盤有一個主軸。硬件 RAID 設(shè)備在“系統(tǒng)監(jiān)視器”中顯示為一個物理磁盤;通過軟件創(chuàng)建的 RAID 設(shè)備顯示為多個驅(qū)動器(實例)。可以監(jiān)視每個物理驅(qū)動器(而不是 RAID)的 Physical Disk 計數(shù)器,也可以使用 _Total 實例來監(jiān)視所有計算機(jī)驅(qū)動器的數(shù)據(jù)。
使用 Current Disk Queue Length 和 % Disk Time 計數(shù)器來檢測磁盤子系統(tǒng)的瓶頸。如果 Current Disk Queue Length 和 % Disk Time 的值始終較高,可以考慮升級磁盤驅(qū)動器或?qū)⒛承┪募苿拥狡渌疟P或服務(wù)器。
posted @ 2006-01-05 17:05 摩摩茶 閱讀(671)| 評論(5)| 編輯
如何分析Analysis中各個圖表的含義,寫出性能測試報告(繼續(xù)增加中)
1:
vuser數(shù):
這個根據(jù)你選擇的方案不同結(jié)果也不同,如果采用所有vuser同時運行,并且所有vuser都正確執(zhí)行的話,這個圖沒什么用處。
平均事務(wù)響應(yīng)時間:
這個應(yīng)該是關(guān)注最多的,一般來說,這個圖的理想曲線是這樣(針對同時開始vuser):開始增長較快,中期幾乎不增長,后期逐漸下降(類似發(fā)動機(jī)輸出曲線)。比較差的曲線例如:線性增長,波動較大的曲線
每秒事務(wù)數(shù):
一般來說,在平均事務(wù)響應(yīng)時間達(dá)到期望要求的時候,這個值越大越好(峰值)
Windows資源/Unix資源:
這些就要看你監(jiān)控哪些東西了(CPU利用率,內(nèi)存使用情況,高速緩沖命中情況等),CPU利用率的話在跑vuser期間最好不要超過80%,否則就是資源瓶頸(我們做Weblogic+Oracle測試時,oracle主機(jī)cpu利用率沒超過20%,而Weblogic主機(jī)cpu利用率在整個方案運行中期徘徊在90%左右,性能瓶頸在Weblogic中需要優(yōu)化)
排除網(wǎng)絡(luò)瓶頸的話,問題一般按下順序:Web服務(wù)器->應(yīng)用服務(wù)器->數(shù)據(jù)庫
2:
Memory:
內(nèi)存使用情況可能是系統(tǒng)性能中最重要的因素。如果系統(tǒng)“頁交換”頻繁,說明內(nèi)存不足。“頁交換”是使用稱為“頁面”的單位,將固定大小的代碼和數(shù)據(jù)塊從 RAM 移動到磁盤的過程,其目的是為了釋放內(nèi)存空間。盡管某些頁交換使 Windows 2000 能夠使用比實際更多的內(nèi)存,也是可以接受的,但頻繁的頁交換將降低系統(tǒng)性能。減少頁交換將顯著提高系統(tǒng)響應(yīng)速度。要監(jiān)視內(nèi)存不足的狀況,請從以下的對象計數(shù)器開始:
Available Mbytes:可用物理內(nèi)存數(shù).如果Available Mbytes的值很小(4 MB 或更小),則說明計算機(jī)上總的內(nèi)存可能不足,或某程序沒有釋放內(nèi)存。
Page/sec: 表明由于硬件頁面錯誤而從磁盤取出的頁面數(shù),或由于頁面錯誤而寫入磁盤以釋放工作集空間的頁面數(shù)。一般如果pages/sec持續(xù)高于幾百,那么您應(yīng)該進(jìn)一步研究頁交換活動。有可能需要增加內(nèi)存,以減少換頁的需求(你可以把這個數(shù)字乘以4k就得到由此引起的硬盤數(shù)據(jù)流量)。Pages/sec 的值很大不一定表明內(nèi)存有問題,而可能是運行使用內(nèi)存映射文件的程序所致。
page read/sec:頁的硬故障,page/sec的子集,為了解析對內(nèi)存的引用,必須讀取頁文件的次數(shù)。閾值為>5.越低越好。大數(shù)值表示磁盤讀而不是緩存讀。由于過多的頁交換要使用大量的硬盤空間,因此有可能將導(dǎo)致將頁交換內(nèi)存不足與導(dǎo)致頁交換的磁盤瓶徑混淆。因此,在研究內(nèi)存不足不太明顯的頁交換的原因時,您必須跟蹤如下的磁盤使用情況計數(shù)器和內(nèi)存計數(shù)器:
Physical Disk % Disk Time
Physical Disk Avg.Disk Queue Length
例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果頁面讀取操作速率很低,同時 % Disk Time 和 Avg.Disk Queue Length的值很高,則可能有磁盤瓶徑。但是,如果隊列長度增加的同時頁面讀取速率并未降低,則內(nèi)存不足。
要確定過多的頁交換對磁盤活動的影響,請將 Physical Disk Avg.Disk sec/Transfer 和 Memory Pages/sec 計數(shù)器的值增大數(shù)倍。如果這些計數(shù)器的計數(shù)結(jié)果超過了 0.1,那么頁交換將花費百分之十以上的磁盤訪問時間。如果長時間發(fā)生這種情況,那么您可能需要更多的內(nèi)存。
Page Faults/sec:每秒軟性頁面失效的數(shù)目(包括有些可以直接在內(nèi)存中滿足而有些需要從硬盤讀取)較page/sec只表明數(shù)據(jù)不能在內(nèi)存的指定工作集中立即使用。
Cache Bytes:文件系統(tǒng)緩存(File System Cache),默認(rèn)情況下為50%的可用物理內(nèi)存。如IIS5.0 運行內(nèi)存不夠時,它會自動整理緩存。需要關(guān)注該計數(shù)器的趨勢變化如果您懷疑有內(nèi)存泄露,請監(jiān)視 Memory Available Bytes 和 Memory Committed Bytes,以觀察內(nèi)存行為,并監(jiān)視您認(rèn)為可能在泄露內(nèi)存的進(jìn)程的 ProcessPrivate Bytes、ProcessWorking Set 和ProcessHandle Count。如果您懷疑是內(nèi)核模式進(jìn)程導(dǎo)致了泄露,則還應(yīng)該監(jiān)視 MemoryPool Nonpaged Bytes、Memory Pool Nonpaged Allocs 和 Process(process_name)Pool Nonpaged Bytes。
Pages per second :每秒鐘檢索的頁數(shù)。該數(shù)字應(yīng)少于每秒一頁。
Process:
%Processor Time: 被處理器消耗的處理器時間數(shù)量。如果服務(wù)器專用于sql server,可接受的最大上限是80-85%
Page Faults/sec:將進(jìn)程產(chǎn)生的頁故障與系統(tǒng)產(chǎn)生的相比較,以判斷這個進(jìn)程對系統(tǒng)頁故障產(chǎn)生的影響。
Work set: 處理線程最近使用的內(nèi)存頁,反映了每一個進(jìn)程使用的內(nèi)存頁的數(shù)量。如果服務(wù)器有足夠的空閑內(nèi)存,頁就會被留在工作集中,當(dāng)自由內(nèi)存少于一個特定的閾值時,頁就會被清除出工作集。
Inetinfo:Private Bytes:此進(jìn)程所分配的無法與其它進(jìn)程共享的當(dāng)前字節(jié)數(shù)量。如果系統(tǒng)性能隨著時間而降低,則此計數(shù)器可以是內(nèi)存泄漏的最佳指示器。
Processor:
監(jiān)視“處理器”和“系統(tǒng)”對象計數(shù)器可以提供關(guān)于處理器使用的有價值的信息,幫助您決定是否存在瓶頸。
%Processor Time:如果該值持續(xù)超過95%,表明瓶頸是CPU。可以考慮增加一個處理器或換一個更快的處理器。
%User Time:表示耗費CPU的數(shù)據(jù)庫操作,如排序,執(zhí)行aggregate functions等。如果該值很高,可考慮增加索引,盡量使用簡單的表聯(lián)接,水平分割大表格等方法來降低該值。%Privileged Time:(CPU內(nèi)核時間)是在特權(quán)模式下處理線程執(zhí)行代碼所花時間的百分比。如果該參數(shù)值和“Physical Disk”參數(shù)值一直很高,表明I/O有問題。可考慮更換更快的硬盤系統(tǒng)。另外設(shè)置Tempdb in RAM,減低“max async IO”,“max lazy writer IO”等措施都會降低該值。
此外,跟蹤計算機(jī)的服務(wù)器工作隊列當(dāng)前長度的 Server Work Queues Queue Length 計數(shù)器會顯示出處理器瓶頸。隊列長度持續(xù)大于 4 則表示可能出現(xiàn)處理器擁塞。此計數(shù)器是特定時間的值,而不是一段時間的平均值。
% DPC Time:越低越好。在多處理器系統(tǒng)中,如果這個值大于50%并且Processor:% Processor Time非常高,加入一個網(wǎng)卡可能會提高性能,提供的網(wǎng)絡(luò)已經(jīng)不飽和。
Thread
ContextSwitches/sec:(實例化inetinfo 和dllhost 進(jìn)程)如果你決定要增加線程字節(jié)池的大小,你應(yīng)該監(jiān)視這三個計數(shù)器(包括上面的一個)。增加線程數(shù)可能會增加上下文切換次數(shù),這樣性能不會上升反而會下降。如果十個實例的上下文切換值非常高,就應(yīng)該減小線程字節(jié)池的大小。
Physical Disk:
%Disk Time %:指所選磁盤驅(qū)動器忙于為讀或?qū)懭胝埱筇峁┓?wù)所用的時間的百分比。如果三個計數(shù)器都比較大,那么硬盤不是瓶頸。如果只有%Disk Time比較大,另外兩個都比較適中,硬盤可能會是瓶頸。在記錄該計數(shù)器之前,請在Windows 2000 的命令行窗口中運行diskperf-yD。若數(shù)值持續(xù)超過80%,則可能是內(nèi)存泄漏。
Avg.Disk Queue Length:指讀取和寫入請求(為所選磁盤在實例間隔中列隊的)的平均數(shù)。該值應(yīng)不超過磁盤數(shù)的1.5~2 倍。要提高性能,可增加磁盤。注意:一個Raid Disk實際有多個磁盤。
Average Disk Read/Write Queue Length:指讀取(寫入)請求(列隊)的平均數(shù)。
Disk Reads(Writes)/s: 物理磁盤上每秒鐘磁盤讀、寫的次數(shù)。兩者相加,應(yīng)小于磁盤設(shè)備最大容量。
Average Disksec/Read: 指以秒計算的在此盤上讀取數(shù)據(jù)的所需平均時間。
Average Disk sec/Transfer:指以秒計算的在此盤上寫入數(shù)據(jù)的所需平均時間。
Network Interface:
Bytes Total/sec :為發(fā)送和接收字節(jié)的速率,包括幀字符在內(nèi)。判斷網(wǎng)絡(luò)連接速度是否是瓶頸,可以用該計數(shù)器的值和目前網(wǎng)絡(luò)的帶寬比較
監(jiān)視IIS需要的一些計數(shù)器
Internet Information Services Global:
File Cache Hits %、File CacheFlushes、File Cache Hits
File Cache Hits %是全部緩存請求中緩存命中次數(shù)所占的比例,反映了IIS 的文件緩存設(shè)置的工作情況。對于一個大部分是靜態(tài)網(wǎng)頁組成的網(wǎng)站,該值應(yīng)該保持在80%左右。而File Cache Hits是文件緩存命中的具體值,F(xiàn)ile CacheFlushes 是自服務(wù)器啟動之后文件緩存刷新次數(shù),如果刷新太慢,會浪費內(nèi)存;如果刷新太快,緩存中的對象會太頻繁的丟棄生成,起不到緩存的作用。通過比較File Cache Hits 和File Cache Flushes 可得出緩存命中率對緩存清空率的比率。通過觀察它兩個的值,可以得到一個適當(dāng)?shù)乃⑿轮担▍⒖糏IS 的設(shè)置ObjectTTL、MemCacheSize、MaxCacheFileSize)
Web Service:
Bytes Total/sec:顯示W(wǎng)eb服務(wù)器發(fā)送和接受的總字節(jié)數(shù)。低數(shù)值表明該IIS正在以較低的速度進(jìn)行數(shù)據(jù)傳輸。
Connection Refused:數(shù)值越低越好。高數(shù)值表明網(wǎng)絡(luò)適配器或處理器存在瓶頸。Not Found Errors:顯示由于被請求文件無法找到而無法由服務(wù)器滿足的請求數(shù)(HTTP狀態(tài)代碼404)
第二篇:java程序員
如何迅速成為Java高手[Tomjava原創(chuàng)]
很多網(wǎng)友問我學(xué)習(xí)Java有沒有什么捷徑,我說“無他,唯手熟爾”。但是我卻很愿意將自己學(xué)習(xí)的一些經(jīng)驗寫出來,以便后來者少走彎路,幫助別人是最大的快樂嘛!
要想學(xué)好Java,首先要知道Java的大致分類。我們知道,自從Sun推出Java以來,就力圖使之無所不包,所以Java發(fā)展到現(xiàn)在,按應(yīng)用來分主要分為三大塊:J2SE,J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用軟件的編程;J2ME主要應(yīng)用于嵌入是系統(tǒng)開發(fā),如手機(jī)和PDA的編程;J2EE是Java2的企業(yè)版,主要用于分布式的網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。J2SE開發(fā)桌面應(yīng)用軟件比起VC,VB,DEPHI這些傳統(tǒng)開發(fā)語言來說,優(yōu)勢好象并不明顯。J2ME對于初學(xué)者來說,好象又有點深奧,而且一般開發(fā)者很難有開發(fā)環(huán)境。所以現(xiàn)在應(yīng)用最廣泛又最好學(xué)的就是J2EE了。J2EE又包括許多組件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要學(xué)習(xí)起來可不是一兩天的事。
那么又該如何學(xué)習(xí)J2EE呢?當(dāng)然Java語法得先看一看的,I/O包,Util包,Lang包你都熟悉了嗎?然后再從JSP學(xué)起。如果你學(xué)過HTML,那么事情要好辦的多,如果沒有,那你快去補(bǔ)一補(bǔ)HTML基礎(chǔ)吧。其實JSP中的Java語法也不多,它更象一個腳本語言,有點象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負(fù)責(zé)生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時,也是先轉(zhuǎn)換成Servlet再運行的。雖說JSP理論上可以完全取代Servlet,這也是SUN推出JSP的本意,可是Servlet用來控制流程跳轉(zhuǎn)還是挺方便的,也令程序更清晰。接下來你應(yīng)該學(xué)習(xí)一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代碼的混亂方式了,這種方式跟ASP又有什么區(qū)別呢?還好,SUN提供了Javabean可以把你的JSP中的Java代碼封裝起來,便于調(diào)用也便于重用。接著就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean還是有區(qū)別的。它是一個體系結(jié)構(gòu),你可以搭建更安全、更穩(wěn)定的企業(yè)應(yīng)用。它的大量代碼已由中間件(也就是我們常聽到的Weblogic,Websphere這些J2EE服務(wù)器)完成了,所以我們要做的程序代碼量很少,大部分工作都在設(shè)計和配置中間件上。至于JDBC,就不用我多說了,你如果用java編過存取數(shù)據(jù)庫的程序,就應(yīng)該很熟悉。還有,如果你要用Java編發(fā)送電子郵件的程序,你就得看看Javamail了。
好了,對Java和J2EE有了一些基本概念之后,你就應(yīng)該編一些程序了,千萬不要紙上談兵哦。最好找一些有實例且?guī)Ч獗P的書來看,這樣看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它再輸一遍吧,再說直接復(fù)制還不用怕出錯,何樂而不為呢!還有就是要經(jīng)常上一些好的Java編程文章,有好的文章要Cut下來,有問題盡管問,只要問題不是太傻,一般高手都會回答你的。下面介紹幾個好的Java方面的編程網(wǎng)站:
CSDN論壇 http:///那里Java資料比較全;
java.com.cnhttp://.cn/看這域名就知道有多牛,注冊用戶快接近一萬了,同時在線人數(shù)也在一千左右,人氣很旺的;
IBM的開發(fā)者網(wǎng)絡(luò)http://IBM永遠(yuǎn)的藍(lán)色巨人;
那么我書也看了,程序也做了,別人問我的問題我都能解決了,是不是就成為高手了呢?當(dāng)然沒那么簡單,這只是萬里長征走完了第一步。不信?那你出去接一個項目,你知道怎么下手嗎,你知道怎么設(shè)計嗎,你知道怎么組織人員進(jìn)行開發(fā)嗎?你現(xiàn)在腦子里除了一些散亂的代碼之外,可能再沒有別的東西了吧!你現(xiàn)在最缺的是實際的工作經(jīng)驗,而不是書本上那些
憑空想出來的程序。所以你快去找一份Java的編程工作來做吧(如果是在校學(xué)生可以去做兼職啊),在實踐中提高自己,那才是最快的。不過你得祈禱在公司里碰到一個高手,而且他還愿意不厭其煩地教你,這樣好象有點難哦!
還有一個辦法就是讀開放源碼的程序了。我們知道開放源碼大都出自高手,他們設(shè)計合理,考慮周到,再加上有廣大的程序員參與,代碼的價值自然是字字珠嘰,鏗鏘有力(對不起,偶最近《金裝四大才子》看多了)。學(xué)Java必讀的兩個開源程序就是Jive和Pet Store.。Jive是國外一個非常著名的BBS程序,完全開放源碼。論壇的設(shè)計采用了很多先進(jìn)的技術(shù),如Cache、用戶認(rèn)證、Filter、XML等,而且論壇完全屏蔽了對數(shù)據(jù)庫的訪問,可以很輕易的在不同數(shù)據(jù)庫中移植。論壇還有方便的安裝和管理程序,這是我們平時編程時容易忽略的一部份(中國程序員一般只注重編程的技術(shù)含量,卻完全不考慮用戶的感受,這就是我們與國外軟件的差距所在)。Jive的資料在很多網(wǎng)站上都有,大家可以找來研究一下。相信你讀完代碼后,會有脫胎換骨的感覺。遺憾的是Jive從2.5以后就不再無條件的開放源代碼,同時有l(wèi)icence限制。不過幸好還有中國一流的Java程序員關(guān)注它,外國人不開源了,中國人就不能開源嗎?這里向大家推薦一個漢化的Jive版本—J道。Jive(J道版)是由中國Java界大名鼎鼎的banq在Jive 2.1版本基礎(chǔ)上改編而成, 全中文,增加了一些實用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個開發(fā)團(tuán)隊在不斷升級。你可以訪問banq的網(wǎng)站http:///去下載,或到同濟(jì)技術(shù)論壇的服務(wù)器上ftp://nro.shtdu.edu.cn去下,安裝上有什么問題,可以到論壇上去提問。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規(guī)范而推出的開放源碼的程序,應(yīng)該很具有權(quán)威性,想學(xué)J2EE和EJB的朋友不要錯過了。
你一定會高興地說,哈哈,原來成為Java高手就這么簡單啊!記得Tomjava也曾碰到過一個項目經(jīng)理,號稱Java很簡單,只要三個月就可以學(xué)會。其實說這種話的人就如當(dāng)年小日本號稱“三個月拿下中國”一樣大言不慚。不是Tomjava潑你冷水,你現(xiàn)在只是學(xué)到了Java的骨架,卻還沒有學(xué)到Java的精髓。接下來你得研究設(shè)計模式了。設(shè)計模式是高級程序員真正掌握面向?qū)ο蠛诵乃枷氲谋匦拚n。設(shè)計模式并不是一種具體“技術(shù)”,它講述的是思想,它不僅僅展示了接口或抽象類在實際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類的應(yīng)用,從而在原來的Java語言基礎(chǔ)上躍進(jìn)一步,更重要的是,設(shè)計模式反復(fù)向你強(qiáng)調(diào)一個宗旨:要讓你的程序盡可能的可重用。關(guān)于設(shè)計模式的資料,還是向大家推薦banq的網(wǎng)站http:///,他把GOF的23種模式以通俗易懂的方式詮釋出來,純Java描述,真是經(jīng)典中的經(jīng)典。有時間再研究一下MVC結(jié)構(gòu)(把Model-View-Control分離開的設(shè)計思想)吧,現(xiàn)在很流行的Structs就是它的一種實現(xiàn)方式,不過Structs用起來實在是很繁,我們只要學(xué)習(xí)其精髓即可,我們完全可以設(shè)計自己的MVC結(jié)構(gòu)。然后你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會上一個臺階。
做完這些,你不如整理一下你的Java代碼,把那些經(jīng)典的程序和常見的應(yīng)用整理出來,再精心打造一番,提高其重用性和可擴(kuò)展性。你再找?guī)讉€志同道合的朋友成立一個工作室吧,你可以去承接一些項目做了,一開始可能有些困難,可是你有技術(shù)積累,又考慮周全,接下項目來可以迅速作完,相信大家以后都會來找你的,所以Money就嘩啦啦的來了。。。當(dāng)然你也可以參加一些開源項目,一方面可以提高自己,另一方面也是為中國軟件事業(yè)做貢獻(xiàn)嘛!開發(fā)者在互聯(lián)網(wǎng)上用CVS合作開發(fā),用QQ,MSN,E-mail討論聯(lián)系,天南海北的程序員分散在各地卻同時開發(fā)同一個軟件,是不是很有意思呢?
下面介紹兩個好的開源項目網(wǎng)站:
湖北省軟件公共開發(fā)平臺http://gro.clinux.org/
共創(chuàng)聯(lián)盟http://cosoft.org.cn/
哇,好高興哦,我終于成為高手了!非也,非也。古人云:“識時務(wù)者為俊杰”。你知道計算
機(jī)界現(xiàn)在的發(fā)展形勢嗎?你知道微軟的.NET藍(lán)圖和SUN ONE計劃之間的明爭暗斗嗎?你知道計算機(jī)技術(shù)將向何處發(fā)展嗎?其實從各大計算機(jī)廠商最近的動作,都可以看出來“Web服務(wù)將是下一代互聯(lián)網(wǎng)應(yīng)用的制高點”,而微軟的.NET藍(lán)圖和SUN ONE計劃的斗爭焦點,也就是Web服務(wù)。Web服務(wù)就是一個嶄新的分布式計算模型,它是一系列標(biāo)準(zhǔn)的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語言編寫的軟件能夠輕易的集成起來,使網(wǎng)絡(luò)資源和Web站點變成一種服務(wù)而不是混亂的垃圾場。不遠(yuǎn)的將來,我們就可以在家里點擊一下鼠標(biāo),就可以完成出門旅游的全部準(zhǔn)備工作,包括定飛機(jī)票,定旅游線路,定好房間等。請注意,這所有的一切都是Web站點間自動完成的,再也不用象現(xiàn)在一樣,表面上是電子商務(wù),實際上很多環(huán)節(jié)都是人工操作。也許你會覺得這是天方夜談,不過就近的說,你也很有可能承接一個項目,要集成兩個企業(yè)的ERP系統(tǒng)。很有可能上游企業(yè)的系統(tǒng)是用Dephi編的,而下游企業(yè)的系統(tǒng)是用Java編的。你說你是Java高手,大家都看者你怎么做呢。所以啊,你還得學(xué)習(xí)新技術(shù),如Web服務(wù),而且你Dephi也要懂一點吧(Dephi6現(xiàn)在已經(jīng)提供Web服務(wù)的控件了)。你編的Java系統(tǒng),可能要和.NET集成,所以你.NET要懂一點吧?到最后,你可能發(fā)現(xiàn)你已經(jīng)成為Java高手了,但很多時間卻在搞別的技術(shù)。太極張三豐里說,最厲害的招式就是沒有招式,可能就是這個道理吧!
因為剛剛興起,所以網(wǎng)上Web服務(wù)的資料不是很多,我還是給大家推薦幾個網(wǎng)站吧: 中國UDDI技術(shù)聯(lián)盟http:///developerWorks/cn/xml/index.shtml?csdnIBM可是Web服務(wù)的力推者
嗚?你費勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動啊!那么打個電話告訴我吧,什么?我的電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的??
第三篇:IT職場程序員 Java面試中的陷阱
IT職場:程序員Java面試中的陷阱
找工作要面試,有面試就有對付面試的辦法。以下一些題目來自我和我朋友痛苦的面試經(jīng)歷,提這些問題的公司包括IBM, E*Trade, Siebel,Motorola, SUN,以及其它大小公司。
面試是沒什么道理可講的,它的題目有的不合情理、脫離實際。有在紙上寫的,有當(dāng)面考你的,也有在電話里問的,給你IDE的估計很少(否則你趕快去買彩票,說不定中)。所以如果你看完此文后,請不要抱怨說這些問題都能用IDE來解決。你必須在任何情況下準(zhǔn)確回答這些問題,在面試中如果出現(xiàn)一兩題回答不準(zhǔn)確很有可能你就被拒之門外了。
當(dāng)然這些都是Java的基本題,那些面試的人大多數(shù)不會問你Hibernate有多先進(jìn),Eclipse的三個組成部分,或command design pattern,他們都是老一輩了,最喜歡問的就是基礎(chǔ)知識。別小看了這些基礎(chǔ),我朋友水平一流,結(jié)果就栽在一到基礎(chǔ)知識的問題下,和高薪無緣。
好了廢話少說,開始正題。
第一,談?wù)刦inal, finally, finalize的區(qū)別。
最常被問到。
第二,Anonymous Inner Class(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)?
第三,Static Nested Class和Inner Class的不同,說得越多越好(面試題有的很籠統(tǒng))。
第四,&和&&的區(qū)別。
這個問得很少。
第五,HashMap和Hashtable的區(qū)別。
常問。
第六,Collection和Collections的區(qū)別。
你千萬別說一個是單數(shù)一個是復(fù)數(shù)。
第七,什么時候用assert。
API級的技術(shù)人員有可能會問這個。
第八,GC是什么?為什么要有GC?
基礎(chǔ)。
第九,String s = new String(xyz);創(chuàng)建了幾個String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1;s1 = s1 + 1;有什么錯? short s1 = 1;s1 += 1;有什么錯?
面試題都是很變態(tài)的,要做好受虐的準(zhǔn)備。
第十二,sleep()和wait()有什么區(qū)別?
搞線程的最愛。
第十三,Java有沒有g(shù)oto?
很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進(jìn)這家公司。
第十四,數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?
第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?
常問。
第十六,Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢?是用==還是equals()?它們有何區(qū)別?
第十七,給我一個你最常見到的runtime exception。
如果你這個答不出來,面試的人會認(rèn)為你沒有實際編程經(jīng)驗。
第十八,error和exception有什么區(qū)別?
第十九,List, Set, Map是否繼承自Collection接口?
第二十,abstract class和interface有什么區(qū)別?
常問。
第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
第二十二,接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承實體類(concrete class)?
第二十三,啟動一個線程是用run()還是start()?
第二十四,構(gòu)造器Constructor是否可被override?
第二十五,是否可以繼承String類?
第二十六,當(dāng)一個線程進(jìn)入一個對象的一個synchronized方法后,其它線程是否可進(jìn)入此對象的其它方法?
第二十七,try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
第二十八,編程題:用最有效率的方法算出2乘以8等於幾?
有C背景的程序員特別喜歡問這種問題。
第二十九,兩個對象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對不對?
第三十,當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,編程題:寫一個Singleton出來。
下面是答案
第一,談?wù)刦inal, finally, finalize的區(qū)別。
final—修飾符(關(guān)鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載finally—再異常處理時提供finally塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的catch子句就會執(zhí)行,然后控制就會進(jìn)入finally塊(如果有的話)。
finalize—方法名。Java技術(shù)允許使用finalize()方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用的。它是在Object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對象之前對這個對象調(diào)用的。
第二,Anonymous Inner Class(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)?
匿名的內(nèi)部類是沒有名字的內(nèi)部類。不能extends(繼承)其它類,但一個內(nèi)部類可以作為一個接口,由另一個內(nèi)部類實現(xiàn)。
第三,Static Nested Class和Inner Class的不同,說得越多越好(面試題有的很籠統(tǒng))。
Nested Class(一般是C++的說法),Inner Class(一般是JAVA的說法)。Java內(nèi)部類與C++嵌套類最大的不同就在于是否有指向外部的引用上
。具體可見//www.frontfree.net/articles/services/view.asp?id=704&page=1
注:靜態(tài)內(nèi)部類(Inner Class)意味著1創(chuàng)建一個static內(nèi)部類的對象,不需要一個外部類對象,2不能從一個static內(nèi)部類的一個對象訪問一個外部類對象
第四,&和&&的區(qū)別。
&是位運算符。&&是布爾邏輯運算符。
第五,HashMap和Hashtable的區(qū)別。
都屬于Map接口的類,實現(xiàn)了將惟一鍵映射到特定的值上。
HashMap類沒有分類或者排序。它允許一個null鍵和多個null值。
Hashtable類似于HashMap,但是不允許null鍵和null值。它也比HashMap慢,因為它是同步的。
第六,Collection和Collections的區(qū)別。
Collections是個java.util下的類,它包含有各種有關(guān)集合操作的靜態(tài)方法。
Collection是個java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。
第七,什么時候用assert。
斷言是一個包含布爾表達(dá)式的語句,在執(zhí)行這個語句時假定該表達(dá)式為true。如果表達(dá)式計算為false,那么系統(tǒng)會報告一個
Assertionerror。它用于調(diào)試目的:
assert(a >0);// throws an Assertionerror if a <= 0
斷言可以有兩種形式:
assert Expression1;
assert Expression1: Expression2;
Expression1應(yīng)該總是產(chǎn)生一個布爾值。
Expression2可以是得出一個值的任意表達(dá)式。這個值用于生成顯示更多調(diào)試信息的String消息。
斷言在默認(rèn)情況下是禁用的。要在編譯時啟用斷言,需要使用source 1.4標(biāo)記:
javac-source 1.4 Test.java要在運行時啟用斷言,可使用-nableassertions或者-ea標(biāo)記。
要在運行時選擇禁用斷言,可使用-da或者-disableassertions標(biāo)記。
要系統(tǒng)類中啟用斷言,可使用-esa或者-dsa標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言。
可以在預(yù)計正常情況下不會到達(dá)的任何位置上放置斷言。斷言可以用于驗證傳遞給私有方法的參數(shù)。不過,斷言不應(yīng)該用于驗證傳遞給公有方法的參數(shù),因為不管是否啟用了斷言,公有方法都必須檢查其參數(shù)。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。
第八,GC是什么?為什么要有GC?(基礎(chǔ))。
GC是垃圾收集器。Java程序員不用擔(dān)心內(nèi)存管理,因為垃圾收集器會自動進(jìn)行管理。要請求垃圾收集,可以調(diào)用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String(xyz);創(chuàng)建了幾個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型,不能顯式轉(zhuǎn)化為short型。可修改為s1 =(short)(s1 + 1)。short s1 = 1;
s1 += 1正確。
第十二,sleep()和wait()有什么區(qū)別?搞線程的最愛sleep()方法是使線程停止一段時間的方法。在sleep時間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調(diào)度為放棄執(zhí)行,除非(a)“醒來”的線程具有更高的優(yōu)先級(b)正在運行的線程因為其它原因而阻塞。wait()是線程交互時,如果線程對一個同步對象x發(fā)出一個wait()調(diào)用,該線程會暫停執(zhí)行,被調(diào)對象進(jìn)入等待狀態(tài),直到被喚醒或等待時間到。
第十三,Java有沒有g(shù)oto?
Goto—java中的保留字,現(xiàn)在沒有在java中使用。
第十四,數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?
數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。
String有有l(wèi)ength()這個方法。
第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?
方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參
數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。
第十六,Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢?是用==還是equals()?它們有何區(qū)別?
Set里的元素是不能重復(fù)的,那么用iterator()方法來區(qū)分重復(fù)與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當(dāng)兩個分離的對象的內(nèi)容和類型相配的話,返回真值。
第十七,給我一個你最常見到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException,CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException,IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException,NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException,UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么區(qū)別?
error表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。
exception表示一種設(shè)計或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。
第十九,List, Set, Map是否繼承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么區(qū)別?
聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況。不能創(chuàng)建abstract類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類為。取而代之,在子類中實現(xiàn)該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現(xiàn)與子類相似,除了該實現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof運算符可以用來決定某對象的類是否實現(xiàn)了接口。
第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
都不能
第二十二,接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承實體類(concrete class)?
接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構(gòu)造函數(shù)。
第二十三,啟動一個線程是用run()還是start()?
啟動一個線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會立即運行。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個線程。
第二十四,構(gòu)造器Constructor是否可被override?
構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
第二十五,是否可以繼承String類?
String類是final類故不可以繼承。
第二十六,當(dāng)一個線程進(jìn)入一個對象的一個synchronized方法后,其它線程是否可進(jìn)入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
第二十七,try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
會執(zhí)行,在return前執(zhí)行。
第二十八,編程題:用最有效率的方法算出2乘以8等於幾?
有C背景的程序員特別喜歡問這種問題。
<<3
第二十九,兩個對象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對不對?
不對,有相同的hash code。
第三十,當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
是值傳遞。Java編程語言只由值傳遞參數(shù)。當(dāng)一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會改變的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個整數(shù)表達(dá)式。因此傳遞給switch和case語句的參數(shù)應(yīng)該是int、short、char或者byte。long,string都不能作用于swtich。
第三十二,編程題:寫一個Singleton出來。
Singleton模式主要作用是保證在Java應(yīng)用程序中,一個類Class只有一個實例存在。
一般Singleton模式通常有幾種種形式:
第一種形式:
定義一個類,它的構(gòu)造函數(shù)為private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調(diào)用其中的方法。
public class Singleton {
private Singleton(){}
//在自己內(nèi)部定義自己一個實例,是不是很奇怪?
//注意這是private只供內(nèi)部調(diào)用
private static Singleton instance = new Singleton();
//這里提供了一個供外部訪問本class的靜態(tài)方法,可以直接訪問
public static Singleton getInstance(){
return instance;
}
}
第二種形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
//這個方法比上面有所改進(jìn),不用每次都進(jìn)行生成對象,只是第一次
//使用時生成實例,提高了效率!
if(instance==null)
instance=new Singleton();
return instance;
}
}
其他形式:
定義一個類,它的構(gòu)造函數(shù)為private的,所有方法為static的。
一般認(rèn)為第一種形式要更加安全些
Hashtable和HashMap
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個實現(xiàn)
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許
還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在 多個線程訪問Hashtable時,不需要自己為它的方法實現(xiàn)同步,而HashMap
就必須為之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。
第四篇:職場新人全攻略(定稿)
職場新人全攻略
四方人力資源市場人力資源經(jīng)理認(rèn)為每一名成長中的職場新人都應(yīng)該感謝挑剔自己, 給 自己壓力的人,因為正是在這其中,使自己有了奮發(fā)向上,積極求變的動力.根據(jù)筆者幾年的人力資源管理經(jīng)驗,和在不同的企業(yè)觀察到的職場新人的生存模式, 對職場新人提供幾個方面的啟示: 職場真經(jīng)一:忍人所不忍 四方人才市場人力資源經(jīng)理說, 大多數(shù)公司中實習(xí)生初始到職場中工作, 公司往往只是 分配給他們一些非常簡單, 重復(fù)性的事務(wù)去負(fù)責(zé), 主要目的是讓實習(xí)生去更多了解公司業(yè)務(wù) 及運作,對其要求并不高.如果實習(xí)生表現(xiàn)較好,公司領(lǐng)導(dǎo)往往會在潛意識中將其視為公司 未來的職員, 在這種情況下, 公司領(lǐng)導(dǎo)會把一些超出實習(xí)生能力范圍或其職責(zé)范圍的事務(wù)交 待下來,其中可能就包括一些公司業(yè)務(wù)之外的事務(wù),在完成這一任務(wù),許多初入職場的實習(xí)生覺得壓力不小.但聰明的實習(xí)生就知道: 這種貌似挑剔的要求或任務(wù), 其實正是公司考驗自己的命題之 一, 如果自己能忍得住氣, 好好尋找相應(yīng)的完成策略, 自己必然會受到公司領(lǐng)導(dǎo)的刮目相看.職場真經(jīng)二:想人所不想 許多人覺得一些公司對待新人太過挑剔,但是四方人力資源市場人力資源經(jīng)理告訴你, 優(yōu)秀的企業(yè)領(lǐng)導(dǎo)思維總是相似的: 許多領(lǐng)導(dǎo)喜歡從苛刻與挑剔中觀察員工的反應(yīng)與能力, 從 中決定自己對此員工的重用程度.在網(wǎng)上瘋狂轉(zhuǎn)播的微軟公司面試題同樣以挑剔與怪異出名, 如詢問面試者為何下水道的 蓋子總是圓的等.公司實習(xí)生必須知道,對于任何一家公司而言,他們要招收的不僅僅是新 人,而是有創(chuàng)造價值的新人,所以表現(xiàn)出自己的創(chuàng)造價值,這正是完成從實習(xí)生到正式員工 華麗轉(zhuǎn)身的必經(jīng)路徑.從這個角度上, 實習(xí)生必須從心態(tài)上就認(rèn)定自己是公司一員, 從為公司利益考慮的角度, 去思考如何使自己的工作能夠為公司創(chuàng)造些什么,而不僅僅是自己能從公司中學(xué)習(xí)到什么.職場真經(jīng)三:為人所不為 有一名實習(xí)生進(jìn)入一家跨國大公司實習(xí).因為恰逢年終,所以公司業(yè)務(wù)繁忙,許多員工 都加班很晚才回家,業(yè)務(wù)主管必須負(fù)責(zé)為這些員工訂餐,等所有人走后檢查公司安全情況, 然后才能鎖門回家, 這個苦差事令有家庭的業(yè)務(wù)主管苦不堪言, 但公司一時也找不出其他解 決辦法.在這種情況下,這名實習(xí)生主動請纓,向公司愿意替代業(yè)務(wù)主管負(fù)責(zé)這項工作,使業(yè)務(wù) 主管能夠準(zhǔn)點下班照顧其家人.公司主管沒有想到這項苦差事竟然有人愿意主動接受, 于是
就批準(zhǔn)其接手.在三個月繁忙時間中, 這位實習(xí)生工作非常盡職細(xì)心, 所有人都對其表現(xiàn)非常滿意—— 在公司十多名實習(xí)生中, 這名愿意為人所不為的實習(xí)生很快就如愿以
償被內(nèi)定為未來的新員 工.職場真經(jīng)四:通過各種渠道迅速了解公司和相關(guān)業(yè)務(wù) 四方人力資源市場人力資源經(jīng)理說,作為剛進(jìn)入職場的實習(xí)生,從學(xué)校到社會,到企業(yè) 是一個很大的轉(zhuǎn)折, 需要不斷的通過各種方式和渠道了解所在企業(yè)的相關(guān)情況.很多企業(yè)的 領(lǐng)導(dǎo)會告訴你, 你要盡快的了解企業(yè)和相關(guān)的業(yè)務(wù), 但是往往很多領(lǐng)導(dǎo)不會很仔細(xì)的告訴你, 你應(yīng)該怎么去了解.聰明的職場新人會通過不斷找同時溝通,通過公司的文件,公司的組織 架構(gòu)及公司的網(wǎng)站等對公司有一個很好的了解;而很多的職場新人往往就是進(jìn)入職場后所做 的事情是擔(dān)心自己如何融入企業(yè), 而沒有采取很好的方法, 將這樣的擔(dān)心一直保持到離開這 家企業(yè).職場真經(jīng)五:熟悉公司人員 根據(jù)四方人力資源市場調(diào)查組的調(diào)查顯示, 很多剛?cè)肼殘龅男氯? 往往在離開企業(yè)的時 候,連企業(yè)里面的很多同事所在部門和名字都不知道.往往一些企業(yè)的領(lǐng)導(dǎo)就會要求,你一 定要盡快的了解公司的相關(guān)業(yè)務(wù)部門和人員, 而有些領(lǐng)導(dǎo)往往讓你自己去和相關(guān)的人員進(jìn)行 溝通,這對于一些新人壓力是很大,但是對于剛進(jìn)入職場的新人,我們建議你在熟悉公司背 景和相關(guān)業(yè)務(wù)的時候,也能夠迅速的通過各種渠道熟悉公司的各部門及負(fù)責(zé)相關(guān)業(yè)務(wù)的人 員.因為你只有熟悉了相關(guān)的部門和人員后,你辦理事情的時候才能少走彎路,你少走彎路 了你才能迅速的找到工作的狀態(tài),這樣,你就能在辦事和為人上找到很好突破口,從而為你 能留在企業(yè)增加更高的機(jī)會.最后, 四方人力資源市場人力資源經(jīng)理告訴你, 職場永遠(yuǎn)充滿利益的斗爭, 欲望的角逐, 這是職場永恒不變的旋律, 職場新人們要學(xué)識的是如何在荊棘遍布的職場漫途中尋求到適合 自己發(fā)展的康莊大道,并以坦然,淡定的心態(tài)去面對一切的苛嚴(yán)及挑剔.
第五篇:java程序員面試題
1、你怎樣理解Struts,又那些配置文件,以及作用? 理解:http://ruixin.iteye.com/blog/899289 配置文件:struts.xml 作用:struts 框架mvc 實現(xiàn)低耦合,便于程序的維護(hù)~ 配置文件控制流程的轉(zhuǎn)向 很清晰~ 主要負(fù)責(zé)具體業(yè)務(wù)的實現(xiàn)和頁面的轉(zhuǎn)向~
2、怎么樣來捕獲數(shù)據(jù)庫中的異常?
3、如何處理網(wǎng)頁中的驗證信息,如何友好的進(jìn)行處理?
4、用javaScript實現(xiàn)java中的監(jiān)聽器功能?
5、你對對日外包的看法?
6、數(shù)據(jù)庫連接方式由哪幾種?
Jdbc、連接池、hibernate
7、你清楚哪幾種設(shè)計模式,談?wù)劯鞣N設(shè)計模式的類結(jié)構(gòu)。
8、談?wù)刯sp和sevlet的區(qū)別,以及它們性能上的區(qū)別。
jsp是servlet的一種簡化,jsp編譯后是“類servlet”。servlet 主要是用來處理業(yè)務(wù)層;
jsp 則是主要負(fù)責(zé) 表現(xiàn)層。
servlet完全是java程序代碼構(gòu)成,擅長于流程控制和事務(wù)處理,而通過servlet來生成動態(tài)網(wǎng)頁很不直觀; 對于靜態(tài)的html標(biāo)簽,servlet都必須使用頁面輸出流逐行輸出。Servlet中沒有內(nèi)置對象。Jsp由html代碼和jsp標(biāo)簽構(gòu)成可以方便地編寫動態(tài)網(wǎng)頁,在struts框架中,jsp位于MVC設(shè)計模式的視圖層,而servlet位于控制層。
總之,使用jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,至于jsp中的java腳本如果鑲嵌到一個類中,由jsp容器完成,而servlet則是個完整的java類,這個類的service方法用于生成對客戶端的響應(yīng)
9、如何來編寫存儲過程,如何優(yōu)化存儲過程,以及存儲過程和TSQL的區(qū)別。
10、提供的培訓(xùn),CMM-5軟件開發(fā)流程培訓(xùn)、代碼編寫規(guī)范和業(yè)務(wù)流程培訓(xùn)、對日語的培訓(xùn)。
1、為什么要選擇這個行業(yè),和計算機(jī)專業(yè)的相比有什么優(yōu)勢?
2、Servlet是什么,以及生命周期?
Servlet被服務(wù)器實例化后,容器運行其init方法,請求到達(dá)時運行其service方法,service方法自動派遣運行與請求對應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實例銷毀的時候調(diào)用其destroy方法。
與cgi的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過多線程方式運行其service方法,一個實例可以服務(wù)于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。
3、怎么理解事務(wù)?
4、怎么理解MVC?
自己做自己的事情,主要強(qiáng)調(diào)分層,5、同時插入大量數(shù)據(jù),使用何種方法優(yōu)化?Batch
6、多個有關(guān)系得怎么樣操作?
7、你認(rèn)為你還有什么優(yōu)點在前面沒有提到?
8、對加班的看法?
9、與上級意見不一致時怎么樣處理?10、11、12、13、14、15、16、17、18、19、20、21、22、23、你如何理解團(tuán)隊精神?
你怎樣處理學(xué)習(xí)新技術(shù)和項目開發(fā)之間的矛盾? 怎樣去學(xué)習(xí)新技術(shù)?
作為一個初級程序員怎么樣彌補(bǔ)與有經(jīng)驗程序員之間的差距? 你對索引的理解,索引有幾種,什么時候用索引? 對Oracle理解?
怎樣優(yōu)化復(fù)雜的查詢語句? 你對Jdbc理解?
對Finally塊的理解和應(yīng)用? 游標(biāo)的理解? ResultSet 重載,重寫? 簽名
EJB的事務(wù),Hibernate的事務(wù)? Struts的標(biāo)簽? 重定向和跳轉(zhuǎn)? A、
a.地址欄不改變跳轉(zhuǎn)——服務(wù)器端跳轉(zhuǎn),服務(wù)器之間內(nèi)部轉(zhuǎn),相同的request,可傳參;
b.執(zhí)行到跳轉(zhuǎn)語句后無條件立刻跳轉(zhuǎn)——之后的代碼不再被執(zhí)行;
注意:如果使用forward跳轉(zhuǎn),則一定要在跳轉(zhuǎn)之前釋放掉全部的資源;
c.使用forward時,request設(shè)置的屬性依然能保留在下一個頁面(setAttribute);d.通過
e.地址中的”/”代表是:http://localhost:8080/Test B、response.sendRedirect(“地址”):效率低,速度慢
a.地址欄改變跳轉(zhuǎn)——客戶端跳轉(zhuǎn)(其中地址可以是任意的)
b.所有代碼執(zhí)行完畢之后再跳轉(zhuǎn),跳轉(zhuǎn)語句后面的代碼還是會執(zhí)行,除非在其后面加上return(return)需復(fù)雜一些。
<% Response.sendRedirect(“aa.jsp”);boolean b = true;
if(b){ Return;} System.out.println(“aaaaaaaaaa”);%>
c.不能保存request屬性——地址改變了,客戶端跳轉(zhuǎn),不同的request d.通過對URL地址的重寫傳遞參數(shù):
response.sendRedirect(“responseDemo04.jsp?id=mldn”);
e.地址中的”/”代表是:http://localhost:8080/
下面是兩種比較重要的跳轉(zhuǎn),我還是與上次的一次,把我做的筆記貼出來:24、25、Hibernate的左聯(lián)結(jié)和右連接,緩存,數(shù)據(jù)加載? 面向?qū)ο笕绾卫斫?
26、EJB中CMP和BMP,SessionBean的機(jī)制?27、28、29、對日外包是否有抵觸情緒? 如何減少Servlet的請求? 對設(shè)計模式了解多少?作過的項目中用過那些設(shè)計模式? 30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、怎樣看待團(tuán)隊合作,在團(tuán)隊合作中你扮演什么樣的角色,遇到技術(shù)難題時怎么解決? Exception的層次結(jié)構(gòu)? EJB對數(shù)據(jù)庫的訪問機(jī)制? Struts中是否有事務(wù)處理? Hibernate的其它功能(除了ORM)? 如何提高數(shù)據(jù)庫中的數(shù)據(jù)查詢效率? 作為項目經(jīng)理如何對組內(nèi)成員分工? 描述一下你做過項目的流程。
加班到12點,突然有人來問你技術(shù)上的難題,你會如何處理? Oracle的冷備份、熱備份 Strurs中怎樣實現(xiàn) Hibernate怎樣實現(xiàn)ORM Spring 的事務(wù)處理機(jī)制
Strurs的驗證方式,Javascript的驗證的方式
一個是服務(wù)器端驗證,一個是客戶端驗證
Struts的工作機(jī)制 Delete/trancate的區(qū)別
trancate與delete都是刪除數(shù)據(jù),不同的是trancate是將表的所有數(shù)據(jù)都刪除,而delete可以有選擇地刪除數(shù)據(jù); delete刪除數(shù)據(jù)是記錄在日志中的,可以通過其將數(shù)據(jù)恢復(fù),而trancate則是將整個表截斷,其操作是不記錄在日志里的。46、47、48、作為項目組長,你遇到的最大問題是什么?如何解決?
Ajax/內(nèi)嵌框架實現(xiàn)局部刷新,有什么差別?
Exception/Error的區(qū)別,在什么情況下可以拋出RuntimeException 父類不同
知道異常和錯誤最本質(zhì)的區(qū)別就是異常能被開發(fā)人員處理而錯誤時系統(tǒng)本來自帶的,一般無法處理也不需要我們程序員來處理。
在程序運行時候出錯而又不是系統(tǒng)原因差生的,一般是由于程序原因產(chǎn)生,比如程序?qū)懙牟粔驀?yán)謹(jǐn)、完善
典型的RuntimeException
有
ArithmeticException、ClassCastException、IndexOutOfBoundsException、NullPointerException、UnsupportedOperationException 等.49、50、51、52、53、54、55、56、57、58、59、Orcale 物化視圖(MV)
業(yè)務(wù)處理模塊中,是如何處理事務(wù)? Sql語句如何優(yōu)化 數(shù)據(jù)庫右連接
JDBC的連接關(guān)閉在哪?
Finally語句塊內(nèi)
錯誤處理模塊是放在哪個層的。接口能否繼承接口。
接口可以繼承接口..但是要使用extends~而不是用implements 抽象類能否繼承實體類。
抽象類是可以繼承實體類,但前提是實體類必須有明確的構(gòu)造函數(shù) 答案很明確,可以繼承。
項目中查詢時怎么樣實現(xiàn)的?
作為項目負(fù)責(zé)人你是管理這個團(tuán)隊的?
在你做項目過程中遇到些什么問題,是怎么樣解決的?
Jquery中的幾種選擇器:
Javascript如何進(jìn)行數(shù)字和字符串之間的轉(zhuǎn)換?
數(shù)字類型轉(zhuǎn)換成String類型用 對象=對象.toString()方法,字符串轉(zhuǎn)換成數(shù)字類型則是對象=Number(對象);