腾讯笔试题精选二

这些题目来自国嵌嵌入式培训视频《语言的艺术-笔试专题班》,特地整理下以便学习,如有错误欢迎指正

1. 考虑函数原型 void hello(int a, int b=7, char* pszC="*"),下面的函数调用中属于不合法
调用的是 (C)
A. hello(5)
B. hello(5, 8)
C. hello(6, "#")
D. hello(0, 0, "#")

解析:本题考查C++的默认参数

必须通过函数原型设置默认值,函数参数必须从右向左添加默认值,实参从左向右依次赋值给形参

注意:正常使用时“#”最好传给const char*

2. 一个有 800 个结点的完全二叉树,问有多少个叶子结点? (C )
A. 100
B. 200
C. 400
D. 无法确定
3. 若 6 元素为 A、B、C、D、E、F 出栈顺序为 B、D、C、F、E、A,则栈的最小容量为 ( A )
A. 3
B. 4
C. 5
D. 6
4. 排序算法的稳定是指,关键码相同的记录排序前后相对位置不发生改变,下面哪种排序
算法是不稳定的 ( C )
A. 插入排序
B. 冒泡排序
C. 快速排序
D. 归并排序
5. 如下关于进程的描述不正确的是 ( D )
A. 进程在退出时会自动关闭自己打开的所有文件
B. 进程在退出时会自动关闭自己打开的网络链接
C. 进程在退出时会自动销毁自己创建的所有线程
D. 进程在退出时会自动销毁自己打开的共享内存
6. 在一个 cpp 文件里面,定义了一个 static 类型的全局变量,下面一个正确的描述是 ( A )
A. 只能在该 cpp 所在的编译模块中使用该变量
B. 该变量的值是不可改变的
C. 该变量不能在类的成员函数中引用
D. 该变量只能是基本类型(如 int, char)不能是 C++类型
静态类只用于包含静态成员的类型,不能实例化,它的特性是防止继承

7. 下面有关重载函数的说法中正确的是 ( C )
A. 重载函数必须具有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
重载的条件:函数参数不同或参数类型不同

8. 某火车站要通过一条栈道(先进后出)来调换进入车站的列车顺序,若进站的列车顺序为
A、B、C,则下列哪个出站顺序不可能? ( C )
A. ABC
B. ACB
C. CAB
D. CBA

9. 下面哪种情况下,B 不能隐式转换为 A ? ( B )
A. class B:public A{ };
B. class A:public B{ };
C. class B{ operator A(); };
D. class A{ A(const B&); };
父类不能隐式转化为子类

c++中的operator 有两种用法,运算符重载和操作隐式转换

选项D为拷贝构造函数

10. 分析下面程序的运行结果: ( C )
#include<iostream.h>
class CBase
{
public:
CBase(){ cout<<"constructing CBase class"<<endl; }
~CBase(){ cout<<"destructing CBase class"<<endl; }
};
class CSub : public CBase
{
public:
CSub(){cout<<"constructing CSub class"<<endl;}
~CSub(){cout<<"destructing CSub class"<<endl;}
};
void main()
{
CSub obj;
}
A. constructing CSub class
constructing CBase class
destructing CSub class
destructing CBase class
B. constructing CBase class
constructing CSub class
destructing CBase class
destructing CSub class
C. constructing CBase class
constructing CSub class
destructing CSub class
destructing CBase class
D. constructing CSub class
constructing CBase class
destructing CBase class
destructing CSub class
先调用父类构造方法,再调用自己构造方法

析构时先调用自己再调用父类

11. 两个字符串 char* a, char* b,输出 b 在 a 中的位置次序。
void output_postion(const char* a, const char* b);
如:a = "abdbcc" b = "abc"
b 在 a 中的位置次序为
014
015
034
035
递归回朔
#include <cstdlib>
#include <iostream>
#include <string>
#include <list>

using namespace std;

void abstring(string& a, int ai, string& b, int bi, list<int>& l)
{
    if( bi == b.length() )
    {
        for(list<int>::iterator it=l.begin(); it!=l.end(); it++)
        {
            cout<<*it;
        }
        
        cout<<endl;
    }
    else
    {
        for(int i=ai; i<a.length(); i++)
        {
            if( a[i] == b[bi] )
            {
                l.push_back(i);
                
                abstring(a, i + 1, b, bi + 1, l);
                
                l.pop_back();
            }
        }
    }
}

void output_postion(const char* a, const char* b)
{
    string as = a;
    string bs = b;
    list<int> l;
    
    abstring(as, 0, bs, 0, l);
}

int main(int argc, char *argv[])
{
    output_postion("abdbcc", "abc");
    
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值