C++后台研发面试总结
前言:
从中秋到国庆这几天面试了几家公司,有大公司也有小公司,连续几天面试没有系统的整理整理,正好有时间系统的整理一下,好多考点牛客的大佬们都分享过了,虽然每个人的方向不相同,不过多看一些总能找到一些高频度的问题
题目:
1:给出一个二叉树的前序遍历和中序遍历写出后序遍历 或者给出中后遍历写出前序遍历
2:二叉树的非递归前序、中序、后续遍历
3:寻找一个数组中第K大数->(进阶)寻找一个数组中距离第K大数最近的k个数(绝对值最小的k个数)
4:洗牌算法 将一个数组随机打乱(最好是空间复杂度为O(1))
5:手写快速排序、归并排序、堆排序等排序算法(掌握其时间复杂度、空间复杂度、稳定性等)
6:链表增加删除(我碰到的是一个链表中删除元素为x的节点、返回头节点)
7:查找一个序列中连续子序列的最大和
8:给定一个序列,查找一个序列中是否含有一个组合[a,b,c] a + b + c = 0并且a,b,c的下标互不相同(我给出的是一个O(n*n)复杂度的一个算法)
9:约瑟夫环模拟
10:访问一个URL地址到返回信息所经过的协议
11:什么是无服务、什么是拒绝服务
12:虚拟地址怎样映射到物理地址
13:TCP与UDP的区别
14:TCP是如何保证数据稳定传输的(滑动窗口的原理)
15:进程与线程的区别
16:进程间通信的几种方式
17:select、poll、epoll的区别(epoll的两种触发方式 边缘触发与水平触发 网络编程内容)
18:linux常用命令
19:TCP三次握手四次挥手以及2msl的作用
20:struct内存对齐问题、为什么内存对齐能够提高效率以及在哪里提高了效率(被面试官狂怼 没仔细研究过)
21:哈希表问题、处理冲突、冲突优化等(如拉链法的链表退化问题 随机播种 或者大于系统阈值转化红黑树)(基本上每个面试官必问 看到这个问题的去仔细研究研究哈希表的相关内容 我是踩了一堆大坑)
22:http与https的区别
23:dns服务器是怎样工作的
24:压测服务(一个服务上线 测试其最大承受压力 然而我并不会)
25:查找一个字符串中第一次出现一次的字符(O(n)时间复杂度)
26:一个array[99]的数组中存放了99个1~100的数,存放的数互补重复,问缺失的数是多少(最好是O(1)的时间复杂度)
27:C/C++里const关键字的用法及作用
28:static在C++里的用法及作用
29:C++中类的大小计算问题
30:C++多态以及虚函数表
31:重写与重载的区别
32:静态多态与动态多态
33:STL的相关内容(vector,list,map,set…… )
暂时就想到这么多了 后期想到在更吧 推荐在找工作的(偏向C++方向)看一看 STL源码剖析、C++Primer、程序员面试宝典、编程之美、剑指offer、Unix网络编程等书籍
当然不能少了刷一些题,如果是参加各种竞赛的这个环节可以少下点功夫,数据库、操作系统的高频考点要了解一些 设计模式看看一些重要的概念就可以,面试宝典有相关介绍
最重要的是将你所长展示给面试官,你不擅长的面试官也不会难为你,就说这么多吧。