文章目录

  • 第二章 面试需要的基础知识
    • 1.1 面试官谈基础知识
    • 1.2 编程语言
    • 1.3 数据结构
    • 1.4 算法和数据操作

第二章 面试需要的基础知识

1.1 面试官谈基础知识

  1. 数据结构和算法,编程能力,部分数学能力,问题分析和推理能力
  2. 编程基础,计算机基础,算法设计
  3. 计算机操作系统,编程语言,数据结构

1.2 编程语言

  1. 考察形式
  • 语言的语法
  • 通过实际写代码解决问题
  1. C++
  • 推荐的书籍<effect c++>
  • 设计模式中单例模式时常常考的内容

1.3 数据结构

  1. 数据结构是技术面试中的重点
  • 主要围绕着数组,链表,字符串,树,队列,栈几种常见的数据结构
  • 数组和链表是面试中常常考的两种数据结构,由于使用了指针,应该注意程序的鲁棒性2.
  1. 数组
  • 数组需要实现申明空间大小,数组支持随机存取,读取时间复杂度为O(1),插入删除操作时间复杂度为O(N)
  • 动态数组的考察,数组和指针的关系
  • 当我们遇到复杂的问题的时候,一个有效的方法就是从一个具体的问题入手,通过分析简单具体的例子,找出普遍的规律。(二位数组的查找)
  1. 字符串
  • C/C++中的字符串都是以“\n”结尾的。
  • 为了节省内存,C/C++把常量字符串放到单独的一个内存区域中,当使用几个不同的指针指向的时候,实际指向的是相同的内存地址。
  • 常考的字符串的复制,比较,插入等。可以打破常规思维,从后往前遍历。
  1. 链表
  • 链表是面试时候被问及最多的一种数据结构
  • 链表的创建,插入删除节点和查询节点实现起来代码量都不大。
  • 在面试中如果要修改输入数据时,最好问面试官是否允许进行修改。

在写测试用例的时候,常常分为功能测试和特殊输入测试。

  1. 树是一种在实际编程中常常用到的数据结构,由于树的实验涉及到大量的指针,所以面试中考的概率不大
  2. 面试中要考察的树常常为二叉树,常考查二叉树的遍历:
  • 前序遍历
  • 中序遍历
  • 后序遍历

3种遍历方法都有循环和递归的时现,需要对这6种方法比较了解。

  • 二叉树的另外两个特例是堆和红黑树
  • 有很多快速找到最大值和最小值的算法都用到堆来实现
  1. 栈和队列
  2. 栈是一个非常常见的数据结构,在计算机中被广泛应用。
  • 通常栈是一个不考虑排序的数据结构,找到最大值或者最小值需要O(N)的时间。
  1. 队列是另外一种比较重要的数据结构
  • 对列和栈两个数据结构是相互联系的,可以相互表示。

1.4 算法和数据操作

重点掌握二分查找,归并排序,快速排序,能够做到随时随地快速准确的用代码实现他们。
很多算法都可以使用循环和递归实现,其中递归方法看起来代码简洁,但是性能不佳。
位操作应该也要进行掌握

  1. 查找和排序
  • 查找和排序是程序设计中常用到的算法
  • 查找比较简单,包括:顺序查找,二分查找,哈希查找和二叉树查找。
    • 如果面试中要对一个排好序的数组或者部分排序的数组进行查找,都可以考虑使用二分查找的方法
    • 哈希表最主要的优点是可以完成在O(1)时间内查找某个元素,但是需要额外的空间来实现哈希表。
    • 二叉搜索树是树结构在查找算法中的应用。
  • 排序算法比查找算法要难一些,需要我们对常见的一些排序算法熟记于心。
    • 插入排序,冒泡排序,归并排序,快速排序等不同排序算法的优劣。
    • 可以从空间消耗,平均时间复杂度和最坏时间复杂度去分析比较。
    • 快速排序的代码常常被要求写出。
    • 如果面试官要求实现一个排序算法,一定要问清楚排序算法的应用背景,再来决定使用哪种排序算法。
  1. 递归和循环
  • 如归针对一个问题需要重复多次计算相同的问题,则可以使用递归或者循环两种方法。
  • 递归代码相比于循环代码常常比较简洁;在树的前序,中序,后序遍历中常常采用递归算法。如果面试中没有说明用循环还是递归,最好先用循环实现后,再用递归实现。

测试用例:功能测试,边界值测试,性能测试

  1. 位运算
  • 位运算是把数字用二进制表示后,对每一位上的0或者1进行运算。
  • 熟练掌握2进制和10进制之间的转换关系,熟悉掌握二进制数的与,或,异或,左移好和右移操作。

剑指offer_02相关推荐

  1. 【剑指offer】顺时针打印矩阵

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...

  2. 牛客网_剑指Offer_Python实现_更新中

    剑指Offer编程题汇总 第1题_二维数组中的查找 第2题_替换空格 第3题_从尾到头打印链表 第4题_重建二叉树 第5题_用两个栈实现队列 第6题_旋转数组的最小数字 第7题_斐波那契数列 第8题_ ...

  3. 剑指Offer_Python实现

    基于python的<剑指offer> 剑指Offer-Python答案 剑指Offer-面试题的Python实现 Python基础算法/剑指offer

  4. 销量过亿的《剑指0ffer》题目和答案电子书 (附下载)

    如果有人问面试前该看哪些题,有什么书籍可以推荐,那么<剑指offer>一定必读不可,这本书书豆瓣评分高达 9.0 ,非常适合集中时间阅读.电子书下载 1.扫码关注「顶级架构师」订阅号 2. ...

  5. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  6. c语言一维数组逆序输出_剑指信奥 | C 语言之兵人来袭!

    趣乐博思剑指信奥系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详 ...

  7. 【每日一题】剑指 Offer 10- I. 斐波那契数列

    剑指 Offer 10- I. 斐波那契数列

  8. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  9. 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...

    点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...

最新文章

  1. 你向 Mysql 数据库插入 100w 条数据用了多久?
  2. 自然灾害能否被利用?
  3. windows通过putty连接虚拟机Fedora
  4. 20220401 A满秩,B满秩,AB一定满秩
  5. Boost:assume aligned假设对齐的测试程序
  6. java new 面试_java面试30问
  7. OSL LLVM 3.3 Related Changes
  8. 5月第3周安全回顾 思科路由器Rootkit现身 企业需漏洞管理
  9. Atitit 提升语法级别4gl 4.5g 4.9g 5g 目录 1. 语言级别表 1 2. 4.9g实现细节 2 2.1. $dollor前导符 2 2.2. Static变量 2 2.3. S
  10. micropython ide 8266_老外开发的MicroPython IDE,可用于开发ESP8266
  11. DataFactory造数-常用的数据产生方式
  12. 【原创】新韭菜日记20---在国内股市亏钱的最大原因就是杠杆和割肉
  13. python界面编程实例_Python GUI编程 文本弹窗的实例
  14. 微信视频号头像怎么换?怎么设置?必看!5个思路帮你快速敲定头像
  15. CC(标准)版D碟收藏指南(四)
  16. 计算机专业硕士论文评语,硕士论文评审意见范文
  17. AMOS从模型到分析
  18. 老李的博客在这里安家了
  19. linux mii 调试总结
  20. C语言计算1000以内(含1000)既能被3整除也能被7整除的自然数的个数n

热门文章

  1. 找了个学习uboot makefile的好地方 不过不让转载 那就把网址分享一下吧
  2. C语言依次显示图片,c语言能显示图片吗
  3. 信道容量受哪三个要素_影响信道容量的主要因素有哪些
  4. 【转】SVN各种颜色状态
  5. 【转】刨根究底字符编码之二——关键术语解释(下)
  6. 【转】0.SharePoint服务器端对象模型 之 序言
  7. python 几何教学_opencv-python教程学习系列11-几何变换
  8. JAVA 捕获异常所遇BUG
  9. 【CodeForces - 798A】Mike and palindrome (回文串,水题,字符串问题)
  10. 【CF#2A】Winner(模拟 STL-map)☆