剑指offer--C++面试总结

(本文章根据自己阅读《剑指offer名企面试官精讲典型编程题》总结C++面试)

一、非技术方面

1、薪资方面:

①招聘网站对应岗位的相关薪资结合自己的能力定下自己的期望薪资和最低接受工资。

②面试过程中自己不主动提薪资,一般薪资在面试最后阶段提及,此时公司对自己有意向,才有谈薪资前提。谈薪资阶段问面试官这个岗位的薪资范围,在根据自己的期望薪资和最低工资合理调整,当然也要考虑一下你对进该公司的意愿强弱。我看一般建议都是在自己想要的工资上提高一些,原因可能是在被杀价后,还有些余地。

2、跳槽原因:

①回答该问题时不要抱怨,不要流露负面情绪。

②避免原因:老板太苛刻、同事难相处、加班太频繁、工资太低(很多人是这个原因吧)

③对于我来说的标准答案:软件无到有,都是我和另外一个同事一起开发的,刚刚开始注重软件功能实现,后面在于修复bug和优化代码提高性能和可扩展性方面的内容,而现在基本就是简单的维护,所以想寻找一些更有挑战性的工作,对贵公司的音视频开发比较感兴趣,而且也在工作中接触到相关的开发任务,明白音视频是C++开发一个很好的发展方向,从而希望找一份主要涉及音视频开发的工作。

二、技术相关方面

总结各章知识点

1、基础知识

1.1、编程技巧

个人感觉非常有效的编程技巧:在实现功能之前,先写测试程序。(这样可以很大程度地完善程序对异常情况的处理,和效率的提高)

1.2 C++基础

1.3 数据结构

数据结构:数据结构一直是技术面试的重点,大多数面试题都是围绕着数组、字符串、链表、树、栈以及队列这几种常见的数据结构展开的,因此每一个应聘者都应该熟练掌握这几种数据结构。

        数组和字符串是两种最基本的数据结构,它们用连续内存分别存储数字和字符。链表和树是面试中出现频率最高的数据结构。由于操作链表和树需要操作大量的指针,应聘者在解决相关问题的时候一定要留意代码和鲁棒性,否则容易出现程序崩溃的问题。栈是一个与递归紧密相关的数据结构,同样队列也与广度优先遍历算法紧密相关。深刻理解这两种数据结构能帮助我们解决很多算法问题。

备注:

深度优先遍历类似树的先序遍历。

广度遍历类似树的层次遍历。

1.3.1 数组:

数组可以说是最简单的一种数据结构,她占据一块连续的内存并按照顺序存储数据。创建数组时,我们需要首先指定数组的容量大小,然后根据大小分配内存。即使我们只在数组中存储一个数字,也需要为所有的数据预先分配内存。因此数组的空间利用效率不是很好,经常会有空闲的区域没有得到充分利用。

 

1.4 算法

1.4.1 (查找和排序)需要随时可编写的算法

面试小提示:

        如果面试题是要求在排序的数组(或者部分排序的数组)中查找一个数字或者统计某个数字出现的次数,我们都可以尝试使用二分查找算法。

1.4.1.1 快速排序

1.4.1.2 归并排序

1.4.1.2 二分查找

1.4.2 算法的时间复杂度和空间复杂度

2.高质量的代码

2.1 代码的规范性

2.1.1 清晰的书写

2.1.2 清晰的布局

2.1.3 合理的命名

面试小提示:

        写代码时,最好使用完整的英文单词组合命名变量和函数,提高代码可读性。

2.2 代码的完整性

2.2.1 功能测试

2.2.2 边界测试

2.2.3 负面测试

2.2.4 三种错误处理的方法:

面试小提示:

       由于计算机表示小数(包括float和double类型)都有误差,我们不能直接用等号(==)判断两个小数是否相等。如果两个小数差值的绝对值很小,比如小于0.0000001,就可认为它们相等。

 位操作小提示:

         位操作包括左移(右边补0,左移一位相当于乘2),右移(负数左边补1,非负数补0,右移一位相当除2),与(1&1=1其他为0),或(0|0=0其他为1),异或(位相同为0,不同为1)

3.解决面试题思路

4.优化时间和空间效率

5 面试题

5.1 赋值运算符函数

5.2 实现Singleton模式

5.3 二维数组中的查找

5.4 替换空格

5.5 从尾到头打印链表

5.6 重建二叉树

5.7 用两个栈实现队列

5.8 旋转数组的最小数字

5.9 斐波那契数列

5.10 二进制中1的个数

5.11 数值的整数次方

5.12 打印1到最大的n位数 

5.13 在O(1)时间删除链表结点

5.14 调整数组顺序使奇数于偶数前面

5.15 链表中倒数第k个结点

5.16 反转链表

5.17 合并两个排序的链表

5.18 树的子结构

5.19 二叉树的镜像

5.20 顺时针打印矩阵

5.21 包含min函数的栈

5.22 栈的压入、弹出序列

5.23 从上往下打印二叉树

5.24 二叉搜索树的后序遍历序列

5.25 二叉树中和为某一值的路径

5.26 复杂链表的复制

5.27 二叉搜索树与双向链表

5.28 字符串的排序

5.29 数组中出现次数超过一半的数字

5.30 最小的k个数

5.31 连续子数组的最大和

5.32 从1到n整数中1出现的次数

5.33 把数组排成最小的数

5.34 丑数

5.35 第一个只出现一次的字符

5.36 数组中的逆序对

5.37 两个链表的第一个公共结点

5.38 数字在排序数组中出现的次数

5.39 二叉树的深度

5.40 数组中只出现一次的数字

5.41 和为s的两个数字VS和为s的连续正数序列

5.42 翻转单词顺序VS左旋转字符串

5.43 n个骰子的点数

5.44 扑克牌的顺子

5.45 圆圈中最后剩下的数字

5.46 求1+2+...+n

5.47 不用加减乘除做加法

5.48 不能被继承的类

5.49 把字符串转换成整数

5.50 树中两个结点的最低公共祖先

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值