2021春招衝刺-1216 死鎖 | 箭頭函數 | 內聯元素 | 頁面渲染

2021春招衝刺css

12.21日html

1. 操做系統 | 什麼是死鎖,產生緣由,如何預防,如何破解

定義 :

若是一組進程中的每個進程都在等待僅由該組進程中的其餘進程才能引起的事件,那麼該組進程是死鎖的,無外力做用,它們都將沒法推動下去。java

產生緣由

java死鎖必要條件:webpack

  • 一、互斥使用。即當資源被一個線程使用(佔有)時,別的線程不能使用
  • 二、不可搶佔。資源請求者不能強制從資源佔有者手中奪取資源,資源只能由資源佔有者主動釋放。
  • 三、請求和保持。進程已經保持了至少一個資源,但又提出了新的資源請求,而該資源已被其餘進程戰友,此時請求進程被阻塞,但對本身已得到的資源保持不變。
  • 四、循環等待。即存在一個等待隊列:P1佔有P2的資源,P2佔有P3的資源,P3佔有P1的資源。這樣就造成了一個等待環路。

緣由:競爭不可搶佔性資源、競爭可消耗資源、進程推動順序不當web

如何預防

  • 破壞「請求和保持條件」
    第一種協議:全部進程開始運行以前,必須一次性地申請在整個運行過程當中須要的所有資源。
    第二種協議:容許一個進程只得到運行初期所須要的所有資源,運行過程當中再逐步釋放。
  • 破壞「不可搶佔」條件
    當一個已經保持了某些不可被搶佔資源的進程,提出新的資源請求而沒法獲得知足的時候,必須釋放已有資源。
  • 破壞「循環等待」條件
    對系統全部資源類型進行線性排序,並賦予不一樣的序號。
  • 銀行家算法避免死鎖

如何破解

  • 搶佔資源
  • 終止進程 終止全部的進程或者逐個終止進程。

2. JS | 箭頭函數有哪些特色

  • 箭頭函數是匿名函數
  • 箭頭函數的this指向外層做用域的this的值
  • 不存在arguments對象,用 rest 參數代替。
    1.rest形式爲(…變量名)能夠獲取函數的多餘參數,而且獲取到的是真正的數組對象。
    2.arguments只是一個類數組對象,除了length屬性和可使用arguments[0]獲取元素以外沒有數組的其餘特性,可使用[…arguments]或者Array.prototype.slice.call(arguments,0)、Array.prototype.concat.call(arguments,0)轉爲數組
  • 沒有prototype屬性(原型屬性)
  • 不須要function關鍵字來建立函數,並省略return關鍵字。
  • 箭頭函數不能用做構造函數

3. HTML | 常見的內聯元素有哪些,塊元素有哪些

內聯元素a span input i img textarea
百度後補充:abbr - 縮寫 acronym - 首字 b - 粗體 br - 換行 cite - 引用 em - 強調 kbd - 定義鍵盤文本 label - 表格標籤 u - 下劃線算法

塊元素div p ul ol li h1-6 form
百度後補充:address - 地址 blockquote - 塊引用 dir - 目錄列表 dl - 定義列表 hr - 水平分隔線 table - 表格gulp


4. css | css是否會阻塞頁面渲染與如何解除

瀏覽器渲染的流程

HTML解析文件,生成DOM Tree,解析CSS文件生成CSSOM Tree
將Dom Tree和CSSOM Tree結合,生成Render Tree(渲染樹)
根據Render Tree渲染繪製,將像素渲染到屏幕上。數組

  • DOM解析和CSS解析是兩個並行的進程,CSS加載不會阻塞DOM的解析
  • CSS資源加載完成(或者CSS資源加載失敗)後,才能開始渲染。所以,CSS加載會阻塞Dom的渲染
  • js可能會操做以前的Dom節點和css樣式,所以瀏覽器會維持html中css和js的順序。所以,樣式表會在後面的js執行前先加載執行完畢。因此css會阻塞後面js的執行

解決方案

  • 使用CDN(由於CDN會根據你的網絡情況,替你挑選最近的一個具備緩存內容的節點爲你提供資源,所以能夠減小加載時間)
  • 對css進行壓縮(能夠用不少打包工具,好比webpack,gulp等,也能夠經過開啓gzip壓縮)
  • 合理的使用緩存(設置cache-control,expires,以及E-tag都是不錯的,不過要注意一個問題,就是文件更新後,你要避免緩存而帶來的影響。其中一個解決防範是在文件名字後面加一個版本號)
  • 減小http請求數,將多個css文件合併,或者是乾脆直接寫成內聯樣式(內聯樣式的一個缺點就是不能緩存)
相關文章
相關標籤/搜索