筆試4

前端工作面試常見問題

備注: Rebecca MurpheyBaseline For Front-End Developers 是你在準備面試前應該閱讀的絕佳資源。

記住: 很多問題都是開放的,可以引發有趣的討論。這比直接的答案更能體現此人的能力。

常見問題:

  • Q: 你能描述一下漸進增強和優雅降級之間的不同嗎?

    • 如果提到了特性檢測,可以加分。

    A:

    • 漸進增強(progressive enhancement):針對低版本瀏覽器進行構建頁面,保證最基本的功能,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。
    • 優雅降級(graceful degradation):一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容。

區別:優雅降級是從復雜的現狀開始,并試圖減少用戶體驗的供給,而漸進增強則是從一個非常基礎的,能夠起作用的版本開始,并不斷擴充,以適應未來環境的需要。降級(功能衰減)意味著往回看;而漸進增強則意味著朝前看,同時保證其根基處于安全地帶。 
“優雅降級”觀點

“優雅降級”觀點認為應該針對那些最高級、最完善的瀏覽器來設計網站。而將那些被認為“過時”或有功能缺失的瀏覽器下的測試工作安排在開發周期的最后階段,并把測試對象限定為主流瀏覽器(如 IE、Mozilla 等)的前一個版本。

在這種設計范例下,舊版的瀏覽器被認為僅能提供“簡陋卻無妨 (poor, but passable)” 的瀏覽體驗。你可以做一些小的調整來適應某個特定的瀏覽器。但由于它們并非我們所關注的焦點,因此除了修復較大的錯誤之外,其它的差異將被直接忽略。

“漸進增強”觀點

“漸進增強”觀點則認為應關注于內容本身。

內容是我們建立網站的誘因。有的網站展示它,有的則收集它,有的尋求,有的操作,還有的網站甚至會包含以上的種種,但相同點是它們全都涉及到內容。這使得“漸進增強”成為一種更為合理的設計范例。這也是它立即被 Yahoo! 所采納并用以構建其“分級式瀏覽器支持 (Graded Browser Support)”策略的原因所在

  • Q: 請解釋一下什么是“語義化的 HTML”。

    A:

  • Q: 你如何對網站的文件和資源進行優化?

    • 期待的解決方案包括:
      • 文件合并
      • 文件最小化/文件壓縮
      • 使用 CDN 托管
      • 緩存的使用
      • 其他
  • Q: 為什么利用多個域名來提供網站資源會更有效?

    • 瀏覽器同一時間可以從一個域名下載多少資源?
  • Q: 請說出三種減少頁面加載時間的方法。(加載時間指感知的時間或者實際加載時間)

  • Q: 如果你參與到一個項目中,發現他們使用 Tab 來縮進代碼,但是你喜歡空格,你會怎么做?

    • 建議這個項目使用像 EditorConfig (http://editorconfig.org/) 之類的規范
    • 為了保持一致性,接受項目原有的風格
    • 直接使用 VIM 的 retab 命令
  • Q: 請寫一個簡單的幻燈效果頁面

    • 如果不使用JS來完成,可以加分。
    <!doctype htm l>
    <html>
      <head>
        <style>
        img {
          display: none;
          width: 100px;
          height: 100px;
        }
        input:checked + img {
          display: block;
        }
        input {
          position: absolute;
          left: -9999px;
        }
        label {
          cursor: pointer;
        }
        </style>
      </head>
      <body>
        <div id="cont">
          <input id="img1" name="img" type="radio" checked="checked">
          ![](a.png)
          <input id="img2" name="img" type="radio">
          ![](b.png)
        </div>
        <div id="nav">
          <label for="img1">第一張</label>
          <label for="img2">第二張</label>
        </div>
      </body>
    </html>
    

    可以這樣寫,但是不能支持所有瀏覽器。

    <!DOCTYPE HTML>
    <html>
      <head>
      <style>
    
      #cont {
      position: relative;
      height: 100px;
      }
    img {
          position: absolute;
          width: 100px;
          height: 100px;
          z-index: 1;
        }
    img:first-child,
    img:target {
          z-index: 2;
        }
      </style>
      </head>
      <body>
      <div id="cont">
          ![](a.jpg)
          ![](b.jpg)
        </div>
        <div>
          <a href="#img1">one</a>
          <a href="#img2">two</a>
        </div>
      </body>
    </html>
    
  • Q: 你都使用哪些工具來測試代碼的性能?

    • Profiler, JSPerf, Dromaeo
  • Q: 如果今年你打算熟練掌握一項新技術,那會是什么?

  • Q: Long-Polling, Websockets, SSE(Server-Sent Event) 之間有什么區別?

  • Q: 請談一下你對網頁標準和標準制定機構重要性的理解。

A: “一次編碼。隨處運行”。
網頁標準和標準制定機構都是為了能讓web發展的更‘健康’,開發者遵循統一的標準,降低開發難度,開發成本,SEO也會更好做,也不會因為濫用代碼導致各種BUG、安全問題,最終提高網站易用性。 摘自:http://www.cnblogs.com/coco1s/p/4034937.html

  • Q: 請盡可能完整得描述下從輸入URL到整個網頁加載完畢及顯示在屏幕上的整個流程

A:

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

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,815評論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,595評論 25 708
  • 請參看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,190評論 2 19
  • 簡單來說就是一句話“我思,故我在;我在,故上帝在.” 笛卡爾認為尋找方法的時候,要盡可能的去懷疑一切可以被懷疑的東...
    只愿開心到老z閱讀 1,364評論 0 0
  • 本文是閱讀得到APP吳伯凡訂閱號《伯凡日知錄》的同名音頻的筆記和心得,主要講述兩種做產品的策略。 引用一對生態學的...
    勇哥在進化閱讀 2,697評論 0 4