日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

金九银十北漂记第2篇:《Java程序员面试宝典》读书笔记

發(fā)布時(shí)間:2023/12/8 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 金九银十北漂记第2篇:《Java程序员面试宝典》读书笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

盡信書,則不如無書。—–孟子

談一談這本書

?《Java程序員面試寶典》是我接觸的第一本講解面試相關(guān)的書籍在看到這本書之前我就經(jīng)常逛csdn的bbs,已經(jīng)接觸面試之類的知識。不過這本書還是帶給我好運(yùn),在去年的校招中學(xué)會一些技巧,乃至獲得幾家offer的機(jī)會。

?老早就聽別人說這本書有很多詬病,比如:錯(cuò)漏百出,概念不清,代碼混亂,排版錯(cuò)誤,不遵循Java編碼風(fēng)格等 ,還有,作為一本《Java面試書籍》,里面有很多c/c++方面的東西,這可能與作者寫《程序員面試寶典》有關(guān),因?yàn)檫@本書是另一本的姊妹篇。去年的這個(gè)時(shí)候我在學(xué)校圖書館借閱到了這本書,感覺真的是一本寶典。當(dāng)時(shí)在網(wǎng)上的大神它的批評,我內(nèi)心覺得太過苛刻,是無法接受大神對這本書批判的。今年的這個(gè)時(shí)間點(diǎn)又到我求職面試的季節(jié),聽說這本書出到了第4版本了,想必應(yīng)該修改了不少地方了,將書中不足之處做了修改。于是在京東買了最新一版的第4版回來,心里滿滿的期待感。看到前言提到“更新了部分程序面試題目,內(nèi)容主要取材于2013年至2015年多家大公司的面試題”,心想肯定是撿到了干貨。

?下面是我的讀書筆記,不是一味的批判本書,而是在我現(xiàn)有的技術(shù)基礎(chǔ)上讀到的感悟,取其精華,去其糟粕。

第5章 JAVA程序設(shè)計(jì)基本概念

?前四章的主要內(nèi)容是交代求職過程,比如如何寫簡歷,如何參加校招等,遵循它的原則,我寫了自認(rèn)為比較滿意的簡歷。我覺得如果作者加上社招的經(jīng)驗(yàn)就更好了,如今互聯(lián)網(wǎng)這么火,加上Java是互聯(lián)網(wǎng)的第1開發(fā)語言,作者應(yīng)該談一談社招與互聯(lián)網(wǎng)的關(guān)系。談一談智聯(lián),51job,拉鉤,內(nèi)推等網(wǎng)站,哪些適合什么人投簡歷等等。正如像博主這種只有半年的工作經(jīng)驗(yàn),參加過校招,但是沒有社招經(jīng)驗(yàn)的人,很是需要這方面的指導(dǎo)。當(dāng)然了,不能一味的書上寫有的才去做,不寫就不知道怎么做,這不變成一書呆子了么?

1.i++問題:
下面程序輸出結(jié)果是多少?

public class Test1 {static {int x= 5;}static int x, y;public static void main(String[] args) {x--;myMethod();System.out.println(x + y++ + x);}public static void myMethod() {y = x++ + ++x;} } 答案:2

這里需要注意的是第3行的int x = 5;因?yàn)樗蔷植孔兞?#xff0c;x=5不影響后面的值。

下列程序的輸出結(jié)果是:

public class Test1 {public static void main(String[] args) {int j = 0;for(int i = 0; i < 100; i++) {j = j++;}System.out.println(j);} } 答案:0

因?yàn)镴ava用了中間緩存變量的機(jī)制,所以,循環(huán)體里面的j=j++可換成如下寫法:

temp = j; j = j + 1; j = temp;

2.類型轉(zhuǎn)換
下列的語法正確的是?

A. Short myshort = 99S; C. float z = 1.0; B. int t = "abc".length(); D. char c = 17c;

參考答案是:D.
?但是一切都是編譯器說了算了。編譯器告訴我:B才是正確答案。A和D這種后綴幾乎不存在,1.0默認(rèn)是double類型,如果非要說1.0是float型的話,一般都是這樣寫的:1.0f。還有l(wèi)ength()和length的區(qū)別是:length用于數(shù)組的長度,length()用于字符串長度。

?作者在講解自動(dòng)了類型轉(zhuǎn)換的時(shí)候,舉例子有范了錯(cuò)誤。原文:
低級變量可以直接轉(zhuǎn)換為高級變量,這叫做自動(dòng)類型轉(zhuǎn)換。例如,下面的語句可以在Java中直接通過:

byte b;int i=b;long l=b;float f=b;double d=b;

?作者的講解時(shí)沒有錯(cuò)的,錯(cuò)就錯(cuò)在這個(gè)例子上面,這里的變量b未初始化就直接使用了,在Java會報(bào)錯(cuò):The local variable b may not have been initialized.所以說上面的語句在Java中直接通不過。

包裝類過度類型轉(zhuǎn)換

?原文說:Java的包裝類就是可以直接將簡單類型的變量表示為一個(gè)類。Java共有六個(gè)包裝類,分別是Boolean、Character、Integer、Long、Float和Double.

Java的數(shù)據(jù)類型不是有8中么?還是byte和short呢?他們對應(yīng)的包裝類是Byte,Short。

作者的例1:
當(dāng)希望吧float轉(zhuǎn)換為double型時(shí):

float f1 = 100.00f; Float F1 = new float(f1); Double d1 = F1.doubleValue();

?代碼第二行的Float應(yīng)該大寫,這可能是印刷有問題,不過這還真的應(yīng)正了其他網(wǎng)友的那句話:排版不嚴(yán)謹(jǐn)。還有變量的命名也不嚴(yán)謹(jǐn)吧,變量名都是小寫字母開頭,這都是一種習(xí)慣而已。

3.main方法的寫法問題:
下面那個(gè)main函數(shù)的聲明是不合法的?

A. public static void main() B. public static void main(String[] String) C. public static void main(String[] exp) throws FileNotFoundException D. static void main(String[] args)

?參考答案:D。但是,A也是不合法的,對于每一個(gè)java Coder來說,hello world應(yīng)該都是第一個(gè)Java程序,開始寫了這么久的程序,可能沒有關(guān)注過main函數(shù)到底是怎么寫的,更不關(guān)注這個(gè)返回值的意義,是不是像c/c++那樣返回給系統(tǒng)的。我的理解main方法的寫法有點(diǎn)類似于方法的重載,返回值和參數(shù)個(gè)數(shù)類型必須一致。

?原書講解錯(cuò)誤之處:
A,B選項(xiàng)是合法的。C選項(xiàng)拋出一個(gè)文件異常,但也是合法的,并可以通過,至于選項(xiàng)D,因?yàn)閙ain方法必須是public,默認(rèn)的代表是protect,所以是不合法的。

?這個(gè)解釋導(dǎo)致讀者會誤認(rèn)為:一個(gè)方法默認(rèn)的屬性是protect范圍的,然而Java有四個(gè)屬性范圍,他們分別如圖:

?這張圖一目了然,如果你在方法或者變量前面沒有加屬性的范圍,那么默認(rèn)是default級別的,不是protected。作者以為不寫就是protected,而default的范圍和protected范圍是不一樣的。還有,作者把protected寫成:protect,我相信這可能是粗心大意造成的,不過書中有太多類似的地方。如果說作者的對Java的屬性范圍不清楚是功夫不到家,那么把關(guān)鍵詞寫錯(cuò),那就是在忽悠讀者了。

4.運(yùn)算符
以下代碼輸出結(jié)果是:

public class Test {public static void main(String[] args) {char x = 'x';int i = 10;Sysout.out.println(false?i:x);Sysout.out.println(false?10:x);}

?答案:120 x。很怪異的結(jié)果,編譯器確實(shí)結(jié)果也是這樣的,反正解析還是不能讓我信服。

5.&運(yùn)算符

?&運(yùn)算符以前我只知道是按位與,后來才知道,這哥們除了能夠按位與之外,還有邏輯與的功能,不過這哥們與&&的區(qū)別是,&&是短路與,如果前面的條件為假,后面不再執(zhí)行。而&不是短路與,無論前面的條件是真是假,照樣執(zhí)行后面的語句。如以下代碼:

int m = 5; int n = 5; if( (m != 5) && ( (n++ == 5) ) {Sysout.out.println("進(jìn)來過"); } Sysout.out.println(n);

(m != 5)是false,后面的那個(gè)n++不再執(zhí)行,因此輸出的n是5。

int m = 5; int n = 5; if( (m != 5) && ( (n++ == 6) ) {Sysout.out.println("進(jìn)來過"); } Sysout.out.println(n);

比較一下有什么區(qū)別吧。

5.final,finally,finalize的區(qū)別。
?這道題貌似去年做準(zhǔn)備的看過,不過去年的面試中,從來沒有遇見過有面試官問到這道題。

總結(jié)

?不要迷信書,盡信書不如無書。眼看千遍不如手過一遍,編譯器是最終的解釋權(quán)。但是目前我的技術(shù)水平,還是需要靜下心讀書。那么問題又來了,到底要不要看書,答案是肯定的。那就要多看書,看好書。

總結(jié)

以上是生活随笔為你收集整理的金九银十北漂记第2篇:《Java程序员面试宝典》读书笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。