第一篇:JAVA程序員必需搞懂的問題
1.簡(jiǎn)單類型是按值傳遞的Java 方法的參數(shù)是簡(jiǎn)單類型的時(shí)候,是按值傳遞的(pass by value)。這一點(diǎn)我們可以通過一個(gè)簡(jiǎn)單的例子來說明:
/* 例 1 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void test(boolean test){
test =!test;
System.out.println(“In test(boolean): test = ” + test);
}
public static void main(String[] args){
boolean test = true;
System.out.println(“Before test(boolean): test = ” + test);
test(test);
System.out.println(“After test(boolean): test = ” + test);
}
}
運(yùn)行結(jié)果:
Before test(boolean): test = true
In test(boolean): test = false
After test(boolean): test = true
不難看出,雖然在 test(boolean)方法中改變了傳進(jìn)來的參數(shù)的值,但對(duì)這個(gè)參數(shù)源變量本身并沒有影響,即對(duì) main(String[])方法里的 test 變量沒有影響。那說明,參數(shù)類型是簡(jiǎn)單類型的時(shí)候,是按值傳遞的。以參數(shù)形式傳遞簡(jiǎn)單類型的變量時(shí),實(shí)際上是將參數(shù)的值作了一個(gè)拷貝傳進(jìn)方法函數(shù)的,那么在方法函數(shù)里再怎么改變其值,其結(jié)果都是只改變了拷貝的值,而不是源值。
2.什么是引用
Java 是傳值還是傳引用,問題主要出在對(duì)象的傳遞上,因?yàn)?Java 中簡(jiǎn)單類型沒有引用。既然爭(zhēng)論中提到了引用這個(gè)東西,為了搞清楚這個(gè)問題,我們必須要知道引用是什么。簡(jiǎn)單的說,引用其實(shí)就像是一個(gè)對(duì)象的名字或者別名(alias),一個(gè)對(duì)象在內(nèi)存中會(huì)請(qǐng)求一塊空間來保存數(shù)據(jù),根據(jù)對(duì)象的大小,它可能需要占用的空間大小也不等。訪問對(duì)象的時(shí)候,我們不會(huì)直接是訪問對(duì)象在內(nèi)存中的數(shù)據(jù),而是通過引用去訪問。引用也是一種數(shù)據(jù)類型,我們可以把它想象為類似 C 語言中指針的東西,它指示了對(duì)象在內(nèi)存中的地址——只
不過我們不能夠觀察到這個(gè)地址究竟是什么。
如果我們定義了不止一個(gè)引用指向同一個(gè)對(duì)象,那么這些引用是不相同的,因?yàn)橐靡彩且环N數(shù)據(jù)類型,需要一定的內(nèi)存空間來保存。但是它們的值是相同的,都指示同一個(gè)對(duì)象在內(nèi)存的中位置。比如
String a = “Hello”;
String b = a;
這里,a 和 b 是不同的兩個(gè)引用,我們使用了兩個(gè)定義語句來定義它們。但它們的值是一樣的,都指向同一個(gè)對(duì)象 “Hello”。也許你還覺得不夠直觀,因?yàn)?String 對(duì)象的值本身是不可更改的(像 b = “World”;b = a;這種情況不是改變了 “World” 這一對(duì)象的值,而是改變了它的引用 b 的值使之指向了另一個(gè) String 對(duì)象 a)。那么我們用 StringBuffer 來舉一個(gè)例子:
/* 例 2 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void main(String[] args){
StringBuffer a = new StringBuffer(“Hello”);
StringBuffer b = a;
b.append(“, World”);
System.out.println(“a is ” + a);
}
}
運(yùn)行結(jié)果:
a is Hello, World
這個(gè)例子中 a 和 b 都是引用,當(dāng)改變了 b 指示的對(duì)象的值的時(shí)候,從輸出結(jié)果來看,a 所指示的對(duì)象的值也改變了。所以,a 和 b 都指向同一個(gè)對(duì)象即包含 “Hello” 的一個(gè) StringBuffer 對(duì)象。
這里我描述了兩個(gè)要點(diǎn):
引用是一種數(shù)據(jù)類型,保存了對(duì)象在內(nèi)存中的地址,這種類型即不是我們平時(shí)所說的簡(jiǎn)單數(shù)據(jù)類型也不是類實(shí)例(對(duì)象);
不同的引用可能指向同一個(gè)對(duì)象,換句話說,一個(gè)對(duì)象可以有多個(gè)引用,即該類類型的變量。
3.對(duì)象是如何傳遞的呢
關(guān)于對(duì)象的傳遞,有兩種說法,即“它是按值傳遞的”和“它是按引用傳遞的”。這兩種說法各有各的道理,但是它們都沒有從本質(zhì)上去分析,即致于產(chǎn)生了爭(zhēng)論。
既然現(xiàn)在我們已經(jīng)知道了引用是什么東西,那么現(xiàn)在不妨來分析一下對(duì)象作是參數(shù)是如何傳遞的。還是先以一個(gè)程序?yàn)槔?/p>
/* 例 3 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void test(StringBuffer str){
str.append(“, World!”);
}
public static void main(String[] args){
StringBuffer string = new StringBuffer(“Hello”);
test(string);
System.out.println(string);
}
}
運(yùn)行結(jié)果:
Hello, World!
test(string)調(diào)用了 test(StringBuffer)方法,并將 string 作為參數(shù)傳遞了進(jìn)去。這里 string 是一個(gè)引用,這一點(diǎn)是勿庸置疑的。前面提到,引用是一種數(shù)據(jù)類型,而且不是對(duì)象,所以它不可能按引用傳遞,所以它是按值傳遞的,它么它的值究竟是什么呢?是對(duì)象的地址。由此可見,對(duì)象作為參數(shù)的時(shí)候是按值傳遞的,對(duì)嗎?錯(cuò)!為什么錯(cuò),讓我們看另一個(gè)例子:
/* 例 4 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void test(String str){
str = “World”;
}
public static void main(String[] args){
String string = “Hello”;
test(string);
System.out.println(string);
}
}
運(yùn)行結(jié)果:
Hello
為什么會(huì)這樣呢?因?yàn)閰?shù) str 是一個(gè)引用,而且它與 string 是不同的引用,雖然它們都是同一個(gè)對(duì)象的引用。str = “World” 則改變了 str 的值,使之指向了另一個(gè)對(duì)象,然而 str 指向的對(duì)象改變了,但它并沒有對(duì) “Hello” 造成任何影響,而且由于 string 和 str 是不同的引用,str 的改變也沒有對(duì) string 造成任何影響,結(jié)果就如例中所示。
其結(jié)果是推翻了參數(shù)按值傳遞的說法。那么,對(duì)象作為參數(shù)的時(shí)候是按引用傳遞的了?也錯(cuò)!因?yàn)樯弦粋€(gè)例子的確能夠說明它是按值傳遞的。
結(jié)果,就像光到底是波還是粒子的問題一樣,Java 方法的參數(shù)是按什么傳遞的問題,其答案就只能是:即是按值傳遞也是按引用傳遞,只是參照物不同,結(jié)果也就不同。
4.正確看待傳值還是傳引用的問題
要正確的看待這個(gè)問題必須要搞清楚為什么會(huì)有這樣一個(gè)問題。
實(shí)際上,問題來源于 C,而不是 Java。
C 語言中有一種數(shù)據(jù)類型叫做指針,于是將一個(gè)數(shù)據(jù)作為參數(shù)傳遞給某個(gè)函數(shù)的時(shí)候,就有兩種方式:傳值,或是傳指針,它們的區(qū)別,可以用一個(gè)簡(jiǎn)單的例子說明: /* 例 5 */
/**
* @(#)test.c
* @author fancy
*/
void Swapvalue(int a, int b){
int t = a;
a = b;
b = t;
}
void SwapPointer(int * a, int * b){
int t = * a;
* a = * b;
* b = t;
}
void main(){
int a = 0, b = 1;
printf(“1 : a = %d, b = %dn”, a, b);
Swapvalue(a, b);
printf(“2 : a = %d, b = %dn”, a, b);
SwapPointer(&a, &b);
printf(“3 : a = %d, b = %dn”, a, b);
}
運(yùn)行結(jié)果:: a = 0, b = 1: a = 0, b = 1: a = 1, b = 0
大家可以明顯的看到,按指針傳遞參數(shù)可以方便的修改通過參數(shù)傳遞進(jìn)來的值,而按值傳遞就不行。
當(dāng) Java 成長(zhǎng)起來的時(shí)候,許多的 C 程序員開始轉(zhuǎn)向?qū)W習(xí)Java,他們發(fā)現(xiàn),使用類似 Swapvalue 的方法仍然不能改變通過參數(shù)傳遞進(jìn)來的簡(jiǎn)單數(shù)據(jù)類型的值,但是如果是一個(gè)對(duì)象,則可能將其成員隨意更改。于是他們覺得這很像是 C 語言中傳值/傳指針的問題。但是 Java 中沒有指針,那么這個(gè)問題就演變成了傳值/傳引用的問題??上⑦@個(gè)問題放在 Java 中進(jìn)行討論并不恰當(dāng)。
討論這樣一個(gè)問題的最終目的只是為了搞清楚何種情況才能在方法函數(shù)中方便的更改參數(shù)的值并使之長(zhǎng)期有效。
Java 中,改變參數(shù)的值有兩種情況,第一種,使用賦值號(hào)“=”直接進(jìn)行賦值使其改變,如例 1 和例 4;第二種,對(duì)于某些對(duì)象的引用,通過一定途徑對(duì)其成員數(shù)據(jù)進(jìn)行改變,如例 3。對(duì)于第一種情況,其改變不會(huì)影響到方法該方法以外的數(shù)據(jù),或者直接說源數(shù)據(jù)。而第二種方法,則相反,會(huì)影響到源數(shù)據(jù)——因?yàn)橐弥甘镜膶?duì)象沒有變,對(duì)其成員數(shù)據(jù)進(jìn)行改變則實(shí)質(zhì)上是改變的該對(duì)象。
5.如何實(shí)現(xiàn)類似 swap 的方法
傳值還是傳引用的問題,到此已經(jīng)算是解決了,但是我們?nèi)匀徊荒芙鉀Q這樣一個(gè)問題:如果我有兩個(gè) int 型的變量 a 和 b,我想寫一個(gè)方法來交換它們的值,應(yīng)該怎么辦?結(jié)論很讓人失望——沒有辦法!因此,我們只能具體情況具體討論,以經(jīng)常使用交換方法的排序?yàn)槔?/p>
/** 例 6 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void swap(int[] data, int a, int b){
int t = data[a];
data[a] = data;
data = t;
}
public static void main(String[] args){int[] data = new int[10];
for(int i = 0;i < 10;i++){
data =(int)(Math.random()* 100);System.out.print(“ ” + data);}
System.out.println();
for(int i = 0;i < 9;i++){
for(int j = i;j < 10;j++){if(data > data[j]){
swap(data, i, j);
}
}
}
for(int i = 0;i < 10;i++){
System.out.print(“ ” + data);}
System.out.println();
}
}
運(yùn)行結(jié)果(情況之一):
69 94 38 95 31 50 97 84 131 38 50 69 78 84 94 95 97
第二篇:JAVA程序員必需搞懂的問題
JAVA程序員必需搞懂的問題(建議管理員置頂)
1.簡(jiǎn)單類型是按值傳遞的Java 方法的參數(shù)是簡(jiǎn)單類型的時(shí)候,是按值傳遞的(pass by value)。這一點(diǎn)我們可以通過一個(gè)簡(jiǎn)單的例子來說明:
/* 例 1 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void test(boolean test){
test =!test;
System.out.println(“In test(boolean): test = ” + test);
}
public static void main(String[] args){
boolean test = true;
System.out.println(“Before test(boolean): test = ” + test);
test(test);
System.out.println(“After test(boolean): test = ” + test);
}
}
運(yùn)行結(jié)果:
Before test(boolean): test = true
In test(boolean): test = false
After test(boolean): test = true
不難看出,雖然在 test(boolean)方法中改變了傳進(jìn)來的參數(shù)的值,但對(duì)這個(gè)參數(shù)源變量本身并沒有影響,即對(duì) main(String[])方法里的 test 變量沒有影響。那說明,參數(shù)類型是簡(jiǎn)單類型的時(shí)候,是按值傳遞的。以參數(shù)形式傳遞簡(jiǎn)單類型的變量時(shí),實(shí)際上是將參數(shù)的值作了一個(gè)拷貝傳進(jìn)方法函數(shù)的,那么 在方法函數(shù)里再怎么改變其值,其結(jié)果都是只改變了拷貝的值,而不是源值。
2.什么是引用
Java 是傳值還是傳引用,問題主要出在對(duì)象的傳遞上,因?yàn)?Java 中簡(jiǎn)單類型沒有引用。既然爭(zhēng)論中提到了引用這個(gè)東西,為了搞清楚這個(gè)問題,我們必須要知道引用是什么。簡(jiǎn)單的說,引用其實(shí)就像是一個(gè)對(duì)象的名字或者別名(alias),一個(gè)對(duì)象在內(nèi)存中會(huì)請(qǐng)求一塊空間來保存數(shù)據(jù),根據(jù)對(duì)象的大小,它可能需要占用的空間大小也不等。訪問對(duì)象的時(shí)候,我們不會(huì)直接是訪問對(duì)象 在內(nèi)存中的數(shù)據(jù),而是通過引用去訪問。引用也是一種數(shù)據(jù)類型,我們可以把它想象為類似 C 語言中指針的東西,它指示了對(duì)象在內(nèi)存中的地址——只不過我們不能夠觀察到這個(gè)地址究竟是什么。
如果我們定義了不止一個(gè)引用指向同一個(gè)對(duì)象,那么這些引用是不相同的,因?yàn)橐靡彩且环N數(shù)據(jù)類型,需要一定的內(nèi)存空間來保存。但是它們的值是相同的,都指示同一個(gè)對(duì)象在內(nèi)存的中位置。比如
String a = “Hello”;
String b = a;
這里,a 和 b 是不同的兩個(gè)引用,我們使用了兩個(gè)定義語句來定義它們。但它們的值是一樣的,都指向同一個(gè)對(duì)象 “Hello”。也許你還覺得不夠直觀,因?yàn)?String 對(duì)象的值本身是不可更改的(像 b = “World”;b = a;這種情況不是改變了 “World” 這一對(duì)象的值,而是改變了它的引用 b 的值使之指向了另一個(gè) String 對(duì)象 a)。那么我們用 StringBuffer 來舉一個(gè)例子:
/* 例 2 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void main(String[] args){
StringBuffer a = new StringBuffer(“Hello”);
StringBuffer b = a;
b.append(“, World”);
System.out.println(“a is ” + a);
}
}
運(yùn)行結(jié)果:
a is Hello, World
這個(gè)例子中 a 和 b 都是引用,當(dāng)改變了 b 指示的對(duì)象的值的時(shí)候,從輸出結(jié)果來看,a 所指示的對(duì)象的值也改變了。所以,a 和 b 都指向同一個(gè)對(duì)象即包含 “Hello” 的一個(gè) StringBuffer 對(duì)象。
這里我描述了兩個(gè)要點(diǎn):
引用是一種數(shù)據(jù)類型,保存了對(duì)象在內(nèi)存中的地址,這種類型即不是我們平時(shí)所說的簡(jiǎn)單數(shù)據(jù)類型也不是類實(shí)例(對(duì)象);
不同的引用可能指向同一個(gè)對(duì)象,換句話說,一個(gè)對(duì)象可以有多個(gè)引用,即該類類型的變量。
3.對(duì)象是如何傳遞的呢
關(guān)于對(duì)象的傳遞,有兩種說法,即“它是按值傳遞的”和“它是按引用傳遞的”。這兩種說法各有各的道理,但是它們都沒有從本質(zhì)上去分析,即致于產(chǎn)生了爭(zhēng)論。
既然現(xiàn)在我們已經(jīng)知道了引用是什么東西,那么現(xiàn)在不妨來分析一下對(duì)象作是參數(shù)是如何傳遞的。還是先以一個(gè)程序?yàn)槔?/p>
/* 例 3 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void test(StringBuffer str){
str.append(“, World!”);
}
public static void main(String[] args){
StringBuffer string = new StringBuffer(“Hello”);
test(string);
System.out.println(string);
}
}
運(yùn)行結(jié)果:
Hello, World!
test(string)調(diào)用了 test(StringBuffer)方法,并將 string 作為參數(shù)傳遞了進(jìn)去。這里 string 是一個(gè)引用,這一點(diǎn)是勿庸置疑的。前面提到,引用是一種數(shù)據(jù)類型,而且不是對(duì)象,所以它不可能按引用傳遞,所以它是按值傳遞的,它么它的值究竟是什么呢? 是對(duì)象的地址。
由此可見,對(duì)象作為參數(shù)的時(shí)候是按值傳遞的,對(duì)嗎?錯(cuò)!為什么錯(cuò),讓我們看另一個(gè)例子:
/* 例 4 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void test(String str){
str = “World”;
}
public static void main(String[] args){
String string = “Hello”;
test(string);
System.out.println(string);
}
}
運(yùn)行結(jié)果:
Hello
為什么會(huì)這樣呢?因?yàn)閰?shù) str 是一個(gè)引用,而且它與 string 是不同的引用,雖然它們都是同一個(gè)對(duì)象的引用。str = “World” 則改變了 str 的值,使之指向了另一個(gè)對(duì)象,然而 str 指向的對(duì)象改變了,但它并沒有對(duì) “Hello” 造成任何影響,而且由于 string 和 str 是不同的引用,str 的改變也沒有對(duì) string 造成任何影響,結(jié)果就如例中所示。
其結(jié)果是推翻了參數(shù)按值傳遞的說法。那么,對(duì)象作為參數(shù)的時(shí)候是按引用傳遞的了?也錯(cuò)!因?yàn)樯弦粋€(gè)例子的確能夠說明它是按值傳遞的。
結(jié)果,就像光到底是波還是粒子的問題一樣,Java 方法的參數(shù)是按什么傳遞的問題,其答案就只能是:即是按值傳遞也是按引用傳遞,只是參照物不同,結(jié)果也就不同。
4.正確看待傳值還是傳引用的問題
要正確的看待這個(gè)問題必須要搞清楚為什么會(huì)有這樣一個(gè)問題。
實(shí)際上,問題來源于 C,而不是 Java。
C 語言中有一種數(shù)據(jù)類型叫做指針,于是將一個(gè)數(shù)據(jù)作為參數(shù)傳遞給某個(gè)函數(shù)的時(shí)候,就有兩種方式:傳值,或是傳指針,它們的區(qū)別,可以用一個(gè)簡(jiǎn)單的例子說明:
/* 例 5 */
/**
* @(#)test.c
* @author fancy
*/
void Swapvalue(int a, int b){
int t = a;
a = b;
b = t;
}
void SwapPointer(int * a, int * b){
int t = * a;
* a = * b;
* b = t;
}
void main(){
int a = 0, b = 1;
printf(“1 : a = %d, b = %dn”, a, b);
Swapvalue(a, b);
printf(“2 : a = %d, b = %dn”, a, b);
SwapPointer(&a, &b);
printf(“3 : a = %d, b = %dn”, a, b);
}
運(yùn)行結(jié)果:: a = 0, b = 1: a = 0, b = 1: a = 1, b = 0
大家可以明顯的看到,按指針傳遞參數(shù)可以方便的修改通過參數(shù)傳遞進(jìn)來的值,而按值傳遞就不行。
當(dāng) Java 成長(zhǎng)起來的時(shí)候,許多的 C 程序員開始轉(zhuǎn)向?qū)W習(xí)Java,他們發(fā)現(xiàn),使用類似 Swapvalue 的方法仍然不能改變通過參數(shù)傳遞進(jìn)來的簡(jiǎn)單數(shù)據(jù)類型的值,但是如果是一個(gè)對(duì)象,則可能將其成員隨意更改。于是他們覺得這很像是 C 語言中傳值/傳指針的問題。但是 Java 中沒有指針,那么這個(gè)問題就演變成了傳值/傳引用的問題??上⑦@個(gè)問題放在 Java 中進(jìn)行討論并不恰當(dāng)。
討論這樣一個(gè)問題的最終目的只是為了搞清楚何種情況才能在方法函數(shù)中方便的更改參數(shù)的值并使之長(zhǎng)期有效。
Java 中,改變參數(shù)的值有兩種情況,第一種,使用賦值號(hào)“=”直接進(jìn)行賦值使其改變,如例 1 和例 4;第二種,對(duì)于某些對(duì)象的引用,通過一定途徑對(duì)其成員數(shù)據(jù)進(jìn)行改變,如例 3。對(duì)于第一種情況,其改變不會(huì)影響到方法該方法以外的數(shù)據(jù),或者直接說源數(shù)據(jù)。而第二種方法,則相反,會(huì)影響到源數(shù)據(jù)——因?yàn)橐弥甘镜膶?duì)象沒有變,對(duì) 其成員數(shù)據(jù)進(jìn)行改變則實(shí)質(zhì)上是改變的該對(duì)象。
5.如何實(shí)現(xiàn)類似 swap 的方法
傳值還是傳引用的問題,到此已經(jīng)算是解決了,但是我們?nèi)匀徊荒芙鉀Q這樣一個(gè)問題:如果我有兩個(gè) int 型的變量 a 和 b,我想寫一個(gè)方法來交換它們的值,應(yīng)該怎么辦?結(jié)論很讓人失望——沒有辦法!因此,我們只能具體情況具體討論,以經(jīng)常使用交換方法的排序?yàn)槔?/p>
/** 例 6 */
/**
* @(#)Test.java
* @author fancy
*/
public class Test {
public static void swap(int[] data, int a, int b){
int t = data[a];
data[a] = data;
data = t;
}
public static void main(String[] args){
int[] data = new int[10];
for(int i = 0;i < 10;i++){
data =(int)(Math.random()* 100);
System.out.print(“ ” + data);
}
System.out.println();
for(int i = 0;i < 9;i++){
for(int j = i;j < 10;j++){
if(data > data[j]){
swap(data, i, j);
}
}
}
for(int i = 0;i < 10;i++){
System.out.print(“ ” + data);
}
System.out.println();
}
}
運(yùn)行結(jié)果(情況之一):
69 94 38 95 31 50 97 84 131 38 50 69 78 84 94 95 97
swap(int[] data, int a, int b)方法在內(nèi)部實(shí)際上是改變了 data 所指示的對(duì)象的成員數(shù)據(jù),即上述討論的第二種改變參數(shù)值的方法。希望大家能夠舉一反三,使用類似的方法來解決相關(guān)問題。
第三篇:java程序員
如何迅速成為Java高手[Tomjava原創(chuàng)]
很多網(wǎng)友問我學(xué)習(xí)Java有沒有什么捷徑,我說“無他,唯手熟爾”。但是我卻很愿意將自己學(xué)習(xí)的一些經(jīng)驗(yàn)寫出來,以便后來者少走彎路,幫助別人是最大的快樂嘛!
要想學(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)勢(shì)好象并不明顯。J2ME對(duì)于初學(xué)者來說,好象又有點(diǎn)深?yuàn)W,而且一般開發(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包你都熟悉了嗎?然后再?gòu)腏SP學(xué)起。如果你學(xué)過HTML,那么事情要好辦的多,如果沒有,那你快去補(bǔ)一補(bǔ)HTML基礎(chǔ)吧。其實(shí)JSP中的Java語法也不多,它更象一個(gè)腳本語言,有點(diǎn)象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負(fù)責(zé)生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時(shí),也是先轉(zhuǎn)換成Servlet再運(yùn)行的。雖說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ū)別的。它是一個(gè)體系結(jié)構(gòu),你可以搭建更安全、更穩(wěn)定的企業(yè)應(yīng)用。它的大量代碼已由中間件(也就是我們常聽到的Weblogic,Websphere這些J2EE服務(wù)器)完成了,所以我們要做的程序代碼量很少,大部分工作都在設(shè)計(jì)和配置中間件上。至于JDBC,就不用我多說了,你如果用java編過存取數(shù)據(jù)庫的程序,就應(yīng)該很熟悉。還有,如果你要用Java編發(fā)送電子郵件的程序,你就得看看Javamail了。
好了,對(duì)Java和J2EE有了一些基本概念之后,你就應(yīng)該編一些程序了,千萬不要紙上談兵哦。最好找一些有實(shí)例且?guī)Ч獗P的書來看,這樣看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它再輸一遍吧,再說直接復(fù)制還不用怕出錯(cuò),何樂而不為呢!還有就是要經(jīng)常上一些好的Java編程文章,有好的文章要Cut下來,有問題盡管問,只要問題不是太傻,一般高手都會(huì)回答你的。下面介紹幾個(gè)好的Java方面的編程網(wǎng)站:
CSDN論壇 http:///那里Java資料比較全;
java.com.cnhttp://.cn/看這域名就知道有多牛,注冊(cè)用戶快接近一萬了,同時(shí)在線人數(shù)也在一千左右,人氣很旺的;
IBM的開發(fā)者網(wǎng)絡(luò)http://IBM永遠(yuǎn)的藍(lán)色巨人;
那么我書也看了,程序也做了,別人問我的問題我都能解決了,是不是就成為高手了呢?當(dāng)然沒那么簡(jiǎn)單,這只是萬里長(zhǎng)征走完了第一步。不信?那你出去接一個(gè)項(xiàng)目,你知道怎么下手嗎,你知道怎么設(shè)計(jì)嗎,你知道怎么組織人員進(jìn)行開發(fā)嗎?你現(xiàn)在腦子里除了一些散亂的代碼之外,可能再?zèng)]有別的東西了吧!你現(xiàn)在最缺的是實(shí)際的工作經(jīng)驗(yàn),而不是書本上那些
憑空想出來的程序。所以你快去找一份Java的編程工作來做吧(如果是在校學(xué)生可以去做兼職?。?,在實(shí)踐中提高自己,那才是最快的。不過你得祈禱在公司里碰到一個(gè)高手,而且他還愿意不厭其煩地教你,這樣好象有點(diǎn)難哦!
還有一個(gè)辦法就是讀開放源碼的程序了。我們知道開放源碼大都出自高手,他們?cè)O(shè)計(jì)合理,考慮周到,再加上有廣大的程序員參與,代碼的價(jià)值自然是字字珠嘰,鏗鏘有力(對(duì)不起,偶最近《金裝四大才子》看多了)。學(xué)Java必讀的兩個(gè)開源程序就是Jive和Pet Store.。Jive是國(guó)外一個(gè)非常著名的BBS程序,完全開放源碼。論壇的設(shè)計(jì)采用了很多先進(jìn)的技術(shù),如Cache、用戶認(rèn)證、Filter、XML等,而且論壇完全屏蔽了對(duì)數(shù)據(jù)庫的訪問,可以很輕易的在不同數(shù)據(jù)庫中移植。論壇還有方便的安裝和管理程序,這是我們平時(shí)編程時(shí)容易忽略的一部份(中國(guó)程序員一般只注重編程的技術(shù)含量,卻完全不考慮用戶的感受,這就是我們與國(guó)外軟件的差距所在)。Jive的資料在很多網(wǎng)站上都有,大家可以找來研究一下。相信你讀完代碼后,會(huì)有脫胎換骨的感覺。遺憾的是Jive從2.5以后就不再無條件的開放源代碼,同時(shí)有l(wèi)icence限制。不過幸好還有中國(guó)一流的Java程序員關(guān)注它,外國(guó)人不開源了,中國(guó)人就不能開源嗎?這里向大家推薦一個(gè)漢化的Jive版本—J道。Jive(J道版)是由中國(guó)Java界大名鼎鼎的banq在Jive 2.1版本基礎(chǔ)上改編而成, 全中文,增加了一些實(shí)用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個(gè)開發(fā)團(tuán)隊(duì)在不斷升級(jí)。你可以訪問banq的網(wǎng)站http:///去下載,或到同濟(jì)技術(shù)論壇的服務(wù)器上ftp://nro.shtdu.edu.cn去下,安裝上有什么問題,可以到論壇上去提問。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規(guī)范而推出的開放源碼的程序,應(yīng)該很具有權(quán)威性,想學(xué)J2EE和EJB的朋友不要錯(cuò)過了。
你一定會(huì)高興地說,哈哈,原來成為Java高手就這么簡(jiǎn)單啊!記得Tomjava也曾碰到過一個(gè)項(xiàng)目經(jīng)理,號(hào)稱Java很簡(jiǎn)單,只要三個(gè)月就可以學(xué)會(huì)。其實(shí)說這種話的人就如當(dāng)年小日本號(hào)稱“三個(gè)月拿下中國(guó)”一樣大言不慚。不是Tomjava潑你冷水,你現(xiàn)在只是學(xué)到了Java的骨架,卻還沒有學(xué)到Java的精髓。接下來你得研究設(shè)計(jì)模式了。設(shè)計(jì)模式是高級(jí)程序員真正掌握面向?qū)ο蠛诵乃枷氲谋匦拚n。設(shè)計(jì)模式并不是一種具體“技術(shù)”,它講述的是思想,它不僅僅展示了接口或抽象類在實(shí)際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類的應(yīng)用,從而在原來的Java語言基礎(chǔ)上躍進(jìn)一步,更重要的是,設(shè)計(jì)模式反復(fù)向你強(qiáng)調(diào)一個(gè)宗旨:要讓你的程序盡可能的可重用。關(guān)于設(shè)計(jì)模式的資料,還是向大家推薦banq的網(wǎng)站http:///,他把GOF的23種模式以通俗易懂的方式詮釋出來,純Java描述,真是經(jīng)典中的經(jīng)典。有時(shí)間再研究一下MVC結(jié)構(gòu)(把Model-View-Control分離開的設(shè)計(jì)思想)吧,現(xiàn)在很流行的Structs就是它的一種實(shí)現(xiàn)方式,不過Structs用起來實(shí)在是很繁,我們只要學(xué)習(xí)其精髓即可,我們完全可以設(shè)計(jì)自己的MVC結(jié)構(gòu)。然后你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會(huì)上一個(gè)臺(tái)階。
做完這些,你不如整理一下你的Java代碼,把那些經(jīng)典的程序和常見的應(yīng)用整理出來,再精心打造一番,提高其重用性和可擴(kuò)展性。你再找?guī)讉€(gè)志同道合的朋友成立一個(gè)工作室吧,你可以去承接一些項(xiàng)目做了,一開始可能有些困難,可是你有技術(shù)積累,又考慮周全,接下項(xiàng)目來可以迅速作完,相信大家以后都會(huì)來找你的,所以Money就嘩啦啦的來了。。。當(dāng)然你也可以參加一些開源項(xiàng)目,一方面可以提高自己,另一方面也是為中國(guó)軟件事業(yè)做貢獻(xiàn)嘛!開發(fā)者在互聯(lián)網(wǎng)上用CVS合作開發(fā),用QQ,MSN,E-mail討論聯(lián)系,天南海北的程序員分散在各地卻同時(shí)開發(fā)同一個(gè)軟件,是不是很有意思呢?
下面介紹兩個(gè)好的開源項(xiàng)目網(wǎng)站:
湖北省軟件公共開發(fā)平臺(tái)http://gro.clinux.org/
共創(chuàng)聯(lián)盟http://cosoft.org.cn/
哇,好高興哦,我終于成為高手了!非也,非也。古人云:“識(shí)時(shí)務(wù)者為俊杰”。你知道計(jì)算
機(jī)界現(xiàn)在的發(fā)展形勢(shì)嗎?你知道微軟的.NET藍(lán)圖和SUN ONE計(jì)劃之間的明爭(zhēng)暗斗嗎?你知道計(jì)算機(jī)技術(shù)將向何處發(fā)展嗎?其實(shí)從各大計(jì)算機(jī)廠商最近的動(dòng)作,都可以看出來“Web服務(wù)將是下一代互聯(lián)網(wǎng)應(yīng)用的制高點(diǎn)”,而微軟的.NET藍(lán)圖和SUN ONE計(jì)劃的斗爭(zhēng)焦點(diǎn),也就是Web服務(wù)。Web服務(wù)就是一個(gè)嶄新的分布式計(jì)算模型,它是一系列標(biāo)準(zhǔn)的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語言編寫的軟件能夠輕易的集成起來,使網(wǎng)絡(luò)資源和Web站點(diǎn)變成一種服務(wù)而不是混亂的垃圾場(chǎng)。不遠(yuǎn)的將來,我們就可以在家里點(diǎn)擊一下鼠標(biāo),就可以完成出門旅游的全部準(zhǔn)備工作,包括定飛機(jī)票,定旅游線路,定好房間等。請(qǐng)注意,這所有的一切都是Web站點(diǎn)間自動(dòng)完成的,再也不用象現(xiàn)在一樣,表面上是電子商務(wù),實(shí)際上很多環(huán)節(jié)都是人工操作。也許你會(huì)覺得這是天方夜談,不過就近的說,你也很有可能承接一個(gè)項(xiàng)目,要集成兩個(gè)企業(yè)的ERP系統(tǒng)。很有可能上游企業(yè)的系統(tǒng)是用Dephi編的,而下游企業(yè)的系統(tǒng)是用Java編的。你說你是Java高手,大家都看者你怎么做呢。所以啊,你還得學(xué)習(xí)新技術(shù),如Web服務(wù),而且你Dephi也要懂一點(diǎn)吧(Dephi6現(xiàn)在已經(jīng)提供Web服務(wù)的控件了)。你編的Java系統(tǒng),可能要和.NET集成,所以你.NET要懂一點(diǎn)吧?到最后,你可能發(fā)現(xiàn)你已經(jīng)成為Java高手了,但很多時(shí)間卻在搞別的技術(shù)。太極張三豐里說,最厲害的招式就是沒有招式,可能就是這個(gè)道理吧!
因?yàn)閯倓偱d起,所以網(wǎng)上Web服務(wù)的資料不是很多,我還是給大家推薦幾個(gè)網(wǎng)站吧: 中國(guó)UDDI技術(shù)聯(lián)盟http:///developerWorks/cn/xml/index.shtml?csdnIBM可是Web服務(wù)的力推者
嗚?你費(fèi)勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡(jiǎn)單,真叫人感動(dòng)??!那么打個(gè)電話告訴我吧,什么?我的電話號(hào)碼是多少?昏到,你打電話問不就知道了嗎,真是的??
第四篇:java程序員面試題
1、你怎樣理解Struts,又那些配置文件,以及作用? 理解:http://ruixin.iteye.com/blog/899289 配置文件:struts.xml 作用:struts 框架mvc 實(shí)現(xiàn)低耦合,便于程序的維護(hù)~ 配置文件控制流程的轉(zhuǎn)向 很清晰~ 主要負(fù)責(zé)具體業(yè)務(wù)的實(shí)現(xiàn)和頁面的轉(zhuǎn)向~
2、怎么樣來捕獲數(shù)據(jù)庫中的異常?
3、如何處理網(wǎng)頁中的驗(yàn)證信息,如何友好的進(jìn)行處理?
4、用javaScript實(shí)現(xiàn)java中的監(jiān)聽器功能?
5、你對(duì)對(duì)日外包的看法?
6、數(shù)據(jù)庫連接方式由哪幾種?
Jdbc、連接池、hibernate
7、你清楚哪幾種設(shè)計(jì)模式,談?wù)劯鞣N設(shè)計(jì)模式的類結(jié)構(gòu)。
8、談?wù)刯sp和sevlet的區(qū)別,以及它們性能上的區(qū)別。
jsp是servlet的一種簡(jiǎn)化,jsp編譯后是“類servlet”。servlet 主要是用來處理業(yè)務(wù)層;
jsp 則是主要負(fù)責(zé) 表現(xiàn)層。
servlet完全是java程序代碼構(gòu)成,擅長(zhǎng)于流程控制和事務(wù)處理,而通過servlet來生成動(dòng)態(tài)網(wǎng)頁很不直觀; 對(duì)于靜態(tài)的html標(biāo)簽,servlet都必須使用頁面輸出流逐行輸出。Servlet中沒有內(nèi)置對(duì)象。Jsp由html代碼和jsp標(biāo)簽構(gòu)成可以方便地編寫動(dòng)態(tài)網(wǎng)頁,在struts框架中,jsp位于MVC設(shè)計(jì)模式的視圖層,而servlet位于控制層。
總之,使用jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,至于jsp中的java腳本如果鑲嵌到一個(gè)類中,由jsp容器完成,而servlet則是個(gè)完整的java類,這個(gè)類的service方法用于生成對(duì)客戶端的響應(yīng)
9、如何來編寫存儲(chǔ)過程,如何優(yōu)化存儲(chǔ)過程,以及存儲(chǔ)過程和TSQL的區(qū)別。
10、提供的培訓(xùn),CMM-5軟件開發(fā)流程培訓(xùn)、代碼編寫規(guī)范和業(yè)務(wù)流程培訓(xùn)、對(duì)日語的培訓(xùn)。
1、為什么要選擇這個(gè)行業(yè),和計(jì)算機(jī)專業(yè)的相比有什么優(yōu)勢(shì)?
2、Servlet是什么,以及生命周期?
Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。
與cgi的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過多線程方式運(yùn)行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。
3、怎么理解事務(wù)?
4、怎么理解MVC?
自己做自己的事情,主要強(qiáng)調(diào)分層,5、同時(shí)插入大量數(shù)據(jù),使用何種方法優(yōu)化?Batch
6、多個(gè)有關(guān)系得怎么樣操作?
7、你認(rèn)為你還有什么優(yōu)點(diǎn)在前面沒有提到?
8、對(duì)加班的看法?
9、與上級(jí)意見不一致時(shí)怎么樣處理?10、11、12、13、14、15、16、17、18、19、20、21、22、23、你如何理解團(tuán)隊(duì)精神?
你怎樣處理學(xué)習(xí)新技術(shù)和項(xiàng)目開發(fā)之間的矛盾? 怎樣去學(xué)習(xí)新技術(shù)?
作為一個(gè)初級(jí)程序員怎么樣彌補(bǔ)與有經(jīng)驗(yàn)程序員之間的差距? 你對(duì)索引的理解,索引有幾種,什么時(shí)候用索引? 對(duì)Oracle理解?
怎樣優(yōu)化復(fù)雜的查詢語句? 你對(duì)Jdbc理解?
對(duì)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時(shí),request設(shè)置的屬性依然能保留在下一個(gè)頁面(setAttribute);d.通過
e.地址中的”/”代表是:http://localhost:8080/Test B、response.sendRedirect(“地址”):效率低,速度慢
a.地址欄改變跳轉(zhuǎn)——客戶端跳轉(zhuǎn)(其中地址可以是任意的)
b.所有代碼執(zhí)行完畢之后再跳轉(zhuǎn),跳轉(zhuǎn)語句后面的代碼還是會(huì)執(zhí)行,除非在其后面加上return(return)需復(fù)雜一些。
<% Response.sendRedirect(“aa.jsp”);boolean b = true;
if(b){ Return;} System.out.println(“aaaaaaaaaa”);%>
c.不能保存request屬性——地址改變了,客戶端跳轉(zhuǎn),不同的request d.通過對(duì)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、對(duì)日外包是否有抵觸情緒? 如何減少Servlet的請(qǐng)求? 對(duì)設(shè)計(jì)模式了解多少?作過的項(xiàng)目中用過那些設(shè)計(jì)模式? 30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、怎樣看待團(tuán)隊(duì)合作,在團(tuán)隊(duì)合作中你扮演什么樣的角色,遇到技術(shù)難題時(shí)怎么解決? Exception的層次結(jié)構(gòu)? EJB對(duì)數(shù)據(jù)庫的訪問機(jī)制? Struts中是否有事務(wù)處理? Hibernate的其它功能(除了ORM)? 如何提高數(shù)據(jù)庫中的數(shù)據(jù)查詢效率? 作為項(xiàng)目經(jīng)理如何對(duì)組內(nèi)成員分工? 描述一下你做過項(xiàng)目的流程。
加班到12點(diǎn),突然有人來問你技術(shù)上的難題,你會(huì)如何處理? Oracle的冷備份、熱備份 Strurs中怎樣實(shí)現(xiàn) Hibernate怎樣實(shí)現(xiàn)ORM Spring 的事務(wù)處理機(jī)制
Strurs的驗(yàn)證方式,Javascript的驗(yàn)證的方式
一個(gè)是服務(wù)器端驗(yàn)證,一個(gè)是客戶端驗(yàn)證
Struts的工作機(jī)制 Delete/trancate的區(qū)別
trancate與delete都是刪除數(shù)據(jù),不同的是trancate是將表的所有數(shù)據(jù)都刪除,而delete可以有選擇地刪除數(shù)據(jù); delete刪除數(shù)據(jù)是記錄在日志中的,可以通過其將數(shù)據(jù)恢復(fù),而trancate則是將整個(gè)表截?cái)?,其操作是不記錄在日志里的?6、47、48、作為項(xiàng)目組長(zhǎng),你遇到的最大問題是什么?如何解決?
Ajax/內(nèi)嵌框架實(shí)現(xiàn)局部刷新,有什么差別?
Exception/Error的區(qū)別,在什么情況下可以拋出RuntimeException 父類不同
知道異常和錯(cuò)誤最本質(zhì)的區(qū)別就是異常能被開發(fā)人員處理而錯(cuò)誤時(shí)系統(tǒng)本來自帶的,一般無法處理也不需要我們程序員來處理。
在程序運(yùn)行時(shí)候出錯(cuò)而又不是系統(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)
錯(cuò)誤處理模塊是放在哪個(gè)層的。接口能否繼承接口。
接口可以繼承接口..但是要使用extends~而不是用implements 抽象類能否繼承實(shí)體類。
抽象類是可以繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù) 答案很明確,可以繼承。
項(xiàng)目中查詢時(shí)怎么樣實(shí)現(xiàn)的?
作為項(xiàng)目負(fù)責(zé)人你是管理這個(gè)團(tuán)隊(duì)的?
在你做項(xiàng)目過程中遇到些什么問題,是怎么樣解決的?
Jquery中的幾種選擇器:
Javascript如何進(jìn)行數(shù)字和字符串之間的轉(zhuǎn)換?
數(shù)字類型轉(zhuǎn)換成String類型用 對(duì)象=對(duì)象.toString()方法,字符串轉(zhuǎn)換成數(shù)字類型則是對(duì)象=Number(對(duì)象);
第五篇:JAVA程序員求職信
JAVA程序員求職信范文
尊敬的領(lǐng)導(dǎo):
您好!十分感謝您在百忙之中能翻閱我的自薦信。與公司是一種選擇,與我則是一種機(jī)會(huì)。在上千份大同小異的求職信中,我期望你手中的這份能給您帶來驚喜!
我叫張XX,是xx技術(shù)學(xué)院09級(jí)的一名??粕?,就讀于計(jì)算機(jī)技術(shù)與應(yīng)用專業(yè)。主修課程:計(jì)算機(jī)組成原理,數(shù)據(jù)結(jié)構(gòu),java網(wǎng)絡(luò)編程,c++編程基礎(chǔ),單片機(jī)基礎(chǔ),路由/交換機(jī)配置,jsp編程基礎(chǔ),計(jì)算機(jī)網(wǎng)絡(luò),sql server數(shù)據(jù)庫設(shè)計(jì),xml編程實(shí)現(xiàn),編譯原理。
大學(xué)四年來,我學(xué)習(xí)刻苦,成績(jī)優(yōu)異,曾多次獲得獎(jiǎng)學(xué)金。在師友的嚴(yán)格教益和個(gè)人努力下,我具備了扎實(shí)的基礎(chǔ)知識(shí)。在軟件方面,系統(tǒng)掌握了C語言,數(shù)據(jù)結(jié)構(gòu),Power Builder,數(shù)據(jù)庫原理,匯編語言,軟件工程等,并對(duì)面向?qū)ο蟮腄ELPHI和VC 等Windows編程有一定了解。課外我還自學(xué)了VB,VF編程及網(wǎng)頁制作?,F(xiàn)已能獨(dú)立編寫專業(yè)的數(shù)據(jù)庫管理系統(tǒng)。在硬件方面,通過參與單片機(jī)設(shè)計(jì),組裝收音機(jī),網(wǎng)絡(luò)工程的規(guī)劃與管理及組建等實(shí)踐活動(dòng),我掌握了計(jì)算機(jī)的工作原理及計(jì)算機(jī)網(wǎng)絡(luò)原理技術(shù)。
面對(duì)當(dāng)今激烈的人才競(jìng)爭(zhēng),我很清楚自己知識(shí)有限,但我更清楚我有著不甘落后的精神和不斷學(xué)習(xí),不斷提高的愿望。樂于進(jìn)取,不怕挫折是我的人生信條,給我一次機(jī)會(huì),讓我去實(shí)踐,去闖,去干,因?yàn)槟芰σ趯?shí)踐中培養(yǎng),也終究要在實(shí)踐中體現(xiàn)。我信心十足,相信我所具備的專業(yè)技能,積累的知識(shí),加上有良好的人際關(guān)系,會(huì)幫助我掀開生活中的新一頁。