Advertisement

虹软C++笔试题B组

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本资料为虹软公司C++编程语言方向的B组笔试题目集锦,涵盖数据结构、算法基础及面向对象编程等核心内容。 ### 虹软C++笔试题B组解析 #### 选择题 1. **C语言中将构造函数声明成protected会怎么样?** - 解析:这里提到的是“C语言”,实际上C语言中并没有类的概念,也就没有构造函数、保护(protected)等概念。此问题应指的应该是C++。在C++中,如果将构造函数声明为protected,则意味着该构造函数只能被该类的成员函数以及派生类中的成员函数访问。因此,外部不能直接创建该类的对象。 2. **已知f(x)的原函数是e^x,求积分 ∫xf(x)dx** - 解析:根据题目所给条件可知 f(x)= e^x 的原函数为 e^x,即 f(x) = e^x。要计算积分 ∫xe^xdx,这是一个常见的问题可以通过分部积分法来解决。设 u=x 和 dv=e^xdx,则 du=dx 且 v=e^x 。根据公式 ∫u dv = uv - ∫v du 得出 ∫xe^xdx = xe^x - e^x + C (其中C为常数)。 3. **A为任意一维列向量,AX=0,问X是什么?** - 解析:假设A是非零的一维列向量,则 AX=0 表示矩阵 A 乘以 向量 X 的结果是零向量。该问题的解取决于 A 的性质。如果 A 是非奇异(即可逆),则只有当 X 是零向量时,AX = 0 才成立;若A不是满秩,则存在非零向量X使得 AX=0 成立。 4. **C是一个类,C a(4), b[5], *p[2]共调用几次?** - 解析:这道题考查的是构造函数的调用次数。对于`C a(4)`,这是直接调用一次构造函数;对于 `C b[5]` ,创建一个包含 5 个 C 对象的数组,则会调用五次构造函数;而指针数组 `C *p[2]` 并未初始化任何对象,因此不会调用任何构造函数。总计调用了六次构造函数。 #### 填空题 1. **代码分析** ```cpp struct B { virtual ~B() { cout << b << endl; } }; struct D : B { ~D() { cout << D << endl; } }; typedef B B2; D d; B *p = &d; void f() { d.B::~B(); p->~B(); p->~B2(); p->B2::~B(); } ``` - 解析:这段代码涉及虚析构函数的调用和多重继承。D类继承自B,且B的析构函数被声明为虚函数。在`f()`中首先通过d对象调用了其基类 B 的析构函数;然后使用指针p两次尝试调用 B 类的析构函数。由于typedef定义了B2是与B相同的类型,因此 `p->~B2(); p->B2::~B();` 实际上是一样的操作。所以整个f中一共调用了三次虚构造器。 2. **二分查找填空** - 解析:二分查找是一种在有序数组内高效搜索特定元素的算法。每次迭代过程中,通过将查询区间减半来缩小范围直至找到目标值或确定不存在为止。基本步骤包括: 1. 初始化两个指针low和high分别指向数组起始与结束位置。 2. 计算中间索引mid = (low + high) / 2。 3. 如果中间元素等于目标,则返回该索引;否则,根据大小关系决定继续在[mid+1, high]或[low, mid-1]范围内查找。 3. **结构体s1的大小** ```cpp struct s1 { char ch; char *p; union { short a, b; unsigned int c : 2, d : 1; }; struct s1 *next; }; ``` - 解析:为了计算结构体`s1`的大小,需要考虑每个成员变量占用的空间及对齐规则。char占1字节;指针(*p和*next)通常为4或8字节;union中的最大成员unsigned int 占4字节。整个union按最大的类型对齐即4字节。因此结构体`s1`的大小在32位系统中是16字节。 4. **1000个人进行淘汰赛,到冠军至少要多少场比赛** - 解析:每一轮比赛都会有一半选手被淘汰,直到

全部评论 (0)

还没有任何评论哟~
客服
客服
  • C++B
    优质
    本资料为虹软公司C++编程语言方向的B组笔试题目集锦,涵盖数据结构、算法基础及面向对象编程等核心内容。 ### 虹软C++笔试题B组解析 #### 选择题 1. **C语言中将构造函数声明成protected会怎么样?** - 解析:这里提到的是“C语言”,实际上C语言中并没有类的概念,也就没有构造函数、保护(protected)等概念。此问题应指的应该是C++。在C++中,如果将构造函数声明为protected,则意味着该构造函数只能被该类的成员函数以及派生类中的成员函数访问。因此,外部不能直接创建该类的对象。 2. **已知f(x)的原函数是e^x,求积分 ∫xf(x)dx** - 解析:根据题目所给条件可知 f(x)= e^x 的原函数为 e^x,即 f(x) = e^x。要计算积分 ∫xe^xdx,这是一个常见的问题可以通过分部积分法来解决。设 u=x 和 dv=e^xdx,则 du=dx 且 v=e^x 。根据公式 ∫u dv = uv - ∫v du 得出 ∫xe^xdx = xe^x - e^x + C (其中C为常数)。 3. **A为任意一维列向量,AX=0,问X是什么?** - 解析:假设A是非零的一维列向量,则 AX=0 表示矩阵 A 乘以 向量 X 的结果是零向量。该问题的解取决于 A 的性质。如果 A 是非奇异(即可逆),则只有当 X 是零向量时,AX = 0 才成立;若A不是满秩,则存在非零向量X使得 AX=0 成立。 4. **C是一个类,C a(4), b[5], *p[2]共调用几次?** - 解析:这道题考查的是构造函数的调用次数。对于`C a(4)`,这是直接调用一次构造函数;对于 `C b[5]` ,创建一个包含 5 个 C 对象的数组,则会调用五次构造函数;而指针数组 `C *p[2]` 并未初始化任何对象,因此不会调用任何构造函数。总计调用了六次构造函数。 #### 填空题 1. **代码分析** ```cpp struct B { virtual ~B() { cout << b << endl; } }; struct D : B { ~D() { cout << D << endl; } }; typedef B B2; D d; B *p = &d; void f() { d.B::~B(); p->~B(); p->~B2(); p->B2::~B(); } ``` - 解析:这段代码涉及虚析构函数的调用和多重继承。D类继承自B,且B的析构函数被声明为虚函数。在`f()`中首先通过d对象调用了其基类 B 的析构函数;然后使用指针p两次尝试调用 B 类的析构函数。由于typedef定义了B2是与B相同的类型,因此 `p->~B2(); p->B2::~B();` 实际上是一样的操作。所以整个f中一共调用了三次虚构造器。 2. **二分查找填空** - 解析:二分查找是一种在有序数组内高效搜索特定元素的算法。每次迭代过程中,通过将查询区间减半来缩小范围直至找到目标值或确定不存在为止。基本步骤包括: 1. 初始化两个指针low和high分别指向数组起始与结束位置。 2. 计算中间索引mid = (low + high) / 2。 3. 如果中间元素等于目标,则返回该索引;否则,根据大小关系决定继续在[mid+1, high]或[low, mid-1]范围内查找。 3. **结构体s1的大小** ```cpp struct s1 { char ch; char *p; union { short a, b; unsigned int c : 2, d : 1; }; struct s1 *next; }; ``` - 解析:为了计算结构体`s1`的大小,需要考虑每个成员变量占用的空间及对齐规则。char占1字节;指针(*p和*next)通常为4或8字节;union中的最大成员unsigned int 占4字节。整个union按最大的类型对齐即4字节。因此结构体`s1`的大小在32位系统中是16字节。 4. **1000个人进行淘汰赛,到冠军至少要多少场比赛** - 解析:每一轮比赛都会有一半选手被淘汰,直到
  • 公司
    优质
    本资料收录了虹软公司的经典笔试题集,涵盖计算机视觉、图像处理等领域知识,旨在帮助求职者准备面试及测试技术能力。 1. 以下属于C语言保留字的是 D A.fopen B.include C.get D.unsigned 2. 设enum color {red,yellow=2,blue,white,black} r=white;,执行 printf(%d ,r) ;后的输出结果是 D A.0 B.1 C.3 D.4 3. 对于while语句,错误的说法是 B A.用条件控制循环体的执行次数 B.循环体至少要执行一次 C.循环体有可能一次也不执行 D.循环体中可以包含若干条语句 4. 在C语言中,′a′和″a″存储所占用的字节数分别是 B A.1,1 B.1,2 C.2,1 D.2,2 5. 设int a,*p;则语句 p=&a;中的运算符“&”的含义是 D A.位与运算 B.逻辑与运算 C.取指针内容 D.取变量地址
  • 算法岗位
    优质
    本资料包含虹软公司算法岗位招聘中曾出现的笔试题目,涵盖计算机视觉、图像处理等领域的专业知识与技能测试。适合准备应聘相关职位的技术人员参考学习。 虹软算法笔试题,17年的。希望大家今年都能找到好工作。
  • 近两年校园招聘
    优质
    本资料汇集了近两年来虹软公司在校园招聘过程中采用的笔试题目,旨在为应聘者提供参考与练习。 2015年和2017年的虹软校招笔试题目是真实的考题,希望能对找工作的同学们有所帮助。这些资料只需一个积分就可以下载使用。
  • 浪潮件Java研发B
    优质
    本试题为浪潮软件公司用于评估应聘者Java开发能力的专业测试,涵盖Java编程基础、设计模式及企业应用框架等关键知识点。 浪潮软件的Java研发B卷笔试题是针对国企招聘进行的测试内容。
  • 2014年(杭州)公司美国部门
    优质
    本资料整理了虹软(杭州)公司在2014年针对其美国部门招聘时所采用的一系列笔试题目,涵盖计算机科学和软件工程的核心知识。 2014年美国虹软(杭州)公司的笔试题非常有参考价值。该公司位于天堂软件园,是一家外资企业,发展前景良好。欢迎大家参考!
  • C#C#
    优质
    这段资料包含了多种C#编程语言的相关笔试题,旨在帮助学习者和开发者准备与提升他们在C#开发领域的技能和知识。 在C#编程中,设计模式是一种重要的思想,用于解决软件设计中的常见问题。在这个笔试题中,主要涉及了观察者模式(Observer Pattern)的应用。观察者模式是一种行为设计模式,它定义了一对多的对象依赖关系:当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 题目要求通过猫(Cat)、老鼠(Mouse)和主人(Master)三个角色来展示联动效应。猫的行为(Cryed())会影响到老鼠和主人的行为,这正是观察者模式的核心应用场景。在提供的代码中,Cat类扮演主题(Subject)的角色,Mouse和Master类作为观察者(Observer)。 1. `Observer`接口定义了一个`Response()`方法,当被调用时,表示观察者接收到主题的通知并做出响应。 2. `Subject`接口定义了`AimAt(Observer obs)`方法,允许主题添加观察者。 3. `Mouse`和`Master`类实现了`Observer`接口,分别代表老鼠和主人。它们在`Response()`方法中定义了具体的行为,即老鼠逃跑和主人惊醒。 4. `Cat`类实现了`Subject`接口,维护了一个ArrayList来存储观察者,并提供了`AimAt(Observer obs)`方法用于添加观察者。猫的叫声通过调用每个观察者的`Response()`方法通知所有观察者。 这种实现方式简洁明了,符合观察者模式的定义,但存在一定的局限性:无法方便地移除观察者和使用ArrayList存储观察者可能导致类型不安全的问题。 另一种设计方法是使用事件(event)和委托(delegate)。在C#中,事件基于委托提供了一种封装观察者列表的方式。外部代码不能直接访问或修改这个列表,提高了安全性。给出的代码片段里定义了一个自定义的委托`SubEventHandler`表示事件处理方法签名,并且`Subject`类定义了事件`SubEvent`。当猫叫时触发该事件,而Observer通过订阅此事件来响应。 这种设计方式的优点在于: - 更加面向对象,使发布与订阅过程封装在类内部。 - 提供更高的安全性:外部代码无法直接修改观察者列表。 - 支持匿名方法和Lambda表达式,使得订阅更加灵活便捷。 然而,使用事件和委托也存在不足之处。例如,不能控制事件处理函数的调用顺序,并且可能导致分散化的事件处理逻辑难以维护。 无论是采用接口集合还是基于事件的方法实现观察者模式都有各自的优缺点,在实际项目中需根据需求选择合适的设计方式。掌握这些设计模式有助于提高代码质量、可读性及扩展性,是成为优秀C#开发人员的重要技能之一。
  • C方向的东
    优质
    本资料包含东软公司针对C语言方向招聘岗位的笔试真题及解析,涵盖数据结构、算法和编程技巧等内容。 ### 东软笔试试题——C方向知识点解析 #### 数据结构与算法 1. **二叉树遍历**: - 题目要求根据给定的二叉树图形,判断按照先根遍历(即先访问根节点,然后左子树,最后右子树)的顺序,各结点的访问序列是什么。 - 正确答案为B:`ABDHIECFG`。解释:首先访问根节点A,接着递归地访问左子树(BDHI),再依次访问右子树(EFCG)。因此正确的遍历序列为ABDHIECFG。 2. **二分查找算法**: - 对于一个有序的线性表(a1,a2,a3,...,a500),进行不成功的二分查找时,最多需要比较多少次? - 最多需要比较次数取决于列表长度。在这个例子中,由于包含500个元素,最坏情况下(即查找不存在的元素)所需的最大比较次数为`log2(500)`大约等于9次。所以正确答案是B:9。 3. **二叉树深度优先遍历**: - 二叉树的深度优先遍历包括前序、中序和后序三种方式。 - 正确选项A:前序遍历,B:后序遍历,C:中序遍历。 4. **事务故障与恢复**: - 关于事务的故障处理及数据恢复机制,使用事务日志可以帮助实现有效恢复。 - 选项D正确指出建立检查点的目的在于提高数据恢复效率。通过设置检查点可以减少需要重做的操作数量从而加快整个过程的速度。 5. **最佳二叉排序树**: - 最佳二叉排序树指的是平均查找长度最短的结构。 - 在给出的选择中,C项:每个结点左右子树的高度差不大于1是平衡二叉搜索树(如AVL树)的一个特性。这种类型的树能够保证最小化的平均查找长度。 6. **数据逻辑关系分类**: - 数据结构根据其内部元素之间的逻辑关联可以分为线性和非线性两类。 - 因此正确答案为C:线性结构和非线性结构。 7. **队列操作原则**: - 队列是一种先进先出(FIFO)的数据组织形式,即最先加入的元素会最早被移除。 - 所以正确选项A:先进先出。 8. **单向链表与双向链表对比**: - 相较于单向链接列表,双向链接列表的优势在于可以更方便地访问前后相邻节点。 - 正确答案为C:更容易访问相邻结点。 9. **文件存储设备管理**: - 文件系统的空闲块管理常用的方法包括位图法、链表法及索引方法等。 - 因此正确选项D:索引法。 10. **进程状态转换**: - 进程从阻塞转为就绪状态的条件是等待事件已经发生。 - 正确答案C:等待事件的发生。 11. **进程调度方式**: - 当更高优先级的新任务取代当前运行的任务时,采用的是抢占式调度机制。 - 因此正确选项B:抢占模式。 12. **I/O控制方法**: - DMA(直接内存访问)技术通常用于高效地处理大量数据传输操作。 - 所以正确答案C:DMA方式。 13. **软件设计原则**: - 软件结构设计的主要任务是明确模块之间的组织关系。 - 因此正确选项为C:确定各个模块间的组成联系。 14. **软件验收测试目的**: - 验收测试旨在验证程序是否满足用户需求。 - 正确答案A:确认其符合用户的预期要求。 15. **软件开发过程中的观念问题**: - 在项目实施过程中,正确的态度是通过合理的规划和设计适应变化的需求而不是简单增加人员数量解决问题。 - 因此正确选项B:在程序运行之前无法评估其质量(这是错误的观点)。 16. **软件模块连续性概念**: - 模块的连续性表示小范围内的规格调整不会影响到其他大量无关的部分。 - 正确答案D:连续性指的是局部修改不影响全局设计。 17. **黑盒测试局限性**: - 黑盒测试方法无法检测冗余代码的存在与否。 - 因此正确选项为D:是否存在冗余的程序段。 18. **结构化编程的基本构造**: - 结构化的程序设计语言包括顺序、选择和循环等基本控制流语句,转移(goto)不属于其中的一种。 - 正确答案为D:转移不是其组成部分之一。 19
  • C++.zip_C++_C++
    优质
    这是一份包含多道C++编程和理论问题的笔试题集,适用于测试应聘者或学生在C++语言方面的知识掌握程度及应用能力。 学习C++笔试题可以帮助你快速掌握这门语言。