首页 > 其他分享 >面试八股回答通用模板

面试八股回答通用模板

时间:2023-08-17 11:57:31浏览次数:41  
标签:八股 虚表 函数 元素 list 面试 vector 模板 指针

面试八股回答通用模板

1、整体回答思路

面试的八股问题都可以尝试从以下几个方面来回答即:

是什么、为什么、怎么做、举例说明、对比分析、结合实际

2、举例说明

面试官:介绍一下vector和list的区别以及优缺点?

“是什么”:vector 是一个动态数组,它在内存中以连续的方式存储元素。list 是一个双向链表,它在内存中以非连续的方式存储元素。
“为什么”:由于 vector 和 list 的底层实现方式不同,它们在访问元素、插入删除元素等方面有着不同的性能特点。vector 支持随机访问,访问任意位置的元素时间复杂度都是 O(1);但是在中间位置插入或删除元素时,需要移动大量元素,时间复杂度为 O(n)。list 不支持随机访问,访问任意位置的元素时间复杂度为 O(n);但是在任意位置插入或删除元素时,只需要修改指针,时间复杂度为 O(1)。
“怎么做”:在选择使用 vector 还是 list 时,需要根据具体情况来决定。如果需要频繁访问任意位置的元素,那么使用 vector 会更合适;如果需要频繁在中间位置插入或删除元素,那么使用 list 会更合适。
举例说明:假设我们要实现一个文本编辑器,需要支持在文本中任意位置插入或删除字符。由于文本编辑器需要频繁在中间位置插入或删除字符,因此使用 list 来存储文本内容会更合适。
对比分析:vector 和 list 都有各自的优缺点。vector 支持快速访问任意位置的元素,但是在中间位置插入或删除元素时效率较低;list 在中间位置插入或删除元素时效率较高,但是不支持快速访问任意位置的元素。
结合实际:在实际开发中,我们需要根据具体情况来选择使用 vector 还是 list。如果需要快速访问任意位置的元素,那么使用 vector 会更合适;如果需要快速在中间位置插入或删除元素,那么使用 list 会更合适。

面试官:说一下C++的虚函数 、虚表 、虚指针?

“是什么”:虚函数、虚表和虚指针都是 C++ 中实现多态的重要概念。虚函数是指在基类中声明为 virtual 的成员函数。当派生类重写基类的虚函数时,通过基类指针或引用调用该虚函数时,会根据实际对象的类型来调用相应的函数。虚表是一个存储虚函数地址的表,每个包含虚函数的类都有一个虚表。虚指针是一个指向虚表的指针,每个包含虚函数的对象都有一个虚指针。
“为什么”:使用虚函数、虚表和虚指针可以实现多态。多态是指同一个方法在不同的对象上可以有不同的行为。这种特性可以让程序更具有灵活性和可扩展性。
“怎么做”:要实现多态,需要在基类中声明虚函数,并在派生类中重写该虚函数。当通过基类指针或引用调用该虚函数时,程序会根据实际对象的类型来调用相应的函数。
举例说明:假设我们有一个基类 Shape 和两个派生类 Circle 和 Rectangle。Shape 类中有一个虚函数 draw(),用来绘制图形。Circle 和 Rectangle 类分别重写了 draw() 函数,用来绘制圆形和矩形。当我们通过 Shape 类型的指针或引用调用 draw() 函数时,程序会根据实际对象的类型来调用 Circle 类或 Rectangle 类中的 draw() 函数。
对比分析:使用虚函数、虚表和虚指针可以实现多态,让程序更具有灵活性和可扩展性。但是这种方式也会带来一些额外的开销,例如每个包含虚函数的对象都需要额外存储一个虚指针。
结合实际:在实际开发中,我们可以根据需要使用虚函数、虚表和虚指针来实现多态。这种方式能够让程序更具有灵活性和可扩展性,但也需要注意它所带来的额外开销。

链接:https://www.nowcoder.com/discuss/520347007119073280

标签:八股,虚表,函数,元素,list,面试,vector,模板,指针
From: https://www.cnblogs.com/z-qhhh/p/17637214.html

相关文章

  • C++之右值引用与完美转发与可变参数模板(万字长文详解)
    C++之右值引用与完美转发与可变参数模板左值引用和右值引用的概念​ 传统的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用,都是给对象取别名。那么到底什么是左值什么是右值呢?难道说赋......
  • MySQL面试题全解析:准备面试所需的关键知识点和实战经验
    MySQL有哪几种数据存储引擎?有什么区别?MySQL支持多种数据存储引擎,其中最常见的是MyISAM和InnoDB引擎。可以通过使用"showengines"命令查看MySQL支持的存储引擎。存储方式:MyISAM引擎将数据和索引分别存储在两个不同的文件中,一个是.MYD文件用于存储数据,一个是.MYI文件用于存储索......
  • 【转载】JUC常见面试题:Java线程和操作系统线程有什么区别
    【转载】JUC常见面试题:Java线程和操作系统线程有什么区别整理来自于:https://cloud.tencent.com/developer/article/18181511操作系统的用户态和核心态在操作系统中,内存通常会被分成用户空间(Userspace)与内核空间(Kernelspace)这两个部分。当进程/线程运行在用户空间时就处于用......
  • 前端八股文
    面试题(八股文)html常见面试题doctype的意义是什么:(写在html开头的那个单词)让浏览器知道所接受的html的合法性让浏览器能以标准的模式进行渲染HTML,XHTML,HTML5的区别:HTML属于SGMLXHTML属于XML,是HTML进行XML严格化的结果HTML5不属于SGML.也不属于XML(有自己的独立规范),比XHYTML宽......
  • 一些蒟蒻的模板
    快速排序平时写题用sort就行了,但是如果要求排序就中间结果诸类的题,还是有点用!听说longlongago,高中组的比赛只要会打sort代码就能得分(当时不允许用STL)我也想比赛考这样的题……快排主要还是边界问题为了防止快排退化为冒泡,可以采用随机数(不过平时我还是习惯取中间值……) ......
  • JavaScript面试题2
    JavaScript21.下面代码的输出是什么?functionsayHi0{ console.log(name);        console.log(age);        varname="Lydia";        letage=21;       }//打印出来:undefined和......
  • Java面试题:String类的常用方法都有哪些?
    Java面试题:String类的常用方法都有哪些?publicclassTest03{/*String类常用方法*/publicstaticvoidmain(String[]args){Stringstr1="Abcdefg123";//常见String类的获取功能System.out.println(str1.length());//计算St......
  • HashMap常见面试题
    HashMap的底层数据结构?JDK1.8之前HashMap底层是数组和链表结合在一起使用。HashMap通过key的hashCode经过扰动函数处理过后得到hash值,然后通过(n-1)&hash判断当前元素存放的位置(这里的n指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的......
  • HashMap常见面试题
    HashMap的底层数据结构?JDK1.8之前HashMap底层是数组和链表结合在一起使用。HashMap通过key的hashCode经过扰动函数处理过后得到hash值,然后通过(n-1)&hash判断当前元素存放的位置(这里的n指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素......
  • java面试题及答案(基础篇)
    如今IT仍是热门行业,面试程序员的人也非常多,那么,怎样才能顺利通过面试呢?2021最新java面试题及答案(基础篇),为你的面试助攻!1、Java中的内存溢出是如何造成的?OutOfMemoryError:(1)PerGernSpace程序中使用了大量jar或class,使Java虚拟机装载类空间不够。解决方案:调参XX:PermSize和XX:MaxP......