百度 2021 开发工程师(深圳)面试题

小编:管理员 1076阅读 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

    {

        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

    {

        cin>>str[i];

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

        flag[i] = true;

    }

    int num = 0;

    for(int i=0; i

    {

        int len = a[i];

        if(flag[i]==true)

        {

            for(int j=0;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

        cout<

    cout<

    cout<<"The Number of Matched String Is: "<

    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

#include

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服务器,怎么设计?


   



关联标签: