面试总结

 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

23 STL相关的各种问题
1,用过那些容器。
最常用的容器就是:vector, list, map, hash_map等等。

2,vector,list,deque的实现。
vector是一块连续内存,当空间不足了会再分配。
list是双向链表。
deque是双端队列可在头和尾部插入、删除元素。

3,hashmap和map有什么区别。
一个是基于hash表实现,一个是基于红黑树实现。

4,红黑树有什么特性

5,STL仿函数和指针的差别。

6,配接器

7,一元、二元仿函数

24.实现一个不带锁的队列
25.如何将对象生成在指定内存
26.如何不允许对象生成在栈上或堆上
27.多进程架构和多线程架构的优缺点
28.分布式编程
29.如何高效的内存管理
30.递归锁
31.临界区的原理或者自旋锁的原理
32. 有100个真币和一个假币,只知道真币与假币不等重,要求只称两次,得出是真币重还是假币重
从101枚中随意取出一枚,把剩下的100枚分成两摊,每摊50。;放在天平两头上称。
一、假如平衡,则说明这100枚都是真币,取出的那一枚是假币,此时只需从100枚中随意取出一枚,一起拿到在天平上称,即可分出真币重还是假币重。
二、假如不平衡,可以帮重的那一头的50枚硬币取出,再分成两摊,每摊25枚。第二次放在天平上称:
1、假如平衡,说明假币在轻的那头,假币比真币轻;
2、假如不平衡,则说明假币在重的这头,假币比真币重。
3、(同理,取轻的那头来分析也一样)
33.1256名士兵,偶数出列,以此类推,直到最后一个,请找出该士兵的编号,用程序实现


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++的继承多态重点问, 继承与多态的区别。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值