答疑 | 面試全對,卻沒offer?
此文轉載自:https://blog.csdn.net/weixin_49527334/article/details/110290948#commentBox
構造方法
1. 如何理解java中的構造方法?
答:顧名思義,構造方法主要用於“構造”出一個物件。平時說的,類可以產生一個物件,實際就是類通過“new + 構造方法”產生了一個物件,例如Person per = new +Person構造方法() 。
構造方法的最大特點就是,沒有返回值。
構造方法具體有以下幾個作用:
(1)可以通過關鍵字new構造出一個物件。
(2)當給物件的屬性賦值時,可以用多個setter方法,也可以用構造方法一次性賦值。即,此時,構造方法相當於多個setter。
(3)單例模式的一個核心實現就是:構造方法私有化,另一個是:列舉。
(4)構造方法可以產生一個物件,並且在產生該物件前會先自動呼叫其父類的無參構造方法,也就是在構造方法的第一句話會預設呼叫super()。
(5)一個類可以有多個過載的構造方法,並且多個構造方法之間可以使用this()相互呼叫。但是必須有一個構造方法沒有this()呼叫其他方法,否則會陷入死迴圈。
(6)一個類如果沒有顯示的寫上任何構造方法,也jvm會給該類自動生成一個無參構造;但如果手工寫了任何一個構造方法,也jvm不會再提供無參構造。因此,當我們手寫了任何一個構造方法後,就建議馬上寫一個無參構造。
(7)在專案中,對於javabean,一般至少會寫這麼三個構造方法:無參構造,全參構造,除id以外的全參構造。
(8)構造方法和setter、getter、toString()等,幾乎是每個實體類的標配。除了每次自己編寫(或用編譯器自動生成)以外,還可以使用lombok外掛自動完成。也就是說,使用了lombok之後,以後就不用再寫構造方法、setter等了。lombok的使用,百度谷歌隨處可得,自己查一下吧。
需要更多大廠面試資料的話也可以點選直接進入,免費獲取!暗號:CSDN
if…else…同時執行
2.今天面試看見這個題,____處該填什麼呢?(如何才能同時執行if…else…?)
填空,使得程式的執行結果是:helloworld
if (____) {
System.out.print("hello");
} else {
System.out.print("world");
}
答:首先說明,if…else…是不可能同時執行的,這應該是選擇結構第一堂課上老師必然會講的內容。此題屬於腦筋急轉彎,考察的是一種創新能力。
答這個題之前,先想想以下這行語句的輸出結果是什麼?
System.out.println(System.out.printf("hello"));
結果是:hellojava.io.PrintStream@12a3a380
因為輸出語句最終呼叫的printf(“字串”),實際是在java.io.PrintStream中的printf(“字串”)方法,原始碼如下:
public class PrintStream extends FilterOutputStream
implements Appendable, Closeable
{
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
...
}
可見,printf()引數是字串時,返回時是一個PrintStream物件。如果繼續跟蹤formar()方法,可以發現最終會返回一個不為null的PrintStream物件。因此答案來了,可以填入的值是:
System.out.printf("hello") == null
完整程式碼如下所示。
public static void main(String[] args) {
if (System.out.printf("hello") == null) {
System.out.print("hello");
} else {
System.out.print("world");
}
}
if在判斷的過程中已經輸出了hello,但判斷結果為false,因此又會輸出else中的world,所以答案就是helloworld。
實際上,以上的分析都不重要。重要的是,是怎麼想到在if中再巢狀一條完整語句的,這個思路是怎麼產生的?因為聯想到了IO流中一條非常常見的程式碼,如下。
while((len = in.read(buf)) != -1) {
...
}
...
面試全對,卻沒offer
3. 我這幾天參加了幾次面試,有的是筆試。自我感覺回答的都還不錯,並且回去了我查了答案,感覺都對著,但為什麼一份offer也沒拿到?
答:個人覺得,有這麼幾種可能:
(1)你回答的都對,但答案過於標準,面試官可能懷疑你的答案是背誦的某個“面試寶典”。軟體開發不是應試教育,不需要標準的答案。很多時候,公司更需要一種有獨立思維的員工。也就是說,面試官喜歡的答案是:你的回答是獨一無二的(儘可能),至少能從回答中 看到你是對這個問題有自己獨到的思考,而不希望你的回答和之前N個應聘者的答案一模一樣。更詳細的,你可以看看這篇文章,戳右側紅色字型(超連結): 技術面試,這些坑你踩過幾個?
(2)公司只想花4k僱一個做CRUD的,而你卻寫著期望2W+。
(3)行業水太深了。A公司可能根本不缺人,但由於合作關係、績效任務等等原因,不得不作為招聘方去參加一場招聘會(或者其他形式的招聘)。因此,招聘者可能根本沒有仔細聽你在說什麼,只是想跟你隨便聊幾句,然後下班回家。
(4)招聘轉招生。根本不是在招聘,是培訓機構在招生。常用手段就是,讓你做一套題,然後告訴你“你的回答太淺了”(如果你有錯,就會說“你的回答太差了”)。然後告訴你“培訓機構哪家強?快來到我這報名,包你畢業後這些題都會,包你拿高薪……”
(5)年齡、person類中那個boolean型別的屬性(《某某法》不讓說)……
(6)歡迎在評論區補充~
不過還想說一句,這些其實都不重要。因為,從我接觸過的人整體來看,很多人可能都遇到過一些無語的面試經歷,但最終還是符合常理的:能力強的進大廠、拿高薪,能力弱的去小公司、甚至轉行。從來沒有一帆風順,只有堅持與努力。
讀者福利
感謝你看到了這裡!
我這邊整理很多2020最新Java面試題(含答案)和Java學習筆記,如下圖
上述的面試題答案小編都整理成文件筆記。 同時也還整理了一些面試資料&最新2020收集的一些大廠的面試真題(都整理成文件,小部分截圖)免費分享給大家,有需要的可以 點選進入暗號:CSDN!免費分享~
如果喜歡本篇文章,歡迎轉發、點贊。
記得關注我!