十道前端面試題(7)

  1. 常見的請求方式
  2. CSS選擇器有哪些,優先級呢?
  3. URL長度限制
  4. 實現三欄佈局,中間自適應有幾種方法
  5. 遞歸
  6. float和position的區別
  7. 如何獲取當前日期
  8. cookie與localStorage, sessionStorage的區別?
  9. Linux命令
  10. 閉包內存泄露如何解決

1. 常見的請求方式

  1. ajax(點擊瞭解更多>>)
  2. axios(點擊瞭解更多>>)
  3. fetch(點擊瞭解更多>>)

常用請求方法:

  1. get
  • GET方法用於使用給定的URI從給定服務器中檢索信息,即從指定資源中請求數據。
  • 使用GET方法的請求應該只是檢索數據,並且不應對數據產生其他影響。
  • GET請求是可以緩存的,我們可以從瀏覽器歷史記錄中查找到GET請求,還可以把它收藏到書籤中;
  • 且GET請求有長度限制,僅用於請求數據(不修改)。
  1. post
  • POST方法用於將數據發送到服務器以創建或更新資源,它要求服務器確認請求中包含的內容作爲由URI區分的Web資源的另一個下屬。

  • POST請求永遠不會被緩存,且對數據長度沒有限制;我們無法從瀏覽器歷史記錄中查找到POST請求。

  1. head
  • HEAD方法與GET方法相同,但沒有響應體,僅傳輸狀態行和標題部分。這對於恢復相應頭部編寫的元數據非常有用,而無需傳輸整個內容。
  1. put
  • PUT方法用於將數據發送到服務器以創建或更新資源,它可以用上傳的內容替換目標資源中的所有當前內容。

  • 它會將包含的元素放在所提供的URI下,如果URI指示的是當前資源,則會被改變。如果URI未指示當前資源,則服務器可以使用該URI創建資源。

  1. delete
  • DELETE方法用來刪除指定的資源,它會刪除URI給出的目標資源的所有當前內容。
  1. connect
  • CONNECT方法用來建立到給定URI標識的服務器的隧道;它通過簡單的TCP / IP隧道更改請求連接,通常實使用解碼的HTTP代理來進行SSL編碼的通信(HTTPS)。
  1. options
  • OPTIONS方法用來描述了目標資源的通信選項,會返回服務器支持預定義URL的HTTP策略。
  1. trace
  • TRACE方法用於沿着目標資源的路徑執行消息環回測試;它迴應收到的請求,以便客戶可以看到中間服務器進行了哪些(假設任何)進度或增量。

點擊查看GET請求和POST請求區別>>


2. CSS選擇器有哪些,優先級呢?

  1. 標籤選擇器(如:body,div,p,ul,li)
  2. 類選擇器(如:class=“head”,class=“head_logo”)
  3. ID選擇器(如:id=“name”,id=“name_txt”)
  4. 全局選擇器(如:*號)
  5. 組合選擇器(如:.head .head_logo,注意兩選擇器用空格鍵分開)
  6. 後代選擇器 (如:#head .nav ul li 從父集到子孫集的選擇器)
  7. 羣組選擇器 div,span,img {color:Red} 即具有相同樣式的標籤分組顯示
  8. 繼承選擇器(如:div p,注意兩選擇器用空格鍵分開)
  9. ==僞類選擇器(==如:就是鏈接樣式,a元素的僞類,4種不同的狀態:link、visited、active、hover。)
  10. 字符串匹配的屬性選擇符(^ $ *三種,分別對應開始、結尾、包含)
  11. 子選擇器 (如:div>p ,帶大於號>)
  12. CSS 相鄰兄弟選擇器 (如:h1+p,帶加號+)

優先級:
!important > 行內樣式>ID選擇器 > 類選擇器 > 標籤 > 通配符 > 繼承 > 瀏覽器默認屬性


3. URL長度限制

在GET請求中URL是有長度限制的。

瀏覽器對URL的限制:

  1. IE: 對URL對限制爲2083字節,如果超過這個限制,會自動截斷。
  2. firefox: 限制65536字節,但是實際上有效的URL最大長度不少於100 000個字符
  3. chrome:限制8182字節。超過返回狀態碼414(點擊瞭解更多HTTP狀態碼>>
  4. Safari: 限制80 000 字節
  5. Opera: 限制190 000字節

服務器對URL的限制:

  1. Apache: 限制8 192 字節
  2. IIS : 限制16 384字節
  3. Perl HTTP::Daemon: 限制8000字節
  4. ngnix: 默認的限制是4K或者8K,這是根據服務器的硬件配置有關的,一般爲內存一頁的大小,目前大部分爲4K,即4096字節

4. 實現三欄佈局,中間自適應有幾種方法(點擊查看)

聖盃佈局,雙飛翼佈局。。


5. 遞歸

理解遞歸:

遞歸就是在函數內部調用函數本身

⚠️使用遞歸的時候一定得注意,處理不當就會陷入死循環

點擊瞭解更多>>


6. float和position的區別

二者設置後,對應的模塊都會脫離文檔流。
但是,position相應的塊級元素會覆蓋下面的內容(文字,),而float只會覆蓋塊級元素,裏面的文字會脫離出來

點擊瞭解position屬性對應值及意義>>


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個方面

  1. 數據的生命週期
  • cookie:一般由服務器生成,可以設置有效時間。如果在瀏覽器端生成cookie,那麼瀏覽器關閉後cookie就會失效。
  • localStorage: 除非被清除,否則會永久保存。
  • sessionStorage: 僅僅在當前會話有效關閉頁面或瀏覽器後sessionStorage就會失效
  1. 存放數據大小
  • cookie: 4k左右
  • localStorage、sessionStorage:一般爲5MB
  1. 與服務器通信
  • cookie: 每次都會被攜帶在請求頭中,如果cookie保存過多數據,會影響性能
  • localStorage、sessionStorage:僅僅在客戶端即瀏覽器中儲存,不參與和服務器的通信
  1. 易用性
  • cookie: 需要程序員自己封裝,原生的Cookie接口並不友好
  • 原生接口可以接受,也可以進行封裝

9. Linux命令

常用的20個Linux命令:

  1. cd 切換當前目錄
  2. ls 查看文件與目錄
  3. grep 分析一行信息
  4. find 查找
  5. cp 複製文件
  6. mv 移動文件、目錄或更名
  7. rm 刪除文件或目錄
  8. ps 將某個時間點的進程運行情況選取下來並輸出
  9. kill 向某個工作(%jobnumber)或者是某個PID(數字)傳送一個信號,它通常與ps和jobs命令一起使用
  10. killall 向一個命令啓動的進程發送一個信號
  11. file 判斷接在file命令後的文件的基本數據
  12. tar 對文件進行打包,默認情況並不會壓縮,如果指定了相應的參數,它還會調用相應的壓縮程序(如gzip和bzip等)進行壓縮和解壓
  13. cat 查看文本文件的內容,後接要查看的文件名
  14. chgrp 改變文件所屬用戶組
  15. chown 改變文件的所有者,與chgrp命令的使用方法相同,只是修改的文件屬性不同
  16. chmod 改變文件的權限
  17. vim 文本編輯,它接一個或多個文件名作爲參數,如果文件存在就打開,如果文件不存在就以該文件名創建一個文件
  18. gcc 把C語言的源程序文件,編譯成可執行程序
  19. time 測算一個命令(即程序)的執行時間
  20. tree 顯示樹形的層級目錄結構

10. 閉包內存泄露如何解決

  • 理解什麼是內存泄漏:

指的是一塊被分配的內存既不能使用,也不能被回收。會影響性能,甚至會導致程序崩潰。

  • 常見內存泄漏:
  1. 意外的全局變量
  2. 被遺忘的計時器或回調函數
  3. 脫離DOM的引用
  4. 閉包
  • 常用的閉包內存泄漏解決辦法
    在JavaScript代碼段運行完之時將形成循環引用的JavaScript對象手動設置爲空,切斷引用。

舉個🌰

function example(){
	var ele = document.getElementById('id');
	ele.onclick = () => console.log(1);
	ele = null;     //  手動置空
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章