一些C++ 面试的题目

1  #i nclude “filename.h”和#i nclude <filename.h>的区别?

#i nclude “filename.h”表明该文件是用户提供的头文件,查找该文件时从当前文件目录开始;#i nclude <filename.h>表明这个文件是一个工程或标准头文件,查找过程会检查预定义的目录。

2  头文件的作用是什么?

答:一、通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。
二、头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

3  C++函数中值的传递方式有哪几种?

答:C++函数的三种传递方式为:值传递、指针传递和引用传递。

4  内存的分配方式的分配方式有几种?

答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。
二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。

5  实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;

答:双向链表删除一个节点P
template<class type> void list<type>::delnode(int p)
{
 int k=1;
 listnode<type> *ptr,*t;
 ptr=first;

 while(ptr->next!=NULL&&k!=p)
 {
  ptr=ptr->next;
     k++;
 }
    t=ptr->next;
 cout<<"你已经将数据项 "<<t->data<<"删除"<<endl;
 
 ptr->next=ptr->next->next;
 length--;
 delete t;
}

在节点P后插入一个节点:
template<class type> bool list<type>::insert(type t,int p)
{
 listnode<type> *ptr;
 ptr=first;

 int k=1;
 while(ptr!=NULL&&k<p)
 {
  ptr=ptr->next;
  k++;
 }
 if(ptr==NULL&&k!=p)
  return false;
 else
 {
   listnode<type> *tp;
   tp=new listnode<type>;
   tp->data=t;
   tp->next=ptr->next;
   ptr->next=tp;
   length++;
  
   return true;
 }
}
 
6  写一个函数,将其中的/t都转换成4个空格。

类似这样子

#include<iostream.h>
int main(int argc,char **argv)
{
 char t1[]="fdsfdsfd/tfsd";
 char *temp=t1,*t=t1;
 int i=0;
 while(*t!='/0')
 {
  if(*t=='/t')
  {
      *t=' ';
   //*t=' ';

  }
  t++;
 }
 cout<<temp<<endl;
 return 0;
}

7  Windows程序的入口是哪里?写出Windows消息机制的流程.

winMain()函数

8  如何定义和实现一个类的成员函数为回调函数?

http://hi.baidu.com/xiaoconghome/blog/item/bb91dd0f5f5375eeab64578e.html

#include<iostream.h>

class A
{
public:
 static void callBack(int(*p)(int a)){ cout<<p(12)<<endl;};
};

void caller(int(*ptr)(int a))
{
cout<<ptr(12)<<endl; /* 调用ptr指向的函数 */
}
int  func(int a)
{
 cout<<a<<endl;
 return a+1;
}
//int (*p) (int a); //p是指向某函数的指针

int main()
{

//p = func;
A::callBack(func);
//caller(p); /* 传递函数地址到调用者 */
return 0;
}

9  C++里面是不是所有的动作都是main()引起的?如果不是,请举例.

不是,比如全局变量的初始化。

10 C++里面如何声明const void f(void)函数为C程序中的库函数?

void   f(void)用c++   compiler来编译,在产生的obj文件中的名字变成了  
   
  $f@@@_@0  
   
  void   f(voi)用c   compiler编译,obj中变成了  
   
  _f  
   
  如果是extern   "C"   void   f(void),仍然用c++编译器编译,变成  
   
  _f  
   
  所以extern   "C"是强迫c++编译器对函数名进行修饰的时候采用c命名约定。  
   
  这样,在c++写的程序中就可以使用已经用c编译器编译好的obj或者lib了。

11 下列哪两个是等同的

int b;

A const int* a = &b;

B const* int a = &b;

C const int* const a = &b;

D int const* const a = &b;

 应该是CD

12 内联函数在编译时是否做参数类型检查

内联函数要做参数类型检查,   这是内联函数跟宏相比的 优势


13 三个float:a,b,c
问值
(a+b)+c==(b+a)+c
(a+b)+c==(a+c)+b
14 把一个链表反向填空

15 设计一个重采样系统,说明如何anti-alias

16 某个程序在一个嵌入式系统(200M的CPU,50M的SDRAM)中已经最化了,换到另一个系统(300M的CPU,50M的SDRAM)中运行,还需要优化吗?

17. 下面哪种排序法对12354最快
a quick sort
b.buble sort
c.merge sort

18. 哪种结构,平均来讲,获取一个值最快
a. binary tree
b. hash table
c. stack


19 请问C++的类和C里面的struct有什么区别?

struct成员默认访问权限为public,而class成员默认访问权限为private

20 请讲一讲析构函数和虚函数的用法和作用?

析构函数是在对象生存期结束时自动调用的函数,用来释放在构造函数分配的内存。
虚函数是指被关键字virtual说明的函数,作用是使用C++语言的多态特性

21 全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?

1) 全局变量的作用用这个程序块,而局部变量作用于当前函数
2) 前者在内存中分配在全局数据区,后者分配在栈区
3) 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在
4) 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用
4.     有N个大小不等的自然数(1--N),请将它们由小到大排序.要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
void sort(int e[], int n)
{
int i;
int t; /* 临时变量:空间复杂度O(1)*/
for (i=1; i<n+1; i++) /* 时间复杂度O(n)*/
{
  t = e[e[i]]; /*下标为e[i]的元素,排序后其值就是e[i]*/
  e[e[i]] = e[i];
  e[i] = t;
}
}
5.     堆与栈的去区别
A. 申请方式不同
Stack由系统自动分配,而heap需要程序员自己申请,并指明大小。
B. 申请后系统的响应不同
Stack:只要栈的剩余空间大于申请空间,系统就为程序提供内存,否则将抛出栈溢出异常
Heap:当系统收到程序申请时,先遍历操作系统中记录空闲内存地址的链表,寻找第一个大于所申请空间的堆结点,然后将该结点从空间结点链表中删除,并将该结点的空间分配给程序。另外,大多数系统还会在这块内存空间中的首地址处记录本次分配的大小,以便于delete语句正确释放空间。而且,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动将多余的那部分重新放入空闲链表。
C. 申请大小限制的不同
Stack:在windows下,栈的大小是2M(也可能是1M它是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
D. 申请效率的比较:
栈由系统自动分配,速度较快。但程序员是无法控制的。
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。
另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是在栈是直接在进程的地址空间中保留一快内存,虽然用起来最不方便。但是速度快,也最灵活。
E. 堆和栈中的存储内容
栈:在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。
当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。
堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。
6.     含参数的宏与函数的优缺点
宏:
优点:在预处理阶段完成,不占用编译时间,同时,省去了函数调用的开销,运行效率高
缺点:不进行类型检查,多次宏替换会导致代码体积变大,而且由于宏本质上是字符串替换,故可能会由于一些参数的副作用导致得出错误的结果。
函数:
优点:没有带参数宏可能导致的副作用,进行类型检查,计算的正确性更有保证。
缺点:函数调用需要参数、返回地址等的入栈、出栈开销,效率没有带参数宏高
PS:宏与内联函数的区别
内联函数和宏都是在程序出现的地方展开,内联函数不是通过函数调用实现的,是在调用该函数的程序处将它展开(在编译期间完成的);宏同样是;   
不同的是:内联函数可以在编译期间完成诸如类型检测,语句是否正确等编译功能;宏就不具有这样的功能,而且宏展开的时间和内联函数也是不同的(在运行期间展开)
7.     Windows程序的入口是哪里?写出Windows消息机制的流程
Windows程序的入口是WinMain()函数。
               
Windows应用程序消息处理机制:
A. 操作系统接收应用程序的窗口消息,将消息投递到该应用程序的消息队列中
B. 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。
C. 应用程序调用DispatchMessage,将消息回传给操作系统。
D. 系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理。
8.     如何定义和实现一个类的成员函数为回调函数
A.     什么是回调函数?
简而言之,回调函数就是被调用者回头调用调用者的函数
使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个被调用函数。而该被调用函数在需要的时候,利用传递的地址调用回调函数。
回调函数,就是由你自己写的,你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。
B.      如何定义和实现一个类的成员函数为回调函数
要定义和实现一个类的成员函数为回调函数需要做三件事:
a.   声明;
b.   定义;
c.    设置触发条件,就是在你的函数中把你的回调函数名作为一个参数,以便系统调用
如:
一、声明回调函数类型
typedef void (*FunPtr)(void);
二、定义回调函数
class A  
{
public:
       A();
       static void callBackFun(void)   //回调函数,必须声明为static
       {
              cout<<"callBackFun"<<endl;
       }
       virtual ~A();
};
三、设置触发条件
void Funtype(FunPtr p)
{
       p();
}
void main(void)
{
       Funtype(A::callBackFun);
}
C.     回调函数与API函数
回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反,他是高层提供给底层的调用,对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的API,安装后低层不知道这个回调的名字,但它通过一个函数指针来保存这个回调函数,在需要调用时,只需引用这个函数指针和相关的参数指针。
其实:回调就是该函数写在高层,低层通过一个函数指针保存这个函数,在某个事件的触发下,低层通过该函数指针调用高层那个函数

22 一些寄存器的题目,主要是寻址和内存管理等一些知识。

23 8086是多少尉的系统?在数据总线上是怎么实现的?

24 多态。overload 和 override的区别。


<<Sony笔试题>>
25.完成下列程序

*

*.*.

*..*..*..

*...*...*...*...

*....*....*....*....*....

*.....*.....*.....*.....*.....*.....

*......*......*......*......*......*......*......

*.......*.......*.......*.......*.......*.......*.......*.......

#i nclude <stdio.h>

#define N 8

int main()

{

   int i;

   int j;

   int k;

   ---------------------------------------------------------

   |                                     |

   |                                     |

   |                                     |

   ---------------------------------------------------------

   return 0;

}

26 完成程序,实现对数组的降序排序

#i nclude <stdio.h>

 

void sort(              );

 

int main()

{

   int array[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出

   sort(                 );

   return 0;

}

 

void sort(                  )

{

  ____________________________________

  |                                   |

  |                                   |

  |-----------------------------------------------------|

}

27 费波那其数列,1,1,2,3,5……编写程序求第十项。可以用递归,也可以用其他方法,但要说明你选择的理由。

#i nclude <stdio.h>

int Pheponatch(int);

 

int main()

{

   printf("The 10th is %d",Pheponatch(10));

   return 0;

}

 

int Pheponatch(int N)

{

--------------------------------

|                     |

|                     |

--------------------------------

}

28 下列程序运行时会崩溃,请找出错误并改正,并且说明原因。

#i nclude <stdio.h>

#i nclude <malloc.h>

 

typedef struct{

   TNode* left;

   TNode* right;

   int value;

} TNode;

 

TNode* root=NULL;

 

void append(int N);

 

int main()

{

   append(63);

   append(45);

   append(32);

   append(77);

   append(96);

   append(21);

   append(17); // Again, 数字任意给出

}

 

void append(int N)

{

 TNode* NewNode=(TNode *)malloc(sizeof(TNode));

 NewNode->value=N;

 

 if(root==NULL)

 {

   root=NewNode;

   return;

 }

 else

 {

   TNode* temp;

   temp=root;

   while((N>=temp.value && temp.left!=NULL) || (N<temp. value && temp. right!=NULL

))

   {

      while(N>=temp.value && temp.left!=NULL)

                 temp=temp.left;

      while(N<temp.value && temp.right!=NULL)

                 temp=temp.right;

   }

   if(N>=temp.value)

          temp.left=NewNode;

   else

          temp.right=NewNode;

   return;       

 }

}


29. A class B network on the internet has a subnet mask of 255.255.240.0, what is the maximum number of hosts per subnet       .

a. 240                  b. 255                  c. 4094                d. 65534

30. What is the difference: between o(log n) and o(log n^2), where both logarithems have base 2       .

a. o(log n^2) is bigger                  b. o(log n) is bigger

c. no difference
31. For a class what would happen if we call a class’s constructor from with the same class’s constructor       .

a. compilation error             b. linking error

c. stack overflow                          d. none of the above

32. “new” in c++ is a:       .

a. library function like malloc in c

b. key word                                    c. operator

d. none of the above

33. Which of the following information is not contained in an inode       .

a. file owner                                   b. file size

c. file name                                     d. disk address

34. What’s the number of comparisons in the worst case to merge two sorted lists containing n elements each       .

a. 2n           b.2n-1                 c.2n+1                d.2n-2

35. Time complexity of n algorithm T(n), where n is the input size ,is T(n)=T(n-1)+1/n if n>1 otherwise 1 the order of this algorithm is       .

a. log (n)   b. n                     c. n^2                  d. n^n

36. The number of 1’s in the binary representation of 3*4096+ 15*256+5*16+3 are       .

a. 8                      b. 9                      c. 10           d. 12


37.设计函数 int atoi(char *s)。

38.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?

39.解释局部变量、全局变量和静态变量的含义。

40.解释堆和栈的区别。

41.论述含参数的宏与函数的优缺点。


42. 以下三条输出语句分别输出什么?[C易]
char str1[]       = "abc";
char str2[]       = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5  = "abc";
const char* str6  = "abc";
cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?
cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?
cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?

43. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等]
答:
a. class B : public A { ……} // B公有继承自A,可以是间接继承的
b. class B { operator A( ); } // B实现了隐式转化为A的转化
c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数
d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个

44. 以下代码中的两个sizeof用法有问题吗?[C易]
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
    for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
        if( 'a'<=str[i] && str[i]<='z' )
            str[i] -= ('a'-'A' );
}
char str[] = "aBcDe";
cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;

45. 以下代码有什么问题?[C难]
void char2Hex( char c ) // 将字符以16进制表示
{
    char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);
    char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);
    cout << ch << cl << ' ';
}
char str[] = "I love 中国";
for( size_t i=0; i<strlen(str); ++i )
    char2Hex( str[i] );
cout << endl;

46. 以下代码有什么问题?[C++易]
struct Test
{
    Test( int ) {}
    Test() {}
    void fun() {}
};
void main( void )
{
    Test a(1);
    a.fun();
    Test b();
    b.fun();
}

47. 以下代码有什么问题?[C++易]
cout << (true?1:"1") << endl;

8. 以下代码能够编译通过吗,为什么?[C++易]
unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[ size2 ];

48. 以下代码中的输出语句输出0吗,为什么?[C++易]
struct CLS
{
    int m_i;
    CLS( int i ) : m_i(i) {}
    CLS()
    {
        CLS(0);
    }
};
CLS obj;
cout << obj.m_i << endl;

49. C++中的空类,默认产生哪些类成员函数?[C++易]
答:
class Empty
{
public:
    Empty();                          // 缺省构造函数
    Empty( const Empty& );            // 拷贝构造函数
    ~Empty();                         // 析构函数
    Empty& operator=( const Empty& ); // 赋值运算符
    Empty* operator&();               // 取址运算符
    const Empty* operator&() const;   // 取址运算符 const
};

50. 以下两条输出语句分别输出什么?[C++难]
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么?

51. 以下反向遍历array数组的方法有什么错误?[STL易]
vector array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 3 );
for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍历array数组
{
    cout << array[i] << endl;
}

52. 以下代码有什么问题?[STL易]
typedef vector IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
// 删除array数组中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
    if( 2 == *itor ) array.erase( itor );
}

53. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面]
答:
void* mymemcpy( void *dest, const void *src, size_t count )
{
    char* pdest = static_cast<char*>( dest );
    const char* psrc = static_cast<const char*>( src );
    if( pdest>psrc && pdest<psrc+cout ) 能考虑到这种情况就行了
    {
        for( size_t i=count-1; i!=-1; --i )
                pdest[i] = psrc[i];
    }
    else
    {
        for( size_t i=0; i<count; ++i )
            pdest[i] = psrc[i];
    }
    return dest;
}
int main( void )
{
    char str[] = "0123456789";
    mymemcpy( str+1, str+0, 9 );
    cout << str << endl;

    system( "Pause" );
    return 0;
}


54 线程与进程的区别

55:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?

56:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?

57:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?

58:请问C++的类和C里面的struct有什么区别?

59:请讲一讲析构函数和虚函数的用法和作用?

60:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?

61:一些寄存器的题目,主要是寻址和内存管理等一些知识。

62:8086是多少位的系统?在数据总线上是怎么实现的?

<<IBM>>
63.怎样用最快的方法判断链表是否有环?

64.c++中引用和指针有什么不同?指针加上什么限制等于引用?

65.做的项目,遇到的困难,怎样解决?

66.在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个开关控制那一盏灯.

67.有两根不均匀分布的香,每根香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间.

68.一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时经理说只有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄.请问三个女儿的年龄分别是多少?为什么?

69.操作符重载
class CMyObject:pulic CObject
{
Public:
CMyObject();
CMyObject &operator=(const CMyObject &my);
private:
CString strName;
int nId:
};
请重载赋值操作符


70.链表
Struct structList
{
int value;
structList *pHead;
}
Struct LinkedList *pMyList;
请编写删除链表的头、尾和第n个节点的程序


71.用Socket API制作一个聊天程序,通讯协议使用tcp/ip。要求有简单界面即可,支持多人聊天。

 

72.如果有过工作经验,请说明在先前公司的工作以及离职原因(如无,请说明毕业后的个人展望)


***************************************************************************
73 对于C++中类(class) 与结构(struct)的描述正确的为:
  A,类中的成员默认是private的,当是可以声明为public,private 和protected,结构中定义的成员默认的都是public;
  B,结构中不允许定义成员函数,当是类中可以定义成员函数;
  C,结构实例使用malloc() 动态创建,类对象使用new 操作符动态分配内存;
  D,结构和类对象都必须使用new 创建;
  E,结构中不可以定义虚函数,当是类中可以定义虚函数.
  F,结构不可以存在继承关系,当是类可以存在继承关系.
答:A,D,F
***************************************************************************


***************************************************************************
74,两个互相独立的类:ClassA 和 ClassB,都各自定义了非景泰的公有成员函数 PublicFunc() 和非静态的私有成员函数 PrivateFunc();
   现在要在ClassA 中增加定义一个成员函数ClassA::AdditionalPunction(ClassA a,ClassB b);则可以在AdditionalPunction(ClassA x,ClassB y)的实现部分(函数功能体内部)
    出现的合法的表达是最全的是:
    A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();
    B,x.PrivateFunc();x.PublicFunc();y.PublicFunc();
    C,x.PrivateFunc();y.PrivateFunc();y.PublicFunc();
    D,x.PublicFunc();y.PublicFunc();
答:B
***************************************************************************

***************************************************************************
75,C++程序下列说法正确的有:
  A,对调用的虚函数和模板类都进行迟后编译.
  B,基类与子类中函数如果要构成虚函数,除了要求在基类中用virtual 声名,而且必须名字相同且参数类型相同返回类型相同
  C,重载的类成员函数都必须要:或者返回类型不同,或者参数数目不同,或者参数序列的类型不同.
  D,静态成员函数和内联函数不能是虚函数,友员函数和构造函数也不能是虚函数,但是析构函数可以是虚函数.
答:A
***************************************************************************


76,C++中的类与结构的区别?

77,构造函数和析构函数是否可以被重载,为什么?

78,一个类的构造函数和析构函数什么时候被调用,是否需要手工调用?

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 把一个链表反向,递归,非递归都写一遍。 1.试编写3个函数实现   (1)建立一个双向链表   (2)插入一个节点   (3)删除一个节点 2.自己定义数据结构,写出程序:二叉树的前序遍历。 3.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。 4.下面哪种排序法对12354最快 a quick sort b.buble sort c.merge sort 5.哪种结构,平均来讲,获取一个值最快 a. binary tree b. hash table c. stack 6.一个二叉树的三种遍历方法的输出结果 7.链表按升序打印每打印完一个节点就将该节点从链表中删除 8.选择一种算法来整理出一个链接表。你为什么要选择这种方法?现在用o(n)时间来做。 9. 用一种算法在一个循环的链接表里插入一个节点,但不得穿越链接表。    10.给两个变量,如何找出一个带环单链表中是什么地方出现环的? 11.哈希表和数组的定义,区别,优缺点。 12.链接表和数组之间的区别是什么? 任选一门语言,当场定义二叉排序树数据结构,写出两个函数:初始化,删除一个节点,20分钟 13. 递归的折半查找算法[不限语言] 14. 解释一下什么是B+树,如何实现B+树的查找和插入.(用图示) 15.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。 13.排序方法比较 (intel) 排序方法 平均时间 最坏时间 辅助存储 直接插入排序 O(N2) O(N2) O(1) 起泡排序 O(N2) O(N2) O(1) 快速排序 O(Nlog2N) O(N2) O(Nlog2N) 简单选择排序 O(N2) O(N2) O(1) 堆排序 O(Nlog2N) O(Nlog2N) O(1) 归并排序 O(Nlog2N) O(Nlog2N) O(n) 基数排序 O(d(n+radix)) O(d(n+radix)) O(radix) 17.一个链表的操作,注意代码的健壮和安全性。要求: (1)增加一个元素; (2)获得头元素; (3)弹出头元素(获得值并删除)。 18.内排序算法 19.折半查找的复杂度,证明 20.sizeof()和strlen()的使用. 21.顺序存储结构的优点,散列法的思想是什么? 22.汉罗塔算法,不能递归... 23.一个链表的结点结构 struct Node { int data ; Node *next ; }; typedef struct Node Node ; (1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel) (2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表 依然有序。 (3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表 依然有序,这次要求用递归方法进行。 ( Autodesk) 24.编最优化Bubble(int *pIntArray,int L),要求:交换元素不能用临时变量,如果有序需要最优。
### 回答1: 题目100:介绍一下你的职业发展规划。 最佳答案:我的职业发展规划主要是分为短期、中期和长期三个阶段。短期目标是不断提升自己的业务能力和管理能力,争取在岗位上有更好的表现和业绩。中期目标是担任更高级别的职位,比如主管或经理,并在管理层面积累更多的经验。长期目标是成为一名高级管理者,并能够影响公司的战略决策。为了实现这些目标,我会持续学习、扩大个人人脉和增强沟通能力。同时,我也会积极参加公司内外的培训和交流活动,学习先进的管理理念和经验。另外,我也会保持对行业的关注和了解,以便随时调整自己的职业规划。最后,我认为在个人成长的过程中,要时刻保持谦虚与对新事物和理念的敏感度,以不断提高自己的实力和影响力。 ### 回答2: 题目100:说说你对数据结构的理解。 最佳答案:数据结构是计算机科学中的一个基础概念,它是一种组织和存储数据的方法。在进行计算机程序设计时,选择适当的数据结构能够有效地提高程序的执行效率和可读性。常见的数据结构包括数组、链表、栈、队列、树、图等。 我认为数据结构是解决问题和实现功能的一种方式,是计算机程序设计的关键基础。通过选择不同的数据结构,我们可以实现不同的算法,并在解决问题的过程中提高程序的效率和可维护性。当然,在实际应用中,我们也需要根据具体需求和数据规模选择不同的数据结构。 对于数据结构的学习,我认为应该理解其内在原理和具体实现方式,并注重实际应用进行练习。同时,也需要善于总结并归纳各种数据结构的优缺点,以便在需要时可以快速选择合适的数据结构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值