Java面試變成八股文? 我終於知道了真相...

2021-12-25 LintCode領扣

國內的網際網路面試,恐怕是現存的、最接近科舉考試的制度。

國內的八股文確實是獨樹一幟。以美國為例,北美工程師面試比較重視算法(Coding),近幾年也會加入Design輪(系統設計和面向對象設計OOD)和BQ輪(Behavioral question,行為面試問題)。

所以大多數北美工程師的面試準備是這樣的:

我見過刷300題左右進Google的,也見過刷1000+題還拿不到offer的.但總的來說,只要面試中遇到的算法題,能夠按自己的思路做出來,並能應對面試官的follow up,這一關基本就妥了。所以大多數人會在跳槽前刷LintCode這類的在線編程測評題庫。


一般來說是分為系統設計和面向對象設計。5年以下經驗的多數會考面向對象設計,和國內不同的是需要畫類圖;5年以上的大多考系統架構設計。參考資料:系統架構設計2021版;面向對象設計OOD,以上都可以免費試聽

即行為面試問題,常考的問題諸如「你為什麼從上一家公司離職」、「你在之前的工作中做過的最有成就感的事情是什麼?」等。

可以看出,北美工程師是很少「背答案」的,要麼考邏輯思維能力,要麼考編程能力,而不是問概念、問理論。

那麼為什麼國內面試不採取這樣的考察方式呢?簡單來說,網際網路IT行業的求職者太多了,如果考察的是清一溜的算法題和設計題,那麼會要求面試官有極高的技術水平,還要花大量的時間成本和精力。

所以,也許現行的八股文面試不是最優的解法,但也是最符合當前國內IT環境的做法。

話又說回來,現在的Java面試真就老八股文了。我光是整理題目就理了半天,答案背也背不完,在我快要放棄的時候,死馬當活馬醫的聽了阿里P8楊逍的講座《大廠Java高級工程師的求職秘訣》,大佬把Java面試題和所有知識點都講得很通透,感興趣的話,大家也可以去免費試聽一下。

先上這些Java面試真題(Java基礎)

兩個對象的 hashCode()相同,則 equals()也一定為 true,對嗎?java 中的 Math.round(-1.5) 等於多少?java 中操作字符串都有哪些類?它們之間有什麼區別?String str="i"與 String str=new String("i")一樣嗎?

回到剛才的問題,Java的面試是需要背的,也確實是老八股文了,但這個背是有技巧的。

這麼簡單的問題相信大家都會,等你答上來了面試官就會繼續追問:

「除了javac你還了解些什麼命令行工具,它們的用途是什麼?」

很多人只答得出jcmd、jps、jinfo、jstat、jmap以及jstack等工具,但對應的用途卻記不清了。答出來的也不要太得意,後面還有靈魂拷問。

既然StringBuffer具備線程安全性,迭代開銷又小,那我們實踐中首選它就ok了嗎?

這正是大廠面試Java程式設計師的基本套路——從簡單題入手,再慢慢的挖掘背後的原理,從而判斷求職者的技術水平,目的是考察對源碼的深挖意識。

所以,想搞定Java面試,一定要擁有精益求精的精神,深挖底層原理,把技術棧學通透。

再舉個例子,在「Java 中操作字符串都有哪些類?它們之間有什麼區別?」這道題上,如果能答出「StringBuffer和StringBuilder都繼承自抽象類AbstractStringBuilder」,面試官就知道你是讀過源碼的人,能給你加不少分。

接下來就是把面試真題全部摸一遍,阿里P8楊逍老師在《大廠Java高級工程師的求職秘訣》的講座中會深入剖析30+道大廠經典面試真題,如果自己學起來比較費勁的話,不如聽一節視頻先入個門,後面也會輕鬆很多。

①Java基礎:String 類的常用方法都有那些?

• indexOf():返回指定字符的索引。

• charAt():返回指定索引處的字符。

• replace():字符串替換。

• trim():去除字符串兩端空白。

• split():分割字符串,返回一個分割後的字符串數組。

• getBytes():返回字符串的 byte 類型數組。

• length():返回字符串長度。

• toLowerCase():將字符串轉成小寫字母。

• toUpperCase():將字符串轉成大寫字符。

• substring():截取字符串。

• equals():字符串比較。

②容器:如何決定使用 HashMap 還是 TreeMap?

對於在 Map 中插入、刪除和定位元素這類操作,HashMap 是最好的選擇。然而,假如你需要對一個有序的 key 集合進行遍歷,TreeMap 是更好的選擇。基於你的 collection 的大小,也許向 HashMap 中添加元素會更快,將 map 換為 TreeMap 進行有序 key 的遍歷。

③多線程:sleep() 和 wait() 有什麼區別?

• sleep():方法是線程類(Thread)的靜態方法,讓調用線程進入睡眠狀態,讓出執行機會給其他線程,等到休眠時間結束後,線程進入就緒狀態和其他線程一起競爭 cpu 的執行時間。

因為 sleep() 是static 靜態的方法,他不能改變對象的機鎖,當一個21塊中調用了 sleep() 方法,線程雖然進入休眠,但是對象的機鎖沒有被釋放,其他線程依然無法訪問這個對象。

• wait():wait()是 Object 類的方法,當一個線程執行到 wait 方法時, 它就進入到一個和該對象相關的等待池,同時釋放對象的機鎖,使得其他線程能夠訪問,可以通過 notify,notifyAll 方法來喚醒等待的線程。

throws 是用來聲明一個方法可能拋出的所有異常信息,throws 是將異常聲明但是不處理,而是將異常往上傳,誰調用我就交給誰處理。而 throw則是指拋出的一個具體的異常類型。

以上只是Java面試的冰山一角,感興趣的話也可以移步楊逍老師的Java面試技巧講座,這門課程非常看重實用性,設計理念就是「通過真題搞定BATJ大廠面試」,通過40天有計劃的訓練,帶你進階到阿里 P6+級別。

相關焦點

  • 《八股文》34道Java 基礎面試題
    今天我來給大家帶來34道Java基礎面試題,助力要準備面試的同學拿到好的offer!1.介紹一下 java 吧2.java 有哪些數據類型?3.接口和抽象類有什麼區別?4.重載和重寫什麼區別?5.常見的異常有哪些?6.異常要怎麼解決?
  • 八股文
    而這恰恰就是八股文的結構。——也就是說,八股文是中國古代議論文體發展到極致的產物。用八股文的術語講,第一部分「點出主題」,就叫做「破題」,第二部分「概括說明」就叫做「承題」和「起講」,而第三部分「從各個方面進行論證」就是八股文的主題部分,一般說來是八個段落,兩兩對偶,分別叫做提比、中比、後比、束比,也可以叫第一股、第二股、第三股、第四股,一直到第八股,——這也就是「八股文」這個名字的來由。
  • 這份Java面試八股文讓329人成功進入大廠,堪稱2021最強
    2021秋招已經一段時間了,很多同學會問Java面試八股文有必要背嗎?我的回答是:很有必要。
  • 例解八股文
    八股文自洪武十五年橫空出世,明清500年間,絕對是思想文化界的霸王龍。讀書人皓首窮經,無不競奔於科舉之途,若八股文作得不通,就百無一用。如蒲松齡這樣的奇才,放在當今,至少是諾貝爾文學獎的候選人,但八股文寫得不好,因此身逢康熙盛世,也只落得輾轉溝渠,一輩子當一個三家村的教書先生。
  • 八股文是什麼?八股文是怎麼毀掉人才的
    八股文的現代定義:八股文,明清兩朝考試制度規定的文體。始於明朝永樂年間。
  • 從 V8 角度揭秘你不知道的面試八股文
    了解 V8何為揭秘八股文常規操作:如果你是面試官: 打開網站直接搜索麵試題,背下來直接問如果你是求職者: 打開網站直接搜索麵試題,背下來直接回答這只是一個答案與問題匹配的過程,懂不懂不重要,因此會被套上八股文的殼子。
  • 八股文大美
    八股文作為一種流行500年之文體,興於宋,行於明,盛於清,終於1905年。
  • 閒話八股文
    但在明清時期,文人士子要想入仕途、享富貴,全靠科舉考試,而考試又全憑八股文。寫得好,立馬飛黃騰達;寫不好,永無出頭之日。八股文起源於宋元,定型於明成化,至清光緒末壽終正寢。科舉考試不同於現在的高考綜合測試,那時候只考一場作文,就是八股文。這是一種特定的科舉文體,也稱制義、制藝、經義、時文、八比文。文章死守固定的格式,由破題、承題、起講、入手、起股、中股、後股、束股組成。
  • 八股文簡介
    明憲宗成化年間(1464年-1487年),經王鏊、謝遷、章懋等人提倡,八股文逐漸形成了以講究格律、步驟,並逐漸形成比較嚴格的程式。成化二十三年(1487年),始由"經義"變為開考八股文,規定要按八股方式作文,格式嚴格,限定字數,不許違背經注,不能自由發揮。       明朝中葉,形成八股文。八股文每篇由破題、承題、起講、入手、起股、中股、後股、束股等固定段落組成。
  • 象思維(108)八股文(上)
    到南宋才具八股雛形。元代考試,出題範圍,限制在《大學》《中庸》《論語》《孟子》四種書中,因而也叫「四書文」。這就是最早的八股文了。明代朱元璋洪武三年,詔定科舉法,應試文仿宋「經義」。明朝中葉,最終形成八股文。成化二十三年(1487年),經多名大臣提倡,逐漸形成比較嚴格固定的八股文格式,八股文就此形成。
  • 八股文與高考作文
    八股素來聲名不佳。我輩束髮之年,就知道八股「空話連篇,言之無物」;到而立之年,更懂得其罪在「思想僵化,形式固化」。「八股」究竟何物,卻是片鱗碎甲數十載,才漸知子醜寅卯。本著唯物史觀,不妨掀開塵封故紙,鉤沉稽古,「取其精華,棄其糟粕」,鑑於時文,資於作文。
  • 重新理解八股文的科考意義
    這個考試的目的我以前分析過,就是考你智商。我們總罵八股文的那群人,其實自己根本寫不出八股文,現在是大學的中文系教授,你讓他短時間臨場寫八股文或試貼詩,他都做不到格式正確的基本要求。古人在八股文盛行的當時,其日常的文章,用文言文但絕對不是按照八股格式進行的。八股文在考試當中的作用,有替代邏輯和智商考試的作用的,而且讓你的考試作弊變得更加困難。如果不是事先知道題目,想要按照現在準備高考作文這樣準備範文套用,是行不通的。格式嚴格杜絕套用,需要足夠高的智商,實際上還把皓首窮經的那些人給擋在了門外,也就是孔乙己這樣的人,當然他們在廢除科舉後也是痛罵八股文的。
  • 八股文入選杭州高中語文教材 學者分析八股文起承轉合組織意義
    周偉說,八股文可以反映思維的過程,其中的由淺入深、起承轉合都值得學習。推薦王鏊和王陽明兩篇八股文的高利認為八股文的價值不可否定:「明清兩個朝代600年的八股文,是有合理成分的。知識只是載體,希望學生能夠開闊視野,了解中國的傳統文學。」
  • 八股文為什麼重新被重視?
    前幾年,不知道大家有沒有聽到這樣一則新聞:杭州高級中學選編的語文教材中包含的八股文,分別是明朝初期王鏊的殿試之作《民既富於下,君自富於上》,著名心學大師王陽明的《志士仁人,無求生以害仁,有殺身以成仁》,另外一篇則來自於「科舉」緊密聯繫的多次擔任科舉監考官——曾國藩的《與諸弟書》。
  • 陳立彤 反思英語教育八股文
    到現在,教師在課堂上往往是一本教材、一塊黑板、一支粉筆、一臺錄音機,每篇課文的講授內容一般都是領讀生詞、講解課文、分析語法、做做練習、對對答案,現在學生都有跟教材配套的教師用書,這種八股式的教學方式,早已使他們失去了「好奇心 」,他們往往是不愛問、不想問,也不知道如何問,這樣的課堂教學其效果能理想嗎?
  • Java 多線程八股文!
    非常簡單和專業的線程面試問題,但是如果他問你怎樣分析它,就會很棘 手。2.在Java中Lock接口比synchronized塊的優勢是什麼?你需要實現一個高效的緩存, 它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實現 它?
  • 深受詬病的八股文,是如何形成和興起的?
    八股文自開創以來,其爭議頗大。從明清科舉時代的趨之若鶩到民國時期的極力抵制,再到潛移默化地大範圍學習,我們對八股文的認識經歷了一個漫長曲折的過程。 幾百年來,八股文的影子似乎已經融進我們的學習生活。小學期間初見的排比句;中學時代寫的議論文;大學時期不寫論文畢不了業。
  • 何謂八股文?為什麼古代很多有名的才子屢試不第?
    首先,「同志們,下面我就今年全年的工作進行總結」,——這就是「點出主題」。然後呢,「今年以來,在公司領導的正確領導和大力支持下,在各位同事的共同努力下,我們部門的業績有了極大的提高,全年銷售額共達到了**萬元」,——這就是「對主題進行概括說明」。再接下來呢?「下面我對部門工作進行詳細總結,一是×××,二是×××,三是×××」,——這就是「列出論據,從幾個方面進行論證」。
  • 乾貨:Redis面試八股文第二彈
    大家好,我是路人張,最近經常被催更八股文,所以抽空總結了下,本篇博客是Redis面試八股文的第二篇,共計六千多字,預計還有兩篇,公眾號後臺回復面試手冊,可以獲取PDF版(本篇還未整理到PDF),原創不易,大家幫忙點個讚呀。
  • 第467期 | 學術八股:古代八股、洋八股和新八股
    從古代的角度來講,八股其實是指基本的人文。因為古代的自然科學和社會科學是不發達的,所以八股主要是指人文科學。八股 只是一種基本的寫作形式,尤其是在科舉考試中。但是,八股這個詞,在現代視野中變成了一個貶義詞。事實上,我們客觀地講一 下,八股不管作為古代科舉用的文體,還是我們現代的論文,都只 是作為文章的一種寫作方式,無所謂好壞,無所謂褒貶。