文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>部分c++ 面试题...

部分c++ 面试题...

时间:2010-08-06  来源:LCL_data

前提 : 是做开发好还是继续做外包里的sub lead好,我不知道,我只知道当我的程序运行起来时我非常有成就感!

共有4题,这里先说题目,给大家想一想:

1.const在函数声明时的作用

2.解释一下dynamic_cast

3.写单例模式的代码

4..字符串反转,例子"I am good",期望结果"good am I".

解析:

1。const在函数声明时的作用

这个题目说的很泛,可以在好几个地方,我问面试官你要问的是不是const在函数参数表与函数体之间时的作用,他确认后,我的理解:

不能修改参数对象的成员函数。

我的理解是对的。

2。解释一下dynamic_cast

可能是太紧张,脑袋想不出什么是dynamic_cast,但是还是记得类型转换。我就说了下我对类型转换的理解。

正确的理解应该是dynamic_cast被用来执行从基类指针到派生类指针的安全转换,常常被称为安全的向下转换。转换的类类型必须(基类)必须有虚函数,否则不能使用dynamic_cast。当我们必须使用派生类的特性,而该特性有没有出现在基类中时,常常使用dynamic_cast.包含的头文件是<type_info>

3.写单例模式的代码

我的理解:我记得是要定义一个私有的变量用来申请实例控制实例的个数,但是我的代码陷入了重复跳用:

class test

{

     private :

      test * single= null;

     public :

     test()

     {

       if(single ==null)

       {

         test t =new test();

         single =t;

       }

    }

}

我在构造函数里吗有跳用了构造函数,陷入了死循环。

正确的代码应该是,构造函数应该是私有的空的,用public的方法去实例化该类:

class CSingleton:
  {
  // 其它成员
  public:
 static CSingleton * GetInstance()
   {
    if (m_pInstance == NULL)
   m_pInstance = new CSingleton();
  return m_pInstance;
 }

  private:
   CSingleton(){};
   static CSingleton * m_pInstance;
  }

4。字符串反转,例子"I am good",期望结果"good am I".

题目其实很简单,我用了3种方法:

1。用了c#里面的string 里面的split .

2。格外开闭了和原数组大小+1的字符数组,直接扫描原数组来从后面开始填充新数组。我觉的细节不用说了

3。扫描一遍,利用2个标记来标明单词,是单词的话就放到vector<string>里面,后面再拼字符串

但是上面的后2种方法都格外申请了空间(貌似2中算法思想是一样的),不是最优的算法

1。先反转整个字符串,在反转单个单词

2。利用循环移位的思想,一次移位一个单词。

总结:

1。自己的c++理解还不够

2。思维还不够灵活,让我想单词反转我肯定能写出来,但是反转字符串的时候没想到用这个方法

3。设计模式我只是了解单例模式,但是写出来的代码却不敢恭维。不熟悉的知识在面试时就别说?

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载