2009年5月27日
進行Java軟件開發,第一步就是安裝JDK。
以下操作基本上都是在終端窗口中進行。
輸入下述命令安裝Java SDK 6以及相關軟件:
sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre sun-java6-source sun-java6-plugin sun-java6-fonts
這個過程需要時間較長,因為要下載兩三百M的軟件包。
如果你需要安裝Java的文檔,以便在線參考,需要下載java6文檔jdk-6u10-docs.zip,并將其復制到/tmp目錄,然后輸入下述命令進行安裝:
sudo apt-get install sun-java6-doc
如果你還需要在Mozilla等瀏覽器中運行Java Applet等,需要輸入下列命令安裝瀏覽器Java插件:
sudo apt-get install sun-java6-plugin
如果系統中安裝有多個版本JDK,需要指定默認的JDK版本。在命令行窗口中輸入下述命令:
sudo update-alternatives --config java
在出現的列表中選擇/usr/lib/jvm/java-6-sun/jre/bin/java所在的那一行。
在命令行窗口中輸入下述命令:
sudo update-java-alternatives -s java-6-sun
如果是在桌面環境,輸入下面的命令,以打開文本編輯器修改/etc/jvm文件:
sudo gedit /etc/jvm
如果是在服務器環境,因為沒有圖形界面,輸入下面的命令,打開vim字符界面編輯器修改/etc/jvm文件:
sudo vim /etc/jvm
在文件編輯環境下,加入下列內容到/etc/jvm文件中作為第一行:
/usr/lib/jvm/java-6-sun
類似上面的步驟,輸入sudo vim /etc/environment或sudo gedit /etc/environment命令,編輯/etc/environment文件,加入如下內容:
JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib:/usr/lib/jvm/java-6-sun/jre/lib
JAVA_OPTS='-Xms768m -Xmx768m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true'
PATH=/usr/lib/jvm/java-6-sun/bin:/usr/lib/jvm/java-6-sun/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh:en_US:en
注意:上述文件中的每一行分隔符應該是linux換行符而不能是windows換行符,因此千萬不能在windows環境下編輯該文件。
在/etc/environment中設置的環境變量是全局性的,對每個Linux用戶都生效。要使得環境變量的設置立即生效,請重啟計算機,或者輸入下述命令使得環境變量立即生效:
sudo source /etc/environment
至此,JDK安裝完畢。
在進行Java開發環境安裝之前,通常我們還需要進行下面的一些相關設置,以方便我們隨后的工作。
設置桌面工作站
在用光盤安裝Ubuntu Desktop的過程中,由于Ubuntu軟件源默認選擇的并不是最快的源,所以往往無法安裝語言支持,使得界面語言顯示為英文。我們通常做下述的工作:
對于大多數國內的網絡來說,cn99是最快的Ubuntu軟件源。遵循以下的步驟更換軟件源為cn99:
(1)單擊菜單“系統(System)” -> “系統管理(System Administrator)” -> “軟件源”,進入軟件源配置對話框(這個過程可能需要輸入口令)。
(2)在對話框的“Ubuntu軟件”標簽頁下的“下載自:”下拉框中選擇“中國”下的ubuntu.cn99.com軟件源。
(3)單擊“關閉”按鈕。這時候系統會提示是否更新的信息,請選擇更新。
(1)單擊菜單“系統(System)” -> “系統管理(System Administrator)” -> “語言支持(Language Supports)”,進入“語言”對話框。
(2)如果提示“不完整的語言支持”,按照提示安裝語言支持,并選擇漢語作為首選的界面語言。
Linux下面的字體是免費的,其美觀程度比不上微軟的TTF字體,特別是可用的中文字體更有限。我們可以從Windows那里借用微軟的TTF字體。
(1)輸入下面的命令安裝免費的微軟字體。
sudo apt-get install msttcorefonts
如果你的電腦同時安裝有Windows操作系統,那么可以通過下面的步驟把Windows的字體復制到Ubuntu:
(2)在文件瀏覽器中單擊Windows分區,使得Ubuntu自動掛接(mount)Windows的分區。下面假設Windows所在分區的卷標是“WINDOWS”。
(3)輸入下面的命令,在/usr/share/fonts/truetype目錄下面建立一個叫做msttfonts的子目錄,保存從Windows復制過來的字體
sudo mkdir /usr/share/fonts/truetype/msttfonts
(4)依次輸入下面的命令,復制Windows的字體到Ubuntu:
cd /usr/share/fonts/truetype/msttfonts
sudo cp /media/SYSTEM/WINDOWS/Fonts/*.ttf .
sudo cp /media/SYSTEM/WINDOWS/Fonts/*.ttc .
sudo cp /media/SYSTEM/WINDOWS/Fonts/*.TTF .
安裝Apache、PHP和MySQL
對于Java開發來說,Apache、PHP和MySQL都是有用的。例如Apache可以作為Maven的組件倉庫的載體,MySQL可以作為開發數據庫,而用PHP編寫的Wiki、Blog和溝通管理軟件等,對于軟件開發也很有用。
輸入下列命令安裝這三個軟件:
sudo apt-get install mysql-server mysql-client mysql-query-browser mysql-admin
sudo apt-get install apache2 php5 libapache2-mod-php5 php5-mysql libapache2-mod-auth-mysql
為了讓MySQL支持國際化,應設置其默認的語言是UTF-8。為此我們輸入下面的命令編輯/etc/mysql/my.cnf文件:
sudo gedit /etc/mysql/my.cnf
在其中的[mysqld]節內加入下面一行:
default-character-set=utf8
保存后退出文本編輯器,輸入下面的命令使得更改生效:
sudo /etc/init.d/mysql restart
至此,基本環境配置完畢。
在我而言,Linux是比Windows好的多的軟件開發環境,其中Ubuntu是非常方便易用的Linux發行版。下面列出Ubuntu對于Windows的一些關鍵優點所在:
在Windows下面,隨著安裝的軟件越來越多,系統越來越笨重。不知道是不是Windows系統的特性,我安裝完常用軟件之后,還沒有進入開發環境,內存已經占用700M以上。在Linux下面基本不存在這樣的問題。
在Windows下面,我們要安裝一個軟件,例如Maven,需要:(1)到apache網站去下載Maven,(2)解壓或安裝,(3)設置環境變量,把Maven的可執行文件目錄加入到PATH環境變量,等等。如果Maven升級了,就要再一次重復上述過程。
在Linux下面,一切非常簡單:在終端窗口輸入sudo apt-get install
maven2,Ubuntu就會自動下載、安裝和配置Maven,自動把Maven的可執行文件目錄加入到PATH環境變量,完全不需要用戶的手動干預。
軟件升級也一樣簡單。首先輸入sudo apt-get update命令檢查Ubuntu軟件倉庫中是否有新版本的軟件,然后輸入sudo
apt-get upgrade就可以升級所有已經有新版本的軟件。升級完成就可以直接使用了。
對于習慣使用maven或ant等自動化構建軟件工具的程序員來說(恕我冒犯,我認為不使用這些工具的人根本稱不上Java開發人員),經常要在終
端窗口中重復輸入一些常用的命令,例如mvn clean install, /etc/init.d/tomcat6
restart等等。這時候,命令記憶就非常有用了。在Windows中,也有一定的命令記憶功能。當你在命令窗口下工作時,按向上箭頭鍵可以顯示用戶輸
入的上一條命令,按向下箭頭鍵可以顯示用戶輸入的下一條命令,但也僅此而已。如果關閉了命令窗口,重新打開窗口這些記憶就完全丟失了。
在Linux下面則根本不同。Linux可以記憶至少數百條以前輸入的指令,關閉終端窗口之后也不會丟失記憶。更強悍的是,就算關機重啟之后,這些記憶仍然不會消失。仍然可以通過上下箭頭鍵找回以前輸入過的命令。
Linux下面另一個對開發者很貼心的功能就是命令補齊。在Ubuntu下面,你只要輸入命令/目錄/文件的部分名稱,然后按alt + /,Ubuntu會自動給你補齊剩下的部分。這樣我們可以少很多擊鍵。
Windows是病毒和木馬滋生的溫床,相對而言,Linux是一片凈土(不絕對,但相對于Windows來說,絕對是兩個數量級以上的免疫力)。我們不需要安裝殺毒軟件,因此CPU和內存占用更小,程序運行更快,不一而足。
- 其他優點還有很多,例如對iso文件的掛接可以直接通過命令行進行,不像Windows需要安裝專門的虛擬光驅軟件等。因為與軟件開發關系不大,所以不再論述。
上面說的是Linux相對于Windows的優點。至于缺點,最主要的就是在Linux上面運行的軟件比Windows少得多。但是對于Java軟件開發來說,這不是一個大問題,因為:
例如Eclipse, NetBeans, Maven, Ant, JDK, Apache, PHP, MySQL, 等等。以及與開發間接相關的軟件FireFox, QQ, MSN, 等等。
- 即使沒有Linux版本,也有相同或相似功能的替代品。
例如IE可以用FireFox代替(剛好強迫實現了瀏覽器兼容性),迅雷可以用wget代替,Photoshop可以用GIMP代替(GIMP是免
費的,順便免除了成本的負擔——如果你購買正版Photoshop的話,或者免除了道德和法律的負擔——如果你使用盜版的Photoshop的話),等
等。
以后的系列文章,著重介紹在Ubuntu 9.04下Java開發環境和基礎設施的搭建。所有的內容都出自我們真實的軟件開發經驗,有相當的可行性和可靠性。如果大家在設置過程中有什么不明白的地方,歡迎隨時交流。
2009年4月9日
目前,Linux越來越流行,已經足以應付我們日常的開發使用需要。Ubuntu是目前市場占有率最大的linux發行版,我們公司在進行軟件開發的時候,無論是開發工作站還是運行服務器都是采用Ubuntu操作系統。現在把我們在Ubuntu上面搭建Java開發和運行環境的過程拿出來和大家分享。
以下操作基本上都是在終端窗口中進行。
1、JDK安裝
JDK安裝有如下步驟:
(1)聯網安裝JDK最新版(1.6版)
輸入下述命令安裝Java SDK 6以及相關軟件:
sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre sun-java6-source sun-java6-plugin sun-java6-fonts
(2)設置默認的JDK版本
如果系統中安裝有多個版本JDK,需要指定默認的JDK版本。在命令行窗口中輸入下述命令:
sudo update-alternatives –config java
在出現的列表中選擇/usr/lib/jvm/java-6-sun/jre/bin/java所在的那一行。
在命令行窗口中輸入下述命令:
sudo update-java-alternatives -s java-6-sun
(3)、修改/etc/jvm文件:
sudo gedit /etc/jvm
加入下列內容作為第一行:
/usr/lib/jvm/java-6-sun
(4)、設置全局變量
修改/etc/environment文件,加入如下內容:
JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib:/usr/lib/jvm/java-6-sun/jre/lib
JAVA_OPTS=’-Xms768m -Xmx768m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true’
PATH=/usr/lib/jvm/java-6-sun/bin:/usr/lib/jvm/java-6-sun/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh:en_US:en
注意:上述文件中的每一行分隔符應該是linux換行符而不能是windows換行符,因此千萬不能在windows環境下編輯該文件。
2、安裝Ant和Maven
Ant和Maven是兩個最著名的Java構建工具。
(1)軟件包安裝
它們的安裝過程非常簡單,在命令窗口中直接輸入下述的命令:
sudo apt-get install ant ant-optional maven2
(2)設置環境變量
有時候,運行ant或maven的時候會報“內存不足”或“Java堆空間不足”的錯誤,可以通過設置ANT_OPTS和MAVEN_OPTS環境變量解決。通過如下命令打開/etc/environment文件:
sudo gedit /etc/environment
添加下述兩行:
ANT_OPTS=”-Xmx1024M”
MAVEN_OPTS=”-Xms768m -Xmx768m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m”
文章來源:
http://www.dayatang.com/wordpress/?p=3
同事購買了一臺聯想Thinkpad R61e筆記本電腦,安裝了Windows 和Ubuntu雙系統。在Windows下面能夠正常識別無線網卡,但是在Linux下面卻不能使用。
經參考網上的資料,按以下的步驟解決了這個問題。
1、禁用原有的無線網卡驅動
進入Ubuntu之后,單擊“系統”->“系統管理”->“硬件驅動”,能夠看到系統已經識別了無線網卡
Ethernet controller: Atheros Communications Inc. AR242x 802.11abg
Wireless PCI Express Adapter (rev
01),并且已經激活,但不能工作。單擊“禁用”按鈕禁用它。為了保證禁用完成,最好重新啟動計算機。
以下步驟都在終端窗口中進行。
2、安裝編譯驅動程序源碼所必須的軟件
通過以下命令安裝build-essential程序包:
sudo apt-get update
sudo apt-get install build-essential
3、下載madwifi驅動
wget http://snapshots.madwifi-project.org/madwifi-hal-0.10.5.6-current.tar.gz
如果最新版本比0.10.5.6高,請下載最新版本。
4、解壓它
tar zxvf madwifi-hal-0.10.5.6-current.tar.gz
5、進入解壓后的目錄
cd madwifi-hal-0.10.5.6-r3986-20090409/
(根據版本的不同,目錄名不一定與上述目錄相同,請自行更改。)
6、編譯軟件包
make
7、安裝編譯好的軟件包
sudo make install
8、裝載剛剛創建的模塊
sudo modprobe ath_pci
這時候新的無線網卡驅動已經安裝好,Ubuntu應該已經識別無線網卡,可以無線聯網了。
為了在關機重啟之后系統仍然能夠自動啟動無線網卡驅動模塊,還需要作以下的工作:
9、將無線網卡驅動模塊添加到內核引導模塊列表中
sudo gedit /etc/modules
上述命令用文本編輯器打開了/etc/modules文件,在其最后添加一行:
ath_pci
保存并關閉此文件。重啟計算機后,系統應該能夠自動啟用無線聯網功能了。
特別說明:升級Linux內核后,似乎無線聯網功能又不能啟動了,原因可能是驅動要和內核一起編譯。解決的方法很簡單:重做第7和第8步就OK了。
文章來源:
http://www.dayatang.com/wordpress/?p=26
2009年3月20日
本教程向你展示用jpdl構造的簡單流程和使用API管理流程運行時執行的過程。
本教程的形式是解釋一批范例。這些范例著眼于一個特定的主題并包含大量的注解。這些范例也能夠在jBPM下載軟件包的src/java.examples目錄中找到。
最好的學習方式是創建一個項目,并通過創建下面的范例的變體來體驗它。
在開始之前,首先下載和安裝jBPM。
jBPM包含一個圖形設計器工具,可用于創建在這些范例中顯示的xml文件。你可以在《下載和安裝jBPM》部分找到下載這個圖形設計器的指南。你不需要為了完成本教程而使用這個圖形設計工具。
Hello World范例
流程定義是一個有向圖,由節點(node)和轉移(transition)組成。Hello world流程有三個節點。為了看到這些代碼片段如何組合在一起,我們從一個簡單的流程開始,不使用圖形設計工具。下面的圖顯示hello world流程的圖形表示:
圖 3.1.?Hello world流程圖
public void testHelloWorldProcess() {
// 本方法顯示一個流程定義和此流程定義的執行。這個流程定義有三個節點:一個未命名的
// start狀態,一個狀態s和一個名為end的結束狀態。
// 下面一行將一段xml文本解析為一個流程定義ProcessDefinition。流程定義是對流程
// 的正式描述,表示為一個Java對象。
ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
"<process-definition>" +
" <start-state>" +
" <transition to='s' />" +
" </start-state>" +
" <state name='s'>" +
[...]
文章來源:
http://www.dayatang.com/wordpress/?p=17
本章引導你通過最初的步驟取得jBPM,并提供一個快速啟動和運行它的初步的指南。
下載和安裝jBPM
要獲得最新發布的jBPM第3版,到jBPM jPDL 3 package on Sourceforge.net 站點下載最新版的安裝程序(installer)。
jBPM installer 創建一個運行時安裝,并能夠下載和安裝eclipse流程設計器和JBoss服務器。你也可以在沒有應用服務器的情況下使用jBPM,但是所有這些組件都已經預先配置好并能夠相互協作達到開箱即用,使得你能夠對jBPM快速上手。為了啟動這個installer,打開命令行窗口,轉到你下載的jBPM文件所在的目錄,然后鍵入:
java -jar jbpm-installer-{version}.jar
遵從指示一步步進行下去。該安裝程序可選下載任何支持的JBoss版本和Eclipse的精確版本。
當把jBPM安裝到JBoss的時候,將在服務器配置的deploy目錄之下創建一個jBPM子目錄。所有jBPM相關文件都集中在這個deploy/jbpm目錄中。JBoss安裝中的所有其他文件都不會觸及到。
你可以使用自己的Eclipse(如果它的版本為3.4以上的話) ,也可以使用安裝程序下載的Eclipse。為了在Eclipse中安裝圖形流程設計器,直接使用Eclipse軟件更新機制(Help –> Software Updates –> …) 并指向這個文件designer/jbpm-jpdl-designer-site.zip 即可。
JBoss jBPM社區頁面
The jBPM社區頁面提供關于到哪里查找論壇、wiki、問題跟蹤、下載、郵件列表和源代碼倉庫等信息的所有細節。
文章來源:
http://www.dayatang.com/wordpress/?p=14
JBoss jBPM 是一個靈活的、可擴展的流程語言框架。jPDL是一種建立在這個公共框架之上的流程語言。它是一種直觀的流程語言,用任務(tasks)、異步通訊的等待狀態(wait states)、定時器(timer)、自動化的動作(action)……等術語來圖形化地表示業務流程。jPDL擁有最強有力的、可擴展的控制流機制把這些操作結合在一起。
jPDL的依賴性非常小,能夠像使用一個java類庫一樣容易地使用它。但是,通過把它部署在一個J2EE集群的應用服務器中,也能夠把它用在需要極大的吞吐量的環境中。
jPDL能夠配置使用任何類型的數據庫,部署在任何應用服務器中。
概覽
工作流和BPM的核心功能被打包成一個簡單的java類庫。這個類庫包含一個服務,用于管理和執行保存在iPDL數據庫中的流程。
圖1.1 jPDL組件概覽
jPDL套件
本套件包含所有的jBPM組件,打包成一個易于下載的文件形式。它內部包括下列文件夾:
config, 用于標準java環境的配置文件。
db, 用于創建數據庫的SQL腳本,和數據庫兼容性信息。
designer, 用于編制jPDL流程和安裝腳本的Eclipse插件(它不包含在單純的jpdl下載文件中)參見jPDL圖形流程設計器部分。
doc, 用戶指南和JavaDoc文檔。
Examples 范例文件。
lib, jBPM所依賴的類庫。要獲得進一步的信息,請參考“第三方類庫”部分。
server, 一個預先配置好的jBoss應用服務器,在一個控制臺web應用中包含了jBPM(不包含在單純的jpdl下載文件中)。
src, jBPM和身份認證組件的java源代碼。
這個預先配置好的JBoss應用服務器安裝了下列的組件:
Web控制臺(web console), 打包為一個web存檔(war文件)。此控制臺能夠由流程參與者和jBPM管理者使用。
工作執行器(job executor) 用于啟動定時器和異步消息。在控制臺web應用程序中有一個servlet上下文監聽器,它啟動工作執行器,后者產生一個線程池,用于監測和執行定時器和異步消息。
jBPM數據庫, 一個進程內hypersonic數據庫,包含jBPM數據表。
一個范例流程, 已經部署到jBPM數據庫中。
身份組件(Identity component)類庫是控制臺web應用的一部分。身份組件的表存在于jBPM數據庫中(這些表以“JBPM_ID_”為前綴)。
jPDL圖形流程設計器
jPDL也包括一個圖形設計器工具,該工具用于創作業務流程,它是一個Eclipse插件。
該圖形設計工具的最主要的特征是同時支持業務分析師和技術開發者,從而允許從業務流程建模到實際開發實現的平滑過渡。
該Eclipse插件以一個本地更新站點(普通zip文件)的形式提供,可通過標準的Eclipse軟件更新機制安裝。jPDL圖形流程設計器插件也包含在 JBoss Tools, JBoss Developer Studio 和 SOA Platform.中。
jBPM控制臺Web應用程序
JBPM控制臺web應用程序有兩個目的。首先,它作為中心用戶接口,與在流程執行過程中產生的運行時任務進行交互。其次,它是一個管理和監控控制臺,能夠檢視和操控運行時流程實例。 它的第三個功能是業務活動監控,這是一些流程執行的統計信息,這些信息對于管理員找出瓶頸和進行其他種類的優化很有用。
JBPM核心類庫
JBoss jBPM核心類庫是普通的Java(J2SE)類庫,用于管理流程定義和流程實例執行的運行時環境。
JBoss jBPM是一個java類庫,因此它能夠在任何java環境中使用,例如web應用程序,swing應用程序,EJB,Web Service……等等。 jBPM庫也可以打包并暴露為一個無狀態會話EJB,這允許集群部署和在極高吞吐量環境下的可縮放性。此無狀態會話EJB應該針對J2EE 1.4規范編寫,以保證可以部署到任何應用服務器之中。
依據你所使用到的功能,類庫 lib/jbpm-jpdl.jar對一些第三方類庫如hibernate、dom4j及其它類庫有依賴。我們已經做出巨大的努力使得你只需要實際使用到的依賴庫。第三方依賴的問題在第四章(部署)中進一步闡述。
JBPM在內部使用hibernate進行持久化。除了傳統的o/R映射功能之外,hibernate也解決了不同數據庫使用不同SQL方言的問題,使得jBPM可以移植到所有目前流行的數據庫之上。
JBoss jBPM API可以從你項目中的任何java軟件訪問,例如web應用程序,EJB程序,
Web Service組件、消息驅動Bean或任何其他java組件等。
JBoss jBPM身份組件
JBoss jBPM能夠和任何包含用戶和其他組織機構信息的公司目錄集成。但是,對于沒有提供組織機構信息組件的項目,JBoss jBPM包含了這個身份組件。 該身份組件中使用的模型比傳統的Servlet-、EJB-和門戶中使用的模型更豐富。
要進一步了解,請參考《身份組件》部分。
JBoss jBPM工作執行器(Job Executor)
job執行器是一個用于在標準Java環境下監控和執行job的組件。Job用于定時器和異步消息。在企業環境中,JMS和EJB定時器服務可以用于這一目的。相反,Job執行器能夠用在缺乏JMS或EJB的環境中。
Job執行器組件被打包在核心jbpm-jpdl類庫中,但是需要以以下的方式之一部署:或者在web應用部署描述符(WEB-INF/web.xml)中注冊 JobExecutorLauncher servlet上下文監聽器,使得在servlet上下文創建/銷毀的時候啟動/停止Job執行器;或者開啟一個單獨的JVM,在其中編程式啟動Job執行器。
文章來源:
http://www.dayatang.com/wordpress/?p=10
目前最流行的開源工作流軟件有三個:Shark, OSWorkflow和jBPM。jBPM是其中最有前途的。
對jBPM用戶指南的翻譯,一直都有人在做。但是通常針對的都是jBPM的早期版本(3.0或3.1),而且翻譯的謬誤和文理不通之處甚多,因此有自己翻譯的念頭。
不敢說自己翻譯的會有多好,畢竟我的英文水平不高,jBPM經驗也不多。拋磚引玉吧。如有哪位同仁愿意指正,萬分感激。
文章來源:
http://www.dayatang.com/wordpress/?p=5
2007年8月9日
近來被公司任命為面試官,專門面試Java程序員。感謝公司領導,面試過程給我沉悶的軟件開發生涯增添了很多樂趣。
某日,來了一位應聘者。
他的簡歷令我肅然起敬。南方某名牌大學著名教授的計算機科學碩士研究生,在該大學某研究所任職,十多年的軟件開發經驗,參與項目百余個,單是列出項目的名字就密密麻麻占了兩頁紙。技能表格里面數十項技能全部都精通或熟練,一個都沒有遺漏。我當時就心虛了。天啊,簡直是我的偶像!我哪有面試他的資格?應該是他來面試我!技能表里面的技能我能夠掌握的甚至不到1/3。
戰戰兢兢地,我問出了第一個問題:“您在開發中使用哪個IDE?”
“IDE?”他問。顯然不太明白我的問題。
大師也難免有知識覆蓋不到的地方,于是我告訴他,是集成開發環境。
他懂了。“我采用J2EE, Oracle, Websphere。”
“我指的不是技術和數據庫,我指的是您用哪種開發工具包來開發軟件,比如JBuilder就是一種IDE”。
“明白了。我用Cactus和JSP和Struts。”
這個問題問下去已經沒有意義。于是我換一個問題。
“目前軟件開發的方法學主要有哪些?您平時用得比較多的是哪一種?”
“我用J2EE, Oracle, Websphere。”
“我指的不是這些。我指的是方法學,例如極限編程就是一種方法學。您還知道那些方法學?”
“我采用Cactus,JSP,呃,用Cactus做一個精微奧妙的結構……”
看來這個問題也進行不下去了。
……
下午他打電話給我(面試結束之后他要走了我的手機號碼):“請問我有沒有復試的機會?”
我告訴他:“根據我的了解,您的Java方面的知識不太適合我們公司的要求,可能別的地方更適合您。”
“這樣啊?我能不能見一下你們的總監?我想跟他直接談談。”
“好啊,您跟我們公司管人事的小姐聯系一下吧。”
“我不應聘Java工程師了,你們招C++工程師吧?我下午去應聘好不好?”
“好啊,但是我不管C++,我只管Java招聘。”
換一個人給他折磨吧,我受的酷刑總算結束了。