在求职的征途上,每个人都可能会遇到各种各样的笔试题目。近日,我有幸参加了维塔士的笔试,在此,我想与大家分享这次笔试的经历和题目,希望对准备面试的朋友们有所帮助。
维塔士是一家知名的游戏开发公司,他们本周刚开过宣讲会,而我则是上周去参加了笔试。笔试的题目涉及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来删除数组,而不是delete。
三、面向对象编程
1. 给出几个函数名和变量名,构建几个类,类的关系大致如下:Car对象 -> Vehicle -> Airplane。这个问题要求根据给定的关系,设计类及其成员函数。代码示例如下:
“`cpp
class Vehicle {
public:
Vehicle() {}
virtual ~Vehicle() {}
};
class Car : public Vehicle {
public:
Car() {}
~Car() {}
};
class Airplane : public Vehicle {
public:
Airplane() {}
~Airplane() {}
};
“`
2. 叙述题:给出以下代码,要求详细描述程序运行过程。
“`cpp
class Base {
public:
Base() {}
virtual ~Base() {}
};
class Sub : public Base {
public:
Sub() {}
~Sub() {}
};
void funa(Base b) {
// …
}
void funb(Base& b) {
funa(b);
}
int main() {
Sub s;
funb(s);
return 0;
}
“`
程序运行过程如下:
(1)定义Sub类对象s;
(2)调用funb函数,传入s的引用;
(3)在funb函数中,调用funa函数,传入s的引用;
(4)funa函数中,执行Base类对象的操作;
(5)程序结束,调用析构函数,释放资源。
通过这次笔试,我深刻体会到了基础知识的重要性。在求职过程中,我们不仅要掌握编程技巧,更要对基础知识有深入的理解。只有这样,才能在面试中脱颖而出,获得心仪的工作。最后,祝愿大家都能找到满意的工作,实现自己的人生价值。
AI写作助手 原创文章,如若转载,请注明出处:http://noahtech.cn/list/jianli/4823.html