快捷搜索:  汽车  科技

it面试常考的算法(算法面试怎么准备)

it面试常考的算法(算法面试怎么准备)算法面试只是技术面试中的一部分遇见难题不要沮丧,关键在于表达出解决问题的思路有可能没有完美方案,需要做平衡数据有啥特征?对排序有什么额外的要求

正确看待算法面试

面试 ≠ 考试,不一定要求大家给出一个“正确”答案,有正确合适的思考方向更加重要。

  • 不可能刷遍所有的题,总有没见过的,有思路是前提
  • 在算法面试中,展示出自己有应用算法解决问题的能力更重要

法面试更关注候选人是否具备应用算法解决问题的能力,而不是能否“正确”回答那道题

  • 绝对的“正确”只在考试中存在
  • 可以把算法面试看做是一次问题讨论
  • 关于问题的细节和应用的场景都可以进行提问,沟通
  • 在面试中,这些沟通往往很重要

举例:对一组数据进行排序

  • 快速排序算法O(nlogn)

实际工作中要根据实际情况选择最优解

有可能没有完美方案,需要做平衡

it面试常考的算法(算法面试怎么准备)(1)

数据有啥特征?

  • 是否包含大量重复元素 (三路快排)
  • 是否近乎有序的数据 (插入排序)
  • 数据是否有固定的取值范围 (计数排序)

对排序有什么额外的要求

  • 是否需要稳定排序 ? (归并排序更好)
  • 如果是使用链表存储的 (归并排序)
  • 数据是否可以全部装入内存 (外排)

遇见难题不要沮丧,关键在于表达出解决问题的思路

  • 不要放弃,积极思考,
  • 如果实在给不出具体实现,给出思考方向,查阅哪些资料可以解决

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

  • 考察项目
  • 技术领域的其他问题
  • 面向对象、设计模式、网络相关、内存相关、并发相关

offer不仅取决于技术

  • 通过面试考察候选人的过往经验,技术水平,思考行为方式等等
  • 项目经验至关重要

从面试角度来说,项目经历更加重要

  • 工作中的项目
  • 研究生实验室项目
  • 本科生,毕业设计课程设计

非科班毕业、转行如何获得项目经验

  • 在线项目视频
  • GitHub开源项目

创建自己的项目

  • 自己做小应用
  • 网络爬虫、数据分析、可视化展示
  • 写技术博客

除了技术面试以外,还可能问一些开放性非技术问题

  • 遇到最大的挑战
  • 谈一谈自己的优点和缺点
  • 遇到的挫折,犯过的错误
  • 工作中与同事/领导发生矛盾的处理方式
如何准备算法面试?

法面试并没有想象中那么难

  • 不需要读完厚厚的算法书,过于强调理论
  • 高级数据结构和算法,被问到概率很低

(红黑树,计算几何,B-Tree,数论,FFT……)

  • 不是编程大赛

重视基础算法和数据结构

各种排序算法

  • 基础数据结构和算法实现 (堆,二叉树、图……)
  • 基础数据结构的使用:如链表、栈、队列、哈希表……)
  • 基础算法思想:深度优先、广度优先、二分查找、递归……

选择合适的刷题网站,多动手

  • 牛客网
  • LeetCode
回答算法面试问题的套路
  • 注意题目中给出的条件
  • 给定一个有序数组… …
  • 限定了算法复杂度
  • 空间限制
  • 数据规模

当没有思路的时候

  • 造简单的数据尝试,找思路
  • 如果能想到暴力解法,也要说出来,算法复杂度可以继续优化

it面试常考的算法(算法面试怎么准备)(2)

从暴力解法开始,优化算法,改进算法复杂度

  • 遍历常见的算法思路
  • 遍历常见的数据结构
  • 数据预处理
  • 空间换时间

注意代码规范和程序健壮性

  • 变量名
  • 如果程序稍微复杂,考虑复用性
  • 边界条件,极端条件判断

猜您喜欢: