Skip to content

算法面试相关 #1

@campcc

Description

@campcc
  1. 一个合理的思考途径
  • 一起探讨一个问题的解决方案
  • 沟通本身很重要,沟通问题的细节和应用环境,假设,慢慢升入
  1. 对一组数据进行排序

image

  1. 正确不仅仅是编码能运行,还包含对问题的独到见解;优化;代码规范;容错性;

  2. 项目经历,项目中遇到的实际问题

(小程序百万并发)
(退费金额计算,账单匹配)

  1. 遇到印象最深刻的 bug 是什么

  2. 准备一些问题

(小组的工作模式,运行模式是什么样的)
(某个产品中的某个问题是如何解决的)
(这个产品为什么会选择这个技术,这个标准来实现)
(整个项目的后续规划是什么)

  1. 抓基础的算法和数据结构

(各种排序)
(基础数据结构和算法的实现:如堆,二叉树,图)
(基础数据结构的使用:如链表,栈,队列,哈希表,图,Trie,并查集)
(基础算法:深度优先,广度优先,二分查找,递归)
(基本算法思想:递归,分治,回溯搜索,贪心,动态规划)

  1. 是否有序,题目条件本身是暗示,

(设计一个onlogn的...)
(无需考虑额外的空间)
(数据规模)

  1. 没有思路时,用最简单的测试用例,试验一下,不要忽视暴力解法,暴力通常是思考的起点

  2. 优化算法的思路

(遍历常见的算法思路:多指针,贪心,分治,递归...)
(遍历常见的数据结构:栈,链表...)
(空间和时间的交换:典型的如哈希表)
(对数据进行预处理:比如先排序)
(在复杂度的瓶颈处寻找答案)

  1. 编码需要注意的问题

(极端条件的判断:数组空,字符串空,数量0,指针null)
(变量名)
(模块化,复用性)

  1. 对于基本问题需要做到白板编程(比如堆)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions