剑指C++面试
传闻公司老总欠下巨款,带着小姨子跑路了~ 树倒猢狲散,接下来要好好准备面试,以期找到一份满意的工作。
面试准备分下面几个方面进行,形成面试系列文章,文章内容以问答的方式呈现。
1.C++语言基础
传统C++:
虚函数必知必问(父子类构造析构顺序、父类析构函数应该声明为virtual吗) 、多重继承类成员在空间中的分布、四类转型操作符(reinterpret_cast等)使用场景、static关键字的作用、虚函数表的布局(菱形继承的缺点以及每个对象的空间分布)
现代C++:
auto关键字、左值与右值、移动语义与完美转发、for-each循环、智能指针(std::shared_ptr、std::unique_ptr实现细节)、RAII概念、STL容器的emplace_back、线程库std::thread+std::mutex+std::conditon_variable+std::lock_forward、lambda捕获、std::bind+std::function等(待补充)
2.算法与数据结构基础
1)排序(快速排序>冒泡排序>归并排序>桶排序),给出实现原理,分析算法复杂度、最好最坏情况下的复杂度。
2)二分查找使用场景
3)链表的创建、插入、删除、查找、翻转、连接,算法需尽量写出来,注意边界检查、空指针、函数返回链表头部指针以建立引用等
4)队列与栈
队列涉及消费者-生产者模型、多线程同步等
栈的问题通常结合函数调用展开。比如printf函数为什么不能声明为 stdcall方式
5)哈希表(问的比较多)
哈希冲突的检测、哈希插入函数实现、
6)树
红黑树 概念 左旋右旋的方式、分析查找和插入时的平均算法复杂度、最好最坏时的算法复杂度,涉及STL中的MAP
B树问的较少,变形问题:MySQL 索引实现原理
7)其他的一些算法
A*寻路,霍夫曼编码等
3.编码基本功
编程素养如编码风格、计算机英语水平、调试能力等(调试能力是大牛必备)
基础编码题如实现memmove、strcopy、atoi等
4.多线程开发基础
知道何时新建线程、如何创建和等待线程、线程与进程的关系、线程局部存储、多线程竞态的产生和避免(死锁处理)
熟悉日常开发平台所属操作系统的线程同步原语(CriticalSection、Event、Mutex、Sempored、WaitForSingleObject、WaitForMultipleObject)
5.数据库
①传统关系型数据库
1)基本sql操作如增删改查(Insert、delete、update、select)、排序(order)、条件查询(where子句)、限制查询结果数量(limit语句)
2) 高级点的sql操作如(Group by,in,join,left join,多表联合查询,别名使用,select子语句等)
3)数据库本身的操作,建库建表、数据的导入导出
4)SQL优化技巧(非重点)
②内存数据库(redis):
这么说吧,熟悉redis是后台开发的基本要求了。
1)基础用法:redis的基础数据类型、数据持久化、事务等
2)redis源码层面:redis的网络通信模型、redis各种数据结构的实现
redis本身就是一个非常值得学习的开源代码库
6.网络编程
select函数用法、非阻塞connect函数写法、阻塞socket与非阻塞socket区别、send/recv函数的返回值情形、reuse_addr选项等。Windows平台上的WSAEventSelect、
WSAAsyncSelect函数用法、完成端口(IOCP)模型。
更深入的一些知识点有:
1)nagle算法
2)keeplive选项
3)Linger选项(在http中send完后是否立即close socket)
4)处理大量CLOSE_WAIT或TIME_WAIT
5)通讯协议如何设计或如何解决数据包的粘包与分片问题
6)心跳机制如何设计(如何检查死链)
7)断线重连机制如何设计
8)对IO Multiplexing技术的理解
9)如何正确收发数据包,收发缓冲区如何设计
10)优雅关闭
11)定时器如何设计
12)流量拥塞与控制机制
13)tcp与udp的区别与适用场景
14)http中的GET/POST区别
7.项目经验总结
项目整体的架构图、负责处理的模块、解决过什么难以排查的bug等等
剑指C++面试的更多相关文章
- 慕课网:剑指Java面试-Offer直通车视频课程
慕课网:剑指Java面试-Offer直通车视频课程,一共有10个章节. 目录结构如下: 目录:/2020036-慕课网:剑指Java面试-Offer直通车 [6G] ┣━━第10章 Java常用类库与 ...
- 剑指offer 面试5题
面试5题: 题目:请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 方法一: # -*- co ...
- 剑指offer 面试8题
面试8题: 题目:二叉树的下一个节点 题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 解题思路:详见剑 ...
- 剑指offer 面试10题
面试10题: 题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 n=0时,f(n)=0 n=1时,f(n)=1 n>1时,f(n)=f(n-1 ...
- 剑指offer 面试11题
面试11题: 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4 ...
- 剑指offer 面试14题
面试14题: 题目:剪绳子 题:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,且n>1,m>1),每段绳子的长度记为k[0],k[1],k[2],...,k[m].请问k[0] ...
- 剑指offer 面试17题
面试17题: 题目:打印从1到最大的n位数 题:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1.2.3一直到最大的3位数999. 解题思路:需要考虑大数问题,这是题目设置的陷 ...
- 剑指offer 面试26题
面试26题: 题目:树的子结构 题:输入两棵二叉树A和B,判断B是不是A的子结构. 解题思路:递归,注意空指针的情况. 解题代码: # -*- coding:utf-8 -*- # class Tre ...
- 剑指offer 面试29题
面试29题: 题目:顺时针打印矩阵(同LeetCode 螺旋矩阵打印) 题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 ...
- 剑指offer 面试32题
面试32题: 题目:从上到下打印二叉树 题:不分行从上到下打印二叉树 解题代码: # -*- coding:utf-8 -*- # class TreeNode: # def __init__(sel ...
随机推荐
- 第六周博客作业 <西北师范大学| 周安伟>
第六周博客作业 助教博客链接:https://home.cnblogs.com/u/zaw-315/ 本周工作:评阅作业24份点评困难的作业:无作业要求:https://www.cnblogs.com ...
- 使用syslog服务器存储cp防火墙日志配置
版本:R80.20 step1:创建syslog 服务器,如下图: step2:配置syslog 服务器,如下图: step3:配置网关日志服务器,添加设定的syslog服务器,如下图: st ...
- pwnable.kr-bof-witeup
根据原程序可知,输入overflowme变量覆盖key变量即可,所以接下来应该看俩变量的距离,从而构造覆盖的payload. 嗯,他们相差了52个地址,overflowme变量在低地址,存放函数的栈中 ...
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-总目录
CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-总目录: 0.Windows 10本机下载Xshell,以方便往Linux主机上上传大文件 1.CentOS7+CDH5.14.0安 ...
- Linux-Centon7常用命令
查看本机IP # ip addr 进入目录 # cd /xxx/xxx 编辑文件,打开文件后,按“Insert”键,进入输入模式(最下面会显示INSERT),将ONBOOT选项改为yes,然后按“Es ...
- System program tools
program 描述 RSBDCOS0 执行 OS 命令 (已登录在 SYSLOG 和跟踪文件中)
- JavaSE基础知识(7)—常用类
一.包装类 1.理解 java为八大基本数据类型一一对应提供了引用类型,方便使用里面的属性和方法 2.包装类型 byte——>Byteshort——>Shortint——>Integ ...
- boost asio死锁一例
socket close -> sendmessage -> io_service stop 先关闭socket句柄,再给windows窗口发送消息,然后io_service停止. 当se ...
- css伪类及伪元素用法
注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active 大致效果为用鼠标 ...
- iptables命令提取总结,包含扩展模块<取自朱双印博客>
以下内容只是一些命令相关的,以朱双印博客中的iptables的教程提取出来的.纯粹只是命令的总结,如果需要看理论的知识,建议去看朱老师的博客,目前还没有看到写得比这个好的了. <http://w ...