前端面試(計算機網絡、數據算法、Linux)

1 HTTP常見狀態碼
200 OK 正常返回信息
302 Found 資源被暫時性轉移
304 Not Modified 自從上次請求後,請求的網頁未修改過。
304講解
307 臨時重定向
401 該請求需要用戶驗證
404 Not Found 找不到如何與 URI 相匹配的資源。
500 Internal Server Error 最常見的服務器端錯誤。
504 Gateway Timeout 網關超時

2 線程與進程的區別
一個程序至少有一個進程,一個進程至少有一個線程.
線程的劃分尺度小於進程,使得多線程程序的併發性高。
進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。
每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
進程是資源分配的基本單位
線程是資源調度的基本單位

3 TCP與UDP
是否連接:面向連接 面向非連接
傳輸可靠性:可靠 不可靠
應用場合:傳輸大量數據 少量數據
速度:慢 快
面向:字節流 報文
最少包頭長度:20字節 8字節

4 HTTP1.1新特性
持久連接:Connection: keep-alive。目前,對於同一個域名,大多數瀏覽器允許同時建立6個持久連接。
管道機制:即在同一個TCP連接裏面,客戶端可以同時發送多個請求。這樣就進一步改進了HTTP協議的效率。
Content-Length 字段:一個TCP連接現在可以傳送多個迴應,勢必就要有一種機制,區分數據包是屬於哪一個迴應的。Content-length就是聲明本次迴應的數據長度。Content-Length: 3495。(效率不高)
分塊傳輸編碼:Transfer-Encoding: chunked。表明迴應將由數量未定的數據塊組成。每個非空的數據塊之前,會有一個16進制的數值,表示這個塊的長度。最後是一個大小爲0的塊,就表示本次迴應的數據發送完了。例如:

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked

25
This is the data in the first chunk

1C
and this is the second one

3
con

8
sequence

0

其他:新增了許多動詞方法:PUT、PATCH、HEAD、 OPTIONS、DELETE。
另外,客戶端請求的頭信息新增了Host字段,用來指定服務器的域名。

5 哈夫曼編碼
哈弗曼編碼是一種無損二進制熵編碼算法,其加權路徑長度最小,字符串“alibaba”的二進制哈弗曼編碼有_位(bit)
答案:13
一、對給定的n個權值{W1,W2,W3,…,Wi,…,Wn}構成n棵二叉樹的初始集合F
二、在F中選取兩棵根結點權值最小的樹作爲新構造的二叉樹的左右子樹,新二叉樹的根結點的權值爲其左右子樹的根結點的權值之和。
三、從F中刪除這兩棵樹,並把這棵新的二叉樹同樣以升序排列加入到集合F中。
四、重複二和三兩步,直到集合F中只有一棵二叉樹爲止。

6 子網掩碼中的主機數
子網掩碼中所有0的位數就是主機的位數,但是要除去全0和全1
如:子網掩碼是255.255.240.0。2的12次方,總共4096個,但是要除去全0和全1,最後只有4094個

7 常見端口號
HTTP的端口號是80
https的端口號是443
FTP的端口號是21
SMTP的端口號是25

8 排序
不穩定排序:快選堆希
穩 定排序:插冒歸基

9 前端如何保證安全傳輸數據(並未找到合適答案)
可以用https協議。
採用非對稱加密。
POST也不一定安全。

10 一個頁面從輸入 URL 到頁面加載顯示完成,這個過程中都發生了什麼?
(1) 當發送一個 URL 請求時,不管這個 URL 是 Web 頁面的 URL 還是 Web 頁面上每個資源的 URL,瀏覽器都會開啓一個線程來處理這個請求,同時在遠程 DNS 服務器上啓動一個 DNS 查詢。這能使瀏覽器獲得請求對應的 IP 地址。
(2)瀏覽器與遠程 Web 服務器通過 TCP 三次握手協商來建立一個 TCP/IP 連接。該握手包括一個同步報文,一個同步-應答報文和一個應答報文,這三個報文在 瀏覽器和服務器之間傳遞。該握手首先由客戶端嘗試建立起通信,而後服務器應答並接受客戶端的請求,最後由客戶端發出該請求已經被接受的報文。
(3)一旦 TCP/IP 連接建立,瀏覽器會通過該連接向遠程服務器發送 HTTP 的 GET 請求。遠程服務器找到資源並使用 HTTP 響應返回該資源,值爲 200 的 HTTP 響應狀態表示一個正確的響應。
(4)此時,Web 服務器提供資源服務,客戶端開始下載資源。
請求返回後,便進入了我們關注的前端模塊
簡單來說,瀏覽器會解析 HTML 生成 DOM Tree,其次會根據 CSS 生成 CSS Rule Tree,而 javascript 又可以根據 DOM API 操作 DOM

11 n的階乘
(1)遞歸

 public static int run(int n){
  if (n == 1) {
         return n;
  }else {
          return n * run( n - 1 );
        }
 }

(2)循環

 public static int run(int n){
  int res=1;
  while(n>=2){
     res=res*n;
     n--;
  }
  return res;
 }

12 堆和棧
堆:程序員分配釋放。
      堆是向高地址擴展的數據結構,是不連續的內存區域。
      堆獲得的空間較大。
      堆是由new分配的內存,一般速度比較慢,而且容易產生內存碎片,不過用起來最方便.
棧:編譯器自動分配釋放。
      棧是向低地址擴展的數據結構,是一塊連續的內存的區域。
      棧獲得的空間較小。
      棧由系統自動分配,速度較快。但程序員是無法控制的。

13 jpg和png的區別

  1. png即可移植網絡圖形格式,也是一種位圖文件存儲格式,可以進行無損壓縮,日常應用少於jpg。而jpg是最常見的圖片格式了
  2. png佔內存多,jpg佔內存少
  3. png可無損壓縮,jpg則犧牲了圖片質量
  4. 在ps中png可爲透明背景,而jpg顯然是不行的。

png也有png-8,png-24,png-32。這是指存儲位數。
png8只能使用 256色,可以設置 索引色透明Alpha透明。索引色透明只可以簡單的指定一個像素點是不是透明(是或者不是)。而 Alpha 透明則可指定該像素點的透明的程度(透明度),如30%的透明度。
png24 是不支持透明度設定的,但其可用顏色比 png8 豐富的多。
png32不僅可以使用更多的顏色,而且還支持透明度設定。rgba(255,255,255,255)屬於 PNG 系列中較常用的一種格式。
注:ie6對png32的兼容性不好。

14 請解釋下列10個shell命令的用途
top、ps、mv、find、df、cat、chmod、chgrp、grep、wc
top:命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器。
ps:查看進程
mv:移動或者更改文件
find:在子目錄中搜索匹配的文件
df:linux中df命令參數功能:檢查文件系統的磁盤空間佔用情況。
cat:把一個或多個文件內容顯示到標準輸出
chmod:改變文件屬性
chgrp:改變用戶分組
grep:在文件內進行搜索
wc:命令的功能爲統計指定文件中的字節數、字數、行數, 並將統計結果顯示輸出。

15 爲什麼連接的時候是三次握手,關閉的時候卻是四次握手?
因爲當Server端收到Client端的SYN連接請求報文後,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連接時,當Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,”你發的FIN報文我收到了”。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。

16 爲什麼TIME_WAIT狀態需要經過2MSL(最大報文段生存時間)才能返回到CLOSE狀態?
雖然按道理,四個報文都發送完畢,我們可以直接進入CLOSE狀態了,但是我們必須假象網絡是不可靠的,有可以最後一個ACK丟失。所以TIME_WAIT狀態就是用來重發可能丟失的ACK報文。

17 https和http區別
在URL前加https://前綴表明是用SSL加密的。 你的電腦與服務器之間收發的信息傳輸將更加安全。
Web服務器啓用SSL需要獲得一個服務器證書並將該證書與要使用SSL的服務器綁定。
http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。http的連接很簡單,是無狀態的,…
HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議
使用非對稱加密算法進行對稱加密算法協商過程。
https講解

18 ping
我們經常使用“ping”命令來測試兩臺主機之間TCP/IP通信是否正常,其實“ping”命令的原理就是向對方主機發送UDP數據包,然後對方主機確認收到數據包,如果數據包是否到達的消息及時反饋回來,那麼網絡就是通的。

19
Windows默認換行符 \r\n
IP:網絡層。TCP/UDP:傳輸層。HTTP/TALNET:應用層

20
HTTP1.0 HTTP 1.1 HTTP 2.0主要區別

21
HTTP頭部詳解及keep-alive

22
HTTP長連接

23 緩存機制
Expires 是HTTP 1.0的東西,現在默認瀏覽器均默認使用HTTP 1.1,所以它的作用基本忽略。另一個問題是,到期時間是由服務端生成的,但是客戶端時間可能跟服務端時間有誤差,這就會導致緩存命中的誤差。
所以HTTP 1.1 的版本,使用Cache-Control替代。
緩存機制
Etag緩存

24 負載均衡
那什麼是負載均衡呢?負載均衡建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。
負載均衡有兩方面的含義:首先,大量的併發訪問或數據流量分擔到多臺節點設備上分別處理,減少用戶等待響應的時間;其次,單個重負載的運算分擔到多臺節點設備上做並行處理,每個節點設備處理結束後,將結果彙總,返回給用戶,系統處理能力得到大幅度提高。

25 集羣
簡單的說,集羣(cluster)就是一組計算機,它們作爲一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集羣的節點(node)。一個理想的集羣是,用戶從來不會意識到集羣系統底層的節點,在他/她們看來,集羣是一個系統,而非多個計算機系統。並且集羣系統的管理員可以隨意增加和刪改集羣系統的節點。

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