面试题目收集总结

C++:

多态

  1. 多态性都有哪些?(静态和动态,然后分别叙述了一下虚函数和函数重载)

  2. c语言和c++有什么区别?(大体讲了 一下,继承、多态、封装、异常处理等)

  3. C++多态怎么实现的?C++的虚表存放在哪里?

  4. 虚函数相关,虚析构函数,运行时多态。

  5. 多态是怎么样的?写个样例?

  6. 虚函数的内存管理(常见问题,建议把虚函数表、多态的实现过程这些都讲一讲)

C++ 与C/java:

  1. c语言和c++有什么区别?(大体讲了 一下,继承、多态、封装、异常处理等)

  2. Java的是怎样解决循环引用的,那C++怎么解决呢

  3. c++中有哪四种类型转换,举例说明,

  4. 四种类型转换机制?

  5. 静态成员函数和数据成员有什么意义?

  6. 全局与局部静态变量区别(感觉面试官是想问比较深入的内容,但我当时就答了作用域以及内存分配......请大神指点)

全局变量 静态全局变量 静态局部变量 局部变量
数据保存位置 内存静态储存区 内存静态储存区 内存静态储存区 内存的栈区
作用域 整个工程文件内 定义他的文件内 定义他的函数内(程序仅分配一次内存,函数返回后数据不会清零 定义他的函数内,但函数返回后会失效
初始化值 0 0 0 不可知
  1. 类如何实现只能静态分配和只能动态分配(前者是把new、delete运算符重载为private属性。后者是把构造、析构函数设为protected属性,再用子类来动态创建)

  2. C++标准库的sort做了哪些优化,用sort处理文本的各种参数
    参考:sort源码剖析

    • 在数据量很大时采用正常的快速排序,此时效率为O(logN)。
    • 一旦分段后的数据量小于某个阈值,就改用插入排序,因为此时这个分段是基本有序的,这时效率可达O(N)。
    • 在递归过程中,如果递归层次过深,分割行为有恶化倾向时,它能够自动侦测出来,使用堆排序来处理,在此情况下,使其效率维持在堆排序的O(N logN),但这又比一开始使用堆排序好。
  3. const关键字的作用?(const成员函数,函数传递,和define的区别)

  4. const在类中方法后面的作用,想改变成员的值怎么做。

  5. const int *, int * const有啥区别

  6. const char* fff(const char * const t ) const;每个const的作用

  7. new与malloc的区别,delet和free的区别?

  8. 如何实现申请一大片连续空间,避免多次使用new等调用(当时说的是allocator,不知道还有没有其他答案)

  9. 浅拷贝与深拷贝(介绍完按位拷贝等内容后,最好再指出按位拷贝会导致内存多次释放等风险)

  10. 空类默认生成哪些函数(构造函数、析构函数、拷贝构造函数、以及拷贝赋值函数,参考《Effective C++》)

l 必须在构造函数初始化式里进行初始化的数据成员有哪些?

  1. 操作符重载(+操作符),具体如何去定义,?(让把操作符重载函数原型说一遍)

  2. new 重载?

  3. 编译器如何识别函数重载(overload,不是override)

  4. 深层复制与浅层复制?

  5. 类的封装:private,protected,public

  6. 迭代器删除元素的会发生什么?

  7. 为什么要用static_cast转换而不用c语言中的转换?

  8. 内存溢出有那些因素?

  9. 模版特化的概念,为什么特化?

  10. explicit是干什么用的?

  11. 异常机制是怎么回事?

  12. 如何实现只能动态分配类对象,不能定义类对象?(这个牛客上的题目,我把如何只能动态分配和只能静态分配都讲了一下)

  13. 继承机制中对象之间是如何转换的?、

  14. 链接指示:extern “C”(作用)

  15. 内联函数(讲了一下内联函数的优点以及和宏定义的区别)

  16. 模版怎么实现?

  17. 内存对齐的原则?(原则叙述了一下并举例说明)
    ·sizeof原则:
    1.vector与string只返回类型固定大小:

           vector<int> a(10);
           vectro<string> b;
           string c = "dfdfdfd";
           string d = "sd";
           map<int,string> e;
           sizeof(a) = 16;
           sizeof(b) = 16;
           sizeof(c) = 28;
           sizeof(b) = 28;
           sizeof(e) = 12;
           int f[10];
           sizeof(f) = 40;
           sizeof(f)/sizeof(f[0]) = 10;(元素个数)
    
  18. Lambda

  19. volatile关键字的作用,被质疑这个关键字真的有用吗

虚函数:

  1. 虚函数、纯虚函数、虚函数与析构函数?(纯虚函数如何定义,为什么析构函数要定义成虚函数)

  2. 虚函数,虚函数表里面内存如何分配)?

  3. C++中虚函数与虚继承,指针与引用区别,C++11了解不,泛型编程用过没有,override是做什么的,智能指针介绍下,一般怎么调试程序,用什么工具。

  4. 虚函数,虚表,虚析构函数,派生类的虚表,override之后怎么样,纯虚基类的实例对象大小

  5. C++虚函数的实现

  6. C++内存模型,类的数据放在什么地方,类的函数放在什么地方,虚函数表,虚函数表指针,虚继承情况下的虚函数表,

  7. 虚函数表指针初始化是在什么时候

  8. 四种类型转换(static_cast, dynamic_cast,const_cast,reinterpret_cast)

  9. 虚析构函数

  10. 编译器如何判断两个类的指针或引用转换是不是父子类(虚函数表之前会有类型信息)

  11. 构造函数中可以调用虚函数方法吗

  12. 虚函数的内存管理(常见问题,建议把虚函数表、多态的实现过程这些都讲一讲)

  13. 虚继承的底层原理,成员变量怎么共享的; 在执行main函数之前,都会执行哪些操作

  14. inline和virtual能够同时修饰吗

  15. Virtual能修饰构造函数

  16. static相关知识

  17. explicit关键字的作用(修饰构造函数,用于抑制隐式转换,“原则上应该在所有的构造函数前加explicit” ----《C++ Primer》)

  18. 函数调用过程

  19. 静态链接与动态链接

STL

  1. stl有哪些容器,了解哪一些,展开说一说?

  2. 对比vector和set的实现,介绍一下红黑树

  3. vector和list区别,vector如何开辟的时候内存满了怎么办?

  4. vector的push_back为什么要扩容2倍或者1.5倍?内存扩展的参数为什么是2倍,最佳倍数是多少(大于1且小于2间的任意数字)

  5. 内存扩展导致发生拷贝时,具体是如何拷贝的(STL算法copy函数实现以及模板偏特化)

  6. Vector用法

  7. vector如何实现动态增长(面过的几家公司都问到这个问题,感觉不能只说resize之类的函数,还需要细化到vector内部的allocator如何工作等细节,具体可参考《STL源码剖析》)

  8. map的key和value的类型选择,都有哪些限制(key要支持operator<,如果没有,那么map模板必须增加第三个模板参数,value类型要支持operator=,此map要支持拷贝构造并有默认的构造函数。楼主想到的是这些,欢迎补充)

  9. STL中map与unordered_map

  10. map\set\unorder_map\unorder_set的区别

  11. map与hashmap底层实现(红黑树以及哈希表),哈希碰撞是如何解决的,两种实现各自的优缺点

  12. STL中迭代器的作用,有指针为何还要迭代器。

  13. strcpy函数的编写?

  14. strcpy返回类型是干嘛用的?

  15. 哈希表解决冲突的方法(开放定址、再哈希、链表、公共溢出区,可以适当深入,比如分析各自的优缺点)

  16. STL 内存池,nginx内存池,两个各自优缺点 ,deque底层实现

  17. 哈希冲突的原理和哈希冲突的解决方法

指针/智能指针:

  1. 动态绑定怎么实现?(就是问了一下基类与派生类指针和引用的转换问题)

  2. 指针和const

  3. 的用法?(就是四种情况说了一下)

  4. 继承机制中引用和指针之间如何转换?

  5. 智能指针,auto_ptr与share_prt,auto_ptr类

  6. 如果要你设计,你会怎么设计智能指针

树:

  1. 红黑树的定义和解释?

  2. 二叉平衡树是怎么实现平衡的?

  3. 判断二叉平衡树

  4. AVL树是什么?怎么判断两颗AVL树里含的数据是一样的(这里树的结构可能不一样的)?

  5. b树怎么遍历,多少次io

算法:

很多底层实现面试官也没指望你全部答出来,只要整体的知识脉络把握清楚,再想办法转到自己了解更多的问题就行。

  1. 数据结构中二叉树的前/中/后非递归遍历?(现场画图举例讲解的,所以大家面试的时候尽量多动笔)

  2. 求一棵树中最大的距离,在一颗树中,两个结点之间所经历的边数(即从一个节点到另一个节点需要经过多少条边)称为距离(递归求解,当前节点的左右子树深度之和,即为经过当前节点的最大距离,然后同步更新所求的最大距离)。

  3. 环形加油站问题LeetCode
    已解决:加油站答案

  1. 洗牌算法,如何证明洗牌的随机性

  2. A*算法,寻路,八数码问题

  3. x轴上有n个点,已知每个点的位置p和速度v(正表示向右,负表示向左),每当两个点相碰就消失,问最后碰撞的时间t和两个点

  4. 给n个不相交的区间,查询给定的一个值落在哪个区间,可以预处理区间,要支持多次查询。显然排序加二分

  5. n个区间可以相交,求落在的所有区间段?把相交的部分 分离成单独的区间,完全覆盖的记个数就行,然后就变成上一题了。

  6. 如何得到链表倒数第k个元素
    已解决:链表倒数第k个数-答案

  7. 最大子段和(DP经典问题)

  8. 二维最大子段和(上一题的拓展,把所有可能的数组两两相加即可,时间复杂度O(n3))

  9. 一千万游戏玩家,有一个积分排行榜,积分范围在0-99999,找到重复的积分;考虑内存不足,空间复杂度尽量低,如果内存充足?

  10. 股票买卖问题

  11. 给10w行数据,每行数据都是由<ipstart,ipend,location>的字段构成,<ipstart,ipend>是一个ip范围字段(ipstart<=ipend),这个范围对应一个唯一的地址location,每个ip范围字段不存在交集。问:输入一个ip地址,怎么得出它对应的地址locaiton ?如果ip范围字段存在交集要怎么处理?

  12. Bfs/dfs

  13. 十大排序原理,平均时间复杂度,最差时间复杂度/何时会差

  14. 最长递增子系列 优化

  15. 马走日字,走到特定点最少用了D歩,问给定任意K是否存在一个路径走了K歩也可以走到(小于肯定不行,K-D是偶数随便,要讨论的是K-D是奇数情况)

  16. 数组中只有一个数出现了两次,求这个数,并使得空间 效率最优

  17. 有一个3阶魔方,设计一个数据结构来储存,并设计一个算法来求解魔方

  18. 有500W个QQ号,设计一个合适的数据结构进行储存、查找与维护(这里考虑到查找的高效性,我想的是字典树,但和面试官探讨的过程中,感觉他不是很满意这个答案,大家如有更高效的结构欢迎分享)

  19. 设计题(设计游戏逻辑,麻将/棋牌/玩过的游戏中的技能,特色玩法实现)

a) 设计一个具有getmaxvalue()功能的队列。

b) 设计一个游戏排行榜的实现:1、获取前K名玩家的信息2、输入一个玩家id,能获取玩家当前的排名

  1. 两个函数,不互相关联,一个写在一个循环中调用N次,一个分别写在两个循环中调用N次,问什么情况下第二种比第一种快

  2. 简单概率题,一个圆,往里面随机生成点,要求均匀,怎么办?

  3. 怎么判断一个点是否在三角形内部?

  4. 不用碰撞检测怎么检测两个平面相交?

网络:(网络socket编程不一定要求,但基础知识要了解)

  1. TCP和UDP区别?为什么TCP能保证可靠传输?

  2. TCP三次握手四次挥手流程图,TCP为什么不是两次握手?

  3. TCP三次握手有没有被攻击的可能(如果一个恶意攻击的ip一直请求连接,服务器会发送ack确认,但永远等不到回复,就会导致服务器资源浪费)

  4. TCP四次挥手时最后一次等待要多久,为什么(如A向B发送挥手,则A需要等待2MSL,MSL为最大报文生命期,这是为了确保A的挥手能到达B,不然B会重传第三次挥手的信息。另外也是确保所有此次通话相关报文在网络中消失)

  5. socket流程?

  6. 网络编程的阻塞模式与非阻塞模式区别?

  7. IP是干吗用的

  8. ssh协议以及如何预防中间人攻击、如何免去使用密码(这个网上很多都有介绍,回答时记得理清顺序即可)

  9. http和https有什么区别(前者运行在TCP,后者运行在SSL/TLS上,安全性更高)

  10. select,poll,epoll的区别?io?

  11. 写一个简单的服务端客户端伪代码,哪里可能会阻塞,怎么解决阻塞的问题?

  12. nginx 和 tomcat的原理,优化....

操作系统:

  1. 线程与进程区别与联系,进程间的通讯方式有哪些。

  2. 线程间同步

  3. 线程冲突怎么处理

  4. 进程切换

  5. 多线程的优势

  6. 互斥锁与自旋锁的区别

  7. long的大小,不同位数机器上

  8. 虚拟内存与物理内存

  9. 函数调用堆栈的变化的整个过程,源文件到可执行文件的整个过程,机器为什么使用补码?

  10. 二级索引查数据的流程

  11. 微内核与宏内核

  12. 行程编码的英文缩写是什么,怎么实现的。

  13. 打开文件流写入磁盘的过程,机械磁盘的查找过程

图形学:(除非表示会不然已更改不会问)

  1. 了解多少

  2. 渲染管线流程

  3. 图像处理中时空域与频率域各自的操作方法。

  4. 图像处理中边缘检测的算法知道不

  5. 视频编码与图像编码问题,接触过没有,傅立叶变换公式?(接触过Jpeg与Jpeg2000,问了下怎么实现压缩的)

  6. 图形与图像有什么区别

  7. 光栅化的过程,作用,细分是什么,shader编程的知识,以及锯齿如何解决。

宏观问题:

  1. 怎么学习新技术,对业务和技术的理解

  2. 聊一下你简历的项目

  3. 介绍一下自己最深刻的项目经历

  4. 玩过什么游戏

  5. 对国内游戏行业、公司的了解和看法,具体讲讲自己的见解

  6. 设计模式

  7. linux命令

  8. sql查询,流程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359

推荐阅读更多精彩内容

  • 几种语言的特性 汇编程序:将汇编语言源程序翻译成目标程序编译程序:将高级语言源程序翻译成目标程序解释程序:将高级语...
    囊萤映雪的萤阅读 2,901评论 1 5
  • C++常考题目参考本 1、指针和引用的区别 实体与别名 内存分配,指针需要引用不需要 sizeof() 对象的大小...
    公子本姓严阅读 753评论 0 0
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,666评论 0 10
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,111评论 1 32
  • 最近房间潮了,就重新收拾一番,发现了以前写的打油诗两三篇(虽然现在也不怎么样Õ_Õ) 愁 风,你吹吧!吹走我心头...
    麦芽糖粘牙阅读 246评论 0 1