1.静态成员函数可否用const修饰
不可以,原因:静态成员函数转换时没有this指针,因而const不知道修饰谁
2.静态成员函数可否为虚函数3.构造函数可否为虚函数
4.析构函数可否为虚函数
5.指针和引用的区别,引用可否引用NULL
6.怎样消除继承的二义性
a.继承性二义性问题,可以通过虚拟继承解决
b.非继承性二义性问题,可以通过指定父类名称来解决
1.继承性二义性问题,可以通过
7.STL的六大组件
1、容器(Containers):各种数据结构,如Vector,List,Deque,Set,Map,用来存放数据,STL容器是一种Class Template,就体积而言,这一部分很像冰山载海面的比率。
2、算法(Algorithms):各种常用算法如Sort,Search,Copy,Erase,从实现的角度来看,STL算法是一种Function Templates。
3、迭代器(Iterators):扮演容器与算法之间的胶合剂,是所谓的“泛型指针”,共有五种类型,以及其它衍生变化,从实现的角度来看,迭代器是一种将:Operators*,Ope rator->,Operator++,Operator--等相关操作予以重载的Class Template。所有STL容器都附带有自己专属的迭代器——是的,只有容器设计者才知道如何遍历自己的元 素,原生指针(Native pointer)也是一种迭代器。
4、仿函数(Functors): 行为类似函数,可作为算法的某种策略(Policy),从实现的角度来看,仿函数是一种重载了Operator()的Class 或 Class Template。一般函数指 针可视为狭义的仿函数。
5、配接器(适配器)(Adapters):一种用来修饰容器(Containers)或仿函数(Functors)或迭代器(Iterators)接口的东西,例如:STL提供的Queue和Stack,虽然 看似容器,其实只能算是一种容器配接器,因为 它们的底部完全借助Deque,所有操作有底层的Deque供应。改变Functor接口者,称为Function Adapter;改变Contai ner 接口者,称为Container Adapter;改变Iterator接口者,称为Iterator Adapter。配接器的实现技术很难一言蔽之,必须逐一分析。
6、分配器(Allocators):负责空间配置与管理,从实现的角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的Class Template。
8.什么是多态?为什么要有多态?
9.里氏设计原则
10.设计自动售芬达机
11.从object到exe都做了哪些操作
12.用rand100实现rand10000
13.智能指针
14.比如你说说这块的问题啊,然后再说说你的解决思路啊,为啥不用xx模式呢?试试用OO理念剖析一下啊
15.C++程序进入main函数之前,退出main函数之后会做些什么?
16. 如何使用C++实现一个线程安全的singleton类,要求延迟初始化。如果这个singleton类获得了一种资源,
譬如socket,数据库的connection,如何释放呢?
17.你们在多线程环境中如何使用mutex。其实是要求考查对mutex进行封装,初始化即获得,并且析构的时候unlock,以避免异常抛出的情况。
18.实现一个itoa的函数。包括函数需要什么样的参数,返回值,为什么这么设计。这道题可以看出一个人基本的编程习惯和能力。并且可以要求对这个函数设计测试用例。
19.C++类的static变量是什么时候初始化的,函数的static变量是什么时候初始化的?
函数的static变量在函数被调用的时候初始化,static变量是类应用的时候初始化
20.我需要使用std::string rst来存放一个字符串拼接的结果,并且我知道这个结果大概有4k,你会怎么来拼接。其实就是考察要reserve长度,然后呢,使用+=
21.这个和算法有些关系。std::map的find函数,一定是读线程安全的吗?就是说如果你有一个std::map,已经存好了内容。然后有N个线程同时find它,但是没有任何线程会往里面添加东西。这样不加锁访问,是一定安全的吗?答案是不是,有的实现就不是。 为什么?
22.用变量a给出下面的定义
a) 一个整型数(An integer)
b)一个指向整型数的指针( A pointer to an integer)
c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r
d)一个有10个整型数的数组( An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer
最常用的容器就是:vector, list, map, hash_map等等。
vector是一块连续内存,当空间不足了会再分配。
list是双向链表。
deque是双端队列可在头和尾部插入、删除元素。
3,hashmap和map有什么区别。
一个是基于hash表实现,一个是基于红黑树实现。
4,红黑树有什么特性
5,STL仿函数和指针的差别。
6,配接器
7,一元、二元仿函数
从101枚中随意取出一枚,把剩下的100枚分成两摊,每摊50。;放在天平两头上称。
一、假如平衡,则说明这100枚都是真币,取出的那一枚是假币,此时只需从100枚中随意取出一枚,一起拿到在天平上称,即可分出真币重还是假币重。
二、假如不平衡,可以帮重的那一头的50枚硬币取出,再分成两摊,每摊25枚。第二次放在天平上称:
1、假如平衡,说明假币在轻的那头,假币比真币轻;
2、假如不平衡,则说明假币在重的这头,假币比真币重。
3、(同理,取轻的那头来分析也一样)
STL容器:vector的分配器 然后介绍自己了解什么容器
各种排序算法,问自己了解什么,然后讲一下原理。
笔试题的话,一个输出三角型 另外2个输出C++结果的题,不难
IQ题 4个, 一个是2跟蜡烛求15分钟,
两只蜡烛,每只烧完要60分钟,怎样才能用这两只蜡烛求出15分钟来?
60-15=45
30/2=15
60/2=30
1,两跟蜡烛同时点燃,一跟点一头;另一跟两头都点
2,两头都点的蜡烛烧完的时候,时间过去30分钟;此时点一头的蜡烛只烧了一半.
3,把烧了一半的蜡烛另一头点着,全部烧完需要15分钟
你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?
给四个罐子编上号,1、2、3、4.然后1号拿一个,2号拿2个,3号拿3个,4号拿4个,称一下\x0d,若是都没被污染,应该重10个重量,若是11个重量就是1号罐,12就是2号罐,13就是3号罐,14就是4号罐
问了了不了解github
主要是看你的潜力和自学能力,问平时做过些什么小项目没有,看过什么书。
C++的继承多态重点问, 继承与多态的区别。