<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          騰訊-測試開發(fā)面經(jīng)(三)

          共 3510字,需瀏覽 8分鐘

           ·

          2021-03-26 21:54

          點擊藍字關注我們,獲取更多面經(jīng)







          多態(tài)







          所謂的“多態(tài)”,簡單的理解就是對象在不同情況下的不同表現(xiàn),具體體現(xiàn)在定義和功能兩個方面,簡單的總結(jié)一下,多態(tài)可以用“三個定義和兩個方法”來總結(jié)。三個定義分別是父類定義子類構(gòu)建、接口定義實現(xiàn)類構(gòu)建和抽象類定義實體類構(gòu)建,而兩個方法分別是方法重載和方法重寫。

          方法重載的概念比較好理解,簡單的說,就是在同一個類中,定義了多個方法,具有相同的方法名稱和不同的參數(shù)列表。方法重載只看名稱和參數(shù)列表,其他的都不看,包括返回值類型、屬性修飾符、范圍限定等,這些都不影響方法重載的概念。

          方法重寫可以用“一個前提、三個相同和兩個規(guī)定”來總結(jié),前提是在繼承體系結(jié)構(gòu)下,三個相同代表子類中定義的方法與父類中的方法,具有相同的名字、參數(shù)列表和返回值類型,兩個規(guī)定分別是子類方法的范圍限定不能比父類方法的范圍小,以及不能拋出更多的異常。當然,final類型的方法和static類型的方法是不能被重寫的。

          父類定義子類構(gòu)建還是比較好理解的,但是如果采用了這種定義方式,也就意味著對象本身并不能調(diào)用子類獨有的方法,而如果調(diào)用的方法恰好覆蓋了父類中的方法,則還涉及到“虛方法”的概念,實際上執(zhí)行的是子類方法體中的功能語句。

          接口定義實體類構(gòu)建是Java中非常常見的一種多態(tài)形勢,而且由于接口屬于全抽象方式,所以這種方式可以在很大程度上提升程序的“健壯性”,也是比較推薦的編程方式。采用接口定義類構(gòu)建的方式,可以在很大程度上提升代碼的可復用性。

          抽象類定義實體類構(gòu)建是接口定義方式的一種擴展,通??梢杂迷诖a的模塊內(nèi)部,從而提升代碼的內(nèi)聚性。






          指針和引用的區(qū)別







          (1)指針:指針是一個變量,只不過這個變量存儲的是一個地址,指向內(nèi)存的一個存儲單元;而引用跟原來變量實質(zhì)上是同一個東西,只不過是原變量的一個別名而已。如:

          int a=1;int *p=&a;

          int a=1;int &b=a;

          上面定義了一個整形變量和一個指針變量p,該指針變量指向a的存儲單元,即p的值是a存儲單元的地址。

          而下面2句定義了一個整形變量a和這個整形a的引用b,事實上a和b是同一個東西,在內(nèi)存占有同一個存儲單元。

          (2)引用不可以為空,當被創(chuàng)建的時候,必須初始化,而指針可以是空值,可以在任何時候被初始化。

          (3)可以有const指針,但是沒有const引用;

          (4)指針可以有多級,但是引用只能是一級(int **p;合法 而 int &&a是不合法的)

          (5)指針的值可以為空,但是引用的值不能為NULL,并且引用在定義的時候必須初始化;

          (6)指針的值在初始化后可以改變,即指向其它的存儲單元,而引用在進行初始化后就不會再改變了。

          (7)”sizeof引用”得到的是所指向的變量(對象)的大小,而”sizeof指針”得到的是指針本身的大?。?/span>

          (8)指針和引用的自增(++)運算意義不一樣;

          (9)如果返回動態(tài)內(nèi)存分配的對象或者內(nèi)存,必須使用指針,引用可能引起內(nèi)存泄漏;






          http和https的區(qū)別







          1、https協(xié)議需要到ca申請證書,一般免費證書較少,因而需要一定費用。

          2、http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議。

          3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

          4、http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸、身份認證的網(wǎng)絡協(xié)議,比http協(xié)議安全。





          ssl加密







          SSL協(xié)議提供的安全通道有以下三個特性:

          機密性:SSL協(xié)議使用密鑰加密通信數(shù)據(jù)。

          可靠性:服務器和客戶都會被認證,客戶的認證是可選的。

          完整性:SSL協(xié)議會對傳送的數(shù)據(jù)進行完整性檢查。


          SSL的握手與密鑰協(xié)商過程

          基于RSA握手和密鑰交換的客戶端驗證服務器為示例詳解TLS/SSL握手過程。


          TLS/SSL握手過程

          (1).client_hello

          客戶端發(fā)起請求,以明文傳輸請求信息,包含:版本信息,加密套件候選列表,壓縮算法候選列表,隨機數(shù),擴展字段等信息。

          ClientHello 客戶發(fā)送CilentHello信息,包含如下內(nèi)容:

          (1)客戶端可以支持的SSL最高版本號

          (2)一個用于生成主秘密的32字節(jié)的隨機數(shù)(random_C)。(用于生成主密鑰)

          (3)一個確定會話的會話ID。

          (4)一個客戶端可以支持的密碼套件列表。

          (5)一個客戶端可以支持的壓縮算法列表。


          (2).server_hello+server_certificate+sever_hello_done

          l  server_hello

          服務端返回協(xié)商的信息結(jié)果,包括選擇使用的協(xié)議版本 version,選擇的加密套件,選擇的壓縮算法、隨機數(shù) random_S 等,其中隨機數(shù)用于后續(xù)的密鑰協(xié)商(用于產(chǎn)生主密鑰);

          l  server_certificates

          服務器端配置對應的證書鏈(公鑰放在證書中),用于身份驗證與密鑰交換;

          l  server_hello_done

          通知客戶端 server_hello 信息發(fā)送結(jié)束;


          (3).證書校驗

          客戶端驗證證書的合法性,如果驗證通過才會進行后續(xù)通信,否則根據(jù)錯誤情況不同做出提示和操作,合法性驗證包括如下:

          證書鏈的可信性、證書是否吊銷、有效期 、域名


          (4).client_key_exchange+change_cipher_spec+encrypted_handshake_message

          l  client_key_exchange

          合法性驗證通過之后,客戶端計算產(chǎn)生隨機數(shù)字 Pre-master,并用證書公鑰加密,發(fā)送給服務器;

          l  此時客戶端已經(jīng)獲取全部的計算協(xié)商密鑰需要的信息:兩個明文隨機數(shù) random_C 和 random_S 與自己計算產(chǎn)生的 Pre-master,計算得到協(xié)商密鑰;enc_key=Fuc(random_C, random_S, Pre-Master)

          l  change_cipher_spec

          客戶端通知服務器后續(xù)的通信都采用協(xié)商的通信密鑰和加密算法進行加密通信;

          l  encrypted_handshake_message

          結(jié)合之前所有通信參數(shù)的 hash 值與其它相關信息生成一段數(shù)據(jù),采用協(xié)商密鑰 session secret 與算法進行加密,然后發(fā)送給服務器用于數(shù)據(jù)與握手驗證;


          (5).change_cipher_spec+encrypted_handshake_message

          l  服務器用私鑰解密加密的 Pre-master 數(shù)據(jù),基于之前交換的兩個明文隨機數(shù) random_C 和 random_S,計算得到協(xié)商密鑰:enc_key=Fuc(random_C, random_S, Pre-Master);

          l  計算之前所有接收信息的 hash 值,然后解密客戶端發(fā)送的 encrypted_handshake_message,驗證數(shù)據(jù)和密鑰正確性;

          l  change_cipher_spec

          驗證通過之后,服務器同樣發(fā)送 change_cipher_spec 以告知客戶端后續(xù)的通信都采用協(xié)商的密鑰與算法進行加密通信;

          l  encrypted_handshake_message

          服務器也結(jié)合所有當前的通信參數(shù)信息生成一段數(shù)據(jù)并采用協(xié)商密鑰 session secret 與算法加密并發(fā)送到客戶端;


          (6).握手結(jié)束

          客戶端計算所有接收信息的 hash 值,并采用協(xié)商密鑰解密 encrypted_handshake_message,驗證服務器發(fā)送的數(shù)據(jù)和密鑰,驗證通過則握手完成;


          (7).加密通信

          開始使用協(xié)商密鑰與算法進行加密通信。


          數(shù)字證書

          數(shù)字證書是一個經(jīng)證書授權(quán)中心數(shù)字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書授權(quán)中心的數(shù)字簽名。數(shù)字證書還有一個重要的特征就是只在特定的時間段內(nèi)有效。









          更多面經(jīng)





          360-測試開發(fā)面經(jīng)(一)


          百度-測試開發(fā)面經(jīng)(一)


          字節(jié)跳動-測試開發(fā)面經(jīng)(一)


              掃描二維碼

             獲取更多面經(jīng)

            扶搖就業(yè)  


          瀏覽 62
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷骚婷婷aV | 国产综合视频 | 丝袜脚交一区二区三区 | 北条麻妃无码在线播放 | 亚洲黄色在线看 |