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

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

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

本文地址 :

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

算法面试是什么?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ·是否需要稳定排序?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

项目经历

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

-毕业设计

-其他课程设计

如何找到项目?

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

创建自己的项目

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

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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/Ryanjie/p/8563584.html

时间: 2024-08-05 21:53:07

算法面试课程笔记001 算法面试到底是什么鬼的相关文章

算法面试课程笔记000 玩转算法面试 leetcode题库分门别类详细解析

算法面试课程笔记 =============================================================================== 本文地址 : =============================================================================== liuyubobobo老师 <<玩转算法面试 leetcode题库分门别类详细解析>> 为了面试,更为了提升你的算法思维 http:/

Intro to Parallel Programming课程笔记001

Intro to Parallel Programming How do you dig a hole faster? GPU理念 很多很多简单计算单元: 清洗的并行计算模型: 关注吞吐量而非延迟: CPU: HOST GPU:DEVICE A Typical GPU Program 1,CPUallocates(分配) storage on GPU  cuda Malloc 2,CPUcopies input data from CPU-GPU          cuda Memcpy 3,C

GeekBand-极客班-C++算法原理与实践-董飞-课程笔记(一)

GeekBand-极客班-C++算法原理与实践-董飞-课程笔记(一) 算法入门和编程风格 从一道入门题谈起 /*StrStr Returns the position of the first occurrence of string get in string source, or -1 if target is not part not of source. */ 另一篇博客:http://blog.csdn.net/lionpku/article/details/46713877 StrS

【免费算法课】硅谷工程师直播面试技巧!

开课时间: 北京时间 2015-8-23 09:30 (周日a.m.) 美西时间 2015-8-22 18:30 (周六) 课程安排:本课程为网络直播课,每节2小时,共9节,第一节免费试听. 报名网址:http://www.jiuzhang.com/course/  适合谁? 应届毕业生,刚毕业一年以内的同学,想接受系统的面试算法培训的同学,或想换工作的但是算法比较薄弱的工程师.0基础算法即可参与学习. 课程特色 一流师资,硅谷顶尖IT企业工程师在线授课 讲师段誉老师,算法教学经验近10年,就

面试中的排序算法总结(转)

转自http://www.codeceo.com/article/10-sort-algorithm-interview.html 前言 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵活运用也不是难事.一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码.对这两种排序的代码一定要信手拈来才行.还有插入排序.冒泡排序.堆排序.基数排序.

大公司面试经典数据结构与算法题C#解答

几个大公司(IBM.MicroSoft and so on)面试经典数据结构与算法题C#解答 1.链表反转 我想到了两种比较简单的方法 第一种是需要开一个新的链表,将原链表的元素从后到前的插入到新链表中(也就是原链表第一个元素被插入成新链表的最后一个元素). 第二种是不需要开新的链表,而是逐步反转原链表中元素的指向,例如: 原链表是 1->2->3->4->null  被  逐步修改为 ①2->1->null.3->4->null ②3->2->

面试中的排序算法总结

来源:http://www.cnblogs.com/wxisme/p/5243631.html 前言 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵活运用也不是难事.一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码.对这两种排序的代码一定要信手拈来才行.还有插入排序.冒泡排序.堆排序.基数排序.桶排序等.面试官对于这些排序可能会要

#面试系列 字符串处理算法

面试系列 字符串处理算法 最大子序列和 动态规划法 思路:顺序遍历,判断sum是否大于等于0 时间复杂度:O(n) 空间复杂度:O(1) #include <iostream> #include <limits.h> using namespace std; int getMaxSum(int *arr, int size) { int maxSum = INT_MIN; //负的无穷大 int sum = 0; int curstart = 0; int start = 0; i

Java求职面试准备之常见算法

最近在求职面试,整理一下常见面试算法: 对TestAlgorithms.java中方法的测试见JunitTestAlgorithms.java(引入了junit4) 1.TestAlgorithms.java 1 package carl; 2 3 import org.junit.Test; 4 5 /** 6 * 本类中总结了常用的几种算法 7 * @author Administrator 8 * 9 */ 10 public class TestAlgorithms { 11 12 /*