当前位置: 首页 > news >正文

上云科技 C++ 软件工程师笔试题目

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

注释:满分100分。


第一部分:C++基础(36分)


【1】#include<file.h>与#include "file.h"的区别?(3分)

【2】.h头文件中#ifndef/#define/#endif的作用?(3分)

【3】写出变量i的值。(3分)

#define DOUBLE(x) x+x
int i = 5 * DOUBLE(5);

【4】写出程序的输出结果。(3分)

#include <iostream>
using std::cout;
using std::endl;

int main()
{
    char a[] = "hello world";
    char *p = a;
    cout << sizeof(a) << endl;
    cout << sizeof(p) << endl;

    return 0;
}

【5】有如下程序,已知它输出false。写出sizeof(A)和sizeof(B)的值,并解释#pragma pack(1)和#pragma pack()的作用。(6分)

#include <iostream>

struct
{
    int a;
    char b;
} A;

#pragma pack(1)
struct
{
    int a;
    char b;
} B;
#pragma pack()

int main()
{
    bool b = (sizeof(A) == sizeof(B));
    std::cout << b << std::endl;

    return 0;
}

【6】填写代码注释。(6分)

#include <iostream>

class Instru
{
public:
    Instru() {}
    ~Instru() {}
public:
    virtual void Play()
    {
        std::cout << "Instru::Play" << std::endl;
    }
};

class Piano :public Instru
{
public:
    Piano() {}
    ~Piano() {}
public:
    void Play() const
    {
        std::cout << "Piano::Play" << std::endl;
    }
};

class NewPiano :public Piano
{
public:
    NewPiano() {}
    ~NewPiano() {}
public:
    void Play() const
    {
        std::cout << "NewPiano::Play" << std::endl;
    }
};

void Tune(Instru &i)
{
    i.Play();
}

int main()
{
    Piano a;
    Tune(a);    // 输出________
    NewPiano b;
    Tune(b);    // 输出________
    Instru *p = &a;
    Tune(*p);   // 输出________
    p = &b;
    Tune(*p);   // 输出________
    Instru c;
    Tune(c);    // 输出________

    return 0;
}

【7】描述静态存储区分配,栈上分配和堆上分配的区别。(6分)

【8】已知 strcpy 函数原型:

char* __cdecl strcpy(char *strDest, const char *strSrc);

其中strDest是目的字符串,strSrc是源字符串。不调用C/C++的字符串库函数,编写函数strcpy。(6分)


第二部分:数据库(9分)


为了管理学生信息,建立3个表:S(student),C(course),SC(studen-course)。

S表中有如下字段:S#,SN,SD,SA,分别表示学号,姓名,院系,年龄。

C表中有如下字段:C#,CN,分别表示课程编号,课程名称。

SC表中有如下字段:S#,C#,G,分别表示学号,所选课程编号,成绩。

本部分题目,使用 Oracle/MySQL/SQLite3 语法皆可。

【9】查询不选修课程号为'C5'的学生姓名和所属院系。(3分)

【10】假定S表中姓'李'的学生的数量大于5。请查询姓'李'的第2名到第5名的学生的信息。(3分)

【11】修改姓名为'李明'的学生的所属院系为'计算机工程系'。(3分)


第三部分:Qt(55分)


【12】请说明 Qt 的 SIGNAL/SLOT 的优缺点。(9分)

【13】简述网络协议 TCP 和 UDP 的区别。(7分)(这似乎不属于 Qt 问题。——编辑注)

【14】简述 QList 与 QSet 的区别。(3分)

【15】QCoreApplication 类提供了 sendEvent 和 postEvent 方法。请说明它们的联系和区别。(9分)

【16】请写出开启定时器、关闭定时器、只定时一次执行的定时器接口名称,并简要阐述如何使用定时器。(9分)

【17】请解释 QMutex 和 QReadWriteLock,并说明二者区别。(9分)

【18】当处理一个特定事件(如保存一个500MB大小的文件)耗费时间过多,用户界面就会变得无法响应。为了避免这种情况发生,请从 Qt 角度阐述你有哪些方法既能处理需要长时间完成的事件,又不让用户界面停止响应。(9分)

转载于:https://my.oschina.net/jthmath/blog/599956

相关文章:

  • bash学习前方
  • 搜索双链路实时计算体系@双11实战
  • 日志完美清理总结
  • eclipse提交运行spark应用
  • Storm官方文档翻译之在生产环境集群中运行Topology
  • stringstream读取空格作为分隔符的文件
  • javascript获取当前url中的參数
  • 【C++探索之旅】第一部分第五课:简易计算器
  • HTTP状态码搜集
  • 23333 又是一篇水文章(以下是各种复制来的关于maven转成eclipse项目)
  • SQL Server 2016 查询存储(Query Store)介绍
  • Android 破解之道 (二)
  • 交换两个变量的四种方案(面试题)
  • 【转】共享经济是临时工的增量市场?
  • RecyclerView基础
  • JS 中的深拷贝与浅拷贝
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • codis proxy处理流程
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • go append函数以及写入
  • Go 语言编译器的 //go: 详解
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • React 快速上手 - 07 前端路由 react-router
  • Redash本地开发环境搭建
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • SpiderData 2019年2月13日 DApp数据排行榜
  • tab.js分享及浏览器兼容性问题汇总
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue自定义指令实现v-tap插件
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 如何编写一个可升级的智能合约
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 深度解析利用ES6进行Promise封装总结
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 最简单的无缝轮播
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ###STL(标准模板库)
  • #Ubuntu(修改root信息)
  • (007)XHTML文档之标题——h1~h6
  • (1)(1.9) MSP (version 4.2)
  • (1)常见O(n^2)排序算法解析
  • (13):Silverlight 2 数据与通信之WebRequest
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)php新闻发布平台 毕业设计 141646
  • (三)mysql_MYSQL(三)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .Net Memory Profiler的使用举例
  • .net refrector
  • .net 验证控件和javaScript的冲突问题
  • .NET6 命令行启动及发布单个Exe文件