剑指Offer-基础知识

基础知识很重要,语言方面多看书,数据结构与算法不如去刷LeetCode

语言

只关注那些和我有关的语言,Perl,C#,object C啥的就不考虑了

C++

语言面试的三种类型

  1. 直接问对C++语言的理解:类型转换的关键字,变量申请的顺序等,sizeof相关
  2. 给出实现准备好的代码:要求对考点有较为深刻的认识,推荐书籍:Effective C++突击时用,C++Primer学习时用,Inside C++ Object Model对类的理解,The C++ Programming Language深入理解
  3. 写代码定义好的一个类型的成员函数:涉及重载,析构,构造等

需要注意异常安全性,例如内存不足会带来什么后果之类的

数据结构

常见数据结构

  • 数组
  • 字符串
  • 链表
  • 队列

tips:

  • 数组:从后往前复制省空间
  • 链表:单向链表,环链表,双向链表,复杂链表
  • 树:红黑树,堆,树的遍历,树的重构
  • 栈与队列:

算法与数据操作

常见算法

  • 查找:顺序,二分,查找,二叉:要能够手写二分
  • 排序:插入排序,冒泡排序,归并排序,快速排序
  • 递归与循环:一般递归比较简洁,优先选择递归
  • 位运算