一面就是做题

1.下列关于C++异常,描述正确的是: ________________________________

A) 不能在构造函数中抛出异常
B) 不能在析构函数中抛出异常
C) 成员初始化表中的异常不能捕获
D) 使用异常会导致生成的目标代码大小增加

2.下列关于std::string的说法正确的是: ________________________________

A) str.size() == strlen(str.c_str())
B) std::string::c_str() 一定会返回一个以\0结尾的字符数组
C) std::string::append() 操作不会使一个已有的迭代器失效
D) sizeof(std::string) 是一个常数

3.以下关于TCP/UDP说法正确的是: ________________________________

A) TCP可以保证包的顺序而UDP不行
B) TCP和UDP都属于传输层的协议
C) TCP可以保证传送的可靠性而UDP不行
D) TCP没有包大小的限制而UDP会有

4.select/poll/epoll 都是 I/O 多路复用的具体实现,以下说法正确的是:

A.epoll的timeout参数精度最高
B.poll没有最大描述符数量限制
C.select可移植性更好
D.select中的所有描述符都存储在内核中

5.c++中,对于以下几种定义数据的方式,假设都是存储了1000个数据,内存开销从小到大排序是怎样的?

class MapMap
{
public:
map<float, float> m_mapping;
};

class UnorderMap
{
public:
unordered_map<float, float> m_mapping;
};

class VectorMap
{
public:
vector<pair<float, float>> m_mapping;
};

class ListMap
{
public:
list<pair<float, float>> m_mapping;
};

6.有两张mysql的表记录了员工的一些基本信息如下:
mysql> select * from test1;
id name age
1 aaa 25
2 bbb 31
4 ddd 30
5 eee 28

mysql> select * from test2;
id gender
1 M
2 F
3 F
5 M

两张表的id都是PRIMARY KEY,现在希望查询出所有在test1表和test2表均有记录的员工的信息(即交集),并按照性别和年龄排序(所有女性排在男性前面,同性别再按年龄降序排)。
用一条sql语句实现

7.下面是带长度的字符串拷贝函数,最多拷贝 siz-1 个字节,目标字符串以'\0'结尾,返回值为 strlen(src)。找出代码中的逻辑错误,并修正。

size_t strlcpy(char *dst, const char *src, size_t siz)
{
register char *d = dst;
register const char *s = src;
register size_t n = siz;
if (n != 0 && --n != 0) {
do {
if ((*++d = *++s) == 0)
break;
} while (--n != 0);
}
if (n == 0) {
if (siz == 0)
*d = '\0';
while (*s++)
;
}
return (s - src);
}

posted on 2020-05-07 15:23  Carits  阅读(289)  评论(0编辑  收藏  举报