zoukankan      html  css  js  c++  java
  • 面试宝典 问题记录

    快要毕业了为找工作做准备,最近在复习语言基础,看了面试宝典,现将自己认为重点的记录下来,方便以后更好的复习。

    一,C++/C 基础

    1. 类的大小,注意虚函数表,虚继承的话类大小与普通继承不同

    (1)没有任何内容的类的大小是1。

    (2)非虚函数在类中不占大小。

    (3)包含有虚函数的类有一个虚表指针,指向的地址储存着虚函数的地址。

    (4)类继承了几个包含虚函数的类,就有几个虚表指针。

    (5)类虚继承其他类class a:virtual class b,包含两个虚表指针,一个是基类的,一个是自己的。

    2. 指针数组,数组指针,比如int *a[10],int (*a)[10]

      前者[10]是修饰的a的,而a是指针,所以表示10个整形指针。后者[10]是*a,*a是整形,所以表示1-个整形,a是指向整形数组首地址的指针。

    3. 智能指针,放入stl容器里的问题,下面哪个正确


    auto_ptr是用来使类自动析构的,没有定义拷贝构造函数,不能放到stl容器里。A,E正确。

    4. 概率分布问题,求出下面显示


    随机数落地概率的问题,x和y取到的数在0~RAND_MAX之间,x*x+y*y是点到原点的距离的平方,也就是距离<RAND_MAX。点的距离等于RAND_MAX是圆,

    点落在圆里就能满足条件,就是说第一区间里,圆的面积与正方形的面积比,就是满足条件的概率,1/4 * 3.14 * RAND_MAX*RAND_MAX / RAND_MAX*RAND_MAX=0.78

    5. vector拷贝的问题,找出下面的问题


    6. 类成员变量初始化顺序,输出下面的显示结果


    在base(int i):m_j(i),m_i(m_j){},先初始化先声明的变量即m_i,这样m_i初始化为一个随机数,m_j初始化为98


    7. 多继承,向上指针转换的地址问题,求下面的输出


    class c在内存里的分配包括class a和class b,pc指向class c的地址,pb指向class c中class b的地址,由于class a的大小是4,pb=pc+4。

    if(pc==pb),由于pc和pb的类型不同,会发生隐式转换,pb会转换为pc,也即if(pc==(c*)pb),结果是相等的。if(int(pc)==int(pb)),由于指针指向的不同,所以结果是不相等。

    8. static_cast dynamic_cast,const_cast,reinterpre_cast的不同,下面哪个正确


    dynamic_cast<int><p> 用来类继承树中的转换,这里char* 和 int并没有继承关系,将返回NULL。会进行运行时类型检查。

    static_cast<int>(p) 用来进行非强制转换,不能将指针强行转换成int等。会进行编译时类型检查。

    const_cast<int>(p)用来去除const属性。

    reinterpret_cast<int>(p)用来进行位拷贝转换,比如将int转换为float,只是拷贝两个数的位,转换后两个数大小是没关系的。

    选D。

    9.类空指针的问题,下面哪句话运行有问题

    class classa{
    	public:
            char a[3];
            virtual void func(){
                 cout<<"1"<<endl;
            }
            void func2(){
                 cout<<"2"<<endl;
            }
    };
    classa classa1=NULL;
    classa1->func();
    classa1->func2();

    上面可以正常的运行,因为普通的类函数就是函数,只是多了一个this参数,当函数体内不需要访问类中的变量的时候就不会用到this指针,也就不会出现问题。

    当修改函数func(){a[0]=1},就会在classa->func()崩溃。


  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3325075.html
Copyright © 2011-2022 走看看