zoukankan      html  css  js  c++  java
  • 最短时间搞定算法:字节跳动Android岗算法题考前突击宝典

    前言

    一个人,一支笔,一个晚上,一个奇迹。这是学生党的常规操作。

    大学里也同样有很多奇迹的创造者:每次一到期末考试的前几个晚上,各个变身“最强大脑”,上知天文,下晓地理,还精通人文……再不济就是各种缩印,肉眼去辨蝇头小字,个个大显神通,不可谓不牛掰。

    然后,问题来了,面试该怎么办?如何在最短的时间内搞定数据结构和算法,应付面试?

    奇迹

    真的有算法速成的秘诀吗?最快能有多快?

    在这里,我分享一下我们交流圈的一个大佬的故事吧。


    字节跳动大家都知道,可以说是靠算法打出的江山,面试的时候也非常看重应聘者的算法功底(我甚至听说还有算法一票否决的)。能进字节,还能来做经验分享的,算法能力肯定是不会差的。

    既然大家都说了是以"应付面试"为主,那我们就直奔主题吧。

    其实这个大佬算法这一块并不擅长,完全是靠着自己的努力硬刷上去的。前前后后花了一个月多月。

    下面大致说一下大佬所经历过的互联网招聘中对于算法这块的考察重点(文末送算法刷题资料)。

    其实不管是社招还是校招,考察最多的算法题型基本都是链表、数组、字符串、动态规划、贪心算法、深度优先搜索、广度优先搜索这些。

    经历过几次面试的朋友不难感觉出来,近几年以来算法考察日益渐难,以前刷题100道就ok了,现在直接200+起步了(害,就硬卷呗)。

    所以,在态度上,算法这一块,大家要引起重视呀,不可懈怠。

    不过,既然前文已经说了是教大家刷题,那么下面我们就只讲重点。下面我会列举一些经常作为重点考察的算法题目。

    算法高频考点

    对于贪心算法,可能会重点考察以下题目:

    • 通配符求值
    • 跳跃游戏
    • 跳跃游戏II
    • 分发糖果
    • 判断子序列
    • 移掉K位数字
    • 分割数组为连续子序列

    对于DFS (深度优先搜索遍历) ,可能会重点考察以下题目:

    • 重建二叉树
    • 岛屿数量
    • 二叉树的最大深度
    • 平衡二叉树
    • 二叉树根节点到叶子节点和为指定值的路径
    • 判断-棵二叉树是否为搜索二-叉树和完全_二叉树
    • 二叉树根节点到叶子节点的所有路径和
    • 判断二叉树是否对称
    • ……(内容比较多,重点都整理在后文的《算法刷题宝典》中了

    比如对于链表,可能会重点考察以下题目:

    • 反转链表
    • 链表中环的入口节点
    • 判断链表中是否有环
    • 链表中倒数第k个结点
    • 链表中的节点每k个- -组翻转
    • 合并有序链表
    • 删除链表的倒数第n个节点
    • ……(后续整理在《算法刷题宝典》中了)

    对于数组,可能会重点考察以下题目:

    • 螺旋矩阵
    • 重建二叉树
    • 数组中出现次数超过一半的数字
    • 矩阵的最小路径和
    • 缺失数字
    • 顺时针旋转矩阵
    • 加起来和为目标值的组合
    • 集合的所有子集
    • 数组中的逆序对
    • 旋转数组
    • 矩阵查找
    • ……(全收录)

    对于字符串,可能会重点考察以下题目:

    • 最长无重复子串.
    • 括号序列
    • 最长回文子串
    • 大数加法
    • 反转字符串
    • 最小编辑代价
    • 将字符串转化为整数
    • 验证IP地址
    • 最长公共前缀
    • 字符串变形
    • 通配符匹配
    • kmp算法
    • 数字字符串转化成IP地址
    • 大数乘法
    • 第一个只出现一次的字符

    对于动态规划,可能会重点考察以下题目:
    ……
    (后面看内容好像还挺多,专门整理成了一份PDF,大家感兴趣的可以扫码免费获取)

    算法学习方法+《算法刷题宝典》

    在刷题之前我建议你看一些书

    《漫画算法之旅》

    如果你之前没有任何算法基础,这边书很适合你,可以补充数据结构和算法的基础知识,像什么是时间复杂度空间复杂度、查找、排序等。
    如果你有了一定基础了,建议你直接跳到最后面的算法实战部分。

    《剑指 offer》

    非常经典的一本书,学算法的人必刷。但是要注意了,这边书里面的题目是用 C++写的,如果你是 Java 开发人员可能会有点影响。但是要记住学习算法最关键的还是解题思路和方法,用什么语言实现是其次的,如果你时间比较多我是建议你用 Java 语言再实现一遍。

    《labuladong的算法小抄》

    非常推荐!这是一本很新的书,写书前作者在 Github 开源了一个项目,主要讲解 LeetCode 解题套路,Start 总数排名前40。在书的开头讲解了学习算法的基本思维和套路,建议看这边书的同时再配合 leetcode 刷题,疗效非常棒!

    《算法导论》

    要是不推荐这本书是不是显得我有点 low 了,这是一本科班出身的同学必看必学的经典大部头。国外大佬写的,国内翻译的经典之作,虽然是经典但是不建议刚入门算法的同学看,因为看了这本书你可能要放弃算法了,比较难看懂。建议有了一定基础再入手这边书。

    如果你觉得看书比较枯燥,可以推荐你看一些极客时间的专栏,不过是收费,但是质量非常高。
    《数据结构与算法之美》

    这个专栏是文字+语音,作者是王争,前 Google 工程师。他采用最适合工程师的学习方式,不拘泥于某一特定编程语言,从实际开发场景出发,由浅入深教你学习数据结构与算法的方法,帮你搞懂基本概念和核心理论,深入理解算法精髓,帮你提升使用数据结构和算法思维解决问题的能力。

    《算法面试通关40讲》

    这个专栏是视频,作者是覃超,前Facebook工程师。作者会用白板带你一步一步解题,层层深入一环扣一环,每一题还会用多种解题方法。我基本看完了,收获颇多。

    leetcode、书和极客专栏可以并行,学练结合,不要光看不练。

    算法刷题宝典

    有需要的朋友可以直接扫【下方的二维码】找我免费获取全套资料。
    ↓↓↓↓↓

  • 相关阅读:
    动与静
    ASP.NET 2.0 Membership
    又是asp.net 2.0的一个奇怪异常
    Cool tool !ASP.NET AJAX JavaScript Class Browser
    UserFul Methods
    中秋快乐
    Windows Vista RTM
    asp.net 2.0 下的表单验证Cookieless属性
    DataTable 内部索引已损坏:"4"
    asp.net 2.0 用户管理功能结构
  • 原文地址:https://www.cnblogs.com/chengsisi/p/15249985.html
Copyright © 2011-2022 走看看