北京清彦科技C++开发一面 面经

1. 说说C++的多态机制,如何实现多态?

答案:

多态是面向对象的三大特性之一,允许用基类指针或引用调用派生类的函数。

多态的分类:

  • 编译时多态:函数重载、运算符重载、模板
  • 运行时多态:虚函数

实现运行时多态的条件:

  • 必须有继承关系
  • 基类中必须有虚函数
  • 通过基类指针或引用调用虚函数

虚函数的工作原理:

  • 每个包含虚函数的类都有虚函数表
  • 每个对象有虚函数指针指向虚函数表
  • 调用虚函数时通过虚函数指针查表找到实际函数

多态的优势:

  • 提高代码的可扩展性和可维护性
  • 实现接口和实现的分离
  • 支持开闭原则

2. Linux中export命令的作用是什么?

答案:

export用于设置或显示环境变量,使变量可以被子进程继承。

主要用途:

  • 设置环境变量:将普通变量转换为环境变量
  • 查看环境变量:不带参数时显示所有环境变量
  • 临时修改PATH:添加新的可执行文件路径

常见使用场景:

  • 配置开发环境,如设置JAVA_HOME、PATH
  • 设置编译选项,如CC、CXX编译器
  • 配置库路径,如LD_LIBRARY_PATH

注意事项:

  • export设置的变量只在当前会话有效
  • 永久生效需要写入配置文件如.bashrc或.profile
  • 子进程可以继承但不能修改父进程的环境变量

3. Linux中chmod命令的作用和使用方式?

答案:

chmod用于修改文件或目录的权限。

权限的分类:

  • 读权限r:可以查看文件内容或列出目录
  • 写权限w:可以修改文件或在目录中创建删除文件
  • 执行权限x:可以执行文件或进入目录

权限的对象:

  • 所有者u:文件的拥有者
  • 所属组g:文件所属的用户组
  • 其他人o:其他所有用户

使用方式:

  • 数字方式:chmod 755 file,7=rwx,5=r-x
  • 符号方式:chmod u+x file,给所有者添加执行权限

常用权限设置:

  • 644:文件的常用权限,所有者可读写,其他人只读
  • 755:可执行文件的常用权限,所有者可读写执行,其他人可读执行
  • 777:所有人都有全部权限,不安全,不推荐

4. 什么是CGI?它的工作原理是什么?

答案:

CGI(Common Gateway Interface)是Web服务器与外部程序交互的标准接口。

工作流程:

  • 用户通过浏览器发送请求到Web服务器
  • Web服务器接收请求,启动CGI程序
  • CGI程序处理请求,生成动态内容
  • CGI程序将结果返回给Web服务器
  • Web服务器将结果发送给浏览器

CGI的特点:

  • 语言无关,可以用任何语言编写
  • 每个请求都会创建新进程,开销大
  • 简单易用,但性能较低

CGI的应用场景:

  • 处理表单提交
  • 生成动态网页
  • 与数据库交互
  • 文件上传下载

CGI的替代方案:

  • FastCGI:常驻进程,性能更好
  • 应用服务器:如Tomcat、Node.js
  • 现代Web框架:如Django、Flask、Express

5. MySQL中索引的作用和类型有哪些?

答案:

索引是数据库中用于加速查询的数据结构。

索引的作用:

  • 加速查询:避免全表扫描,快速定位数据
  • 加速排序:索引本身有序,可以避免排序操作
  • 保证唯一性:唯一索引保证数据不重复
  • 加速表连接:提高JOIN操作的效率

索引的类型:

  • 主键索引:唯一且不能为空,一个表只能有一个
  • 唯一索引:值必须唯一,但可以为空
  • 普通索引:最基本的索引,没有限制
  • 全文索引:用于文本搜索,支持模糊匹配
  • 组合索引:多个列组成的索引,遵循最左前缀原则

索引的优缺点:

  • 优点:大幅提高查询速度
  • 缺点:占用存储空间,降低写入性能

何时使用索引:

  • 经常作为查询条件的列
  • 经常排序或分组的列
  • 经常作为连接条件的列

6. MySQL中如何创建、查询、修改和删除表?

答案:

创建表:

  • 使用CREATE TABLE语句
  • 定义列名、数据类型、约束
  • 可以设置主键、外键、默认值等

查询表结构:

  • DESCRIBE或DESC查看表结构
  • SHOW CREATE TABLE查看建表语句
  • SHOW TABLES查看所有表

修改表:

  • ALTER TABLE ADD添加列
  • ALTER TABLE MODIFY修改列类型
  • ALTER TABLE DROP删除列
  • ALT

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

C++八股文全集 文章被收录于专栏

本专栏系统梳理C++技术面试核心考点,涵盖语言基础、面向对象、内存管理、STL容器、模板编程及经典算法。从引用指针、虚函数表、智能指针等底层原理,到继承多态、运算符重载等OOP特性从const、static、inline等关键字辨析,到动态规划、KMP算法、并查集等手写实现。每个知识点以面试答题形式呈现,注重原理阐述而非冗长代码,帮助你快速构建完整知识体系,从容应对面试官提问,顺利拿下offer。

全部评论

相关推荐

3.16投递3.17约一面3.20一面3.20约二面3.21二面一面无手撕,八股盛宴,三个面试官轮着面我二面无手撕,基本就是问实习和项目和学校的情况一、一面(40分钟)1、自我介绍2、final和finally的区别3、Object类的方法有哪些4、HashMap和ConcurrentHashMap有什么区别5、讲一下springboot6、IOC和AOP7、==与equals()区别8、多线程了解多少9、sleep()和wait()区别10、讲一下线程池11、gc垃圾回收了解多少12、垃圾回收算法有哪些13、介绍一下你实习查询优化是怎么做的14、五个字段ABCDE建立索引,BE查询走不走索引15、最左匹配原则16、还有什么情况下不走索引17、in用过吗18、查询年龄20到30的人(SQL)19、实习项目数据量有多少20、实习的时候有没有打表过几十万数据21、实习用过什么中间件22、Redis工作中都在哪用到过23、Redis数据类型有哪些24、讲一下缓存穿透、击穿、雪崩及其解决方案25、怎么保证Redis高可用持久化,集群,哨兵26、Redis和数据库数据怎么保证一致性27、了解我们公司干什么的吗28、你对我们公司这个行业有没有什么概念29、有没有向往的行业30、你那个agent项目是自己写的吗,怎么搭的架构,框架,部署,这些东西从哪获取的31、github,码云开源社区逛过吗32、开源社区一些优秀的项目和脚手架之类的有没有自己试过搭建部署在本地33、实习的时候有没有什么团队合作之类的34、有没有和用户做定时沟通35、反问:有二面吗(面完一个小时约二面)二、二面(30分钟)1、自我介绍2、第一段实习做的什么内容,你做了什么模块什么功能3、讲一下第一段实习项目的第二点怎么做的4、你第一段实习是4个月还是在上学时间,不耽误上课吗,有挂科的吗5、你第二段实习和第一段实习隔了两个月,期间在学校吗,为什么不干了6、你在IT技术圈里对什么感兴趣7、除了Java的技术栈你还学了其他的吗8、JavaScript会吗9、你第二段实习做的什么工作10、第二段实习项目的整个架构你了解吗,关于Java技术栈的方面是怎么样的结构11、微服务的架构里面又用到了哪些技术栈工具或者插件12、SpringBoot和SpringCloud有什么区别13、你刚才提到了项目架构用到了K8s,什么作用14、容器化部署你知道吗,优点是什么15、虚拟机知道吗,虚拟机和容器有什么区别16、数据库用过哪些17、Mabatis和MySQL怎么做查询,完成一个SQL语句的执行到结果需要用到哪些标签,说一下整个流程18、讲一下AI,讲一下你自己写的Agent项目整个流程怎么做的19、讲一下RAG是什么,你的Agent项目RAG整个工作流整个过程是什么20、学校是在青岛哪个区21、反问:面试评价怎么样22、反问:有三面吗23、反问:部门业务
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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