c++程序员面试宝典笔记(一)

 

我要熟练的:string类的实现,I/O输入输出,文件读写的实现,异常处理,stl的使用,string对象的一些操作函数例如find().

1.几种数据类型?
  整型 浮点型  void类型

2.整型有的哪几种形式?
  整数,字符,布尔  3个合称为整型。 
 char -128~127   0-255
 short 2字节范围:+-3万左右 无符号 0-6万左右
 int 4字节的话:+-21亿左右  无符号 0-4亿左右  8位字节:2的7次幂;有符号哦。

3.一个进程内存分几大区域?
  全局区域(bbs段),栈区,堆区,代码只读区,

4.操作符有哪几类分类?
 算术操作符,关系操作符,逻辑操作符,位操作符,赋值操作符,自增自减,箭头,条件,sizeof,逗号。

5.变量代表一块存储区域。

6.什么是左值什么是右值?
 变量是左值,字面量是右值。左值可以出现在=左右,但是右值只能出现在=右边,不可以被赋值。

7.变量2种初始化的方式:(即创建变量的同时赋予初值)
 1.直接初始化 int a(100);
 2.复制初始化 int a=100;
  与赋值不同:赋值是擦除对象的当前值并且用新值代替。

8.什么是声明与定义?
 声明是向程序声明已知变量和类型的名称。是在定义之后的。声明可以多次。
 定义则是告诉编译器开辟一个空间,也是一种声明。定义有且只有一次。

9.有哪几种作用域?
  1. 全局 2.类 3.语句 4.局部

10.有几种存储类型?
 自动 ,静态,寄存器,外部

1.c 与c++的区别? c是面向过程,c++则是面向对象。  面向过程的编程是基于函数来分模块的,面向对象是基于类,命名空间来分模块的。

2.什么是匈牙利命名法? 是在变量名前加上前缀,来表示该变量的实际类型。
  骆驼命名法:首字符大写。 
  变量命名规则:字母,数字,下划线,区分大小写。不能是关键字。

3.什么是输入输出I/O?
 1.对标准键盘和显示器输入输出,叫标准I/O
 2.对文件输入输出叫:文件I/O
 3.对内存字符串输入输出称为:串I/O

4.常量指针,指针常量,数组指针,指针数组,函数指针,指针函数。
 this指针指向当前对象地址。什么是:深拷贝,浅拷贝。

5.指针和引用的区别?
 1.指针需解引用,引用不需要
 2.指针可以改变且可以为空,而引用必须初始化,而且不能再被改变值。
 3.指针需要分配内存空间存放,引用不会开辟新的内存空间。

6.面向对象3特点:
 封装,继承,多态。3种访问方式:private,protected ,public,子类不能扩大范围,只能缩小范围。
多态:引用(指针)指向基类对象,然后实例出不同的子类对象。来通过虚函数达到多态效果。

7.拷贝构造函数的调用时机?
 1.作为实参时候 2.作为返回值  3.一个对象作为另一个对象的初始化时(定义时)

8.类类型的隐士转换:
 一个类有一个参数的构造函数,该类型是别的类型。则,作为参数的时候,就会有隐士转换发生。
  静态函数没有this指针,只能访问静态变量。

9.这里的容器讲得不错,要重新看一遍啊。数据结构也要看看哦。

10.什么是容器?vector list deque set mulsiset map multimap(顺序容器,关联容器)
 是容纳特定类型对象的集合,因此容器中的对象必须是同一类型,而且该类型必须是可拷贝构造和可赋值的。

顺序容器:以严格的线性形式组织在一起,可视为数组和链表的推广。
 3种顺序容器:vector<T> deque<T> list<T>

关联容器:提供一个key键实现对元素的随机访问,其特点是key是有序的。能够从基于键的集合中快速提取对象的能力。
 4种关联容器:set<Key> multiset<Key> map<Key,T> multimap<Key,T>

容器适配器:不提供迭代器。他不是独立的容器,而是某种容器的变种,提供了原有容器的一个专用的受限接口。
 3种:stack<T>   queue<T>  priority_quequ<T>
 
vector在随机插入方面相对来说性能较低。

11.什么是迭代器?
迭代器是stl提供的对一个容器中的对象的访问方法,并且定义了容器中对象的范围。

迭代器已经有2个定义好滴,1.begin()  2.end()


12.什么是关联容器?2个基本滴:set map
 set插入和删除要比vector快,但是查找和添加元素时会慢些。

set multiset例子:
set <int> strset;    strset.insert(1); strset.insert(1);   //往set中插入2条相同的数据,这是不允许的。
multiset<int> mset; mset.insert(1); mset.insert(1); //往set中插入2条相同的数据,这是可以滴。

13.什么是泛型编程?函数模版,类模版。
 就是独立于任何特定类型实现的方式编写代码。需要用户提供具体类型和值。针对不同的类型提供通用的实现。

 

 

 

 

你可能感兴趣的:(数据结构,编程,C++,vector,面试,String)