百度軟體開發(上海站)筆試題解答

來源:互聯網
上載者:User

標籤:軟體開發(上海站)筆試題解答

軟體開發(上海)

簡答題

  1. 描述OSI(開放系統互聯基本參考模型)七層結構:

第七層:應用程式層,直接對用程式提供服務,應用程式可以變化,但要包括電子訊息從傳輸;

第六層:展示層,格式化資料,以便為應用程式提供通用介面,這可以包括Data Encryption Service

第五層:會話層:在兩個節點之間建立端串連。此服務包括建立串連是以全雙工系統還是以半雙工的方式進行設定,儘管可以再層4中處理雙工方式

第四層:傳輸層,常規資料遞送,連線導向或無串連。包括全雙工系統或半雙工,流量控制和錯誤恢複服務

第三層:網路層,通過定址來建立兩個結點之間的串連,它包括通過互連網來路由和中繼資料

第二層:資料連結層,將資料分幀,並處理流量控制。本層指定拓撲結構並提供硬體定址

第一層:物理層,原始化位元流的傳輸,電子訊號傳輸和硬體介面

資料發送時從第七層到第一層,接受方則相反

上三層總稱應用程式層,用來控制軟體方面

下四層總稱資料流層,用來管理硬體

資料在發送至資料流層的時候將被拆分

在傳輸層的資料叫段 網路層叫包 資料連結層叫幀 物理層叫位元流 這種叫法叫PDU(協議資料單元)

  1. 寫出進程間資料共用的方式,至少三種

1)通過共用記憶體對應檔

2)利用共用記憶體dll

3)向另一個進程發送WM_COPYDATA訊息

4)調用ReadProcessMemory以及WriteProcessMemory函數,使用者可以發送由GlobalLock(GMEM_SHARE,...)函數調用提取的控制代碼、GlobalLock函數返回的指標以及VirtualAlloc函數返回的指標。

  1. 描述TCP和UDP的區別,並各寫出他們的一個上層協議

TCP是面向連結的,TCP的三向交握在很大程度上保證了串連的可靠性

UDP傳送資料前並不與對方進行建立串連,對接收到的資料不發送確認訊號,發送端不知道資料是否會正確接收,當然也不用重發,所以UDP是一種不需連線的,不可靠的一種資料轉送協議

UDP由於不進行資料確認,所以傳輸速率更快,即時性更好

上層協議很多,比如TCP:HTTP,FTP,SMTP;UDP:nfs,tftp,snmp,snmp。

程式與演算法設計

  1. 給出數組A={a_0,a_1,a_2,…,a_n}(你是可變的),列印出所有元素的組合

程式碼為:

#include<iostream>

#include<sstream>

#include<string>

usingnamespace std;

voidmain(){

string* str_arr=new string[10];

int len=10;

for(int i=0;i<len;i++)

{

           ostringstream oss;

           oss<<i;

           str_arr[i]="a_"+oss.str();

}

cout<<"組合結果為:"<<endl;

for(int i=0;i<len;i++)

{

           for(int j=i+1;j<len;j++){

                    cout<<str_arr[i]<<"-"<<str_arr[j]<<"      ";

           }

           cout<<endl;

}

cin>>len;//防止運行後關閉視窗

}

  1. 數組A中任意兩個相鄰元素大小相差1,現給定這樣的數組A和目標整數t,找出t在數組A中的位置。

程式碼:

#include<iostream>

#include<math.h>

usingnamespace std;

voidmain()

{

 constint len=12;

intnums[len]={1,2,3,4,5,4,3,2,1,0,-1,-2,},find;

cout<<"請輸入要尋找的數"<<endl;

cin>>find;

int i=0;

while(i<len)

{

           int tmp=abs(find-nums[i]);

           if(tmp==0)

           {

                    cout<<"位置為"<<i;

                    break;

           }

           else if(i+tmp<len)

           {

                    i+=tmp;

           }

           else

           {

                    cout<<"要尋找的元素不在數組中";

                    break;

           }

}

cin>>find;//防止運行後關閉視窗

}

  1. 求二叉樹的面積(高乘寬),高為二叉樹根結點到葉子結點的最大距離,寬為二叉樹最多的結點數

此題由於需要封裝樹的操作,故略去代碼,具體思路為:先進性深度優先搜尋,得到樹的高度,再進行廣度優先搜尋得到樹的寬,然後相乘即可。

系統設計題

         給定一個百度地圖的,對於地圖上的某一點,需要在地圖上標註該點的資訊,將資訊抽象成一個矩形,可以在該點的左邊標記,也可以在該店的右邊標記。但是任意兩點標記後的矩形是不能有覆蓋的,否則刪除其中一個點。

問題1:現給一固定地區,設計一個演算法,要求標記足夠多的點

問題2:當點足夠多的時候,演算法可能遇到效能瓶頸,需要對演算法重新最佳化

         這條實在是不會,只想到將地圖柵格化。


本文出自 “虎哥的部落格” 部落格,請務必保留此出處http://7613577.blog.51cto.com/7603577/1560280

百度軟體開發(上海站)筆試題解答

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.