1. UML图
1. 如何通过UML图画一个普通类?
答:图分为三层:最顶层的为类名,中间层的为属性,最底层的为方法。
属性的表示方式为:【可见性】【属性名称】:【类型】={缺省值,可选}
方法的表示方式为:【可见性】【方法名称】(【参数列表】):【类型】
可见性都是一样的,"-“表示private、”+“表示public、”#"表示protected。
2. 继承关系如何画UML图?
答:空心三角形+实线,三角指向基类。
3. 抽象继承关系如何画UML图?
答:答:空心三角形+实线,三角指向基类,抽象类用斜体。
4. 什么是关联关系?
答:一个类对象作为另一个类的成员变量,则两个类为关联关系。分为单向关联、双向关联、自关联
5. 三种关联关系如何画UML图?
(1)单向关联
(2)双向关联
(3)自关联
6. 什么是聚合关系?如何画UML图?
答:聚合关系表示整体与部分的关系,成员是整体的一部分,但是成员对象
可以脱离整体对象独立存在。比关联关系更紧密。
通过空心菱形+实线+箭头表示,箭头指向部分。
7. 什么是组合关系?如何画UML图?
答:组合关系也表示的是一种整体和部分的关系,但是成员不可以脱离整体对象独立存在,整体对象和成员对象之间具有同生共死的关系。
通过实心菱形+实线+箭头表示,箭头指向部分。
8. 什么是依赖关系?如何画UML图?
答:依赖关系是一种使用关系,某类对象为另一类成员方法的参数或局部变量,则两类为依赖关系。
通过虚线+箭头表示。
2. 序列化
- 什么是序列化?
答:序列化就是将对象的状态信息转换为存储或传输的信息。 - 网络通信为什么要序列化?
答:
(1)平台不同,某些数据类型占用的内存大小不一样。
(2)字节序转换,可能大小端不同;
(3)语言不同,某些数据类型占用的内存大小不一样,如long型;
(4)字节对齐问题。 - 序列化常用的方式?
答:xml、Json、protobuf。 - html与xml之间有什么区别?
答:xml是自定义标记语言,即标签可以自己定义。 - 什么是Json?
答:Json是一种序列化方式,是一种数据格式而非语言。本质是通过“键值对”的方式来描述对象。保持了XML的可读性,但序列化后的数据更简洁。 - 如何表示Json数组和Json对象?
答:
(1)Json数组用[]
表示,成员可以是基本数据类型或Json数据类型;
(2)Json对象用{}
表示,成员是键值对,键是字符串,值可以是基本数据类型或Json类型。 - Json数组与Json对象之间的语法?
答:二者之间可以相互嵌套,但同一文件有且仅有一个二者中的其中一个;键值对元素之间逗号分隔,最后元素无逗号。
{
[
"No1":
{
"name" : "Jack",
"favorite": ["foootball", "basketball"]
},
"No2":
{
"name" : "Rose",
"favorite": ["foootball", "basketball"]
}
]
}
- 什么是protobuf?
答:Protocal Buffer简称protobuf是一种结构化数据存储格式,适合做数据存储或RPC数据交换格式,可以和各种传输层协议一起使用;但其支持的数据类型少,不支持常量类型。 - protobuf序列化流程?
答:(1)在.proto
文件定义要序列化的C++类的消息格式;(2)执行protobuf编译器生成相关的头文件;(3)在工程项目中包含该头文件;(4)使用C++ API进行序列化及读写消息; - 如何在.proto文件中定义数据的消息格式?
struct TEST
{
int id;
string name;
int age;
string sex;
};
syntax = "proto3";
message TEST
{
int32 id = 1;
bytes name = 2;
int32 age = 3;
string sex = 4;
}
- .proto类型中的string与bytes的区别?
答:若数据中涉及中文,则需要支持utf-8的bytes类型。 - 如何将.proto文件生成C++类头文件?
答:通过.protoc.exe命令。protoc .proto文件路径 --cpp_out=生成路径
; - 头文件如何使用?
答:将头文件加入VS项目中,源文件调用头文件中的函数初始化类中的成员变量,将数据序列化,将数据反序列化。 - 如何配置vs?
答:属性:(1)包含文件包含指定的include/google文件
(2)链接器中附加依赖项添加libprotobuf.lib
(3)预处理器添加PROTOBUF_USE_DLLS宏 - repeated的作用?
- 如何使用枚举类型?
- 如何在成员变量中引用其他.proto文件的类?
- Debug与release版本区别?
- 如何设置版本与位机?