百度 2015 研发工程师(深圳)
技术研发
本套题共7题,并含有参考答案
题目详情
第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_;

};


   



共有 7 道题目