2017江汉大学紫龙互娱招生面试题

2023-11-23 10:21

本文主要是介绍2017江汉大学紫龙互娱招生面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基础能力

一。英语翻译,给出了两段unity官网的新手指引的英文(翻译难度大致如下) 。例如 :

Use the Unity Editor to create 2D and 3D games, apps and experiences. (Download the Editor atunity3d.com.)

The Unity User Manual helps you learn how to use the Unity Editor and its associated services. You can read it from start to finish, or use it as a reference.

译文:使用unity编辑器创建2D,3D游戏,应用与 体验。(在unity3d.com下载编辑器)

Unity 用户手册可以帮助你学会如何使用unity编辑器及其相关服务。你可以从头到尾阅读,也可以使用它作为参考

This section of the documentation contains details of the scripting API that Unity provides. To use this information, you should be familiar with the basic theory and practice of scripting in Unity which is explained in theScripting section of our manual.

译文:本节文档包含了unity提供的脚本API的详细细节。为了 使用这个信息,你应该熟悉unity脚本编程的基本理论与实践,这在我们手册的脚本部分有解释。

英文段落中除了有少数单词比较陌生外,翻译基本没有什么难度。

二。基础数学题。

某一飞船由静止沿着某一方向做变加速直线 运动,其加速度为10m/3次方s*t,问飞船10s能飞行多远距离?

解:该题 考察的是数学知识与物理场景的结合,主要考察重积分的计算。

瞬时速度v的计算

距离计算

解答过程

算法与数据结构

三。面向对象基础编程

1.下列变量所占内存空间大小分别是多少字节 ?

    char *s=str[7];int *p;char   c[6];int m;void *q 答: sizeof(s)=4 ;sizeof(p)=4;sizeof(c)=6;sizeof(m)=4;sizeof(q)=4;归纳:指针变量的大小实际 是有 cpu的寻址位数决定,不等同于cpu字长,寻址位数取决于当前 cpu运行的模式 及其本身特性,通常为4个字节 

2.c++中static关键字的作用有哪些?

1.修饰全局变量时,用于限制该全局变量的使用范围。仅能在本文件内使用该变量。2.修饰局部变量时,用于修改该变量的存储控件类型。普通局部变量存储在栈区,当函数执行结束后,就会被清空。静态局部变量存储在静态区,当函数执行结束后,不会被清空。下次再次执行函数时,能保持上一回的值。3.修饰成员变量或者函数时,用于修改该函数的使用方法。静态成员变量和静态成员函数不属于某一个对象,而是属于整个对象。可以使用类名::成员/方法 的方式进行使用。

3.Overload与override的区别 ?

Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。Override(覆盖):是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。Overwrite(重写):是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

4.如何防止内存泄漏 ?

1.用完的内存及时回收 
2.空指针指向NULL
3.尽量安全的内存访问函数
4.优化代码减少递归层次
5.数组下标访问提高警惕

5.C++中继承方式的区别?

    public 共有继承:在派生类中,基类的公有成员和保护成员被继承后分别作为派生类的共有成员与保护成员,这样使得派生类的成员函数可以直接访问他们,而派生类成员函数无法直接访问基类的私有成员。在类的外部,派生类对象可以访问继承下来的公有成员.protected  保护继承:在派生类中,基类的公有成员和保护成员作为派生类的保护成员,派生类的成员函数可以直接访问他们,而派生类成员函数无法直接访问基类的私有成员。在类外部,派生类的对象无法访问基类的所有成员。private 私有继承:在派生类中,基类的公有成员和保护成员作为派生类的私有成员,派生类的成员函数可以直接访问他们,而派生类成员函数无法直接访问基类的私有成员。在类外部,派生类的对象无法访问基类的所有成员。

6.在STL容器中,vector与list有什么区别?

在STL中vector与list均为顺序容器,即线性结构。vector:向量,按需收缩数组,物理上采用顺序存储,在对其尾部插入删除元素,以及访问元素的时间复杂度是恒定的。list:双向链表,每个结点均含有两个指针域,物理上采用链式存储结构,在对其插入删除元素时间复杂度是恒定的,而访问中间元素则是线性的。

7.hashtable的实现 原理是什么?

    散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。

四。编程题

1.给定数组A={6,3,4,10,7,2},对于数组中给定的元素A[P]与 A[Q],P<Q,记A[Q]-A[P]的值为 diff,求A[Q]与A[P]差的最大值,即diff-MAX。(本题中 diff-MAX=A[3]-A[1]=7)
#include<iostream>
using namespace std;
int main()
{int A[]={6,3,4,10,7,2};//初始数组int  diff=A[1]-A[0]; //初始最大差for(int i=0;i<5;i++) //顺序取出一个元素{for(int j=i+1;j<6;j++)//与后面所有元素比较{int tmp=A[j]-A[i];if(tmp>diff) //如果大于diff则更新最大值diff=tmp;   }}cout<<diff; //输出结果 
} 

此题比较简单,主要就是考察简单的迭代求最值

2.编程实现strcpy函数,函数原型为 char* strcpy(char* strDest, const char* strSrc)

char *strcpy(char *strDest, const char *strSrc)
{assert((strDest!=NULL) && (strSrc !=NULL));    char *address = strDest;                                          while( (*strDest++ = * strSrc++) != '\0' );        return address ;                                                  
}

注意:判断字符串是否结束,我们通常是判断*p==’\0’来确定的,这不同于线性表判断节点是否为空p==NULL,同时母的字符指针要以 ‘\0’结尾,此函数不安全可能会发生越界。

3.编写算法实现二叉树节点统计,已知数据结构
typedef struct Node{
struct Node* left;
struct Node* rifht;
}Node,*Root;

//任选一种遍历方式即可。这里我采用先序遍历
int n=0;//n 用于计数
int GetCounts(Root root)  
{   if(root!=NULL)//如果不为空{n++; //计数+1GetCounts(root->left);//遍历左子树GetCounts(root->right);//遍历右子树  }
}

4.实现String类成员函数
class String
{
public:
String(const char *str = NULL); //通用构造函数
String(const String &str); //拷贝构造函数
~String(); //析构函数
private:
char* m_data;
}

 String::String(const char *str)//通用构造函数
{if (!str){m_data = new char[1];*m_data = '\0';}else{m_data = new char[strlen(str)+1];strcpy(m_data, str);}
}
String::String(const String &str)//拷贝构造函数
{m_data = new char[strlen(str)+1];strcpy(m_data, str);
}
String::~String()//析构函数
{delete []m_data;m_data=NULL;
}

5.八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。请编写程序解决八皇后问题。

//八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。
//该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
//请编写程序解决八皇后问题。#include<iostream>
#include<cmath>
using namespace std;
int x[8]={0}; //八个皇后的位置数组
int s=0;      //记录解法
int num=8;    //皇后数量
int  count=0;
int  count1=0; 
int  count2=0;
//检测能否放置,t代表第t+1个皇后  
bool CanPlace(int t)
{count1++;for(int i=0;i<=t-1;i++){   count2++;//如果出现列相同或者在一条对角线上(行默认不同) if(x[i]==x[t]||(abs(x[i]-x[t])==abs(i-t)))return false;}//可以放置 return true;
}
//放置第t+1个皇后,t从0开始
void BackTrack(int t)
{count++;//成功放置8个皇后 if(t>=num){s++;for(int i=0;i<num;i++){cout<<x[i]<<" ";}cout<<endl;}else{//由第一列到第8列 for(int i=1;i<=num;i++){x[t]=i;if(CanPlace(t))BackTrack(t+1);}}
}int main()
{BackTrack(0);cout<<"共有"<<s<<"种放法"<<endl; cout<<"共执行"<<count-1<<"次递归"<<endl; cout<<"共调用了"<<count1<<"次检测方法"<<endl; cout<<"共进行了"<<count2<<"次比较"<<endl; 
}

总结:此套试题难度一般,但针对性很强,着重考察了学生的编程思维能力与相关数学基础知识,需要好好复习面向对象编程想。

这篇关于2017江汉大学紫龙互娱招生面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417269

相关文章

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

Laravel 面试题

PHP模块 PHP7 和 PHP5 的区别,具体多了哪些新特性? 性能提升了两倍 结合比较运算符 (<=>) 标量类型声明 返回类型声明 try…catch 增加多条件判断,更多 Error 错误可以进行异常处理 匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义 …… 了解更多查看文章底部链接 PHP7 新特性 为什么 PHP

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

【Kubernetes】常见面试题汇总(一)

目录 1.简述 etcd 及其特点? 2.简述 etcd 适应的场景? 3.简述什么是Kubernetes? 4.简述 Kubernetes和 Docker的关系? 1.简述 etcd 及其特点? (1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据