笔试题(10)
- 下列陈述中正确的有:
- A.在大多数现代计算机的架构中,浮点数运算有专门的浮点运算器(FPU)负责。
- B.unicode编码常见实现方式有utf8,utf16等。uf8表示每个unicode 字符占用8字节。
- C.计算机访问存储器的速度从快到慢:寄存器>虚拟内存>物理内存>CPU L1 Cache>CPU L2 Cache (大于号表示速度更快)。
- D.在C/C++中,把一个float类型的变量强制转化为int类型时,会发生四舍五入。
- 关于内存的说法,正确的有
- A.如果计算机的物理内存为1G,那么该机器上运行的进程不能分配大于1G大小的空间
- B.进程在退出时,操作系统会自动释放该进程中使用malloc、new 申请的所有内存。
- C.为了减少内存碎片,在编写程序的时候,应该遵循:“用完内存立刻释放内存”的原则。
- D.跨DLL传递STL 容器是一件很危险的行为,要尽量避免。
- 关于线程的有关说法,正确的有
- A.多线程能够充分利用 CPU的并发性能,所以最坏情况下,使用多线程的程序的效率不会单线程差。
- B.分配在函数内的局部变量、局部静态变量不会有线程安全的问题B
- C.在C++中,一个线程内分配的内存不能传给另一个线程访问。
- D.原子操作是指不会被线程调度机制打断的操作。例如,++a 是一个原子操作。
- E.std::vector 是线程安全的容器。
- 下列关于STL的陈述中错误的有
- A.向std::map插入一个元素的时间复杂度是O(logN),向std:map中查找一个元素的时间复杂度是 O(1)。
- B.STL有自身的内存管理,所以类似这样的容器:std:vector<ClassA*>,容器被销毁的时候STL会自动将ClassA的内存释放,并调用容器内每个ClassA的实例的析构函数
- C.具备1000个元素的std::list和同等规模的std:vector,通常情况下,遍历vector的效率要高一些。
- D.往vector中插入元素可能会导致该vector 中已有的迭代器失效,map也一样。
- 数学
- A.两个3D向量的点积的几何意义是:_________
- B.两个3D向量的叉积的几何意义是:_________
- C.将下面的矩阵作用在一个3D向量上,几何含义是:_________
1 0 0 0 2 0 0 0 3
- 填空
class A{
public:
virtual void Foo(){}
char a[5];
int c;
double* b;
short d;
}
问 sizeof(A) = _______
- 判断并改错
下面3段程序,如果正确划勾,如果错误请指出并给出如何修改。
- A
using namespace std;
void scan_delete(vector<string>& vec, const char* del_item){
vector<string>::iterator itr = vec.begin();
while(itr != vec.end()){
if(*itr == del_item)
vec.erase(itr);
++itr;
}
}
void main(){
vector<string> vec("c++", "c#", "php", "lua", "java");
scan_delete(vec, "php");
}
- B
const char *getName(){
return "Php is The Best Language";
}
void main(){
std::string_name = getName();
}
- C
class Car{
public:
Car(const char* name){ m_Name = name; }
std::string m_Name;
};
void main(){
std::map<int, Car*> _map;
_map[0] = new Car("Benz");
_map[1] = new Car("Audi");
_map[1] = new Car("Jeep");
_map.clear();
}
- 编程