扎心了!面試官:這麼基礎的題目都做錯,都不知道你是怎麼做項目

2020-12-17 洪生鵬

作為一名java程式設計師,求職面試時,不知你有沒有遇到,面試官提問的問題很簡單,可自己卻答錯了。

有次,我到一家網際網路公司應聘,公司前臺妹子叫我先做一下筆試題,其中有一道題目是這樣的:

publicclassIntegerTest {publicstaticvoidmain(String[] args) {Integer i = 10, j = 10; Integer m = 600, n = 600; System.out.println(i == j); System.out.println(m == n); System.out.println(m.equals(n)); }}

請問程序結果輸出什麼,我不假思索地選擇了

truetruetrue

心裡還想著,怎麼出這麼簡單的題目,後來面試官看了筆試題後,說,你都工作兩年了,我看你做的項目也不少,怎麼這樣的題目都做錯了。說得我特別不好意思。

正確答案應該是:

truefalsetrue

其實這道題目無非就是考察兩點,java裝箱和拆箱的問題。

一.什麼是裝箱?什麼是拆箱?

裝箱 就是自動將基本數據類型轉換為包裝器類型;拆箱 就是自動將包裝器類型轉換為基本數據類型在電商平臺中,商家寄快遞,打包,這個操作我們叫做裝箱,消費者買東西收到快遞後拆包,叫拆箱,那麼java程序中的裝箱又是怎樣的呢,下面我們來看看具體例子。

在程序中,如果我們需要生成一個數值的對象,可以這樣使用

Integer a = 100; //裝箱

這個過程就會根據數值創建對應的 Integer 對象這就是裝箱

而拆箱呢,則可以這樣

int b = a; //拆箱

這個時候就是拆箱操作。

或許上面的解析過於籠統,下面我們再寫個例子來反編譯一下,進一步驗證下,看看整個過程調用了哪些方法。

publicclassIntegerTest {publicstaticvoidmain(String[] args){Integer i = 100;int j = i; }}

反編譯之後的結果如下:

從反編譯的結果我們可以得知,在裝箱的時候,調用了 Integer 的 valueOf(int i) 方法;而在拆箱的時候,則調用了 Integer 的 intValue() 方法。

關於 Integer.valueOf方法,我們來看下它的源碼

publicstatic Integer valueOf(int i){if (i >= Integer.IntegerCache.low && i <= Integer.IntegerCache.high)return Integer.IntegerCache.cache[i + (-Integer.IntegerCache.low)];returnnew Integer(i);}

通過源碼可以看到,在 Interger 的 valueOf 方法中,如果數值在 [-127, 128] 範圍的時候,就會去 IntegerCache.cache 這個數組尋找有沒有存在的 Integer 對象的引用,如果有,則直接返回對象的引用,如果沒有(超過了範圍),就新建一個 Integer 對象。

現在我們再回過頭來再看看文中開頭的題目

Integer m = 600,n =600;

600不在這個 [-127, 128] 範圍,所以我們用 == 程序就返回false 而用equals 這返回true 。

equals方法是這樣定義的,先拆箱為int再比較

publicbooleanequals(Object obj){if (obj instanceof Integer) {return value == ((Integer)obj).intValue();}returnfalse; }

總結

Integer裝箱操作:例如 Integer i= 3;這種格式的代碼,將編譯成

Integer i=Integer.valueOf(3);

這就是裝箱操作。Integer拆箱操作:在編譯期將Integer轉換成int類型,會調用int j = i.intValue()方法,拆箱操作在例子中表現為,int類型與Integer類型進行==比較,此時Integer會進行拆箱操作。

以上只是關於java裝箱和拆箱的簡單分析,由於筆者水平有限,文中紕漏之處在所難免,權當拋磚引玉,不妥之處,請大家批評指正。

相關焦點

  • 扎心了!面試官:你都工作3年了,對這個都不了解,說不過去吧
    張工是一名程式設計師,最近去一家公司面試,面試官問他關於mysql中函數greatest和max有什麼區別?
  • 面試有沒有必要做筆試題?網友的回覆很扎心
    今天面試了一位程式設計師,兩年多工作經驗,這位求職者筆試題只做了兩道題目,後面幾道全是空白的,剛開始以為這位求職者不懂不會作答,後來面談時才發現這位求職者不僅基礎紮實,邏輯思維嚴密,是難得的候選人,面談完後就跟領導說明情況,原以為他會被錄取。
  • 【校友來稿】在LinkedIn做面試官的故事
    ,在面試後的評價中也會綜合衡量,跟其他的面試者比較,最終打出一個分數。問題:我不是算法大牛,不是ACM隊員,聽說Google,Facebook有很多牛人才能進,那我怎麼能拿到好Offer?首先要是要有信心,算法不是想像那麼難。第一:因為面試常見的算法就那麼幾種。只有你努力去總結歸類相似題目,才能只做很少的題就可以會很多的題。不要盲目關注數字。做題質量非常重要。
  • 數據分析求職面試基礎考題,你是否都會了?附面試真題
    這大概是面試官面試題庫中的第一題了,許多人都喜歡以這個作為自我介紹後的開場問題。其實,悄悄告訴你,很有可能是面試官之前工作太忙,還沒有來得及看你的簡歷,問你這一題,剛好有時間再看看你的簡歷,思考之後的提問!
  • 談談校招面試官的感受:6條建議助你進入BAT
    學校重要嗎重要,因為是校招,大家都沒有項目沒有經驗的情況下,學校背景是硬指標,這是個概率問題,學校不好技術很牛的畢竟是個例。但是面試時不要給自己貼標籤,比如渣本,非211之類,面試官也是過來人,看到你的簡歷就知道你學校怎麼樣,不需要妄自菲薄,反而顯得不夠自信。
  • 面試官:小夥子,你都工作兩年了,怎麼還只會用,而不知道原理啊
    作為一名java程式設計師,求職面試時,關於集合的問題時常會遇到。張工是一名java程式設計師,最近到某網際網路公司面試,面試官提出這樣的一個問題:說說你知道的HashMap和LinkedHashMap有什麼區別?張工印象中只記得LinkedHashMap能夠保證順序性。
  • 現實的DATA面試:你沒sense,面試官就對你沒sense
    誰沒做過幾個分析?match上不難吧?求職系列精品講座想要轉Data的同學看過來,你想知道轉Data勝算幾何嘛?面試什麼流程?又有什麼備戰建議?FLAG資深數據分析工程師Gary老師將為大家帶來一場精彩講座!
  • 同樣是考算法,FLAG面試官都關注什麼?
    9月即將迎來秋招面試高峰期,對於目標是FLAG的同學來說,刷題是極為重要的面試基礎。除了埋頭刷題,無論是找實習還是找全職,都有必要了解FLAG算法面試的難度和風格。 Facebook的算法題有題庫,但比較難預測。
  • 面試很容易緊張,怎麼表現才能不影響發揮?網友:面試官更緊張!
    朋友有面試恐懼症,每到面試的時候,很容易緊張,一緊張就不知道說什麼了,也不知道該怎麼做,雖然本身自己工作能力還不錯,但是每次面試都會大打折扣,很多面試都通過不了,很難找到自己滿意的工作。面試容易緊張,要怎麼表現才能不影響自己的發揮呢?
  • 經歷100多場面試之後,一位面試官給軟體工程師的建議
    如果你卡住了,面試官會幫助你。對面試官來說,關鍵是看應聘者能否在經歷一個不熟悉的題目後恢復狀態,做好接下來的題目。另外,有經驗的面試官可能會在你解題吃力的時候,由提問題改為教你怎麼做,不要把這種改變理解為失敗,這種情境變化有助於大多數人跳出解題中的困境。面試官這麼做是為了幫助你,並在幫助的同時評估你,而不是一上來就評判你。
  • 面試官:考科目三時,什麼項目最難考?美女神回復直接被錄取!
    面試官:考科目三時,什麼項目最難考?美女神回復直接被錄取!通過簡歷的篩選,再到獲取面試資格,職場的競爭就是這麼殘酷。正常來說,規模大的公司的面試都很正規,但是小公司就比較隨心所欲。不過每個企業都有自己的企業理念和文化,所需要的職工要求也不一致。所以在求職路上,找到適合自己未來發展的企業也是較為困難的事。在求職的時候,面試官發問的問題也讓人捉摸不透,所以,平時要培養好自己應變能力,和問題分析能力。小玲是為大學畢業生,小玲剛剛畢業出來,便想著去尋找一份工作。
  • 5道選擇題全做錯,說起項目卻頭頭是道,這樣的求職者能錄用嗎?
    上周面試了一位程式設計師,公司規定來應聘的求職者需要先做一份簡單筆試題,只有5道選擇題,目的是為了考驗求職者編程基礎是否紮實。這位求職者兩年多開發經驗,看了他的筆試題後,發現這5道選擇題他都做錯了,不應該啊,這5到題目都是基礎知識,其中有一道選擇題是這樣的:下面這段程序輸出的是什麼publicclassTest{publicstaticvoidmain
  • 單位招聘主管會計,面試官出的3個題目,答錯的會計基礎知識不好
    企業招聘主管會計,面試官提問的3個問題,會計基礎好就不會出錯最近會計小嵩參加了一家建築企業招聘主管會計的活動,面試官對前來應聘的會計首先進行初選,初選就是回答一些簡單的提問。初選結束後,面試官會選擇初選合格的會計進入複選,複選直接決定招聘的結果。
  • 面試官:連Serializable都不知道是什麼,你這5年都幹些什麼了?
    文|洪生鵬程式設計師面試時,序列化知識點經常會遇到。張工是一名java程式設計師,工作5年了,一直從事java開發。最近到某網際網路公司面試,做了筆試題後,有一道筆試題是這樣子的:Serializable有什麼作用,張工沒有作答,面談時面試官又問了,張工回答不出個所以然。
  • 面試官:你的缺點是什麼?這樣回答堪稱完美,高情商的人都這麼說
    這不是虛構的故事,而是我一個HR朋友的真實經歷——只不過我朋友比較禮貌,沒有直接讓面試者「滾」,而是呵呵一笑,然後就一直瞅著對方,就跟瞅傻子似的,直到那人實在坐不住了,奪門而逃。面試時,很多人都害怕面試官問「缺點」,因為他們不會回答,同時也因為他們不想暴露自己的不足給別人。
  • 谷歌面試官揭秘春招0面試真相....
    如今,很多科技公司的面試流程和規範都在「亞麻化」,面試官們也更加注重對求職者們BQ方面的考察。那麼,面對這個求職路上的難題,我們該怎麼準備?又該如何正確的回答?3、Facebook面試官直播:一線公司項目面試題如何攻破?為考察求職者的自身經歷和能力,項目相關的問題成為很多大廠面試的必考環節。那麼,項目問題要怎麼準備?怎樣回答才能收穫面試官的讚賞?
  • 零基礎編程小白如何拿 Offer?八年經驗面試官萬字肺腑之言
    但很多想從事Java開發的同學被卡在了第一步:無法積累足以找到工作的項目經驗,甚至不知道該如何積累,導致缺少面試機會,或者面試總通不過,導致很多有編程天賦、聰明上進的程式設計師可能與感興趣的職業失之交臂。作為面試官,我知道Java初級開發的最低面試標準,作為Java培訓講師,我幫助過不少零基礎的人應聘成功初級Java開發崗。
  • 面試時,故事貌似講得很有邏輯,但卻吸引不了面試官,你知道原因嗎?
    小夥伴們是否遇見過這樣的困惑▽剛面試完就已經想不起剛才是怎麼回答的,面試官也全程沒有抬頭難道你的志願者經歷就是比別人水
  • 銀行面試 | 面試考官喜歡問這些問題,你都準備了嗎?
    今天,小編就給小夥伴們盤一盤半結構化面試是在結構化面試的基礎上,主考官、其他考官就應試者答題中涉及的有關問題或有疑問的地方進一步追問,提問問題的數量由面試總時間決定。它綜合了結構化面試和非結構化面試的優點,對面試的部分因素有統一要求,但面試題目可以根據應試者的不同而靈活變化,更好地找到最適合從事某崗位工作的人,實現「人——崗位——組織」匹配。
  • 軟硬體崗位都有!超詳細秋招求職記錄(附具體題目)
    offer待遇還可以,不加班,加班有加班費,有年假等福利待遇。秋招最受打擊的一次面試,快手也做晶片,這個好多人都不知道,所以面試前也沒求到任何面經,就自己硬上了,無非還是自我介紹,項目介紹,吧啦吧啦。面試時間足足一個小時,總體感覺就是面試官對我一臉不屑,對我做的東西也完全不感興趣,完全就是為了湊夠一個小時的面試,與面試官交流感覺自己啥都不會,特別卑微,可能自己確實很菜吧。快手可能更看重科班出身的,畢竟一個比較小的team。