
在求职的征途上,每个人都可能会遇到各种各样的笔试题目.近日,我有幸参加了维塔士的笔试,在此,我想与大家分享这次笔试的经历和题目,希望对准备面试的朋友们有所帮助.
维塔士是一家知名的游戏开发公司,他们本周刚开过宣讲会,而我则是上周去参加了笔试.笔试的题目涉及C++基础知识、算法设计和面向对象编程等多个方面,整体难度适中,但需要对基础知识有深入的理解和扎实的编程能力.
下面,我将详细介绍一下笔试的题目:
一、C++基础知识
1. 给出一个类名,要求写出它的拷贝构造函数、赋值运算符和析构函数的声明.这个问题主要考察对C++中三大法则的理解.声明如下:
“`cpp
ClassName(const ClassName &);
ClassName& operator=(const ClassName &);
~ClassName();
“`
2. 从链表中删除一个节点.这个问题需要考虑链表的基本操作,包括节点定位和节点删除.代码示例如下:
“`cpp
void deleteNode(ListNode* node) {
if (node == nullptr || node->next == nullptr) {
return;
}
ListNode* nextNode = node->next;
node->val = nextNode->val;
node->next = nextNode->next;
delete nextNode;
}
“`
二、算法设计
1. 给两个杯子(3升和5升的)和水,如何得到4升的水.这个问题是一个经典的数学问题,需要通过逻辑推理找到解决方案.具体步骤如下:
(1)将3升杯子装满水,倒入5升杯子;
(2)再次将3升杯子装满水,倒入5升杯子,此时3升杯子剩余1升水;
(3)将5升杯子的水倒掉,将3升杯子中的1升水倒入5升杯子;
(4)再次将3升杯子装满水,倒入5升杯子,此时5升杯子中有4升水.
2. 辨析题,常见错误,如使用delete删除一个用new出来的数组.这个问题考察对内存管理的理解.正确做法是使用delete