bobo老师玩转算法面试,如何准备技术面试?

看了慕课网bobo老师的玩转算法面试课程,做了一些笔记。

算法面试是什么?

算法面试需要有一个合理的思考路径;算法只是技术的一部分。

  1. 不代表能够“正确”回答每一个算法问题,但是合理的思考方向其实更重要,也是正确完成算法面试问题的前提
  2. 算法面试优秀不意味着技术面试优秀
  3. 技术面试优秀不意味着能够拿到Offer

算法面试的目的不是给出一个“正确”答案,而是展示给面试官你思考问题的方式。

算法面试不是考试,把这个过程看作是和面试官一起探讨一个问题的解决方案。

对于问题的细节和应用环境,可以和面试官沟通。这种沟通暗示着你思考问题的方式

思考问题方式
对一组数据进行排序
和面试官沟通,这组数据有什么样的特征?

  1. 有没有肯包含有大量重复的元素? 采用三路快排
  2. 是否大部分数据距离它正确的位置很近?是否近似有序? 插入排序
  3. 是否数据的取值范围非常有限?学生考试成绩。 计数排序
  4. 是否需要稳定排序? 需要稳定排序时 归并排序
  5. 数据的储存情况?是否是使用链表存储? 如果是链表存储,使用归并排序(快速排序依赖数组的随机存储)
  6. 数据的大小是否可以装载在内存中? 数据量很大,或者内存很小,不足以装载在内存里,需要使用外部排序算法。(海量数据问题)

对问题的独到见解,优化,代码规范,容错性
表达出解决问题的思路。

算法面试优秀不意味着技术面试优秀

技术面试包含

  • 简历上的项目经历
  • 项目经历和项目中遇到的实际问题
  • 遇到的印象最深的bug是什么?
  • 面向对象
  • 设计模式
  • 网络相关,安全相关,内存相关;并发相关
  • 系统设计;scalability;

技术面试优秀不意味着能拿到Offer
技术面试只是面试的一部分,面试还考察你的过去以及形成的思考行为方式。
过去参与的技术项目很重要
如何找项目?

  1. 实习
  2. 参加实战课程学习

创建自己的项目

  1. 创建小应用:计划表;备忘录,播放器等
  2. 自己解决小问题:爬虫,数据分析,词频统计等
  3. 一本优秀技术书籍的代码整理等
  4. 自己的技术博客,github等

通过过去了解你的思考行为方式(hr面):

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

结合具体的实际项目阐述,而非泛泛而谈。

反问环节
准备好合适的问题问面试官。

  • 整个小组的大概运行模式是怎么样的?
  • 整个项目的后续规划是如何的?
  • 这个产品中的某个问题是如何解决的?
  • 为什么会选择某些技术?标准?
  • 我对某一个技术很感兴趣,在你的小组中我会有怎样的机会深入该技术?

你可能感兴趣的:(玩转算法面试,算法)