《剑指Offer v2》数据结构与算法 职业素养+经验总结记录

文章强调了面试中对候选人综合能力的考察,包括扎实的基础知识、高质量的代码、清晰的思路、时间与空间效率的优化以及全面的综合能力如沟通和学习能力。重点提到了代码的规范性、完整性和高效性,解决问题时的抽象思维,以及常见的测试用例和错误处理。此外,文章还讨论了职业素养和基本技能在面试中的重要性,如边界条件判断和算法优化。
摘要由CSDN通过智能技术生成

《剑指Offer v2》数据结构与算法

面试考察的是一个人的综合能力, 这一点从面试官的角度去解读, 确实对面试的理解更立体。

一 具体考察的点

  1. 扎实的基础知识
  2. 高质量的代码
  3. 解决问题清晰的思路
  4. 优化时间和空间效率的能力
  5. 全面的综合能力

二 高质量的代码

  1. 代码的规范性
    1.1清晰地书写
    1.2清晰的布局
    1.3合理的命名
  2. 代码的完整性
    2.1功能测试
    2.2边界测试
    2.3负面测试(特殊输入测试)
  3. 代码的鲁棒性
    采取防御性编程
  4. 代码的高效性
    4.1时间消耗与空间占用
    4.2性能测试

进阶要求:

  1. 代码的可扩展性【资深开发工程师】
    剑指 Offer 21. 调整数组顺序使奇数位于偶数前面【用一个单独的函数来判断是否符合标准,用函数指针调用函数】
    剑指 Offer 60. n个骰子的点数【全局变量g_max_value表示骰子最大点数】
  2. 代码的可维护性
  3. 代码的可移植性

三 解决问题清晰的思路

3 种思路来解决问题:

  1. 画图让抽象问题形象化
  2. 举例让抽象问题具体化
  3. 分解让复杂问题简单化

四 优化时间和空间效率的能力

优化时间效率及空间换时间的常用算法。

五 全面的综合能力

沟通能力和学习能力、知识迁移能力、抽象建模能力和发散思维能力。

六 职业素养

  1. 有时候面试官故意把题意说得模糊些, 需要面试者主动去询问, 并理解思路, 因为这样的面试者更主动, 而且更容易沟通;
  2. 在编写代码前, 先主动向面试官解说自己的解题思路, 然后实际编写代码, 优秀程序员的好习惯;
  3. 良好的编程习惯:
    1先进行分析与设计;
    2然后设计全面的测试用例;
    3在编写代码时体现测试用例;
    4最后用测试用例进行检查测试;
    5提交;
  4. 防御性编程的习惯,写出鲁棒的程序。

七 基本技能体现

  1. 对边界条件的判断和意识, 空指针, 整数溢出
  2. 优化能力, 基本算法优化技巧, 动态规划, 空间换效率
  3. 知识迁移, 学习和建模能力

八 常见程序崩溃或错误问题

1数组越界导致程序崩溃
2大数溢出问题
3向量下标超出范围
4数值的上、下边界溢出
5空间不够用
6需要另起炉灶的额外处理
7除0的意外操作

九 常见测试用例总结

二叉树:
功能测试:普通的二叉树;二叉树的所有节点都没有左子树或者右子树;只有一个节点的二叉树;
特殊输入测试:二叉树的根节点为nullptr指针;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值