笔试题目收集(2)

2023-10-31

笔试题目搜集系列推荐:

(1)笔试题目搜集1

(2)笔试题目收集2

(3)笔试题目搜集3

(4)笔试题目搜集4

(5)笔试题目搜集5




1.下列程序运行的结果:(面试宝典P108)

#include<iostream>
#include<string>

using namespace std;

class classType{
private:
	int x,y;
public:
	classType(int a):y(a),x(y)
	{}
	int getx(){return x;}
	int gety(){return y;}
};


int main()
{
    classType obj(98);
	cout<<obj.getx()<<" "<<obj.gety()<<endl;
	getchar();
	return 0;
}

结果:输出结果第一个数为随机数,第二个数为98。

分析:类中先声明x,后声明y,所以在初始化成员变量时先初始化x,再初始化y的顺序。将上面改为int y,x,得到预期的输出,即98 98。

2.指出下面程序的错误,把静态成员数据声明为私有,该如何访问?

class A{
    const int size=0;
};

错误:上面的错误应该是没有定义性说明。

方法1:

class A{
    static const int size;
};
int A::size = 0;

其实也可以这样:(为什么?参见博客http://blog.csdn.net/lsjseu/article/details/9071285静态成员第四条)

class A{
    static const int size=0;//这是一种例外
};
int A::size;

      类中的成员声明不能赋初值(静态成员除外,且静态成员在定义性说明的时候赋初值,如果不赋初值则取默认值,但是必须要定义性说明),因为类只是一种导出的类型,不分配空间。

方法2:

class A{
    const int size;
    A():size(0){}//const变量必须在初始化列表中
};

      静态成员设为私有只能通过静态的成员函数访问。

3.数组循环移位

解法1:

RightShift(int *arr,int N,int K)
{
   K%=N;
   while(k--){
     int t=arr[N-1];
     for(int i=N-1;i>0;i--)
         arr[i]=arr[i-1];
     arr[0]=t;
    }

}


解法2:

Reverse(int *arr,int b,int e)
{
	K%=N;
    for(;b<e;b++,e--){          //字符串反序的时候可以用这个代码
         int tmp = arr[b];
         arr[b] = arr[e];
         arr[e] = tmp;
   }
}
RightShift(int *arr,int N,int K)
{
     K%=N;
     Reverse(arr,0,N-K-1);
     Reverse(arr,N-K,N-1);
     Reverse(arr,0,N-1);
}

4.插入排序、选择排序和冒泡排序代码(上次去阿里笔试,插入排序还写错了,丢人,这次一定要狠心记住)

插入排序:

void InsertionSorter(int *arr,int len)
{
	for(int i=1;i<len;i++){
		int t = arr[i];
		int j = i;
		while(j>0&&arr[j-1]>t){
			arr[j] = arr[j-1];
			j--;
		}
		arr[j] = t;
	}
}
选择排序:
void SelectionSorter(int *arr,int len)
{
	for(int i=0;i<len-1;i++){
		int k = i;
		for(int j = i+1;j<len;j++){
			if(arr[j] < arr[k]) k = j;
		}
		if(k!=i)
		{
			int t = arr[k];
			arr[k] = arr[i];
			arr[i] = t;
		}
	}
}
冒泡排序:

void BubbleSorter(int *arr,int len)
{
	for(int i=0;i<len-1;i++){
		bool flag = false;
		for(int j = 0;j<len-i-1;j++){
			if(arr[j]>arr[j+1]){
				int tmp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = tmp;
				flag = true;
			}
		}
        if(!flag)break;  
	}
}

5.析构函数设为virtual有什么作用,构造函数为什么不能设为虚函数?《面试宝典P109》

(1)构造函数为什么不能设为虚函数:虚函数是一种虚调用的方法,这种调用运行我们知道接口而不知道具体类型。但是是定义类的时候,我们势必要知道准确类型,因此构造函数不能为虚函数。

(2)析构函数有时候为什么需要定义为虚函数:

例子:

class Base{
public: 
      ~Base(){...}
}

class Derived:public Base{
public:
       ~Derived(){..}
}

void main()
{
	Base *pBase;
    Derived dev;
    pBase=dev;
}

       如果基类的的析构函数~Base(){...}不是虚函数,则撤销pBase时,将不会调用 ~Derived(),从而就不会释放  Derived::Derived()占据的内存,造成内存泄露。相反,如果将~Base()定义为虚函数,由Base派生的类将自动变为虚函数,这样在pBase撤销时,会先调用~Derived类析构函数,再调用~Base析构函数。

6.string &string::operator(const string& other)中的const的作用?《面试宝典P113》

答:一是避免修改other对象;二是加入const关键字,const 对象才能调用operator操作符。因为在C++有如下调用关系:

                     

意思:const只能调用参数为const的函数,非const能调用参数为const或者非const的函数; 参数为const的函数能被const变量或者非const变量调用,非const参数的函数只能被非const变量调用

那么如果string &string::operator(const string& other)不加const关键字,如下调用就会有问题:

String s3("hello");
const String s4("word");
s3=s4;//这句话就因为s4是const变量而不能调用参数为非const的函数。

7.下列程序运行结果

#include<iostream>

using namespace std;

class A{
public:
   int m_nA;
};

class B{
public:
   int m_nB;
};

class C:public A,public B{
public:
   int m_nC;
};

int main()
{
    C *pC = new C;
    //这里C是从继承类型转换为指向基类性的指针,不需要有虚继承
    B *pB = dynamic_cast<B*>(pC);

    if(pC==pB)cout<<"equal"<<endl;                //A
    else cout<<"not equal"<<endl;

    if(int(pC)==int(pB))cout<<"equal"<<endl;      //B
    else cout<<"not equal"<<endl;

    if(int(pC)==int((C*)pB))cout<<"equal"<<endl;  //C
    else cout<<"not equal"<<endl;
    return 0;
}


运行结果:equal 、not equal 、 equal

         //A :这两端数据类型不同比较时会进行隐式转换。pC==pB相当于pC==(C*)pB。pB=dynamic_cast<B*>(pC)实际上指向的C对象中的子类B部分,从地址上跟pC不一样,所以直接比较地址的数值肯定不相等,即//B句输出“Not equal”。但是如果将(C*)pB转换为pC直向的地址,这是pB也指向了PC指向的部分。即两者就相等了,数值上也相等。//A和//C输出“equal”。

8.虚函数的入口地址和普通函数有什么不同。

答:每个虚函数在vtable(虚表)中占了一个表项,保存着一条跳转到它的入口地址的指令(实际上就是保存了入口地址)。当包含虚函数对象被创建的时候,它在头部附加一个指针,指向vtable中相应的位置(用sizeof的时候需要注意了)。调用虚函数的时候,不管你用什么指针调用的,它先根据vtable找到入口地址再执行,从实现了“动态绑定”,而不像普通函数哪样简单地跳转到一个固定地址。

9.下列代码输出结果

void main()
{
	int *pa = NULL;
    int  *pb = pa + 15;
    printf("%x",pb);
}
输出:0+15*6=60=0x3c

union {
	unsigned char a;
    unsigned int i;
}
main(){
	u.i = 0xf0f1f2f3; 
    cout<<hex<<u.i<<endll
    cout<<hex<<(int)u.a<<endll
}

输出:fof1f2f3    f3。内存数据低位字节存入低地址,高位字节存入高地址


10、设有以下说明和定义

     typedef union {long i; int k[5]; char c;} DATE;

  struct data { int cat; DATE cow; double dog;} too;

  DATE max;

  则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:___52____

  答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20

  data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32。(这里没有按照20对界,而是按照doule类型对界。因为int k[5]是数组,对界还是按照元素类型int对界,即按照4来对界。这样结构data中最大的类型就是double,即按照8来对整个结构体来对界)

  所以结果是 20 + 32 = 52。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

笔试题目收集(2) 的相关文章

  • QT5.2中新建lib库,在引用时出现error LNK2019: 无法解析的外部符号错误

    1 由于在VS2010中新建QT的lib库时默认的是新建动态链接库 然后我在配置属性中改为lib库 结果生成的lib库在引用是出现error LNK2019 无法解析的外部符号错误 2 error LNK2019 无法解析的外部符号 dec
  • 超越Swin

    作者 科技猛兽 编辑 极市平台 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 目标检测 技术交流群 后台回复 transformer综述 获取2022最新ViT综述论文 导读 本文提出 FCM
  • Java方法和数组练习

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chaunqi 支持我 点赞 收藏 留言 愿你我共勉 没有什么比勇气更温文尔雅 没有什么比怯懦更冷酷无情 Java方法和数组练习 1 获取每月天数 根据输入的

随机推荐

  • el-upload 上传视频并回显

    el upload上传视频 并且显示上传的视频
  • python基础编程_25_拷贝函数,copy()

    import copy a 1 2 3 4 a b b a 引用 除非直接给a重新赋值 否则a变则b变 b变则a变 c copy copy a 浅复制 只会拷贝父对象 不会拷贝父对象中的子对象 所以若a的子对象变则c 变 但是父对象变c不会
  • C++利用Poco库实现QT的信号与槽效果

    C 利用Poco库实现QT的信号与槽效果 定义信号类 信号类的使用 定义类型Model main头文件引用 main定义信号发送类 main定义信号接收类 main主函数 引用的Poco库 参考资源 C 利用Poco库实现QT的信号与槽效果
  • Python3,使用Flask来实现接口请求

    Flask之实现接口请求 1 引言 2 Flask 2 1 flask 的环境安装 2 2 flask构建web框架 2 3 flask构建get请求 2 4 flask构建post请求 2 41 代码编写 2 4 2 安装RestClie
  • j2me总结(三)

    高级界面开发 二 本编介绍高级界面下的类 1 Form Form是高级界面中最重要的类 是一个典型的容器控件类 是一个包含多个UI组件的屏幕对象 故名思意 form为表单的意思 在form中可以包含Item类 Form上的每一个元素都会分配
  • vue .number修饰符

    项目中遇到这样一个问题 某个input框用来输入价格之类的数字 我想对input的取值区间做判断 但是发现输入后变成了String类型 所以用了vue中的 number修饰符 这样就可以获得Number类型了 很方便
  • Qt 5 帮助文档的使用

    Qt 5 帮助文档的使用 Qt 5 帮助文档的使用学习图形界面开发 肯定离不开帮助文档的使用 因为它不像 C 语言那样就那么几个函数接口 图形接口的接口可以用海量来形容 常用的我们可能能记住 其它的真的没有必要去记 用到什么就去帮助文档查看
  • C++ 读写CSV文件

    include
  • Java异常之自定义异常类详解和代码举例

    Java语言的异常 异常处理机制 Java中的异常概念 1 异常是程序在运行过程中由于算法问或软件设计等问题导致的程序异常事件 2 异常的前提是可以识别并被捕获的 3 Java以面向对象的方法来处理异常的 Java提供了各种类型的异常类 4
  • 数据结构day1(2023.7.13)

    一 Xmind整理 二 课上练习 练习1 static 全局变量 局部变量作用域 int a 0 全局变量 生命周期和作用于都是从定义开始到整个文件结束 void fun int b 0 局部变量 static int c 0 局部变量 作
  • 2018第一届世界区块链大会 区块链大咖畅谈区块链宏观经济

    2018年4月24日上午 第一届世界区块链大会 三点钟峰会 W B C 在中国澳门召开 以 技术重构世界 为主题 要 驱动幸福世界 链接美好未来 大会由世界区块链联合协会首倡 世界区块链大会组委会 三点钟 深创学院主办 深圳大学区块链研究院
  • (转)找不到或无法加载主类(Could not find or load main class )

    原文 https blog csdn net shymi1991 article details 50540214 当我们试图在命令行编译运行一个简单的java程序HelloWorld java 编译命令javac HelloWorld j
  • 面经九2023.2.3上午笔试和群面

    面经九2023 2 3 上笔试和群面 1 根据指定的数据模型 完成对应SQl语句的编写 edu class表 Student表 要求1 使用左连接查询出year为2022的学生 且只查询出10条数据 插入数据 INSERT INTO ed
  • 安卓游戏辅助开发!想给金三银四找工作的程序员几点建议,面试建议

    前言 相信前几天在朋友圈晒无聊的小伙伴们 也陆续结束了假期 很多公司为了员工的健康考虑 启动了远程办公模式 床在桌边 饭在桌上 家里一切都那么安逸 专心工作真的是一件难事 远程工作最大的敌人就是 你的自制力 战胜自己 以后你一定是做成大事的
  • 面试题-Redis、MongoDB、Memcached

    一 缓存 搞懂缓存那些事 https blog csdn net a724888 article details 80785020 区别2 二 Redis MongoDB Memcached区别 区别1 https www cnblogs
  • 12、视图解析器与模板引擎

    文章目录 1 视图解析 1 1 spring boot支持的第三方模板引擎技术 1 2 视图解析原理流程 2 模板引擎 Thymeleaf 2 1 thymeleaf简介 2 2 基本语法 1 表达式 2 字面量 3 文本操作 4 数学运算
  • Python 自然语言处理 文本分类 地铁方面留言文本

    将关于地铁的留言文本进行自动分类 不要着急 一步步来 导入需要的库 import numpy as np import pandas as pd import jieba 分词 import re 正则 from fnmatch impor
  • 广西公需科目 当代科学技术前沿知识 考试答案

    用百度的识字api 可以识别广西公需科目 当代科学技术前沿知识 的文档 当代科学技术前沿知识读本 电子书 全文 pdf 这个可以在平台下载完了就识别出来就好搜答案了 自动考试视频 guagnxi视频 mp4 考试代码 for i in co
  • MySQL误删数据找回神器之binlog2sql

    一 使用前提 1 binlog format为ROW 且binlog row image为full或noblog 默认为full 2 必须开启MySQL Server 理由有如下两点 它是基于BINLOG DUMP协议来获取binlog内容
  • 笔试题目收集(2)

    笔试题目搜集系列推荐 1 笔试题目搜集1 2 笔试题目收集2 3 笔试题目搜集3 4 笔试题目搜集4 5 笔试题目搜集5 1 下列程序运行的结果 面试宝典P108 include