算法面试课程笔记001 算法面试到底是什么鬼

Posted ryanjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法面试课程笔记001 算法面试到底是什么鬼相关的知识,希望对你有一定的参考价值。

算法面试课程笔记001算法面试到底是什么鬼

===============================================================================

本文地址 :

===============================================================================

算法面试是什么?

让大家在面对面试中的算法问题时,有一个合理的思考路径;

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

 

一.什么是"正确"的回答一个算法问题

 

合理的思考路径:算法面试的目的不是给出一个"正确"答案;正确还包含对问题的独到见解;优化;代码规范;封装出的代码的容错性;

 

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

对于问题的细节和应用环境,可以和面试官沟通。

这种沟通本身很重要,它暗示着你思考问题的方式。

 

举例:假如对一组数据进行排序。 算法&数据结构

正常最优的为快速排序算法O(nlogn) 。但是是否考虑过以下这几种情况呢?

  • ·有没有可能包含有大量重复的元素?
  • ·是否大部分数据距离它正确的位置很近?是否近乎有序?
  • ·是否数据的取值范围非常有限?比如对学生成绩排序。
  • ·是否需要稳定排序?
  • ·是否是使用链表存储的?
  • ·数据的大小是否可以装载在内存里?

    这组数据有什么样的特征?

    ·有没有可能包含有大量重复的元素?

    ·如果有这种可能的话,三路快排是更好地选择。

    ·是否大部分数据距离它正确的位置很近?是否近乎有序?

    ·如果是这样的话,插入排序是更好地选择。

    ·是否数据的取值范围非常有限?比如对学生成绩排序。

    ·如果是这样的话,计数排序是更好地选择。

    对排序有什么额外的要求?

    ·是否需要稳定排序?

    ·如果是的话,归并排序是更好地选择。

    数据的存储状况是怎样的?

    ·是否是使用链表存储的?

    ·如果是的话,归并排序是更好地选择。

    ·是否是使用随机存储的?

    ·如果是的话,快速排序是更好地选择。

    数据的存储状况是怎样的?

    ·数据的大小是否可以装载在内存里?

    ·数据量很大,或者内存很小,不足以装载在内存里,需要使用外排序算法。

 

如果一个问题是非常难的问题,对你的竞争对手来说,也是难的。

关键在于你所表达出的解决问题的思路。甚至通过表达解题思路的方向,得出结论:这个问题的解决方案,应该在哪一个领域,我可以通过查阅或者进一步学习解决问题。

 

 

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

 

算法面试只是技术面试的一部分。

根据你的简历和应聘职位的不同,势必要考察其他技术方面。

 

技术面试的内容:(根据自己职位而定)

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

 

技术面试只是面试的一部分。面试不仅仅是考察你的技术水平,还是了解你的过去以及形成的思考行为方式。

项目经历

  • 工作人士
  • 研究生
  • 本科生

-毕业设计

-其他课程设计

 

如何找到项目?

  • 实习
  • 参与实战课程学习
  • 慕课网
  • Coursera

     

创建自己的项目

  • 自己做小应用:计划表;备忘录;播放器.…
  • 自己解决小问题:爬虫;数据分析;词频统计…
  • 自己做网站,为别人提供服务,做博客;
  • "不是项目"的项目:一本优秀的技术书籍的代码整理等…
  • ·分享:自己的技术博客;github等等通过过去了解你的思考行为方式

通过过去了解你的思考行为方式

  • 遇到的最大的挑战? (项目中的算法问题)
  • 犯过的错误?
  • 遭遇的失败?
  • 最享受的工作内容?
  • 遇到冲突的处理方式?
  • 做的最与众不同的事儿?

     

准备好合适的问题问面试官

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

 

算法面试仍然是非常重要的一部分

 

===============================================================================

路漫漫其修远兮,吾将上下而求索。Let‘s grow up together !

===============================================================================

以上是关于算法面试课程笔记001 算法面试到底是什么鬼的主要内容,如果未能解决你的问题,请参考以下文章

玩转算法面试 从真题到思维全面提升算法思维

玩转算法面试 从真题到思维全面提升算法思维

学妹面试拼刀刀被问Java策略模式是什么鬼?哈哈哈哈

纵横算法之三:算法到底考什么

包建强的培训课程:面试中的算法题

受康奈尔笔记法启发设计的程序员算法手写本