面试复盘|wps C++开发 一面
一面 2021/09/24 (30min+)
- 自我介绍
- 说一下虚函数,虚函数表的创建时机是什么时候,虚函数表是对象共享还是对象独占,虚函数表存储在什么位置,
- 虚函数指针的创建时机,虚函数有什么缺点。
- 纯虚函数了解吗,
- 函数指针了解吗,(如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。)
- 虚函数的应用示例有什么,(我扯了简单工厂类)
- 说一下简单工厂类,这种设计模式有什么缺点,优点
- 简单工厂模式:使用一个工厂类,根据不同的条件来创建不同类的对象。
- 优点:工厂类包含了必要的判断逻辑,根据客户端的选择条件动态实例化相关的类。
- 缺点:违背了“开放-封闭”原则,增加方法时需要修改原工厂类。
- 简单工厂模式:使用一个工厂类,根据不同的条件来创建不同类的对象。
- 单例模式了解吗。说下什么情况下会用单例模式,单例模式的优缺点,
- 单例模式:在整个系统的生命周期中,保证一个类只会有一个实例,确保该类的唯一性。
- 分类:
- 懒汉式:系统运行中,实例不存在,只有当需要该实例时,才会去创建,但是需要考虑线程安全。
- 饿汉式:系统一运行,就创建实例,直接调用,
- 应用场景:
- 懒汉式是以时间换空间,适合访问量较小时
- 饿汉式是以空间换时间,适应于访问量较大时,或者线程比较多时。
- 分类:
- 单例模式:在整个系统的生命周期中,保证一个类只会有一个实例,确保该类的唯一性。
- 最大堆了解吗,形成最大堆需要几次循环,分别说一下,
- 如果使用递归实现最大堆,有思路吗。
- 递归有什么缺点。(我扯到了栈溢出)
- 什么情况下会出现栈溢出呢。
- 栈溢出和内存溢出有区别吗,
- 如何检测栈溢出,
- 模板了解吗,模板有什么缺点,有什么优点。模板在什么时候,C中有模板吗
- STL了解吗,vector和普通的数组有什么区别,vector是如何分配内存的,vector的resize函数是怎么工作的,扩容在后面扩容吗,还是另找一块内存。
- map了解吗。(我讲其底层实现是红黑树),红黑树是什么,红黑树和平衡二叉树的应用场景,
- C和C++的区别是什么
- C++调用C如何调用。
- C中有重载吗。
- 口述算法,(我感觉问算法的时候是另一个人,声音不太一样。。)
给你一个无序的数组,请找出里面不能够被5所整除的数,返回这个数组(我最后回答的双指针解决)
复盘发现自己错的还挺多,加油加油!
许愿二面,