騰訊一面

4月2號騰訊實習招聘機試,抱着做練習題的態度做了一下,結果10天后通知我去面試,如下爲面試官問的問題,最後一題編程題,附上答案。
1. 自我介紹
2. TCP/IP三次握手,具體要發哪些包
3. 局域網內通過什麼來區分不同的計算機 , mac or IP ,爲什麼?
4. 如圖所示
A -> R-A ———- R-B -> B
A、B爲計算機 R-A、R-B爲路由器
A要往B發包,發給R-A的Dst-mac和Dst-IP 分別是什麼?
5. 使用過Linux的哪些命令?
6. Linux 查看內存用什麼命令?
7. Linux 的vim編輯器中如何查找一個單詞?
8. C++中new和malloc用法,有何不同?
9. 如下程序
Void X(char* a)
{
*a=’B’;
Print(a[0]); 1
}
Main()
{
Char a[10];
a[0]=’A’;
Print(a[0]); 2
X(a);
}
1)問1和2處 print的結果分別是什麼?
2)如果1和2處分別將a[0]替換爲&a,請問兩次輸出的結果是否一樣,爲什麼?
10. 如下程序,兩次輸出結果是否一致,爲什麼?
Void X(char* a)
{
Print(&a); 1
}
Main()
{
Char a[10];
Char* b=a;
Print(&b); 2
}
11. c++頭文件爲什麼要包含#ifndef #define #endif?
12. 編程實現將一句話(英文)的每個單詞的字母倒序輸出,比如:輸入“Hello world.”,輸出”olleH, dlrow.”,不允許使用C++類庫(string)。

#include<iostream>
using namespace std;
void switch1 (char *p,int n )
{
    int i = 0,m;
    while (i < n)
    {
        while ((p[i]<65 || (p[i]>90 && p[i]<97) || p[i]>122)&&i<n)//if p[i] is not a letter, i+1
        {
            cout << p[i];
            i++;
        }
        if (i >= n)
            break;
        while ((p[i] >= 65 && p[i] <= 90) || (p[i] >= 97 && p[i] <= 122))//if p[i] is a letter ,i+1
        {
            i++;
        }
        m = i--;// remember the sequence of the the first element, which is not a letter
        while ((p[i] >= 65 && p[i] <= 90) || (p[i] >= 97 && p[i] <= 122) && i >= 0)//if p[i] is a letter, output p[i],i-1 
        {
            cout << p[i];
            i--;
        }
        i = m;
    }
}

int main( )
{
    char *a = new char;
    int length;
    gets(a);
    length = strlen(a);
    cout << length << endl;
    switch1(a, length);
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章