好未來2017秋招筆試真題


好未來2017秋招筆試真題

1.一個C語言程序在一台32位機器上運行。程序中定義了三個變量xyz,其中x和z是int型,y為short型。當x=127,y=-9時,執行賦值語句z=x+y后,xyz的值分別是

A:X=0000007FH,y=FFF9H,z=00000076H

B:X=0000007FH,y=FFF9H,z=FFFF0076H

C:X=0000007FH,y=FFF7H,z=FFFF0076H

D:X=0000007FH,y=FFF7H,z=00000076H

正確答案: D

X = 127  (int 占 4字節 32位) 換算16進制 就是 0000007FH

Z = 127 - 9 = 118同上 , 16 進制 是  00000076H

Y = -9 二進制用補碼表示

原碼:1000 0000 0000 1001

反碼:1111 1111 1111 0110

補碼:反碼+1

 1111 1111 1111 0111     -->   F F F 7

2. 關於進程狀態的說法,下列錯誤的是

A:處於就緒狀態的進程,當進程調度程序為之分配了處理機后,該進程便由就緒狀態變為執行狀態

B:當前進程因發生某事件而無法執行,如訪問已被占用的臨界資源,就會使進程由執行狀態轉變為阻塞狀態

C:當前進程因時間片用完而被暫停執行,該進程便由執行狀態轉變為阻塞狀態

D:處於掛起狀態的進程不能接收處理機調度

正確答案: C 

A,對。處於就緒狀態的進程,當進程調度程序為之分配了處理機后,該進程便由就緒狀態變為執行狀態;B,對。當前進程因發生某事件而無法執行,如訪問已被占用的臨界資源,就會使進程由執行狀態轉變為阻塞狀態;C,錯。當前進程因時間片用完而被暫停執行,該進程便由執行狀態轉變為就緒狀態;D,對。處於掛起狀態的進程不能接收處理機調度

3. 同一進程下的線程不可以共享的是

A:stack

B:data section

C:code section

D:file fd

正確答案: A  

4. 在OSI 7 層模型中,網絡層的功能有

A:確保數據的傳送正確無誤

B:確定數據包如何轉發與路由

C:在信道上傳送比特流

D:糾錯與流控

正確答案: B  

A 數據鏈路層 ;B 網絡層 ;C 物理層 ;D 數據鏈路層

5.應用程序PING 發出的是_______報文

A:TCP 請求報文

B:TCP 應答報文

C:ICMP 請求報文

D:ICMP 應答報文

正確答案: C 

ICMP (Internet Control Message Protocol) Internet控制報文協議, 用於在IP主機、路由器 之間傳遞控制消息。控制消息是指網絡 不通、主機 是否可達、路由 是否可用等網絡本身的消息。

6. 使用traceroute命令測試網絡時可以

A:檢驗鏈路協議是否運行正常

B:檢驗目標網絡是否在路由表中

C:檢驗應用程序是否正常

D:顯示分組到達目標路徑上經過的各路由器

正確答案: D  

UNIX命令traceroute可以顯示分組到達目標所經過的各個路由器的IP地址和到達目標的時間,通過traceroute可以知道從你的計算機到互聯網另一端的主機走的什么路徑。在MS Windows中對應的命令為tracert。

7. 主機甲向主機乙連續發送了兩個TCP報文段,其序號分別為70和100。下列錯誤的是

A:第一個報文段攜帶了30個字節的數據

B:主機乙收到第一個報文段后發回的確認中的確認號是100

C:如果主機乙收到第二個報文段后發回的確認中的確認號是180,那么甲發送的第二個報文段中的數據有80字節

D:如果甲發送的第一個報文段丟失了,但第二個報文段到達了乙,乙在第二個報文段到達后向甲發送確認,這個確認號為100

正確答案: D  

D選項:如果甲發送的第一個報文段丟失了,但第二個報文段到達了乙,乙在第二個報文段到達后向甲發送確認,這個確認號為70

8. 在單鏈表中刪除指針p所指結點的后繼結點,則執行________操作

A:p->next=p->next->next

B:p->next=p->next

C:p=p->next->next

D:p=p->next;p->next=p->next->next

正確答案: A  

選擇A p->next=p->next->next 下下個節點把下個節點給截斷了

9.表達式(a-b)*(c+5)的后綴式是

A:a b c 5 + * -

B:a b – c + 5 *

C:a b c - * 5 +

D:a b- c 5 + *

正確答案: D  

首先要了解什么是后綴式,后綴式是一種指把運算符號寫在運算數后面的表達式。最大的特點是省去了括號。

例如:a+b的后綴式為ab+;

后綴式的解法:

1.從左到右找到第一個運算符

2.使用該運算符計算其前面緊挨的兩個數值並作為一個新的運算數

3.依次尋找下一個運算符並計算其前兩“個”運算數

直接應用對表達式進行計算。

10. 以下說法正確的有?

A:7月有30天

B:8月有30天

C:2014年2月有28天

D:2月有28天

正確答案: C D   你的答案: C (錯誤)

我覺得這個題目應該選A、B、C、D。7月有30天,因為7月一共有31天,所以自然是有30天的,就好比七月是有這個能力有30天的。如果按照這種思路,那么我認為四個選項都對。如果AB不對,那D也就不對了,所以個人覺得要么選ABCD,要么選C

11. [編程題]字符串中找出連續最長的數字串

讀入一個字符串str,輸出字符串str中的連續最長的數字串

輸入描述:

個測試輸入包含1個測試用例,一個字符串str,長度不超過255。

輸出描述:

在一行內輸出str中里連續最長的數字串。

輸入例子:

abcd12345ed125ss123456789

輸出例子:

123456789

#include<iostream>
#include<string.h>
using namespace std;
 
int main()
{
    int i=0, j;
    int num1=0, num2=0;
    int index1=0, index2=0;
    char str[255];
    char flag=0;
    scanf("%s", str);
    while(str[i] != '\0')
    {
        num2=0;
        while(str[i]>='0' && str[i]<='9')
        {
            num2++;
            index2 = i;
            i++;
        }
        if(num2>num1)
        {
            num1 = num2;
            index1 = index2;
        }
        i++;
    }
    for(j=index1-num1+1; j<=index1; j++)
        cout << str[j];
    cout << endl;
    return 0;
}

 

12. [編程題]n個數里最小的k個

讀入一個字符串str,輸出字符串str中的連續最長的數字串

輸入描述:

每個測試輸入包含空格分割的n+1個整數,最后一個整數為k值,n

不超過100。

輸出描述:

輸出n個整數里最小的k個數。升序輸出

輸入例子:

3 9 6 8 -10 7 -11 19 30 12 23 5

輸出例子:

-11 -10 3 6 7

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
 
int main()
{
    int a[100] = {0};
    int num=0;
    vector<int> b;
    while (scanf("%d",&a[num]) != EOF && getchar() != '\n')//錄入帶空格的數字流。
        num++;
    int n = num+1;
    int k = a[num];
    for(int i=0;i<n-2;i++)
        b.push_back(a[i]);
 
    sort(b.begin(),b.end());
     
    for(int i=0; i<k-1; i++)
    {
        cout << b[i] << ' ';
    }
    cout<<b[k-1]<<endl;
    return 0;
}

 

13. [編程題]n個數里出現次數大於等於n/2的數

輸入n個整數,輸出出現次數大於等於數組長度一半的數。

輸入描述:

每個測試輸入包含 n個空格分割的n個整數,n不超過100,其中有一個整數出現次數大於等於n/2。

輸出描述:

輸出出現次數大於等於n/2的數。

輸入例子:

3 9 3 2 5 6 7 3 2 3 3 3

輸出例子:

3

#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int main()
{
    char str[202];
    int a[101];//存儲數字,這里可以進行動態開辟數組
    gets(str);
    int len = strlen(str);
    int i,j=0;
    for(i=len-1;i>=0;) {
        int sum=0;
        int ling = -1;//判斷個、十、百...位
        int flag = 0;
        while(str[i]!=' ' && i>=0){
            if(str[i]!='-') {
                ling++;
                sum+=(str[i]-48)*pow(10,ling);
            }
            else{
                flag = 1;
            }
            i--;
        }
        if(flag)
            a[j] = sum*(-1);
        else
            a[j] = sum;
        j++;
        i--;
    }
    for(i=0;i<j;i++)
    {
        int account= 1;
        int number;
        for(int k=i+1;k<j;k++)
        {
            if(a[i]==a[k])
            {
                account++;
                number = a[k];
            }
        }
        if(account>=j/2){
            cout<<number;
            break;
        }
    }
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM