亚洲AV日韩AⅤ综合手机在线观看,激情婷婷久久综合色,欧美色五月婷婷久久,久久国产精品99久久人人澡

  • <abbr id="uk6uq"><abbr id="uk6uq"></abbr></abbr>
  • <tbody id="uk6uq"></tbody>
  • 程序員面試攻略

    時(shí)間:2022-10-27 02:17:09 面試問題 我要投稿
    • 相關(guān)推薦

    程序員面試攻略

      一、入門級程序員的面試題:

    程序員面試攻略

      這些軟件設(shè)計(jì)和設(shè)計(jì)模式的先關(guān)問題大多會出現(xiàn)在初學(xué)者面試情景中,什么是設(shè)計(jì)模式?特定的設(shè)計(jì)模式又是什么?等等這些概念,也許你很輕易回答這些概念,但文內(nèi)提供的這些問題也許能給你帶來更多價(jià)值。

      1。 什么是設(shè)計(jì)模式?在你編碼過程中使用了哪些設(shè)計(jì)模式?

      每位程序員都會利用自身經(jīng)歷來回答這些特定的設(shè)計(jì)問題。設(shè)計(jì)模式是代碼重用的擴(kuò)展。

      2。 你能說出在標(biāo)準(zhǔn)的JDK庫中使用的一些設(shè)計(jì)模式嗎?

      Decorator設(shè)計(jì)模式常被用于各種Java IO類中,Singleton模式常被用在運(yùn)行環(huán)節(jié)中,Calendar以及各種其他類,F(xiàn)actory(工廠)模式常被用于各種不可變類,比如Boolean。Boolean。valueOf和Observer模式常被用于Swing和許多事件監(jiān)聽機(jī)器框架中。

      3。 在Java中Singleton設(shè)計(jì)模式是什么?為線程安全Singleton編碼。

      Singleton模式在整個(gè)系統(tǒng)中主要是共享模式。在整個(gè)應(yīng)用程序?qū)嵗兄槐3忠粋(gè)特定的類,這是由所以模塊共享決定的。Java。lang。Runtime是Singleton設(shè)計(jì)模式中一個(gè)典型范例。關(guān)于此問題你可以查看更多。從Java 5版本開始,你可以為安全線程singleton模式使用enum。

      4。 使用Factory模式主要優(yōu)勢是什么?你會在哪種情況下使用?

      Factory模式最主要的優(yōu)勢在于當(dāng)創(chuàng)建對象時(shí)可提高封裝水平。如果你使用Factory模式來創(chuàng)建對象,你可以在后期重置最初產(chǎn)品的裝置或者無須任何客戶層就可實(shí)現(xiàn)更先進(jìn)更高性能的類?梢圆榭次以l(fā)表過的有關(guān)Factory模式的更多細(xì)節(jié)及優(yōu)點(diǎn)。

      5。 Java中Observer設(shè)計(jì)模式是什么?

      Observer設(shè)計(jì)模式基于對象的變化而改變。比如:天氣系統(tǒng),在這里必須將天氣變化的視圖呈現(xiàn)給觀眾。這里天氣項(xiàng)目是主體而非不同的觀察者。通過這篇文章,查看在Java中Observer模式。

      6。 例舉一個(gè)在Java中使用Decorator模式的案例?它從事的是對象級別還是類級別?

      Decorator模式可提高個(gè)體對象的能力。Java IO廣泛使用Decorator模式和Buffered類型的一些經(jīng)典例子,比如BufferedReader和BufferedWriter,增強(qiáng)讀者和作家執(zhí)行Buffer級別的閱讀和寫作從而提高性能。

      7。 什么是MVC設(shè)計(jì)模式?請例舉一個(gè)MVC設(shè)計(jì)模式案例。

      8。 Java中FrontController設(shè)計(jì)模式是什么?請例舉一個(gè)FrontController設(shè)計(jì)模式案例。

      9。 Responsibility設(shè)計(jì)模式是什么?

      10。 Adapter設(shè)計(jì)模式是什么?請例舉一個(gè)在Java中的Adapter設(shè)計(jì)模式案例。

      二、進(jìn)階級程序員的面試題:

      1。 舉例說明你什么時(shí)候會用抽象類,什么時(shí)候更愿意使用接口?

      這是一個(gè)很常見的面試問題,并不算難。接口和抽象類都按照“不為實(shí)現(xiàn)寫代碼”的設(shè)計(jì)原則,這是為了增加代碼的靈活性,以應(yīng)付不斷變化的要求。下面是一些幫助你回答這個(gè)問題的指南:

      在Java中,你只能繼承一個(gè)類,但實(shí)現(xiàn)多個(gè)接口。所以你繼承一個(gè)類的時(shí)候就無法再繼承別的類了。

      接口是用來代表形容詞或行為,例如Runnable、Clonable、Serializable等。因此,如果您使用一個(gè)抽象類來實(shí)現(xiàn)Runnable和Clonacle,你就不可以使你的類同時(shí)實(shí)現(xiàn)這兩個(gè)功能,而如果接口的話就沒問題。

      抽象類是比接口稍快,所以很在乎時(shí)間的應(yīng)用盡量使用抽象類。

      如果多個(gè)繼承層次的共同行為在在同一個(gè)地方編寫更好,那么抽象類會是更好的選擇。有時(shí)候可以在接口里定義函數(shù)但是在抽象類里默認(rèn)功能就能實(shí)現(xiàn)接口和抽象類共同工作了。了解Java接口。

      2。 設(shè)計(jì)一個(gè)能接收不同硬幣、出售不同貨物的自動(dòng)售貨機(jī)。

      這是一個(gè)比較開放的設(shè)計(jì)問題,你可以使用它練習(xí)文檔設(shè)計(jì)、寫代碼和JUnit單元測試,而不是僅僅是解決問題。這道題的目標(biāo)絕不會僅僅是想測出你多久能夠得到解決方案。理想情況下,這個(gè)問題應(yīng)該在3小時(shí)內(nèi)給出一個(gè)可工作版本。

      3。 你有一個(gè)Smartphone類和它派生類iPhone、 AndroidPhone、WindowsPhone等,以及以品牌名稱命名的派生類如SonyPhone等。你該如何設(shè)計(jì)這一類的系統(tǒng)?

      這是另一種設(shè)計(jì)模式的練習(xí),你充分利用面向?qū)ο蟮脑O(shè)計(jì)技巧,保證它有足夠的靈活性來支持新產(chǎn)品,并且在現(xiàn)有模型改變時(shí)能夠保證足夠的穩(wěn)定性。

      4。 在Java中,什么時(shí)候該使用overload,什么時(shí)候使用override?

      對于一個(gè)經(jīng)驗(yàn)豐富的設(shè)計(jì)師來說這是一個(gè)非常簡單的問題。重載和覆蓋在Java里實(shí)現(xiàn)的都是同一個(gè)功能,但overload的輸入變量不同,override則完全相同。

      5。 設(shè)計(jì)ATM機(jī)

      我們幾乎都使用過ATM機(jī),但你想過該怎么設(shè)計(jì)它嗎?金融系統(tǒng)的設(shè)計(jì)原則之一就是必須能在所有預(yù)期情況下都能夠正常運(yùn)行。所以無論是發(fā)生斷電還是什么其它暴力問題,ATM機(jī)都必須能夠保證正確的狀態(tài)。 考慮下鎖、事務(wù)處理、錯(cuò)誤狀態(tài)、臨界條件等等。即使你拿不定確切的設(shè)計(jì)方案,但是能夠指出非功能性需求、提出一些問題或者考慮考慮臨界條件都會對你有幫助。

      6。 假設(shè)你正在設(shè)計(jì)市場數(shù)據(jù)類來保證能夠切換不同的信息供應(yīng)商,比如Reuters、wombat等等,或者直接交換信息,你該如何設(shè)計(jì)這個(gè)市場信息系統(tǒng)?

      這是非常有趣的設(shè)計(jì)面試問題,實(shí)際上在大型投資銀行里是個(gè)很普遍的問題。關(guān)鍵在于你需要提供擁有g(shù)etBid()、getPrice()和getLevel()方法的MarketData接口供客戶請求,同時(shí)還需要有一個(gè)使用依賴注入的MarketDataProvider組件。這樣在你改變MarketDataProvider時(shí)就不會對系統(tǒng)產(chǎn)生影響,因?yàn)榭蛻羰峭ㄟ^MarketData接口或者類調(diào)用方法的。

      7。 為什么Java里不允許從靜態(tài)方法中獲取非靜態(tài)變量?

      Java里不允許從靜態(tài)方法中獲取非靜態(tài)變量僅僅是因?yàn)榉庆o態(tài)變量會和特定的對象實(shí)例相關(guān)聯(lián),而靜態(tài)變量不會。

      8。 用Java設(shè)計(jì)一個(gè)并發(fā)規(guī)則管道?

      并發(fā)編程和并行設(shè)計(jì)非常熱門,因?yàn)樗芨咝У乩矛F(xiàn)在越來越先進(jìn)的處理器,而且Java被認(rèn)為是多線程語言也主要因?yàn)榇嗽。設(shè)計(jì)一個(gè)并發(fā)系統(tǒng)的關(guān)鍵在于線程安全、不可變性、本地變量,還有避免使用局部變量和實(shí)例變量。你只需要保證多個(gè)線程能夠在同一時(shí)間執(zhí)行同一個(gè)類,所以最佳解決方案就是每個(gè)線程只操作自己的數(shù)據(jù),盡量使用最小的同步,尤其是在管道開始時(shí)。這個(gè)問題可以從初始討論到最終類和接口的編寫實(shí)現(xiàn),但是只要你記得注意并發(fā)問題的關(guān)鍵,比如競爭狀態(tài)、死鎖、內(nèi)存沖突、原子操作、ThreadLocal變量等等,盡量繞過這些問題。

    【程序員面試攻略】相關(guān)文章:

    面試攻略談07-14

    面試攻略問答12-13

    小升初面試攻略03-29

    考研面試攻略08-10

    如何面試:面試程序員12-08

    面試攻略:心理面試成新寵11-14

    進(jìn)入外企的面試攻略03-28

    面試全攻略12-11

    MBA英文面試攻略12-11

    面試服飾禮儀攻略12-08