【面经】高德地图 C++ 研发 一面

本文分享了高德地图C++研发面试的一面问题,涵盖了面向对象、继承原则、虚函数、抽象类、继承方式、接口特性、重写与重载的区别、虚函数的应用、数据库设计原则和优化、排序算法等多个方面,旨在帮助读者理解和准备C++研发面试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击上方蓝字关注我,我们一起学编程
有任何疑问或者想看的内容,欢迎私信

微信搜索《编程笔记本》(codingbook2020),获取更多干活。

今天分享高德地图C++研发岗位一面面试题。

面试题目录

1.1 你对面向对象的理解是什么?

面向对象是向现实世界模型的自然延伸,这是一种万物皆对象的编程思想。在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。面向对象的编程是以对象为中心,以消息为驱动,可以概括为:程序=对象+消息

面向对象有三大特性:封装继承多态

封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化行为公开化,提高了数据的隐秘性的同时,使代码模块化。这样做使得代码的复用性更高。

继承则是进一步将一类事物共有的属性和行为抽象成一个父类,而每一个子类是一个特殊的父类——有父类的行为和属性,也有自己特有的行为和属性。这样做扩展了已存在的代码块,进一步提高了代码的复用性。

多态的一大作用就是为了解耦——为了解除父子类继承的耦合度。简单来说,多态就是允许父类引用(或接口)指向子类(或实现类)对象。很多的设计模式都是基于面向对象的多态性设计的。如果说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。

总结来说,封装和继承是面向对象的基础,多态是面向对象最精髓的理论。

1.2 继承有什么原则?

  • 公有继承时:水平访问和垂直访问对基类中的公有成员不受限制
  • 保护继承时:对于垂直访问同于公有继承,对于水平访问同于私有继承
  • 私有继承时:水平访问和垂直访问对基类中的公有成员也不能访问

对于基类中的私有成员,只能被基类中的成员函数和友元函数所访问,不能被其他的函数访问。基类与派生类的关系:任何一个类都可以派生出一个新类,派生类也可以再派生出新类,因此,基类和派生类是相对而言的。

1.3 虚函数的工作方式是什么?虚函数表和虚表指针是什么?

C++ 中虚函数的实现一般是通过虚函数表实现的。类的虚函数表是一块连续的内存,每个内存单元中记录一个 JMP 指令的地址,也就是每个虚成员的地址。编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。 虚表指针就是指向虚函数表的指针。

更多关于虚函数的内容参见往期笔记:【面经】CVTE–C++软件开发@一面的面试题1.2 。

1.4 抽象类可以实例化对象吗?

抽象类可以有自己的构造方法,但是不能直接通过 new 进行实例化。但是可以通过子类继承,实例化子类的时候抽象类也会被实例化。

1.5 三种继承方式的使用场景和选择原则?

  • public(公有继承):继承时保持基类中各成员属性不变,并且基类中 private 成员被隐藏。派生类的成员只能访问基类中的 public/protected 成员,而不能访问 private 成员;派生类的对象只能访问基类中的 public 成员。
  • private(私有继承):继承时基类中各成员属性均变为 private ,并且基类中 private 成员被隐藏。派生类的成员也只能访问基类中的 public/protected 成员,而不能访问 private 成员;派生类的对象不能访问基类中的任何的成员。
  • protected(保护继承):继承时基类中各成员属性均变为 protected ,并且基类中 private 成员被隐藏。派生类的成员只能访问基类中的 public/protected 成员,而不能访问 private 成员;派生类的对象不能访问基类中的任何的成员。

1、不管采用哪种形式(public, protected 或 private),基类中的私有成员都不可以直接访问;如果非要在派生类中使用基类的私有成员,可以有两种方法:一是使用属性,二是使用友元类或友元函数。
2、如果采用 public 形式,则基类除了私有成员的其它所有都被原样的继承到派生类中;即在基类中是 publi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值