下午课刚上完,我收到了HR的通知,得知没有通过面试,这是一家在合肥的软件公司。挺不爽的,我觉得主要是因为经验少。还是谈谈面试官问我的两个技术问题吧,我应聘的是C++软件开发工程师。
1、STL中的map是线程安全的吗?
我的回答:标准中没有规定,但是基本上STL都实现了,是线程安全的。
其实是大部分版本的STL都不是线程安全的。我前几天刚好查了这个问题,参见:
http://stackoverflow.com/questions/7455982/is-stl-vector-concurrent-read-thread-safe
我只看到回答者写的一个醒目的Yes,就说是线程安全的,其实是针对提问者问的“多个线程并发读某个对象是不是线程安全的”,这当然安全喽。
2、类的大小:
class A {
A();
~A();
int m_nSize;
};
class B : public A {
};
问sizeof(B)是多少?
我的回答:4
他再在A中加了虚函数:
virtual int foo();
我的回答:与虚函数表有关,没有深究过。
其实加了虚函数,内含一个函数指针,答案应该是8。
上面的答案都是在网上找的,只知其一,不知其二,还是应该好好看技术书,网上许多东西不靠谱。
最后他向我推荐了几本书:《C++编程思想》,《Windows核心编程》,还有本Linux的书忘了什么名字。
欢迎大家点评指教。
20130626
关于第一个问题,可以参考这两篇文章:
Visual C++: http://msdn.microsoft.com/en-us/library/c9ceah3b(v=vs.110).aspx
SGI C++: http://www.sgi.com/tech/stl/thread_safety.html