- 常見的請求方式
- CSS選擇器有哪些,優先級呢?
- URL長度限制
- 實現三欄佈局,中間自適應有幾種方法
- 遞歸
- float和position的區別
- 如何獲取當前日期
- cookie與localStorage, sessionStorage的區別?
- Linux命令
- 閉包內存泄露如何解決
1. 常見的請求方式
常用請求方法:
- get
- GET方法用於使用給定的URI從給定服務器中檢索信息,即從指定資源中請求數據。
- 使用GET方法的請求應該只是檢索數據,並且不應對數據產生其他影響。
- GET請求是可以緩存的,我們可以從瀏覽器歷史記錄中查找到GET請求,還可以把它收藏到書籤中;
- 且GET請求有長度限制,僅用於請求數據(不修改)。
- post
-
POST方法用於將數據發送到服務器以創建或更新資源,它要求服務器確認請求中包含的內容作爲由URI區分的Web資源的另一個下屬。
-
POST請求永遠不會被緩存,且對數據長度沒有限制;我們無法從瀏覽器歷史記錄中查找到POST請求。
- head
- HEAD方法與GET方法相同,但沒有響應體,僅傳輸狀態行和標題部分。這對於恢復相應頭部編寫的元數據非常有用,而無需傳輸整個內容。
- put
-
PUT方法用於將數據發送到服務器以創建或更新資源,它可以用上傳的內容替換目標資源中的所有當前內容。
-
它會將包含的元素放在所提供的URI下,如果URI指示的是當前資源,則會被改變。如果URI未指示當前資源,則服務器可以使用該URI創建資源。
- delete
- DELETE方法用來刪除指定的資源,它會刪除URI給出的目標資源的所有當前內容。
- connect
- CONNECT方法用來建立到給定URI標識的服務器的隧道;它通過簡單的TCP / IP隧道更改請求連接,通常實使用解碼的HTTP代理來進行SSL編碼的通信(HTTPS)。
- options
- OPTIONS方法用來描述了目標資源的通信選項,會返回服務器支持預定義URL的HTTP策略。
- trace
- TRACE方法用於沿着目標資源的路徑執行消息環回測試;它迴應收到的請求,以便客戶可以看到中間服務器進行了哪些(假設任何)進度或增量。
2. CSS選擇器有哪些,優先級呢?
- 標籤選擇器(如:body,div,p,ul,li)
- 類選擇器(如:class=“head”,class=“head_logo”)
- ID選擇器(如:id=“name”,id=“name_txt”)
- 全局選擇器(如:*號)
- 組合選擇器(如:.head .head_logo,注意兩選擇器用空格鍵分開)
- 後代選擇器 (如:#head .nav ul li 從父集到子孫集的選擇器)
- 羣組選擇器 div,span,img {color:Red} 即具有相同樣式的標籤分組顯示
- 繼承選擇器(如:div p,注意兩選擇器用空格鍵分開)
- ==僞類選擇器(==如:就是鏈接樣式,a元素的僞類,4種不同的狀態:link、visited、active、hover。)
- 字符串匹配的屬性選擇符(^ $ *三種,分別對應開始、結尾、包含)
- 子選擇器 (如:div>p ,帶大於號>)
- CSS 相鄰兄弟選擇器 (如:h1+p,帶加號+)
優先級:
!important > 行內樣式>ID選擇器 > 類選擇器 > 標籤 > 通配符 > 繼承 > 瀏覽器默認屬性
3. URL長度限制
在GET請求中URL是有長度限制的。
瀏覽器對URL的限制:
- IE: 對URL對限制爲2083字節,如果超過這個限制,會自動截斷。
- firefox: 限制65536字節,但是實際上有效的URL最大長度不少於100 000個字符
- chrome:限制8182字節。超過返回狀態碼414(點擊瞭解更多HTTP狀態碼>>)
- Safari: 限制80 000 字節
- Opera: 限制190 000字節
服務器對URL的限制:
- Apache: 限制8 192 字節
- IIS : 限制16 384字節
- Perl HTTP::Daemon: 限制8000字節
- ngnix: 默認的限制是4K或者8K,這是根據服務器的硬件配置有關的,一般爲內存一頁的大小,目前大部分爲4K,即4096字節
4. 實現三欄佈局,中間自適應有幾種方法(點擊查看)
聖盃佈局,雙飛翼佈局。。
5. 遞歸
理解遞歸:
遞歸就是在函數內部調用函數本身
⚠️使用遞歸的時候一定得注意,處理不當就會陷入死循環
6. float和position的區別
二者設置後,對應的模塊都會脫離文檔流。
但是,position相應的塊級元素會覆蓋下面的內容(文字,),而float只會覆蓋塊級元素,裏面的文字會脫離出來
7. 如何獲取當前日期
const myDate = new Date();
myDate.getYear(); //獲取當前年份(2位)
myDate.getFullYear(); //獲取完整的年份(4位,1970-????)
myDate.getMonth(); //獲取當前月份(0-11,0代表1月)
myDate.getDate(); //獲取當前日(1-31)
myDate.getDay(); //獲取當前星期X(0-6,0代表星期天)
myDate.getTime(); //獲取當前時間(從1970.1.1開始的毫秒數)
myDate.getHours(); //獲取當前小時數(0-23)
myDate.getMinutes(); //獲取當前分鐘數(0-59)
myDate.getSeconds(); //獲取當前秒數(0-59)
myDate.getMilliseconds(); //獲取當前毫秒數(0-999)
myDate.toLocaleDateString(); //獲取當前日期
const mytime=myDate.toLocaleTimeString(); //獲取當前時間
myDate.toLocaleString( ); //獲取日期與時間
8. cookie與localStorage, sessionStorage的區別?
主要區別體現在4個方面
- 數據的生命週期
- cookie:一般由服務器生成,可以設置有效時間。如果在瀏覽器端生成cookie,那麼瀏覽器關閉後cookie就會失效。
- localStorage: 除非被清除,否則會永久保存。
- sessionStorage: 僅僅在當前會話有效關閉頁面或瀏覽器後sessionStorage就會失效
- 存放數據大小
- cookie: 4k左右
- localStorage、sessionStorage:一般爲5MB
- 與服務器通信
- cookie: 每次都會被攜帶在請求頭中,如果cookie保存過多數據,會影響性能
- localStorage、sessionStorage:僅僅在客戶端即瀏覽器中儲存,不參與和服務器的通信
- 易用性
- cookie: 需要程序員自己封裝,原生的Cookie接口並不友好
- 原生接口可以接受,也可以進行封裝
9. Linux命令
常用的20個Linux命令:
- cd 切換當前目錄
- ls 查看文件與目錄
- grep 分析一行信息
- find 查找
- cp 複製文件
- mv 移動文件、目錄或更名
- rm 刪除文件或目錄
- ps 將某個時間點的進程運行情況選取下來並輸出
- kill 向某個工作(%jobnumber)或者是某個PID(數字)傳送一個信號,它通常與ps和jobs命令一起使用
- killall 向一個命令啓動的進程發送一個信號
- file 判斷接在file命令後的文件的基本數據
- tar 對文件進行打包,默認情況並不會壓縮,如果指定了相應的參數,它還會調用相應的壓縮程序(如gzip和bzip等)進行壓縮和解壓
- cat 查看文本文件的內容,後接要查看的文件名
- chgrp 改變文件所屬用戶組
- chown 改變文件的所有者,與chgrp命令的使用方法相同,只是修改的文件屬性不同
- chmod 改變文件的權限
- vim 文本編輯,它接一個或多個文件名作爲參數,如果文件存在就打開,如果文件不存在就以該文件名創建一個文件
- gcc 把C語言的源程序文件,編譯成可執行程序
- time 測算一個命令(即程序)的執行時間
- tree 顯示樹形的層級目錄結構
10. 閉包內存泄露如何解決
- 理解什麼是內存泄漏:
指的是一塊被分配的內存既不能使用,也不能被回收。會影響性能,甚至會導致程序崩潰。
- 常見內存泄漏:
- 意外的全局變量
- 被遺忘的計時器或回調函數
- 脫離DOM的引用
- 閉包
- 常用的閉包內存泄漏解決辦法
在JavaScript代碼段運行完之時將形成循環引用的JavaScript對象手動設置爲空,切斷引用。
舉個🌰
function example(){
var ele = document.getElementById('id');
ele.onclick = () => console.log(1);
ele = null; // 手動置空
}