首页 > 其他分享 >11.1金山游戏开发笔试

11.1金山游戏开发笔试

时间:2023-04-12 12:32:07浏览次数:28  
标签:金山 游标 int 笔试 11.1 pData ++ nSize 表达式


int main()
{
	int i;
	(i=1,i=10)?i++||++i:++i;
	printf("%d",i);
	getchar();
}

答案:11.

解释:逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为表达式1,表达式2,表达式3……表达式n
求解过程是:先求解表达式1,再求解表达式2,...。整个逗号表达式的值是最后一个表达式n的值。

然后就是关于"||"运算符的问题,方向从左到右,逻辑运算符有很重要的一个特性就是,如果左边的表达式可以决定整个表达式,那么后面就不会再计算。

比如本题中i++返回值为10,为真,那么||整个表达式为真,后面的++i不会再执行,所以整个结果为11

2、类A为抽象类,下列哪个是正确的:

A、A fun(int);

B、A* p;

C、int fun(A);

D、A obj;

答案:B

3、请描述windows下的内存管理方式。

4、iteearator与指针的区别。

答案:游标是指针,但不仅仅是指针。游标和指针很像,功能很像指针,但是实际上,游标是通过重载一元的”*”和”->”来从容器中间接地返回一个值。将这些值存储在容器中并不是一个好主意,因为每当一个新值添加到容器中或者有一个值从容器中删除,这些值就会失效。在某种程度上,游标可以看作是句柄(handle)。通常情况下游标(iterator)的类型可以有所变化,这样容器也会有几种不同方式的转变:对于除了vector以外的其他任何容器,你可以通过这种游标在一次操作中在容器中朝向前的方向走一步。这意味着对于这种游标你只能使用“++”操作符。而不能使用“--”或“+=”操作符。而对于vector这一种容器,你可以使用“+=”、“—”、“++”、“-=”中的任何一种操作符和“<”、“<=”、“>”、“>=”、“==”、“!=”等比较运算符。

5、请解释volatile的含义与用法。

答案:volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。

6、UDP与TCP的区别。

答案:(TCP)传输控制协议,是一种提供可靠数据传输的通用协议。
(UDP)用户数据报协议,是一个面向无连接的协议。采用该协议不需要两个应用程序先建立连接。UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性差。

7、请实现一个MyVector类,并说明实现要点。

#include <iostream>
#include <new>

using namespace std;

template <class T>
class Iterator
{
public:
    Iterator()
            : m_pData(NULL)//, m_nPos(0)
            , m_nSize(0), m_nLen(0)
    {
    }

    virtual ~Iterator()
    {
        if (NULL != m_pData)
        {
            delete[] m_pData;
            m_pData = NULL;
        }
    }

public:
    virtual T* begin() = 0;
    virtual T* end() = 0;

protected:
    // int  m_nPos;
    int m_nSize;
    int m_nLen;
    T *m_pData;
};

template <class T>
class CMyVector : public Iterator<T>
{
public:
    typedef T* iterator;

public:
    CMyVector(int nSize = 10)
    {
        if (nSize <= 0)
        {
            nSize = 10;
        }

        m_nSize = nSize;
        m_pData = new T[m_nSize];
    }

    ~CMyVector()
    {
    }

public:
    int Length() const
    {
        return m_nLen;
    }

    bool push_back(T obj)
    {
        if (m_nLen >= m_nSize)
        {
            //get more memory
            int nSize = m_nSize * 2 + 1;

            T *pTemp = new(nothrow) T[nSize];
            if (!pTemp)
            {
                return false;
            }

            // memset(pTemp, 0, sizeof(T) * m_nSize);
            memcpy(pTemp, m_pData, sizeof(T) * m_nLen);

            delete []m_pData;
            m_pData = pTemp;
            m_nSize = nSize;
        }

        memcpy(m_pData + m_nLen, &obj, sizeof(obj));
        m_nLen++;

        return true;
    }

public:
    virtual T* end()
    {
        return m_pData + m_nLen;
    }

    virtual T* begin()
    {
        // m_nPos = 0;
        return m_pData;
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    CMyVector<int> vtData;
    CMyVector<int>::iterator it;

    for (int i = 0; i < 30; i++)
    {
        vtData.push_back(i);
        //cout << "nLen = " << vtData.Length() << endl;
    }

    cout << "vector data: " << endl;
    for (it = vtData.begin(); it != vtData.end(); it++)
    {
        cout << *it << "\t";
    }
    cout << endl;

    return 0;
}


标签:金山,游标,int,笔试,11.1,pData,++,nSize,表达式
From: https://blog.51cto.com/u_5746184/6185459

相关文章

  • 前端笔试遇到的两个编程题
    倒计时:在倒计时不超过一天的代码varhour=document.querySelector(".hour");  varminute=document.querySelector(".minute");  varsecond=document.querySelector(".second");//截止的时间  varinputTime=+newDate("2023-4-0820:0......
  • 解决 ubuntu 无法关机 Dell Studio 1569 Cannot Shutdown in Ubuntu 11.10 or 12.04
    ShutdowncomputerusingterminalinUbuntufyouwanttoshutdownyourcomputerwhatdoyoudo?Simplygotoshutdownbuttonandclickshutdownisn’t? Haveyoueverwonderedhowwouldyoushutdownyourpcifyourgdm(GraphicalUserInterface)isnotwork......
  • kubernetes rabbimq3.11.11集群之mqtt插件
    1.概述本文是总结给予k8s的rabbitmq3.11.11集群的mqtt搭建rabbitmq集群搭建详见前一篇文章:kubernetes集群部署rabbimq3.11.112.自动创建mqtt账号密码wrapper-entrypoint.sh#!/usr/bin/envbash(sleep20;\admin_user=bbbbbb;\admin_passwd=111111;\rabbitmq......
  • 笔试题
    importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);StringBuffernum3=newStringBuffer();Stringnum=scanner.next();StringBuffernum2=newStringBuffe......
  • 杭电计算机复试笔试题
    2018杭电计算机复试笔试题1简单题题目1:杭电实验室会定期去电影院看电影,按照惯例,每个成员需要先抽一个号码。给出n个人的名字,各抽取一个数字,自己用一种数据结构存取人的名字和抽取数字信息(票数)1.定义一种数叫丑数,其因子除1外只有2.3.5的倍数,(例如4,10,是丑数,11,13不是),输出......
  • kubernetes 集群部署rabbimq3.11.11
    通过官方镜像RabbitMQDockerImage和rabbitmq-peer-discovery-k8s插件进行集群部署。0.环境 kubernetes1.24 rabbitmq3.11.111.命名空间将rabbitmq的资源都放在rabbitmq命名空间内。Namespace.yamlapiVersion:v1kind:Namespacemetadata:name:rabbit......
  • Math笔试
    varnum=23.34;console.log(Math.ceil(num));//返回大于等于num的最小整数24console.log(Math.floor(num));//返回小于等于num的最大整数23console.log(Math.round(num));//返回与num最接近的整数(四舍五入)23console.log(Math.abs(num));//返回num的绝对值23......
  • 解数独 【笔试题】
    本题虽然是困难但是难度不大写的时候也是有经验classSolution{publicvoidsolveSudoku(char[][]board){backtrack(board,0,0);}public......
  • Typora 免费版本0.11.17无法使用解决办法
    Typora,是一款被众多网友盛赞的Markdown写作软件。最新版Typora开始收费,旧版0.11.17不收费。安装0.11.17版本后,关闭自动更新即可。windows版关闭自动更新设置,Typora–通......
  • 关于两道笔试题的思考
    1.在32位机器上正确的输出是?structNode{boolval1;intval2;charstr[1023];};Node*p=newNode();std::cout<<sizeof(p)<<std::endl;std::cout......