網(wǎng)易校招研發(fā)工程師模擬筆試題

第一次接觸這種完整的筆試題,感覺題目很難的,涉及到方方面面的問題:Java、C++、計算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)、計算機(jī)組織與結(jié)構(gòu)、算法導(dǎo)論、數(shù)據(jù)庫、Linux指令等等問題;在這里做個總結(jié),希望和大家共同學(xué)習(xí);

選擇題(15題)
1、VC提供一種被稱為Watch的機(jī)制來觀看變量和表達(dá)式的值,由于指針指向的數(shù)組,Watch只能顯示第一個元素的值,為了顯示數(shù)組的后續(xù)內(nèi)容,或者要顯示一片內(nèi)存的內(nèi)容,可以使用()功能
A、Regsters
B、Varibles
C、Conditions
D、Memory

正確答案:D;本題考察VC調(diào)試
解析:http://www.cnblogs.com/lidabo/p/3631224.html
Watch
VC支持查看變量、表達(dá)式和內(nèi)存的值。所有這些觀察都必須是在斷點中斷的情況下進(jìn)行。
觀看變量的值最簡單,當(dāng)斷點到達(dá)時,把光標(biāo)移動到這個變量上,停留一會就可以看到變量的值。
VC提供一種被成為Watch的機(jī)制來觀看變量和表達(dá)式的值。在斷點狀態(tài)下,在變量上單擊右鍵,選擇Quick Watch, 就彈出一個對話框,顯示這個變量的值。
單擊Debug工具條上的Watch按鈕,就出現(xiàn)一個Watch視圖(Watch1,Watch2,Watch3,Watch4),在該視圖中輸入變量或者表達(dá)式,就可以觀察 變量或者表達(dá)式的值。注意:這個表達(dá)式不能有副作用,例如++運算符絕對禁止用于這個表達(dá)式中,因為這個運算符將修改變量的值,導(dǎo)致 軟件的邏輯被破壞。
Memory
由于指針指向的數(shù)組,Watch只能顯示第一個元素的值。為了顯示數(shù)組的后續(xù)內(nèi)容,或者要顯示一片內(nèi)存的內(nèi)容,可以使用memory功能。在Debug工具條上點memory按鈕,就彈出一個對話框,在其中輸入地址,就可以顯示該地址指向的內(nèi)存的內(nèi)容。
Varibles
Debug工具條上的Varibles按鈕彈出一個框,顯示所有當(dāng)前執(zhí)行上下文中可見的變量的值。特別是當(dāng)前指令涉及的變量,以紅色顯示。
寄存器
Debug工具條上的Reigsters按鈕彈出一個框,顯示當(dāng)前的所有寄存器的值。

2、根據(jù)關(guān)系型數(shù)據(jù)庫規(guī)范范理論,關(guān)系數(shù)據(jù)庫中的關(guān)系要滿足第一范式,在部門關(guān)系中,因哪個屬性而石塔不滿足第一范式?()
A、部門名
B、部門成員
C、部門總經(jīng)理
D、部門號

正確答案:B;本題考察關(guān)系型數(shù)據(jù)庫
解析:
在任何一個關(guān)系型數(shù)據(jù)庫中,第一范式(1NF)是對關(guān)系模型的基本要求,不滿足第一范式(1NF)的數(shù)據(jù)庫就不是關(guān)系數(shù)據(jù)庫;關(guān)系數(shù)據(jù)庫的第一范式規(guī)定:關(guān)系中的每一個屬性都是不可分割的。而本關(guān)系中,“部門成員”顯然包括“部門總經(jīng)理”,所以它是可分的。這樣就不滿足第一范式的條件;

3、用命令行方式運行一下代碼的運行結(jié)果是()

  public class f {
    public static void main(String[] args) {
        String foot1 = args[1];
        String foot2 = args[2];
        String foot3 = args[3];
    }
}

命令:java T11 a b c
A、a b c
B、t11
C、程序運行異常
D、程序編譯錯誤

這道題我沒有找到正確,但是經(jīng)過我在命令行中編譯的結(jié)果來看應(yīng)該是選:C
解析:
首先程序編譯通過,執(zhí)行命令java T11 a b c是無法通過的,因為根本沒有T11主類;估計題目出錯,應(yīng)該將T11改為f,在控制臺執(zhí)行完javac f.java編譯通過后,接著執(zhí)行java f a b c; 運行時拋出 java.lang.ArrayIndexOutOfBoundsException 異常;
由于String[] args接受從控制臺中輸入的字符串;所以在main函數(shù)里args的數(shù)組長度為3,則這里執(zhí)行String foot3 = args[3]時出現(xiàn)數(shù)組越界;所以該題目選擇C、程序運行異常;

4、
#include <iostream>
using namespace std;
class TestClass{
char x;
public:
TestClass(){cout<<'A';}
TestClass(char c){cout << c;}
~TestClass(){cout<<'B';}
};
int main() {
TestClass p1,*p2;
p2 = new TestClass('X');
delete(p2);
return 0;
}

執(zhí)行這個程序的結(jié)果是()
A、AXBB
B、AAXBBB
C、AAXB
D、XB

正確答案 A;本題考察C++的構(gòu)造函數(shù)和析構(gòu)函數(shù)
解析:
p1執(zhí)行默認(rèn)構(gòu)造函數(shù),p2執(zhí)行傳參構(gòu)造函數(shù);都需要執(zhí)行析構(gòu)函數(shù)來釋放內(nèi)存,只是p1時自動釋放,p2需要手動釋放,p2在p1之前執(zhí)行析構(gòu)函數(shù);

5、現(xiàn)有4個同時到達(dá)的作業(yè)J1、J2、J3、J4,他們的執(zhí)行時間分別是1小時、3小時、5小時、7小時,系統(tǒng)按單道方式運行且采用短作業(yè)優(yōu)先算法,則平均周轉(zhuǎn)時間是()小時
A、5
B、4
C、7.5
D、6

正確答案:C;本題考查操作系統(tǒng)相關(guān)問題
解析:

執(zhí)行次序 提交時間 執(zhí)行時間 開始時間 完成時間 周轉(zhuǎn)時間
J1 0 1 0 1 1
J2 0 3 1 4 4
J3 0 5 4 9 9
J4 0 7 9 16 16

平均等待時間:將所有作業(yè)的運行時間加起來除以總的作業(yè)數(shù) (1+3+5+7)/4=4
平均周轉(zhuǎn)時間:將所有作業(yè)運行的時間和等待的時間全部加起來除以作業(yè)數(shù),這四個作業(yè)的等待時間分別是:0,1,4,9
(1+3+5+7+0+1+4+9)/4=7.5

6、浮點數(shù)的尾數(shù)基值取2,并采用隱含位表數(shù)方法,則這種浮點數(shù)的表數(shù)效率為()
A、94%
B、75%
C、100%
D、50%

正確答案:C;本題考查指令系統(tǒng)中的浮點數(shù)的表數(shù)效率;
解析:http://202.197.191.206:8080/22/content/chap2/section1/08.htm
從浮點數(shù)的表數(shù)范圍和表數(shù)精度來看,尾數(shù)基值取2或4最好,但當(dāng)尾數(shù)基值等于2時,表數(shù)效率最低只有50%。為例在尾數(shù)基值取2時提高浮點數(shù)的表數(shù)效率,目前在許多機(jī)器中采用了隱藏位數(shù)表數(shù)法。具體做法是:因為在尾數(shù)基值取2時,規(guī)格化浮點數(shù)尾數(shù)的最高位一定是1(如果尾數(shù)用補(bǔ)碼表示,規(guī)格化浮點數(shù)尾數(shù)最高位一定與尾數(shù)符號位相反),所以,浮點數(shù)在存儲和傳送的過程中,尾數(shù)最高位可以不表示出來,只在計算時恢復(fù)這一個隱藏位,或采用某種方法對運算結(jié)果進(jìn)行修正。
在采用采用隱藏位表數(shù)方法之后,當(dāng)取尾數(shù)基值=2時,浮點數(shù)的表數(shù)效率能夠達(dá)到最大值100%。如果取尾數(shù)基值=4,就不能采用隱藏位表數(shù)方法,這時的浮點數(shù)的表數(shù)效率為75%。
網(wǎng)上很多答案都認(rèn)為選D,但是沒有看清楚題目是采用隱含位表數(shù)方法;

7、記號O的定義正確的是()
A、O(g(n))= {f(n) | 對于任何正常數(shù)c>0,存在正數(shù)和n0>0使得對所有n>=n0有:0<=cg(n)<f(n)}

B、O(g(n))= {f(n) | 對于任何正常數(shù)c和n0使得所有n>=n0有:0<=cg(n)<=f(n)}

C、O(g(n))= {f(n) | 對于任何正常數(shù)c>0,存在正數(shù)和n0>0使得對所有n>=n0有:0<=f(n)<cg(n)}

D、O(g(n))= {f(n) | 對于任何正常數(shù)c和n0使得所有n>=n0有:0<=f(n)<=cg(n)}

正確答案:D;本題來源于算法導(dǎo)論概念;
解析:
記號O是用于描述函數(shù)漸進(jìn)行為的數(shù)學(xué)符號。更確切地說,它是用另一個(通常個更簡單的)函數(shù)來描述一個函數(shù)數(shù)量級的漸行上界。在計算機(jī)科學(xué)中,它在分析算法復(fù)雜性的方面非常有用;

8、關(guān)于漸進(jìn)記號的性質(zhì)是正確的有()
A、f(n) = O( g(n),g(n) = O(h(n)) => h(n)=O(f(n)) )
B、O( f(n) ) + o( g(n) ) = O( min { ( f(n),g(n) ) } )
C、f(n) = O( g(n) ), g(n) = O( h(n) ) => f(n) = O( h(n) )
D、f(n) = O(g(n)) <=>g(n) = O( f(n) )

正確答案:C;考查漸進(jìn)記號的性質(zhì);
解析:
f(n) = O(g(n)),對于記號O的直觀含義是:f(n)的階不高于g(n)的階;
A意思是 f(n)的階不高于g(n),g(n) 的階不高于h(n),則 h(n) 的階不高于f(n);錯誤;
B錯誤:關(guān)于漸進(jìn)符號的定理:對于f1(n),f2(n),如果f1(n) = O(g1(n)),f2(n) = O(g2(n)),則必有
f1(n)+f2(n) = O(max{g1(n),g2(n)})。
C意思是f(n)的階不高于g(n),g(n) 的階不高于h(n),則 f(n) 的階不高于h(n);正確;
D意思是f(n)的階不高于g(n),等價于g(n)的階不高于f(n),錯誤;

9、一個查詢語句執(zhí)行后顯示的結(jié)果為;
1班80
2班75
3班null,
則最有可能的查詢語句是()
A、SELECT AVG(成績) FROM 成績表 WHERE class<=3 GROUP BY class
B、SELECT AVG(成績) FROM 成績表 HAVING class <=3 GROUP BY class
C、SELECT AVG(成績) FROM 成績表 WHERE class<=3 order by class
D、SELECT AVG(成績) FROM 成績表 WHERE class<=3

正確答案:B;本題考察數(shù)據(jù)庫查詢語句;
解析:
having :對分組后的語句進(jìn)行過濾;
select之后如果是聚合函數(shù)則group by 分組會顯示null的結(jié)果,而order by不會顯示null的結(jié)果;
order by 用于對結(jié)果集進(jìn)行排序;group by 根據(jù)一個或多個列對結(jié)果集進(jìn)行分組。返回結(jié)果,所依賴的列中元素不會重復(fù);

10、磁盤陣列需要的配置文件和邏輯設(shè)備是()
A、Raid.conf與sdc0
B、Raid.conf與md0
C、Raidtab與md0
D、raidtab與hda0

正確答案:C;本題考查計算機(jī)組成原理相關(guān)內(nèi)容;
解析:
磁盤陣列的配置文件為/etc/raidtab 邏輯設(shè)備為 /dev/md0磁盤陣列

11、某公司申請到一個C類IP地址,但要連接6個的子公司,最大的一個子公司有26臺計算機(jī),每個子公司在一個網(wǎng)段中,則子網(wǎng)掩碼應(yīng)設(shè)為()
A、255.255.255.128
B、255.255.255.224
C、255.255.255.0
D、255.255.255.192

正確答案:B;本題考察計算機(jī)網(wǎng)絡(luò)相關(guān)內(nèi)容;
解析:
因為有六個子公司,22<6<23,則必須有3位1;最大有26臺,24<26<25,最少使用5位表示主機(jī)號,必須有5個0,所以二進(jìn)制位11100000,轉(zhuǎn)換為十進(jìn)制是224;

12、mysql中查看SQL模式的命令是()
A、select global.sql_mode
B、select @@session.sql_mode
C、select @@sql_mode
D、select @@global.sql_mode

正確答案:C;本題考察mySql數(shù)據(jù)庫相關(guān)內(nèi)容;
解析
MySQL數(shù)據(jù)庫中,變量分為 系統(tǒng)變量(以"@@"開頭)和用戶自定義變量。系統(tǒng)變量分為全局系統(tǒng)變量(global)和會話系統(tǒng)變量(session)。
@@global 僅用于訪問全局系統(tǒng)變量的值;
@@session 僅用于訪問會話系統(tǒng)變量的值;
@@ 先訪問會話系統(tǒng)變量的值,若不存在則去訪問全局系統(tǒng)變量的值;
sql_mode 為系統(tǒng)變量,既是全局系統(tǒng)變量,又是會話系統(tǒng)變量。
按照題目的描述選擇B、C、D均正確,但是這里是單選題,而且給出的答案是C;所以

13、tcp套接字中不會阻塞的是()
A、write
B、bind
C、accept
D、read

正確答案:B;本題考察計算機(jī)網(wǎng)絡(luò)相關(guān)知識;
解析:
首先,服務(wù)器端啟動進(jìn)程,調(diào)用Socket創(chuàng)建一個基于TCP協(xié)議的流套接字描述符。
其次,服務(wù)進(jìn)程調(diào)用bind命名套接字,將套接字描述符綁定到本地地址和本地端口上。
再次,服務(wù)器端調(diào)用listen,開始偵聽客戶端的Socket連接請求。
接下來阻塞,直到收到了客戶端的connect請求,調(diào)用accept進(jìn)行相應(yīng)。
因此,不阻塞bind和listen;即不參與解析和傳輸應(yīng)該就不會阻塞

14、執(zhí)行指令find / -name “test.c”,按Ctrl+z后的提示有[1]166,可以繼續(xù)執(zhí)行的方式有()
A、Ctrl+h
B、bg 1
C、fg 1
D、kill 166

正確答案: C;本題考查linux操作系統(tǒng)下的指令;
解析:
指令“find / -name “test.c””表示按照名字查找test.c文件;Ctrl+z表示掛起當(dāng)前任務(wù),[1]166中1表示任務(wù)編號,166表示進(jìn)程號;
Ctrl+h表示刪除光標(biāo)前的一個字符;
bg n 命令表示將編號為n的任務(wù)轉(zhuǎn)到后臺執(zhí)行;

fg n 命令表示將編號為n的任務(wù)轉(zhuǎn)前臺運行;
kill 166表示將進(jìn)程為166的任務(wù)殺掉;
所以應(yīng)該選擇C;

15、在工程網(wǎng)絡(luò)計劃中,工作M的最早開始時間為第16天,其持續(xù)時間為5天。該工作有三項緊后工作,他們的最早開始時間分別為第25天,第27天和第30天,最遲開始時間分別為第28天、第29天和第30天。則工作M的總時差為()天。
A、7
B、5
C、6
D、9

正確答案:A;本題繼續(xù)考察操作系統(tǒng)相關(guān)問題;
解析
總時差TF(Total Float )指一項工作在不影響總工期的前提下所具有的機(jī)動時間,即用最遲完成時間與最早完成時間之差,28-(16+5)=7 (總時差 = 最遲完成時間 - 最早完成時間)
自由時差 = 緊后工作最早開始時間 - 本工作最早完工時間

編程題(3道):
1、小易經(jīng)常沉迷于網(wǎng)絡(luò)游戲.有一次,他在玩一個打怪升級的游戲,他的角色的初始能力值為 a.在接下來的一段時間內(nèi),他將會依次遇見n個怪物,每個怪物的防御力為b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的當(dāng)前能力值c,那么他就能輕松打敗怪物,并 且使得自己的能力值增加bi;如果bi大于c,那他也能打敗怪物,但他的能力值只能增加bi 與c的最大公約數(shù).那么問題來了,在一系列的鍛煉后,小易的最終能力值為多少?

輸入描述:

  對于每組數(shù)據(jù),第一行是兩個整數(shù)n(1≤n<100000)表示怪物的數(shù)量和a表示小易的初始能力值.
  第二行n個整數(shù),b1,b2...bn(1≤bi≤n)表示每個怪物的防御力

輸出描述:

  對于每組數(shù)據(jù),輸出一行.每行僅包含一個整數(shù),表示小易的最終能力值

輸入例子

  3 50
  50 105 200
  5 20
  30 20 15 40 100

輸出例子

  110
  205

代碼:
https://github.com/ToryangChen/ImitateTest/blob/master/src/Game.java

2、蘭博教訓(xùn)提莫之后,然后和提莫討論起約德爾人,談起約德爾人,自然少不了一個人,那 就是黑默丁格------約德爾人歷史上最偉大的科學(xué)家. 提莫說,黑默丁格最近在思考一個問題:黑默丁格有三個炮臺,炮臺能攻擊到距離它R的敵人 (兩點之間的距離為兩點連續(xù)的距離,例如(3,0),(0,4)之間的距離是5),如果一個炮臺能攻擊 到敵人,那么就會對敵人造成1×的傷害.黑默丁格將三個炮臺放在N*M方格中的點上,并且給出敵人 的坐標(biāo). 問:那么敵人受到傷害會是多大?

輸入描述:

  第一行9個整數(shù),R,x1,y1,x2,y2,x3,y3,x0,y0.R代表炮臺攻擊的最大距離,
  (x1,y1),(x2,y2),(x3,y3)代表三個炮臺的坐標(biāo).(x0,y0)代表敵人的坐標(biāo).

輸出描述:

  輸出一行,這一行代表敵人承受的最大傷害,(如果每個炮臺都不能攻擊到敵人,輸出0×)

輸入例子:

  1 1 1 2 2 3 3 1 2

輸出例子:

  2x

代碼:
https://github.com/ToryangChen/ImitateTest/blob/master/src/Attach.java

3、在NM的草地上,提莫種了K個蘑菇,蘑菇爆炸的威力極大,蘭博不想貿(mào)然去闖,而且蘑菇是隱形的.只 有一種叫做掃描透鏡的物品可以掃描出隱形的蘑菇,于是他回了一趟戰(zhàn)爭學(xué)院,買了2個掃描透鏡,一個 掃描透鏡可以掃描出(33)方格中所有的蘑菇,然后蘭博就可以清理掉一些隱形的蘑菇.問:蘭博最多可以清理多少個蘑菇?

輸入描述:

  第一行三個整數(shù):N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小;
  接下來K行,每行兩個整數(shù)x,y(1≤x≤N,1≤y≤M).代表(x,y)處提莫種了一個蘑菇.
  一個方格可以種無窮個蘑菇.

輸出描述:

  輸出一行,在這一行輸出一個整數(shù),代表蘭博最多可以清理多少個蘑菇.

代碼:
https://github.com/ToryangChen/ImitateTest/blob/master/src/Mushroom.java

下一篇:網(wǎng)易校招研發(fā)工程師模擬筆試題(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容