面试字节跳动没压力了-2020年最新的“核心算法面试题汇总”

389 阅读13分钟

前言

“人工智能”,“机器学习”,“大数据”,这些越来越常听到的字眼,背后其实都是一个个“算法”。诸多高新科技,似乎都离不开“算法”的“加持”。无论是什么语言,什么方向,学习算法是一件非常有必要的事情。

现在很多互联网公司面试都会问到算法题,以腾讯、字节跳动为代表,尤其是对于应届生来说,算法是必问的知识点之一。所以,今天总结了2020年,截止到目前为止,常问到的一些算法题,希望能够对你接下来的面试有所帮助。

扫描下方二维码获取更多资料!

此外,有一道题我没有在leetcode上找到的题,频繁考察,大家注意下。

题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的。 比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9。

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

注意:下文内容以岗位进行了区分,很多算法内容虽是相通的,但不同岗位有不同侧重。这些算法题,我也一一整理在文档内,标注好了是LeetCode多少题,需要我分享pdf的,可以私信口令「算法」免费获取。

Java岗

  • 剑指 Offer 53 - II. 0~n-1中缺失的数字
  • 如何判断一个单链表是不是有环
  • 给你一个数组,求三个数字之和为100.
  • 1243534543634交换各位的数字,找出大于目前这个数的最小的一个数。
  • 对一个奇数位升序,偶数位降序的链表,进行排序,例如 1->100->20->80->40->30
  • 算法题:(1)设计sqtr(x)
  • 算法题:(1)判断回文链表
  • 对于给定的数据,找出比这个数大的最小回文数(正反读都一样的数),如 12310 -> 12321
  • 第一道代码:数组只交换一次求最大
  • 第二道代码: 单链表判断是否有环
  • 括号匹配
  • 链表每k个翻转
  • 判断单链表有没有环,有的话找入口
  • 给定m和n,输出从1~n中任意多个数字,且和为mu的组合(数字不能重复使用)
  • 算法题(求第n个丑数,leetcode原题,难度mid)
  • 第一题是求开根号n的值
  • 第二题是输出交错后的链表(比如链表a-b-c-d-e,交错后输出为a-e-b-d-c)
  • 反转链表
  • 找峰值
  • 2*N的格子 1*2的格子填满它有多少种方法, 给个数组,找出右边第一个比它大的元素, 链表两两反转
  • 手撕代码:Z字型遍历二叉树(剑指offer原题,LeetCode第1553题)
  • 算法题1:很大量的int型数,输出前100最大的数(中等)
  • 算法题2:单向链表,头尾奇偶交替输出(中等)
  • 单链表反转
  • 平衡二叉搜索树插入算法
  • 算法:掷骰子走路,1~6,给定的输入n,走到第n个格子有多少种走法
  • 算法:青蛙跳格子,数组里元素表示该位置石头个数,每次跳3-5格,问跳出数组最少踩多少石头。
  • 算法:给定链表和k,要求每k个元素翻转一次
  • 算法:找出数组里出现次数大于n/k的数
  • 算法判断树是否对称,用bfs做了
  • 第二题:二叉树的左视图
  • 第一题,一个int数组,找出两个异或最大的数字,时间要求O(n)
  • 第二题,四个int数组,从每个数组里边挑一个数,加起来等于指定数,要求打印出所有非重复的组合,要求最大n2。
  • 代码题:不含重复字符的最长子串(leetcode原题)
  • 最长上升子序列的状态转移,时间复杂度
  • 给出前序和中序数组,生成后序数组
  • 算法题:给一棵二叉树和一个整数,要求输出二叉树中路径和等于这个整数的路径
  • 算法题,两个链表了类型的整数求和,如1->2->5与3->6求和得到1->4->1,用栈或者反转链表。
  • 算法题:找波谷数;
  • 算法题:复制带随机指针的单向链表;
  • 算法题:找到两个链表的公共节点
  • 给定两个单链表,判断是否有公共节点
  • 求字符数组的全排列
  • 查找有序数组中一个目标值出现的第一次位置,没有找到返回 -1
  • 算法:滑动窗口寻找满足的字符串
  • 爬楼梯
  • 说思路:实现一个栈,o(1)时间找最大值
  • 写代码:矩阵从左上到右下找最小路径
  • 说思路:删除单链表的倒数第k个节点
  • 01矩阵最大正方形,经典题了,dp选左上最小+1,随便写了一下,没让跑test。
  • 二叉树找target路径
  • 二叉树转单链表,常规题,递归一下完事了。
  • 算法题:从左上角走到右下角有多少种不同的路线
  • 两个有序链表合并
  • 给定2D矩阵,求里面1构成的正方形的最大面积。
  • 算法题:接雨水
  • 抛硬币(一个0.3 一个0.7 如何保证公平)
  • z字形打印二叉树
  • 一颗搜索二叉树有两个节点是颠倒的,恢复成正确的
  • 单链表高位在前、低位在后,大数计算
  • 阶乘
  • 一个有序、有重复元素数组找到有多少满足 a + b = target的
  • 手撕:层序遍历
  • 二叉树中序遍历
  • 手撕 lru
  • 字符串转换为整数,leetcode第67题
  • 先问两个无序数组怎么找交集。
  • 算法题,最长连续相同字符的子串
  • 写个题,每K个节点翻转链表
  • 字符串全排列
  • 二叉树的最大路径和
  • 类似于并查集的问题,最终求连通分量的数量
  • 回文串判断
  • 二叉搜索树转链表
  • 二叉树求和leetcode129-讲一下时间复杂度
  • 求链表的倒数第k个节点
  • 序列化和反序列化二叉树
  • 求数组的极值点,找出一个满足的就行(二分查找)
  • 前序遍历和中序遍历重构二叉树 (不给用HashMap 好在做出来了)
  • 算法题:判断回文链表(中间拆分两条链表 后面的反转链表 对比数值是否相等)
  • 算法题:奇数位升序偶数位降序的链表要求时间O(n)空间O(1)的排序?(奇偶拆分 偶链反转 归并merge)
  • 手撕代码:链表加法
  • 链表的两两翻转
  • LRu
  • 一面:最大连续子序列和和回文链表
  • 二面:一个奇数位升序、偶数位降序的单向无环链表,排成一个有序链表
  • 三面:S型打印二叉树,两条单向链表的相交节点,任意数组中的第一个缺失的正整数
  • 第一题 判断是否回文链表
  • 第二题 求逆数对
  • 第三题 动态规划
  • 最大化股票交易
  • 最大化股票交易(有限交易)
  • 滑动窗口匹配字符串
  • 大数问题中的topK问题
  • 给整数数组做数字次数统计,答unordered_map,让我再想其他方法,不会。
  • 给你一个数组和一个target,找出和是target整数倍的连续子串
  • 一个括号字符串,找出最长合法长度

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

扫描下方二维码获取更多算法习题及更多学习资料!!

C++客户端

  • 算法题(合并链表
  • 求岛屿个数
  • 树找两节点最长距离
  • leetcode原题 从一个数 l 一直 与 操作到 r ,怎么做最快,复杂度最小
  • k个一组反转链表
  • 二叉树的非递归后序遍历
  • 按字典序全排列输出
  • 跳台阶
  • 有两个单链表,其有交叉节点,求交叉节点。
  • LRU算法,给一个整数数组,若LRU的窗口大小是4,求下一个元素进来后剔除哪个元素。
  • 求最小子数组,leetcode209题。
  • 给定一个int数组A,数组中元素互不重复,给定一个数x,求所有求和能得到x的数字组合,组合中的元素来自A,可重复使用。
  • 一个二叉树, 求路径之和。
  • 手撕代码:1)给定数组,求连续子串的最大和
  • 用两个栈实现队列
  • 手撕代码:1)给定一个二维数组,从左到右,从上到下都是递增的,查找某个元素;2)给定一个矩阵,每次只能向右或向下走,从左上角开始到右下角一共有多少种走法
  • 第一题就是给一个矩阵,从右上角往左下角一层一层斜着遍历,类似于这样:
  • 层次遍历二叉树
  • 给一个正整数,表示成一个或多个不同的正整数的和,输出所有的解决方案(深搜,但是我实现的时候写的不好)
  • 给一个n*n的方阵,螺旋填入数字
  • 编程:判断两个链表是否相交并返回交点;
  • LeetCode 25. K个一组反转链表
  • LeetCode 53.最大子序和
  • 给定一个包含大写英文字母和数字的句子,找出这个句子所包含的最大的十六进制整数,返回这个整数的值。数据保证该整数在int表示范围内。
  • 字符串数组两个字符串的最小距离(easy)
  • 做题,数组中和最大的连续子数组(mid)
  • 手撕 无序数组两数之和
  • 手撕代码 两个栈实现队列
  • 手撕代码 实现洗牌算法
  • 简化路径(算法题)
  • 二叉树的右视图(算法题)
  • 手撕代码:从无序数组中找到右边第一个大的数
  • 两两反转链表
  • 算法:判断两个链表是否相交
  • 算法:查找二叉树中两个节点的最近公共祖先
  • 手撕代码 求m个数中最大的n个数
  • 算法题 镜像二叉树
  • 先升后降数组,找峰值的坐标,二分法
  • 给一个分数n/m,如果这个分数是无线循环小数,找出循环位。
  • 判断二叉树是否镜像

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

测试岗

  • 撕代码环节:题目为leetcode第三题,求最长连续不含重复字符子串
  • 代码:驼峰字符串问题
  • 用String存两个很长的数,求和
  • 求二叉树最大长度
  • 两个大数字符串求和输出字符串
  • 对含有重复数字的数组去重并排序,手撕快排
  • 算法:返回一棵树的最大叶节点距离
  • 手撕代码:驼峰数组最大值
  • 手撕代码:求一个数组的所有子集
  • 二叉树遍历
  • 平衡二叉树
  • 代码:判断回文
  • 代码:链表的逆序输出
  • 算法:两个链表找公共节点
  • 算法:求数组中升序的子序列
  • 代码:无重复最长字串
  • 二维有序数组(从左到右递增,从上到下也递增),找目标数(我写的二分法)
  • 求子集

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

扫描下方二维码获取更多学习资料!!

算法岗

  • 子序最大和(要求子序列长度大于等于k)
  • 一个list,一个target,求list中两数之和等于target的所有组合,list中有重复的,算medium吧。
  • 用两个栈实现一个队列
  • 判断给定序列是否为二叉搜索树的前序遍历
  • 给定一个数组,求连续子序列乘积为完全平方数的最大长度
  • 合并数组
  • 链表找环
  • 第K大个数
  • 求和为k的子数组个数
  • 判断是否存在个数超过数组长度一半的数
  • 二叉树子路径和为k的路径个数
  • 给一个类似树的结构,每个节点都可以有多个节点(不止两个树)然后每个根节点和字节点间的路径不一样,求叶子结点到叶子结点的最大路径
  • 判断左右括号是否合理
  • 朴素贝叶斯的算法实现
  • 两个很大的数据集存着url 找到两个数据集共有的url
  • 一个二维矩阵由小到大排列,找target数字
  • 二叉树按行输出
  • 给二叉树前序遍历和中序遍历 输出这个树
  • 翻转链表

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

前端

  • 删除链表的倒数第n个
  • leetcode 93
  • 二叉树层序遍历
  • Merge 两个有序的链表
  • 找出两个链表的交叉点
  • 斐波那契 递归实现/dp实现/空间优化
  • 算法题:找出sum大于等于target的最短连续数组的长度,要通过所有测试数据
  • 算法:合并有序数组
  • 算法:逆序输出数字。
  • 算法题:数组去重
  • 爬楼梯
  • 二叉树所有根到叶子节点路径上所有节点,组成的数字之和
  • 算法题:判断给定的一棵树是否是 二叉查找树
  • 算法题:给定一个数字数组,以及数字出现次数
  • 输出数组第k大元素
  • 实现斐波纳西数列

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

大数据

  • 算法题1: 请对3个有序数组进行归并排序
  • 算法题2: 求一个字符串中最长不重复子串的长度

ios

  • 算法题:求k大数
  • leetcode1 两数之和
  • 剑指offer 62 圆圈中剩下的数字(约瑟夫环问题)
  • leetcode 41 缺失的第一个正数
  • 如何用两个栈实现一个队列?如何优化前面说的那种思路?
  • 编程题:上台阶(那个简单的fabonacci)然后就又来了一道
  • 编程题:区间合并求并集
  • 算法题:连续子数组的最大和
  • 二分查找在升序数组中找出绝对值最小的那个数
  • 8个桶(每个桶只能放一个球),5个球,三个连续的情况有几种,一般情况下呢?
  • ......

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

Andriod

  • 算法题:根据前中序重构二叉树
  • 算法:螺旋矩阵
  • 代码题:旋转数组
  • 代码题:两数相加(链表,要求原地实现,空间复杂度O(1)
  • 代码题:a) 螺旋遍历矩阵;b)(变种)原地旋转图像

我的算法必备资料

  • 算法刷题LeetCode:

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

  • 算法的乐趣:

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

  • 算法(详解版):

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

我服了!今年最新的“算法面试题汇总”,面试字节跳动没压力了

总结

解决同一个问题,可能有各种各样的算法。不同的算法,可能执行速度不同,可能编写难易度不同,可能占用的资源不同,甚至可能计算准确度都不同;很多时候并没有最好的算法,只有在特定条件下最适合的算法。所以,关于算法的学习,我们要学会举一反三。

以上的算法资料均整理成PDF

扫描下方二维码获取更多算法习题及更多学习资料!!