WEB前端開發(fā)工程師 年終福利(三、網(wǎng)絡(luò)相關(guān))

網(wǎng)絡(luò)相關(guān)問題

  • 1、請解釋下列術(shù)語:UrlEncode,Utf8,JSON,UTC,MD5?

Urlencode:將字符串以url形式編碼(在編程語言中通常都有實現(xiàn)該功能的內(nèi)置函數(shù)或者API)。

Utf8:是一種針對Unicode的可變長度字符編碼,主要用于在網(wǎng)頁上顯示各國語言字符
  • 2、請解釋GET/POST的區(qū)別,以及請求參數(shù)放到url里和放到body里面的區(qū)別?

Post與Get區(qū)別:

        GET請求,請求的數(shù)據(jù)會附加在URL之后,以?分割URL和傳輸數(shù)據(jù),多個參數(shù)用&連接。URL的編碼格式采用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字符都要編碼之后再傳輸。

        POST請求:POST請求會把請求的數(shù)據(jù)放置在HTTP請求包的包體中。上面的item=bandsaw就是實際的傳輸數(shù)據(jù)。

        因此,GET請求的數(shù)據(jù)會暴露在地址欄中,而POST請求則不會。

傳輸數(shù)據(jù)的大小

        在HTTP規(guī)范中,沒有對URL的長度和傳輸?shù)臄?shù)據(jù)大小進行限制。但是在實際開發(fā)過程中,對于GET,特定的瀏覽器和服務器對URL的長度有限制。因此,在使用GET請求時,傳輸數(shù)據(jù)會受到URL長度的限制。

         對于POST,由于不是URL傳值,理論上是不會受限制的,但是實際上各個服務器會規(guī)定對POST提交數(shù)據(jù)大小進行限制,Apache、IIS都有各自的配置。

安全性

        Get是Form的默認方法,安全性相對比較低。

        請求參數(shù)放到url里和放到body里面的區(qū)別

        首先,參數(shù)的存放位置我們無法直接指定,而是不同的請求方法參數(shù)傳遞的方式不同。

        常用的HTTP請求主要為GET請求和POST請求兩種,GET請求的參數(shù)會通過以跟隨在URL后邊以鍵值對的方式進行傳遞(例:key1=a&key2=b&key3...);而POST請求的參數(shù)會通過HEADER進行傳遞。考慮到安全性的問題,可以確定兩者都不安全,原因是HTTP請求可以被輕易抓包和截獲,其中的請求參數(shù)值自然會很容易被獲取。
  • 3、請列舉出常用的Http Header,Cookie是怎么實現(xiàn)的?

      Content-Length,請求、響應體的數(shù)據(jù)字節(jié)大小
      Accept-Encoding,請求頭,可接受的文本壓縮算法,如: gzip, deflate
      Accept-Language,請求頭,支持語言,客戶端瀏覽器的設(shè)置,如:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
      User-Agent,請求頭,瀏覽器信息,

      Cookie,請求頭,服務器或客戶端在上次設(shè)置的COOKIE,包括作用域名(.360buy.com),過期時間,鍵與值。

      Referer,從一個連接打開一個新頁面,新頁面的請求一般會加此信息,標名是從哪里跳過來的,
      所有的頁面的打開歷史鏈就可被挖掘出來,有利于分析用戶行為與CPS分成

      Cookie在瀏覽器本地會有一個文件存儲數(shù)據(jù),通信的時候通過請求頭和響應頭傳遞數(shù)據(jù)
  • 4、請解釋下列返回碼的含義:200,302,400,403,500,502

      200:請求成功

      302:請求的資源臨時從不同的 URI響應請求。(資源臨時重定向)

      400:錯誤請求(請求的參數(shù)錯誤或者服務器不理解請求的語法)

      402:10.4.3 402 Payment Required   This code is reserved for future use.
       該狀態(tài)碼是為了將來可能的需求而預留的。

      500:服務器端錯誤

      502:網(wǎng)關(guān)或代理無效/無響應,網(wǎng)絡(luò)錯誤
  • 5、長連接和短連接的區(qū)別

HTTP協(xié)議目前常用的有哪幾個?KEEPALIVE從哪個版本開始出現(xiàn)的?

        到現(xiàn)在http出現(xiàn)了  1.0和 1.1版本

        Keep-Alive是從1.1默認就支持了。

         

1、什么是Keep-Alive模式?

        我們知道HTTP協(xié)議采用“請求-應答”模式,當使用普通模式,即非KeepAlive模式時,每個請求/應答客戶和服務器都要新建一個連接,完成之后立即斷開連接(HTTP協(xié)議為無連接的協(xié)議);當使用Keep-Alive模式(又稱持久連接、連接重用)時,Keep-Alive功能使客戶端到服務器端的連接持續(xù)有效,當出現(xiàn)對服務器的后繼請求時,Keep-Alive功能避免了建立或者重新建立連接。

        http 1.0中默認是關(guān)閉的,需要在http頭加入"Connection: Keep-Alive",才能啟用Keep-Alive;http 1.1中默認啟用Keep-Alive,如果加入"Connection: close ",才關(guān)閉。目前大部分瀏覽器都是用http1.1協(xié)議,也就是說默認都會發(fā)起Keep-Alive的連接請求了,所以是否能完成一個完整的Keep-Alive連接就看服務器設(shè)置情況。

2、啟用Keep-Alive的優(yōu)點

        從上面的分析來看,啟用Keep-Alive模式肯定更高效,性能更高。因為避免了建立/釋放連接的開銷。
  • 6、從服務器考慮提高網(wǎng)站性能

        業(yè)界常用的優(yōu)化WEB頁面加載速度的方法(可以分別從頁面元素展現(xiàn),請求連接,css,js,服務器等方面介紹)?

         對于服務器方面前端能做的工作:

         使用CDN加速,使用戶從離自己最近的服務器下載文件;

         減少Cookie的大小,使用無cookie的域,客戶端請求靜態(tài)文件的時候,減少 Cookie 的反復傳輸對主域名的影響;

         為文件頭指定Expires,使內(nèi)容具有緩存性;

         前端優(yōu)化:DNS預解析提升頁面速度

         <link rel="dns-prefetch"href="http://#" />

         <link rel="dns-prefetch" />

         服務器端能做的工作:

         負載均衡,分布式存儲,提升服務器性能等等。
  • 7、什么是Daemon進程?

        Daemon()程序是一直運行的服務端程序,又稱為守護進程。通常在系統(tǒng)后臺運行,沒有控制終端,不與前臺交互,Daemon程序一般作為系統(tǒng)服務使用。
        Daemon是長時間運行的進程,通常在系統(tǒng)啟動后就運行,在系統(tǒng)關(guān)閉時才結(jié)束。一般說Daemon程序在后臺運行,是因為它沒有控制終端,無法和前臺的用戶交互。
        Daemon程序一般都作為服務程序使用,等待客戶端程序與它通信。我們也把運行的Daemon程序稱作守護進程。
  • 8、優(yōu)化一個以I/O為瓶頸的程序,以下哪些方法效果比較顯著,Why?

        a)        增加CPU數(shù)目

        b)        提高CPU主頻

        c)        增大內(nèi)存的容量

        d)        采用多線程

        e)        采用異步I/O和多路(Multlplex)I/O

        f)         對每次I/O進行Bath訪問(多次I/O合并一次完成)

        c、e、d、f提升的效果會比較顯著

        c通過將數(shù)據(jù)預讀取到內(nèi)存中(建立內(nèi)存池)的方式,提高訪問時候的效率,有效減少磁盤IO讀寫次數(shù)
  • 9、設(shè)計一個系統(tǒng),實現(xiàn)統(tǒng)計網(wǎng)站中每個URL訪問到的次數(shù)(pv),以及訪問的獨立用戶數(shù)(uv),其中每個獨立網(wǎng)頁以URL為key,每個獨立用戶以ip為key?

#請自己想



 
  • 10、什么是內(nèi)存對象的序列化(Serialiization)?為什么要序列化?請描述你熟悉的網(wǎng)絡(luò)傳輸序列化(Serialiization)框架或格式(Server)?

        把對象轉(zhuǎn)換為字節(jié)序列的過程稱為對象的序列化

        序列化主要用于網(wǎng)絡(luò)傳輸數(shù)據(jù)及將數(shù)據(jù)保存在硬盤上

        常見的序列化以后的格式有:XML Jason  ,但它們都是字符串
  • 11、開發(fā)過程常見的加密算法

    1.MD5
    2.base64
    3.sha256
對稱加密
DES、DEST、DEARC2、
非對稱加密
RSA、Elgamal、背包算法、Rabin、D-H、ECC
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,666評論 1 32
  • 你想要快速成為行業(yè)老大,在營銷上有兩個策略: 策略一:當你創(chuàng)新一個領(lǐng)域,你一開始就是行業(yè)老大! 這是我過去常用的一...
    王通專欄閱讀 390評論 0 0
  • 7月3日 周一 每天吃什么已經(jīng)不再在乎,中午鍛煉了一次。晚上踢足球比賽,5:0輸了。
    hanyu007閱讀 182評論 0 0
  • 11月3日 星期六 晴 今天,我婆婆過生日,我們一家三口和姑媽們一起回老家探望婆婆。 我們一路上...
    合師附小五三班閱讀 256評論 0 0

友情鏈接更多精彩內(nèi)容