天天看點

練習08.31|Java程式設計筆試面試題

  1. 如何確定N個線程可以通路N個資源同時又不導緻死鎖?

    使用多線程的時候,一種非常簡單的避免死鎖的方式就是:指定擷取鎖的順序,并強制線程按照指定的順序擷取鎖。是以,如果所有的線程都是以同樣的順序加鎖和釋放鎖,就不會出現死鎖了。

    2.如何權衡是使用無序的數組還是有序的數組?

    有序數組最大的好處在于查找的時間複雜度是O(log n),而無序數組是O(n)。有序數組的缺點是插入操作的時間複雜度是O(n),因為值大的元素需要往後移動來給新元素騰位置。相反,無序數組的插入時間複雜度是常量O(1)。

    3.串行(serial)收集器和吞吐量(throughput)收集器的差別是什麼?

    吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等規模和大規模資料的應用程式。而串行收集器對大多數的小應用(在現代處理器上需要大概100M左右的記憶體)就足夠了。

    4.彈出式選擇菜單(Choice)和清單(List)有什麼差別

    Choice是以一種緊湊的形式展示的,需要下拉才能看到所有的選項。Choice中一次隻能選中一個選項。List同時可以有多個元素可見,支援選中一個或者多個元素。

    5.資料庫連接配接池是什麼意思?

    像打開關閉資料庫連接配接這種和資料庫的互動可能是很費時的,尤其是當用戶端數量增加的時候,會消耗大量的資源,成本是非常高的。可以在應用伺服器啟動的時候建立很多個資料庫連接配接并維護在一個池中。連接配接請求由池中的連接配接提供。在連接配接使用完畢以後,把連接配接歸還到池中,以用于滿足将來更多的請求。

    6.doGet()方法和doPost()方法有什麼差別?

    doGet:GET方法會把名值對追加在請求的URL後面。因為URL對字元數目有限制,進而限制了用在用戶端請求的參數值的數目。并且請求中的參數值是可見的,是以,敏感資訊不能用這種方式傳遞。

    doPOST:POST方法通過把請求參數值放在請求體中來克服GET方法的限制,是以,可以發送的參數的數目是沒有限制的。最後,通過POST請求傳遞的敏感資訊對外部用戶端是不可見的。

    7.HTTP響應的結構是怎麼樣的?

    HTTP響應由三個部分組成:

    狀态碼(Status Code):描述了響應的狀态。可以用來檢查是否成功的完成了請求。請求失敗的情況下,狀态碼可用來找出失敗的原因。如果Servlet沒有傳回狀态碼,預設會傳回成功的狀态碼HttpServletResponse.SC_OK。

    HTTP頭部(HTTP Header):它們包含了更多關于響應的資訊。比如:頭部可以指定認為響應過期的過期日期,或者是指定用來給使用者安全的傳輸實體内容的編碼格式。如何在Serlet中檢索HTTP的頭部看這裡。

    主體(Body):它包含了響應的内容。它可以包含HTML代碼,圖檔,等等。主體是由傳輸在HTTP消息中緊跟在頭部後面的資料位元組組成的。