為了保證結(jié)果的公正、公平,考場必須要求有很強的紀律約束,并且專門設(shè)有主考、監(jiān)考等監(jiān)督考試過程,下面小編給大家分享往年百度校園招聘筆試題內(nèi)容,希望能夠幫助大家!
往年百度校園招聘筆試題
筆試的題目:
一.簡答題
1.簡述iso的7層設(shè)計
2.如何在多個進行間進行數(shù)據(jù)共享(至少寫出3種)
3.簡述TCP與UDP的區(qū)別
二.算法題
1.有一個數(shù)據(jù)A = [a_1,a_2,a_3.....a_n],n的大小不定,請設(shè)計算法將A中的所有數(shù)據(jù)組合進行輸出
2.有一個數(shù)組,里面的元素相鄰之間相差絕對值1,如{4,5,6,5,4,5,6,7,8,7,8,9},先給定已數(shù)據(jù)A請輸出該數(shù)據(jù)在數(shù)組中的位置J?
3.二叉樹的面積等于二叉樹的長乘以二叉樹的寬,二叉樹的寬等于最長節(jié)點間的距離,二叉樹的長等于根節(jié)點到子節(jié)點的最長長度,請設(shè)計算法計算二叉樹的面積?
三.算法設(shè)計題
百度地圖中存在需要標(biāo)注的很多點,并且這些點都需要帶描述,現(xiàn)將描述假設(shè)為矩形,并且可以位于點的左邊或右邊,但點不能移動,如果兩個點間的描述發(fā)生覆蓋,則
需要將其中的一個點進行刪除
1.在一個區(qū)域內(nèi),請設(shè)計算法將有效的點進行輸出(盡可能多的點)?
2.如果區(qū)域足夠大,點足夠多,算法會出現(xiàn)性能的瓶頸,請設(shè)計詳細的算法來說明并解決問題?
百度校園招聘筆試題
一、簡答題
1、OSI的七層模型。(10分)
OSI的七層模型如下圖所示:
2、請列舉下不同進程之間共享數(shù)據(jù)的方式(至少舉出三種)。(10分)
1、文件映射(Memory-Mapped Files)能使進程把文件內(nèi)容當(dāng)作進程地址間一塊內(nèi)存那樣來對待
2、共享內(nèi)存(Shared Memory)實際就是文件映射的一種特殊情況
3、命名管道(Named Pipe)是服務(wù)器進程和一個或多個客戶進程之間通信的單向或雙向管道
4、郵件槽(Mailslots)提供進程間單向通信能力,任何進程都能建立郵件槽成為郵件槽服務(wù)器
5、剪貼板(Clipped Board)為不同應(yīng)用程序之間共享不同格式數(shù)據(jù)提供了一條捷徑
6、動態(tài)連接庫(DLL)中的全局數(shù)據(jù)可以被調(diào)用DLL的所有進程共享
3、請描述下TCP和UDP的差別,并且各列舉出一個上層協(xié)議。(10分)
TCP---傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)。當(dāng)客戶和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數(shù)據(jù)。TCP提供超時重發(fā),丟棄重復(fù)數(shù)據(jù),檢驗數(shù)據(jù),流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。
UDP---用戶數(shù)據(jù)報協(xié)議,是一個簡單的面向數(shù)據(jù)報的運輸層協(xié)議。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報發(fā)送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數(shù)據(jù)報前不用在客戶和服務(wù)器之間建立一個連接,且沒有超時重發(fā)等機制,故而傳輸速度很快。
經(jīng)常使用“ping”命令的原理就是向?qū)Ψ街鳈C發(fā)送UDP數(shù)據(jù)包,ftp等就是使用到的TCP協(xié)議
二、算法與程序設(shè)計
1、給出一個數(shù)據(jù)A={a_0,a_1,a_2…a_n}(其中n可變),打印出該數(shù)值元素的所有組合。(15分)
因為題目要求n可變,所以不可能是n層for循環(huán)的方式,可以采用遞歸的方式來實現(xiàn),每次取一個元素,在剩下元素的數(shù)組中遞歸,要注意遞歸結(jié)束的條件。
2、有這樣一個數(shù)組A,大小為n,相鄰元素差的絕對值都是1,如A={4,5,6,5,6,7,8,9,10,9},現(xiàn)在給定數(shù)組A和目標(biāo)整數(shù)t,請找到t在A中的位置。(15分)
最簡單的方式是循環(huán)遍歷每一個元素之后比較,找到t在A中的位置,此種方法效率最低;
改進:因為相鄰元素差的絕對值都是1,那么任意兩個元素相距的位置至少是兩元素差的絕對值個,假設(shè)要找的元素是t,t和a(0)的差為y1=abs(t-a[0]),那么t和a[0]的距離至少是y1,再求一次差值y2=abs(t-a[y1]),t和a[y1+y2]的距離至少是y2,繼續(xù)向后查找,直到相等為止,此種方法效率較前一種高
3、有一顆二叉樹,定義樹的高度為從根到葉子節(jié)點的最長距離,樹的寬度為每層節(jié)點的最大值,樹的面積定義為高度和寬度的乘積。寫一個函數(shù)計算一個二叉樹的面積。(15分)
廣度遍歷求樹的寬度,深度遍歷求樹的高度,之后計算面積
歷年網(wǎng)易校園招聘筆試題
1、假設(shè)進棧次序是e1, e2, e3, e4,那可能的出棧次序是()
A、e2, e4, e3, e1
B、e2, e3, e4, e1
C、e3, e2, e4, e1
D、e1, e2, e4, e3
給定入棧順序,求出可能的出棧順序。(點評:老得掉渣得題目了,只要小心點都沒有問題)
2、表達式X=A+B__(C-D)/E的后綴表示形式可以是()
A、XAB+CDE/-__=
B、XA+BC-DE/__=
C、XABCD-__E/+=
D、XABCDE+__/=
分析:XABCD-__E/+=
3.四叉樹中包含地空指針數(shù)量有多少?假設(shè)每個節(jié)點含有四個指向其孩子的指針,那么給定n個節(jié)點,其4n個指針有多少指向空?(比較簡單的題目,n個節(jié)點使用了的指針有n-1,所以最后的答案位4n-(n-1)=3n+1)
分析:或者舉例說明也行。。
4.那個排序算法是非穩(wěn)定的?選擇,冒泡、希爾,堆排序,快速等 (也是比較基礎(chǔ)的題目)
A、冒泡排序 B、歸并排序 C、快速排序 D、堆排序 E、希爾排序
分析:凡是O(n^2)的全部是穩(wěn)定排序,O(nlogn)的全部是非穩(wěn)定排序。。
5.根據(jù)函數(shù),賦予參數(shù)值,寫輸出。。請問func(0x7f530829)的返回值是()
int func(unsigned int i)
{
unsigned int temp = i;
temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa)>>1);
temp = (temp & 0x33333333) + ((temp & 0xcccccccc)>>2);
temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0)>>4);
temp = (temp & 0xff00ff) + ((temp & 0xff00ff00)>>8);
temp = (temp & 0xffff) + ((temp & 0xffff0000)>>16);
return temp;
}
A、15 B、16 C、17 D、18
分析:函數(shù)實現(xiàn)的是求二進制表示的時候,1的個數(shù),一共15個
最開始把每一個位看做一個節(jié)點,相鄰節(jié)點值相加,結(jié)果用兩個位表示。。。
然后每兩個位看做一個節(jié)點,相鄰節(jié)點值相加,結(jié)果用四個位表示。。。
以此類推,直到只剩下一個節(jié)點。。。
6.進程與線程的區(qū)別:系統(tǒng)調(diào)度是對進程還是線程,線程與進程共享的內(nèi)存空間、公共地址空間等;
A.操作系統(tǒng)只調(diào)度進程,不調(diào)度線程
B.線程共享內(nèi)存地址空間,進程不共享
C.線程間可共享內(nèi)存數(shù)據(jù),但進程不可以
D.進程可以通過IPC通信,但線程不可以
7.內(nèi)存管理:段頁式管理,地址映射表是?(操作系統(tǒng)方面的知識也不能掉以輕心呀)
A. 每個作業(yè)或進程一張段表,一張頁表
B. 每個作業(yè)或進程的每個段一張段表,一張頁表
C. 每個作業(yè)或進程一張段表,每個段一張頁表
D. 每個作業(yè)一張頁表,每個段一張段表
8、關(guān)于TCP協(xié)議,下面哪種說法是錯誤的()
A、TCP關(guān)閉連接過程中,兩端的socket都會經(jīng)過TIME_WAIT狀態(tài)
B、對一個Established狀態(tài)的TCP連接,調(diào)用shutdown函數(shù)可以讓主動調(diào)用的一方進入半關(guān)閉狀態(tài)
C、TCP協(xié)議默認保證了當(dāng)TCP的一端發(fā)生意外崩潰(當(dāng)機、網(wǎng)線斷開或路由器故障),另一端能自動檢測到連接失效
D、在成功建立連接的TCP上,只有在Established狀態(tài)才能收發(fā)數(shù)據(jù),其他狀態(tài)都不可以。
分析:tcp/ip協(xié)議的實際使用過程中的問題:例如單方面斷開后,另一端出于哪種狀態(tài),還有
9、關(guān)于主鍵Primary Key和索引index的說法哪些是錯誤的?()
A、唯一索引的列允許為NULL值
B、一個關(guān)系表中的外鍵必定是另一表中的主鍵
C、一個表中只能有一個唯一性索引
D、索引主要影響查詢過程,對數(shù)據(jù)的插入影響不大
分析:數(shù)據(jù)庫方面的知識:主鍵和索引的基本定義及其性質(zhì),例如主鍵在表中是否唯一,索引的速度以及對表的改變的影響;無論是唯一索引還是非唯一索引,索引列都允許取NULL值
10、數(shù)據(jù)庫的事務(wù)隔離級別一般分為4個級別,其中可能發(fā)生“不可重復(fù)讀”的事物級別有()
A、SERIALIZABLE
B、READ COMMITTED
C、READ UNCOMMITTED
D、REPEATABLE READ
分析數(shù)據(jù)庫:數(shù)據(jù)庫的不可重復(fù)訪問異常,四種事務(wù)隔離級別中哪些可以避免該類異常?
各隔離級別對各種異常的控制能力
LU丟失更新 DR臟讀 NRR非重復(fù)讀 SLU二類丟失更新 PR幻像讀
未提交讀 RU Y Y Y Y Y
提交讀 RC N N Y Y Y
可重復(fù)讀 RR N N N N Y
串行讀 S N N N N Y
11、如果F(n)為該數(shù)列的第n項,那么這句話可以寫成如下形式:
F(1)=1,F(xiàn)(2)=1,F(xiàn)(n)=F(n-1)+F(n-2) (n>=3)
請實現(xiàn)該函數(shù)F(n)的求解,并給出算法復(fù)雜度,要求算法復(fù)雜度小于O(n^2)。
思路:使用滾動數(shù)組可以保存以前保存的結(jié)果,加快速度,減少空間復(fù)雜度。
int Fib(int index)
{
if(index<1)
{
return-1;
}
int a1=1,a2=1,a3=1;
for(int i=0;i
{
a3=a1+a2;
a1=a2;
a2=a3;
}
return a3;
}
第二 部分(必做):程序設(shè)計
1、下面的程序的輸出是什么?
#include
int main(void)
{
int n;
char y[10] = "ntse";
char __x = y;
n = strlen(x);
__x = x[n];
x++;
printf("x=%sn",x);
printf("y=%sn",y);
return 0;
}
輸出:
x=tse
y=
因為n=4,則__x = x[n]; 的功能是將x指向的第一個字符n修改為