2021春招沖刺
12.16日
1. 作業系統 | 什么是死鎖,產生原因,如何預防,如何破解
定義: 如果一組行程中的每一個行程都在等待僅由該組行程中的其他行程才能引發的事件,那么該組行程是死鎖的,無外力作用,它們都將無法推進下去,
產生原因:
java死鎖必要條件:
- 1、互斥使用,即當資源被一個執行緒使用(占有)時,別的執行緒不能使用
- 2、不可搶占,資源請求者不能強制從資源占有者手中奪取資源,資源只能由資源占有者主動釋放,
- 3、請求和保持,行程已經保持了至少一個資源,但又提出了新的資源請求,而該資源已被其他行程戰友,此時請求行程被阻塞,但對自己已獲得的資源保持不變,
- 4、回圈等待,即存在一個等待佇列:P1占有P2的資源,P2占有P3的資源,P3占有P1的資源,這樣就形成了一個等待環路,
原因:競爭不可搶占性資源、競爭可消耗資源、行程推進順序不當
如何預防:
- 破壞“請求和保持條件”
第一種協議:所有行程開始運行之前,必須一次性地申請在整個運行程序中需要的全部資源,
第二種協議:允許一個行程只獲得運行初期所需要的全部資源,運行程序中再逐步釋放, - 破壞“不可搶占”條件
當一個已經保持了某些不可被搶占資源的行程,提出新的資源請求而無法得到滿足的時候,必須釋放已有資源, - 破壞“回圈等待”條件
對系統所有資源型別進行線性排序,并賦予不同的序號, - 銀行家演算法避免死鎖
如何破解:
- 搶占資源
- 終止行程 終止所有的行程或者逐個終止行程,
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 - 表格
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檔案合并,或者是干脆直接寫成行內樣式(行內樣式的一個缺點就是不能快取)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238394.html
標籤:其他
上一篇:編程正式進入中考模式!北京海淀:通過資訊技術考試方可畢業
下一篇:git基礎教程(三)
