前端面試題zhengl

1、請你談談cookie的·弊端

  1. IE6或更低版本最多擁有20個cookie
  2. IE7和之後的版本可以有50個cookie
  3. FireFox最多50個cookie
  4. chorme和Safari沒有硬性限制

優點

  1. 通過良好的編程,控制保存在cookie中session對象的大小
  2. 通過加密和安全傳輸技術(SSL),減少cookie被破解的可能性
  3. 只在cookie中存放不敏感數據,即使被盜了也不會有重大損失
  4. 控制cookie的生命週期,使之不永久有效。

缺點

  1. Cookie數量和長度的限制。每個domain最多隻能存儲20條cookie,每個cookie長度不能超過4k,否則會被截掉。
  2. 安全性問題。如果cookie被攔截了,就可以獲得所有的session信息。
  3. 有些狀態不可能保存在客戶端。

2、display:none與visibility:hidden的區別。

display:none隱藏對應的元素,在文檔佈局中不再給他分配空間。

Visibility:hidden 隱藏對應的元素,但是在文檔佈局中仍保留原來的空間。

3、css中的link和@import區別。

  • link屬於html標籤,而@import是css提供的。
  • 頁面被加載時,link會同時被加載,而@import引用的css會等到頁面加載完再加載
  • import只在IE5以上才識別,而link是標籤,無兼容問題。
  • link方式的樣式的權重會高於@import的權重。

4、position的absolute和fixed的共同點和不同點。

  • 共同點:
    • 改變行內元素的呈現方式,display被設置爲block
    • 讓元素脫離普通流,不佔據空間
    • 默認會覆蓋到非定位元素上
  • 不同點
    • absolute的根元素是可設置的,而fixed的根元素固定爲瀏覽器窗口。當你滾動網頁,fixed元素與瀏覽器窗口之間的距離是不變的。

5、css的盒子模型

IE盒子模型:標準的W3C盒子模型,IE的content部分包含了border和padding

盒模型:內容(content),填充(padding),邊界(margin),邊框(border)

6、闡述清楚浮動的幾種方式

  • 父級div定義height
    • 原理:父級div手動定義height,就解決了父級div無法獲取到高度的問題。
    • 優點:代碼少,容易掌握
    • 缺點:只適合於固定高度的佈局,要給出精確地高度
  • 父級div定義overflow:hidden
    • 原理:必須定義width或zoom:1。同時不能定義height,使用overflow:auto時,瀏覽器會自動檢查浮動區域的高度。
    • 優點:代碼少,瀏覽器支持好
  • 結尾處加空div標籤 添加 clear:both屬性
    • 原理:添加一個空div利用clear:both清除浮動,讓父級div能自動獲取到高度
    • 優點:代碼少,瀏覽器支持好

7、postion的值

  • absolute 生成絕對定位的元素,相對於最近一級的定位不是static的父元素來進行定位
  • relative  生成相對定位的元素,相對於在普通流中的位置進行定位
  • fixed (老IE不支持)生成固定定位的元素,通常相對於瀏覽器窗口或iframe進行定位
  • static 默認值 沒有定位,元素出現在正常流中
  • sticky 生成粘性定位的元素,容器的位置根據正常文檔流計算得出 (目前webkit使用 -webkit-sticky)
  • inherit 繼承父級元素的position值
  • initial 默認值
  • unset 可理解爲不設置 是關鍵字inherit 和 initial 的組合

8、initial、inherit、unset關鍵字

  • initial關鍵字用於設置CSS屬性爲它的默認值,可用於任何CSS樣式(IE不支持該關鍵字)
  • unset 可理解爲不設置 是關鍵字inherit 和 initial 的組合,當我們給一個CSS設置了unset的話:1、如果該屬性是默認繼承屬性,該值等同於inherit。2、如果該屬性是非繼承屬性,該值等同於initial
  • inherit:每一個CSS屬性都有一個特性就是:這個屬性必然是默認繼承的(inherited:Yes)或者是默認不繼承的(inherited:no)其中之一,可以在MDN上查找,判斷一個屬性的是否繼承特性。

9、可繼承屬性:

默認爲 inherited: Yes 的屬性:

  • 所有元素可繼承:visibility 和 cursor
  • 內聯元素可繼承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text- decoration、text-transform、direction
  • 塊狀元素可繼承:text-indent和text-align
  • 列表元素可繼承:list-style、list-style-type、list-style-position、list-style-image
  • 表格元素可繼承:border-collapse

10、TCP/IP連接的三次握手

第一次握手:客戶端發送一個SYN包給服務器,表示請求連接。

第二次握手:服務器發送SYN+ACK包給客戶端,表示收到你的請求,並同意連接。

第三次握手:客戶端發送確認包ACK給服務器,表示確認並開始連接。

11、TCP/IP斷開的四次揮手

第一次揮手:客戶端發送一個FIN包給服務器,表示將要關閉客戶端到服務器的這個方向的連接

第二次揮手:服務器發送一個ACK包個客戶端,表示同意客戶端關閉連接的請求,但是還未準備好關閉連接

第三次揮手:服務器發送一個FIN包給客戶端,表示將要關閉服務器到客戶端這個方向的連接

第四次揮手:客戶端發送確認包ACK給服務器,表示確認並關閉連接

12、TCP建立連接需要三次握手,而斷開連接需要四次揮手的原因

因爲當服務器收到客戶端的SYN連接請求報文後,可以直接發送SYN+ACK報文。其中ACK保溫是用來應答的,SYN報文是用來同步的,但關閉連接時,當服務器端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴客戶端,‘你發來的FIN報文我收到了’。只有等服務器端所有的報文都發送完了,服務器才能發送FIN報文,因此不能一起發送,故需要四步揮手

13、從輸出一個URL到瀏覽器加載整個網頁的過程

  • 瀏覽器通過DNS服務器解析查找URL對應的IP地址
  • 瀏覽器向服務器發送http請求,建立TCP連接
  • 服務器響應並處理http請求,並返回響應的文件
  • 瀏覽器開始處理數據信息,並渲染頁面,顯示出來

14、TCP/IP五層模型中對應的協議

  • 應用層:HTTP(超文本傳輸協議),FTP(文件傳送協議),SMTP(簡單郵件傳送協議)
  • 運輸層:TCP(傳輸控制協議)、UDP(用戶數據報協議)
  • 網絡層:IP(網際協議),ICMP(網際控制報文協議)
  • 數據鏈路層:PPP(點對點協議),CSMA/CD(載波監聽多點接入/碰撞檢測協議)
  • 物理層:IEEE802系列(局域網與城域網系列標準協議)

15、TCP與UDP的區別

  • TCP是面向對象連接的協議、UDP是無連接協議
  • TCP是可靠、有序、無界的,而UDP不可靠、無序、有界;
  • TCP有流量控制(擁塞控制),而UDP沒有
  • TCP傳輸速度慢,而UDP傳輸速度快
  • TCP是重量級的,UDP是輕量級的,TCP的頭部比UDP大
  • TCP面向字節流,UDP面向報文
  • TCP是點對點連接的,而UDP是一對一,一對多,多對對都可以
    • TCP適合用於網頁、郵件等,而UDP適用於視頻,語音廣播等

16、HTTP中GET與POST的區別?

1、GET從指定的資源請求數據,POST向指定的資源提交要被處理的數據;

2、GET請求有長度限制,而POST沒有;

3、GET的安全性較差,而POST比GET更安全;

4、GET請求參數會被完整的保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留;

5、GET請求能被緩存、收藏爲書籤,而POST不能;

6、GET請求只能進行URL編碼,而POST支持多種編碼方式;

7、GET數據在URL中對所有人都是可見的,而POST數據不會顯示在URL中;

8、GET和POST本質上就是TCP連接,但是GET產生一個TCP數據包,而POST產生兩個TCP數據包。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章