金山 C++ 一面凉经

1. 自我介绍

2. vector 与 list 的区别与使用场景

  • vector:连续内存、随机访问快、尾插尾删快、CPU缓存友好
  • list:链表结构、任意位置插入删除快、迭代器不失效、随机访问慢
  • 场景:高频遍历/读多用 vector,频繁中间插入/删除用 list

3. vector push_back 均摊 O(1) 的原因

  • 采用指数扩容(1.5倍/2倍)策略
  • 扩容次数极少,所有插入的总拷贝次数为线性级
  • 均摊后每次插入的时间复杂度为 O(1)

4. inline 函数与宏的区别

  • inline:C++关键字,类型安全、可调试、无副作用、作用域安全
  • 宏:纯文本替换,无类型检查、易出错、调试困难
  • 现代C++优先使用 inline,弃用宏定义

5. 移动语义与完美转发

  • 移动语义:通过右值引用转移资源,避免深拷贝,提升性能
  • 完美转发:通过 std::forward 还原参数的左值/右值属性,实现通用转发
  • 核心:依赖引用折叠规则(T& + && → T&,T&& + && → T&&)

6. const 与 #define 的区别

  • const:C++关键字,有类型检查、作用域限制、可调试
  • define:预处理宏,纯文本替换、无类型检查、易出错
  • 现代C++优先使用const,弃用宏定义常量

7. 指针与引用的区别

  • 指针可空、可修改指向、支持多级指针
  • 引用必须初始化、不能为空、不可更换绑定对象
  • 引用本质是指针常量,使用更安全

8. new/delete 与 malloc/free 的区别

  • new/delete:C++运算符,会调用构造/析构函数、类型安全
  • malloc/free:C函数,仅分配/释放内存、无类型检查
  • 注意:new/delete 与 malloc/free 不可混用

9. 智能指针的理解与使用

  • unique_ptr:独占所有权,不可复制、可移动
  • s

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C++ 常考面试题总结 文章被收录于专栏

本专栏系统梳理C++方向, 大中厂高频高频面试考点 , 内容皆来自真实面试经历,从基础语法、内存管理、STL与设计模式,到操作系统与项目实战,结合真实面试题深度解析,帮助开发者高效查漏补缺,提升技术理解与面试通过率,打造扎实的C++工程能力.

全部评论

相关推荐

头像
昨天 13:17
已编辑
苏州大学 Java
面试官真的很有耐心,人非常nice,但问得也是真的很细。面完半小后约HR面。有没有人说说HR面会问啥?【希望能过吧,以前真没想到面个试这么耗精力,这一周感觉都被掏空了】1.请做一下自我介绍。2.你掌握的数据结构有哪些?3.请讲一下一致性哈希的原理和解决的问题。4.请讲一下Ring buffer(环形缓冲区)的相关内容。5.请讲解一下HTTP状态码的相关分类和含义(如2xx、3xx、4xx、5xx)。6.请讲解一下四层网络负载均衡和七层网络负载均衡的区别,以及各自的应用场景。7.请讲一下反向代理的原理和常用工具,以及正向代理的相关内容。8.进程间通信的方式有哪些?哪种方式效率更高,为什么?9.请讲一下MySQL主从复制的实现原理(基于binlog、redolog相关)。10.多个从节点之间出现数据不一致的问题该如何解决?11.你了解的消息中间件有哪些?RabbitMQ、RocketMQ、Kafka这三种消息中间件的区别是什么?12.Redis中最常用的数据结构有哪些?13.请讲一下Redis中Zset(sorted set)的底层实现和优化策略。14.什么是小哈希和大哈希,二者在查找、插入性能上有什么区别?15.请讲一下TCC分布式事务算法的相关内容,以及它和2PC、3PC的区别。16.你在项目中使用的服务发现组件是什么,它的实现原理是什么?17.你在项目中使用的序列化协议是什么,为什么选择该协议?18.长连接的适用场景是什么?哪些场景不适合使用长连接,原因是什么?19.请设计一个评论系统(包括数据库表设计、数据结构、关联关系等)。20.【反问】想具体知道会做哪些模块的工作?有没有导师?
查看78道真题和解析
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务