美文网首页
面试题目收集总结

面试题目收集总结

作者: Buyun0 | 来源:发表于2018-08-06 12:28 被阅读0次

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查询,流程

相关文章

  • 面试题目收集总结

    C++: 多态: 多态性都有哪些?(静态和动态,然后分别叙述了一下虚函数和函数重载) c语言和c++有什么区别?(...

  • 技术面试 题目收集

    ## 基本知识 ## 1.重载和重写的区别 1.静态代码块,还有静态的作用,静态代码块的特点 1.讲一讲代理是什 ...

  • TCP/udp区别

    转载自:TCP与UDp的区别 前言:前几天有幸看到面试题目收集中的面试题目总结,觉得既容易又复杂。容易是因为都知道...

  • iOS 面试题笔记

    收集一些 iOS 面试的题目 收集了一些网上比较常见的面试题 问题1 在UITableViewCell 构造方法中...

  • java面试分享:2019年最新美团java三面,以及六点面试总

    1.技术三面题目: 2.面试题目总结 1.Java集合类:hashmap、currenthashmap等,建议面试...

  • 阿里、腾讯各个大厂最受欢迎面试题合集

    (长期更新)此贴用来收集Java相关的面试题集合,以及面试技巧 技术面试题推荐: 天猫面试题(含总结):线程池+并...

  • 面试题目总结

    阿里机器学习面试的一些题目, 1.说一下KNN的过程(刚开始的时候和k-means搞混了。。。) KNN是k ne...

  • 面试题目总结

    算法 统计学习方法,每一个算法KNN,朴素贝叶斯,决策树,logistic回归,支持向量机,提升算法,EM算法,隐...

  • 面试题目总结

    将字符串转为整数 数字转化为字符串 字符串比较 读者写着模型 反向字符串 请编写一个C 函数,该函数在给定的内存区...

  • 面试题目总结

    手写深度比较,模拟lodash中的isEqual split和join split:字符串转数组 join:数组转...

网友评论

      本文标题:面试题目收集总结

      本文链接:https://www.haomeiwen.com/subject/gfwwvftx.html