百度 2021 開發工程師(深圳)面試題

小編:管理員 389閱讀 2021.06.17

第1題:


C++有哪些數據類型?為什么long和int都是4字節?



char、int、byte、short、long、long long、double、float

struct

對象類型

long、int占多少字節,得看計算機cpu是多少位的。16位機器上,int2字節,long4字節,32位機器上二者都是4字節,64位機器上,int4字節,long8字節

int是最基本的類型,一般要和cpu的自寬保持一致,保證效率。



第2題:


JAVA和C++的區別是什么?分別用在什么情景比較好?



Java 和 C++ 都是面向對象的語言,但他們也存在著一些區別

1、Java 不支持多繼承

2、Java 沒有指針和引用

3、c++ 需要程序員手動管理堆內存,Java有自動垃圾回收機制

Java運行在java虛擬機上,速度相對較慢,在實時性要求高的場合應該用c++

java通常在手機上應用的比較多。



第3題:


編程題:給定一個文件每一行是字符串,找出所有的逆序對,比如abc和cba是逆序的對。



#include"iostream"

#include"string"

#define MAX 100

using namespace std;

bool check(string str1,string str2)

{

    bool flag = true;

    for(int i=0; i<str1.length(); i++)

    {

        if(str1[i]!=str2[str1.length()-1-i])

        {

            flag = false;

            return flag;

        }

    }

    return flag;

}

int main(int argc, char* argv[])

{

    string str[MAX];

    int n,a[MAX];

    bool flag[MAX];

    cin>>n;

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

    {

        cin>>str[i];

        a[i] = str[i].length();

        flag[i] = true;

    }

    int num = 0;

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

    {

        int len = a[i];

        if(flag[i]==true)

        {

            for(int j=0;j<n;j++)

            {

                if(flag[j]==true&&len==a[j])

                {

                    if(check(str[i],str[j]))

                    {

                        num++;

                        flag[i] = false;

                        flag[j] = false;

                        break;

                    }

                }

            }

        }

    }

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

        cout<<str[i]<<'\t';

    cout<<endl;

    cout<<"The Number of Matched String Is: "<<num<<endl;

    getchar();

    getchar();

    return 0;

}



第4題:


給定一個奇數n,比如n=3,生成1到n平方的數,如1到9,填入九宮格,使得橫豎斜的和都相等。



先來個3*3

8    1    6    

3    5    7    

4    9    2    


n奇數幻方口訣:

1. 數字1放在第一行中間

2. 依次放在上一個數的右上角

2.1如果右邊出去了就回到左邊(3,4)

2.2 如果上面出去了就放下面(1,2)

2.3 如果右上角有了就放在這個數的下面(參考5,6)

5*5

17    24   1     8    15    

23    5    7     14   16    

4     6    13    20   22    

10    12   19    21   3    

11    18   25    2    9

   



第5題:


C和C++有什么區別,能用C實現C++所有功能嗎?C能實現多態嗎?


第6題:


邏輯題:25匹馬,5條賽道,一匹馬一個賽道,比賽只能得到5匹馬之間的快慢程度,而不是速度,求決勝1,2,3名至少多少場。



比賽7場就可以。

(1)先進行5場比賽定出每組最快的馬。

(2)每組最快的馬進行一場比賽,這樣就可以找到第一名。順便把這5匹馬中最后兩名淘汰,因為他們永遠不可能進入前3。

(3)分別用第一名所屬組的第2,3名馬和第2名所屬組的第1,2名馬和第3名組的第1名馬進行1場比賽,定出2,3名馬

至此比賽完畢



第7題:


請用c++ 實現stl中的string類,實現構造,拷貝構造,析構,賦值,比較,字符串相加,獲取長度及子串等功能。



#include <utility>

#include <string.h>

classString

{

public:

    String():data_(newchar[1])

    {

        *data_ = '\0';

    }

    String(const char * str):data_(newchar[strlen(str) + 1])

    {

        strcpy(data_, str);

    }

    String(const String & rhs)

        : data_(newchar[rhs.size() + 1])

    {

        strcpy(data_, rhs.c_str());

    }

    /* Delegate constructor in C++11

    String(const String& rhs):String(rhs.data_)

    {

    }

    */

    ~String()

    {

        delete[] data_;

    }

    /* Traditional:

    String& operator=(const String& rhs)

    {

        String tmp(rhs);

        swap(tmp);

        return *this;

    }

    */

    String &operator=(String rhs)// yes, pass-by-value

    {

        swap(rhs);

        return*this;

    }

    // C++ 11

    String(String &&rhs): data_(rhs.data_)

    {

        rhs.data_ = nullptr;

    }

    String &operator=(String && rhs)

    {

        swap(rhs);

        return*this;

    }

    // Accessors

    size_t size() const

    {

        return strlen(data_);

    }

    const char * c_str() const

    {

        return data_;

    }

    void swap(String & rhs)

    {

        std::swap(data_, rhs.data_);

    }

private:

    char *data_;

};


第8題:

1.進程和線程的區別

2.存儲過程,及優點

3.static關鍵字,static全局變量與普通全局變量的區別,static局部變量與普通變量的區別,static函數與普通函數的區別

 


第9題:

1、實現memcpy函數

2、劍指offer面試題3(劍指offer面試題3:二維數組中的查找)

3、劍指offer面試題21(劍指offer面試題21:包含min函數的棧)

 

第10題:

系統設計題

微博中的url往往很長,發送前要轉化為tinyurl

1、url如何轉為tinyurl編碼

2、如果用戶輸入一個已經轉換過的URL,如何快速定位到已經生成了的tinyurl

3、如果數據為10億條,需要10個tinyurl服務器,怎么設計?


   



關聯標簽: