算法学习(一)

196 阅读2分钟

写在前面

  • 被秋招严重摧残了,笔试挺多,面试机会却很少很少,算法这块真实软肋,现在仍然是0offer的状态,希望能通过比较系统的学习把算法这块补上,不期望能成为什么大佬,只希望自己不要太渣。
  • 接下来的算法学习主要看 【玩转算法面试 从真题到思维全面提升算法思维】 的视频教学,这里简单记录下学习笔记。

一、算法面试解决思路

  • 在思考面试官的题目的时候,不要急着找出正确的答案,而是要能够思考题目是否有不同的情况,在跟面试官的交流中进一步去展现自己的思路,找出当前情境下的最优解。

1、例子:对一组数组进行排序(快排、插入排序、计数排序、归并排序)

  • 数据特征
    • 是否有大量的重复数据?
      • 是:三路快排
      • 否:普通快排
    • 是否已经接近有序?(如银行业务)
      • 是:插入排序
    • 数据的取值范围是否有限?(如成绩排序)
      • 是:计数排序
  • 排序的额外要求
    • 是否需要稳定的排序
      • 是:归并排序
  • 数据的存储状况
    • 数据是否为数组存储?(快排依赖于数组的随机存储)
      • 否:归并排序
    • 数据是否可以存储在内存中?
      • 否:使用外排序算法

2、“正确”的答案包含:独到见解、代码优化、代码规范、容错性(封装)



二、项目经历

  1. 毕设
  2. 大作业
  3. 实战课程教学
  4. 创建自己的项目
    • 做小应用:计划表、备忘录、播放器
    • 解决小问题:爬虫、数据分析、词频统计
    • 阅读书籍:整理优秀的技术书籍的代码(Github)
      • 推荐:head first 设计模式
    • 分享:技术博客、github


三、过往经历

面试官问的:(应该提前自问一遍,并能够完整的回答出来)

  1. 遇到的最大的挑战?
  2. 犯过的错误?
  3. 遭遇的失败?
  4. 最享受的工作内容?
  5. 遇到冲突的处理方式?
  6. 做的最与众不同的事

我问的:

  1. 准备好合适的问题问面试官
    • 小组的运行模式是怎么样的?
    • 项目的后续规划如何?
    • 产品的某个问题是如何解决的?
    • 为什么会选择某些技术?标准?
    • 我对某项技术很感兴趣,在你的小组中我会有怎样的机会深入这种技术?