荔枝 c++ 一面凉经之解答

原帖:https://www.nowcoder.com/feed/main/detail/5bab12927ed04646aab5c04a8299ef36

STL库熟悉吗?

STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是 C++ 标准库的一部分,不用单独安装。C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为双端队列,set 的底层为红黑树,hash_set 的底层为哈希表。

通常认为,STL 是由容器算法迭代器函数对象适配器内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的

如果用clear()清空vector,空间会改变吗?

清空数组,只会清空数组内的元素,不会改变数组的容量大小

熟悉override吗,重载和重写的关系。

  1. 重载(overload)函数名相同,参数列表不同(参数类型、参数顺序),不能用返回值区分。特点:(1)作用域相同;(2)函数名相同;(3)参数列表必须不同,但返回值无要求;特殊情况:若某一重载版本的函数前面有virtual关键字修饰,则表示它是虚函数,但它也是重载的一个版本。作用效果:编译器根据函数不同的参数列表,将函数与函数调用进行早绑定,重载与多态无关,与面向对象无关,它只是一种语言特性。
  2. 重写(override)派生类重定义基类的虚函数,既会覆盖基类的虚函数(多态)。特点:(1)作用域不同;(2)函数名、参数列表、返回值相同;(3)基类函数是virtual;特殊情况:若派生类重写函数是一个重载版本,那么基类的其他同名重载函数将在子类中隐藏。作用效果:父类指针和引用指向子类的实例时,通过父类指针或引用可以调用子类的函数,这就是C++的多态。

线程之间的通信方式,最高效的是哪种

线程间的通信方式包括互斥量、信号量、条件变量、读写锁

  1. 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才可以访问。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。
  2. 信号量:计数器,允许多个线程同时访问同一个资源。
  3. 条件变量:通过条件变量通知操作的方式来保持多线程同步。
  4. 读写锁:读写锁与互斥量类似。但互斥量要么是锁住状态,要么就是不加锁状态。读写锁一次只允许一个线程写,但允许一次多个线程读,这样效率就比互斥锁要高。

除了锁和安全序列,怎样使线程占用到互斥资源

同上

tcp和udp了解吗,有什么区别。

(1)TCP需要建立一对一稳定连接;UDP无连接

(2)TCP一对一;UDP可以一对一、一对多、多对多

(3)TCP可靠传输,序列号、确认应答、超时重传;UDP不保证可靠传输,尽最大努力交付

(4)TCP头部字节20字节;UDP8个字节

(5)TCP开销大;UDP灵活开销小

(6)TCP提供可靠的服务,适用于通讯质量要求高的场景;UDP传输效率高,适用于高速传输和实时性要求的场景。

怎么用tcp实现一个http的协议?

HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

tcp + 请求/响应

以上答案均来自本人专栏:机器学习面试题汇总与解析(蒋豆芽面试题总结)

欢迎大家围观:https://blog.nowcoder.net/jiangwenbo

#软件开发2023笔面经#
牛友面经解答 文章被收录于专栏

这个专栏专门用于为牛友解答面经,希望能帮助到大家。

全部评论
vector还可以问一个问题。就是clear后对象的情况
1
送花
回复
分享
发布于 2023-03-07 16:54 广东
deque底层不是循环队列吧,它实现类似一个二级页表
点赞
送花
回复
分享
发布于 2023-03-06 22:16 安徽
滴滴
校招火热招聘中
官网直投
我同学进荔枝了
点赞
送花
回复
分享
发布于 2023-03-09 17:53 广东
请问面过了吗
点赞
送花
回复
分享
发布于 2023-03-14 18:04 辽宁
C++与嵌入式面试题全解析:https://www.nowcoder.com/creation/manager/columnDetail/wjvy4m
点赞
送花
回复
分享
发布于 2023-06-17 08:33 陕西

相关推荐

5 93 评论
分享
牛客网
牛客企业服务