C++面试题

http://www.jobui.com/mianshiti/it/cpp/5107/


1. 一个系统里面有多个线程, 其中一个线程想终止另外一个线程, 该怎么实现.

2. 为什么要用virtual destructor

3. 什么是heap corruption

4. Semaphore VS Mutex

5. C++中的static, 怎么用,内存在哪里分配,等等

6. sizeof一个指针和sizeof一个指针指向的空间有什么不同?

7. char* 和char[]有什么区别?

8. 操作系统的Page是怎么做的?

9. 什么是Thrashing

10. 什么是volatileu关键字? 在什么情况下需要使用?

11. 什么是critical section?

 

12. C++里面的dynamic_cast如何实现,为什么dynamic_cast要求被cast的指针指向的类
至少要有一个virtual method?

13. virtual inheritance 为什么能够避免导出类中有多于一个的virtual base class
的copy?

14. deadlock’s four condition

15. 关于C++ 处理异常的方法

16. static 变量最大的问题是什么(考虑多线程)?

17. state Machine 的几种实现方法, 各自的优缺点是什么

18. 多线程程序里,你最喜欢哪种同步操作? Mutex是大家用得最多的, 为什么?Mutex有什么不好? (overhead,serialize,deadlock), 给例子。如何避免这些坏处?(lock-free算法, 比如lock-free的queue,stack,hashtable)一般用什么办法来写lock-free算法?(用CAS等原子操作,等等), 如何实现一个lock-free的queue? (coding ?)

19. strlen(“hello”)=? , sizeof(“hello”)=?

20. 如果main函数只有如下结构
int main(…)
{
Try{…}
catch(){…}
}
并且这个catch语句catch了所有的exception,但是这个程序还是coredump了,问可能是什么问题引起的。

21. singleton, 多线程, 如何做double check?

22. Command Pattern

23. 同步/异步IO和阻塞/非阻塞IO的区别?

24. 写一个thread safe lazy initialization 的singleton

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值