面試實戰之“短路與、短路或區別”

面試的時候是不是經常會遇到這種問題?給出一段代碼,問程序執行的結果是什麼?

面試實戰之“短路與、短路或區別”

此時的你內心OS怕不是這樣的:MMP,老子又特麼不是計算機,咋會知道這破程序跑出啥結果?

不過雖然是這麼想,題還是要做的,問題是思路怎麼展開呢?

面試官出這樣的問題,肯定是考察你某一個或幾個技術方面的硬實力,當然順帶著看下你的代碼能力和邏輯能力。

面試實戰之“短路與、短路或區別”

遇到這樣的問題,首先不要慌,和麵試官確認題目沒有印刷錯誤後仔細審題,調動一切腦細胞搜索各種技術點,先將面試官希望考察的點定位。如果在考察的技術點上自己確實沒有深入瞭解過,建議大家不要企圖矇混過關,與面試官溝通並表達自己的理解確實不足,希望面試官可以從別的方面繼續接下來的面試。當然了,如果這些技術點你之前深入研究過,不要放過這個機會,進入你的show time。

面試實戰之“短路與、短路或區別”

如果遇到的代碼比較複雜,可以將代碼拆分,逐步分析、推演,試想自己如果是CPU,將如何執行。

下面以一道新鮮出爐的面試題為例,和大家一起來看下如何解決此類面試題。

首先,給出一段代碼

面試實戰之“短路與、短路或區別”

問執行完這段代碼,程序的輸出為何?

拿到題目(確認階段省略)以後,分析如下:

  1. 題目中含有&、|、&&、||運算符,就職業敏感度來講上面這段代碼肯定是考察短路與、或的區別了(如果想不到這些,建議先把基礎知識啃一邊)。
  2. 腦海裡頓時浮現出短路與、短路或的區別
在java中有專門的短路邏輯操作符,還有專門的非短路邏輯操作符。不準短路的邏輯操作符有,邏輯與&、邏輯或|。用這種邏輯操作符時,計算機默認不進行短路。https://baike.so.com/doc/7040462-7263367.html


經過以上步驟,表達式(a>b&(a++)>b&&(--b)

你學到了嗎?

歡迎關注公眾號“工程師修煉之道”,不定期發佈技術乾貨,面試技巧。


分享到:


相關文章: