筆試那些事(玩邏輯)

主要說說最近在筆試中頻繁遇到的題目,涉及到:邏輯題、實例變量與靜態變量的區別、Java類的加載問題

1.“盲人摸牌”,有52張牌,其中10張正面朝上,排除盲人能摸出正反面這種情況,問:盲人要把牌分成兩部分,怎么保證每一部分正面朝上的牌數相等?

2.“燒香定時”,有兩根分布不均的香,已知每根香正常燒完的時間是一個小時,問:怎么利用香來確定一段15分鐘的時間?

3.“大智保命”,某小島居住一群與世隔絕多年的人,某天,一探險家誤入該島,被島上人抓住(不糾結語言不通的問題),島上人說:外人進來都要被殺死,我們允許你有遺言,這將決定你的死亡方式。如果你說的是真話,你將會被燒死,如果你說的是假話,你將會被五馬分尸。問:冒險家怎么說才能保命?

實例變量與靜態變量的區別:
實例變量:是類對象的屬性,只有在創建類對象時,才會有實例變量
靜態變量:也稱類變量,是類所有,在類第一次被加載時就會存在
比較典型例子的是:實例變量無法通過類名直接調用,需要創建類對象,通過對象進行調用,但是靜態變量卻可以直接通過類名進行調用。

關于類加載問題
主要是寫出程序的輸出,涉及有父類和子類的普通代碼塊、靜態代碼塊及構造函數,下面是自己測試寫的例子
<pre>public class Parent {
{
System.out.println("父類普通代碼塊");
}

static{
    System.out.println("父類靜態代碼塊");
}

public Parent() {
    System.out.println("父類構造函數");
}

}</pre>

<pre>public class Children extends Parent{
{
System.out.println("子類普通代碼塊");
}

static {
    System.out.println("子類靜態代碼塊");
}

public Children() {
    System.out.println("子類構造函數");
}

}</pre>

<pre>public class LoadOrderTest {
public static void main(String[] args) {
Parent parent = new Children();
parent = new Children();
}

}</pre>
程序運行結果如下


44137534.png

!!靜態代碼塊在整個過程中只會加載一次

</br>

邏輯題答案:
1.“盲人摸牌”,首先分成42和10兩部分,然后把10的那一部分牌全部翻過來。
解析:共有10張正面朝上的牌,假設42中有x張正面,則10中有(10-x)張正面,10那部分全部翻了之后(正面變成反面,反面變成正面),10中正面的牌為(10-(10-x))張,即x張。所以此時兩部分正面朝上的牌數相同

2.“燒香定時”,姑且把香編號為A、B。同一時刻,把A兩頭點燃,B一頭點燃。由于一根香燒完是一個小時,那么此種情況下A燒完需要半個小時。A燒完時,點燃B的另一頭。那么點燃B另一頭的這一刻到B燒完這段時間即為15分鐘。

3.“大智保命”,冒險家說:我將會被五馬分尸
解析:因為如果這句話為真,便與真話會被燒死相矛盾,若為假,便與假話會被五馬分尸矛盾

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,754評論 18 399
  • 中午在宿舍休息,輾轉多次,遲遲進不入睡眠的感覺,隨即拿出手機,瀏覽起了新聞。 還記得五年前,剛登入大學,那時候自己...
    夢幻的路人閱讀 169評論 0 0
  • 不聽閑話,不八卦。
    再忘記帳號就是智障閱讀 221評論 0 0
  • 市面上常見的php框架有很多,最近因為有技術需求,所以對常見的php框架的中間件進行了一些了解。各個框架盡管在目標...
    selbstkennen梁晨閱讀 11,849評論 7 29
  • 心臟里的血液在翻騰 咚咚地撞得雙耳不安 把電視的聲音調到最大 門窗緊閉 卻像失聰那般 聽不見聲響 空氣那樣嘈雜 包...
    霖子醬閱讀 275評論 1 2