最全BAT算法面试100题:阿里、百度、腾讯、京东、美团、今日头条

第一:复杂度估算和排序算法(上)
1) 时间复杂度和空间复杂度

2)认识对数器

3)冒泡排序

4)选择排序

5)插入排序

6)如何分析递归过程的时间复杂度

7)归并排序

8)小和问题

第二:复杂度估算和排序算法(下)
1)荷兰国旗问题

2)随机快速排序

3)堆结构与堆排序

4)认识排序算法的稳定性

5)认识比较器

6)桶排序

7)计数排序

8)基数排序

9)数组排序后的最大差值问题

10)排序算法在工程中的应用

第三:章栈、队列、链表、数组和矩阵结构
1)栈结构

2)队列结构

3)链表结构

4)数组结构

5)矩阵结构

6)二分搜索的扩展

第四:二叉树结构
1)二叉树结构

2)二叉树的递归与非递归遍历

3)打印二叉树

4)判断搜索二叉树

5)判断完全二叉树

6)判断平衡二叉树

7)折纸问题

8)二叉树节点的前驱节点与后继节点

9)二叉树的序列化和反序列化

第五:和哈希函数有关的三个结构与并查集
1)哈希函数与哈希表

2)布隆过滤器详解

3)一致性哈希结构

4)并查集结构与应用(岛问题)

第六:章图算法
1)图结构的表示方法

2)图的深度优先遍历与宽度优先遍历

3)拓扑排序问题

4)最小生成树问题

5)单源最短路径问题

第七:前缀树、堆结构和贪心算法
1)前缀树

2)堆结构的扩展与应用

3)介绍贪心算法及其相关题目

4)在面试中如何快速的尝试出贪心策略

第八:暴力递归到动态规划
1)递归

2)动态规划

3)如何把暴力递归套路的变成动态规划

算法高级:
第一:KMP算法和Manacher算法

1)KMP算法及其扩展面试题目

2)Manacher算法及其扩展面试题目

第二:窗口内最大值的更新结构和单调栈结构

1)窗口内最大值的更新结构

2)单调栈结构

第三:Morris遍历和sortedMap

1)二叉树的Morris遍历

2)跳表结构

3)AVL树和红黑树结构

【今日头条、拼多多题目】
分类算法的理解

决策树的原理
支持向量机
逻辑斯蒂回归
聚类算法的理解

均值聚类,可选的参数,如果确定聚类个数
聚类和分类的异同,举例说明
特征选择算法的理解

集成提升的理解

xgboost
gbdt
【面试题目】
二叉树前序递归遍历算法(手写代码)
二叉树的前中后遍历
二叉树的文件存储,也就是序列化。
二叉树遍历,描述下层序遍历。
二维数组,每行递增,每列递增,任意交换其中的两数,发现并恢复。
二维数组,每行递增,每列递增,实现查找。
二维数组,每行递增,每列递增,求第k大的数。
什么样的数据结构可以满足多次插入删除,取最小数,给出时间复杂度。
介绍二叉树前序遍历非递归遍历算法(手写代码)
介绍大顶堆和小顶堆
从一组数中找出和为sum的三个数(leetcode)
冒泡排序(手写代码)
写 find 函数,在目标串中匹配模式串(要考虑中文字符的情况)
写一个二叉树的非递归的后续遍历
写一个简单的正则匹配表达式(将文本中的123.4匹配出来)
写个动态规划,最长公共子序列
判断一个字符串是否为另外一个字符串旋转之后的字符串
前k大的数
单链表的翻转
去掉连续的重复数字,输出新数组,例如:1,2,2,2,1,3,5——> 3,5。
去除字符串S1中的字符使得最终的字符串S2不包含’ab’和’c’。(Code)
合法括号匹配
在一个字符串中,找出最长的无重复字符的字串
在二叉树结点结构中加一个指针域,使其指向层次遍历的下一个结点,特别地,每一层的最后一个结点为空。(Code)
堆排序(手写代码)
堆是怎么调整的。
复杂链表的复制
大数据题目
100亿数字,怎么统计前100大的?
10亿个url,每个url大小小于56B,要求去重,内存4G。
1KW句子算相似度(还是那套分块+hash/建索引,但是因为本人不是做这个的,文本处理根本说一片空白,所以就不误导大家了),之后就是一直围绕大数据的题目不断深化。
Q1:给定一个1T的单词文件,文件中每一行为一个单词,单词无序且有重复,当前有5台计算机。请问如何统计词频?
Q2:每台计算机需要计算200G左右的文件,内存无法存放200G内容,那么如何统计这些文件的词频?
Q3:如何将1T的文件均匀地分配给5台机器,且每台机器统计完词频生成的文件只需要拼接起来即可(即每台机器统计的单词不出现在其他机器中)
一个大文件A和一个小文件B,里面存的是单词,要求出在文件B中但不在文件A中的单词。然后大文件A是无法直接存到内存中的。
一道题目是如果有一个人注册一个qq,如何保证这个qq号码和之前已存在的qq号码不重复呢?
扔硬币,连续出现两次正面即结束,问扔的次数期望
有100W个集合,每个集合中的word是同义词,同义词具有传递性, 比如集合1中有word a, 集合2中也有word a, 则集合1,2中所有词都是同义词,对这100W个集合进行归并,同义词都在一个集合当中。
有几个 G 的文本,每行记录了访问 ip 的 log ,如何快速统计 ip 出现次数最高的 10 个 ip,如果只用 linux 指令又该怎么解决;
海量数据的topk问题。
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:787707172,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

原文地址:https://blog.51cto.com/13954634/2384693

时间: 2024-12-19 22:00:59

最全BAT算法面试100题:阿里、百度、腾讯、京东、美团、今日头条的相关文章

算法面试:精选微软等公司经典的算法面试100题 第1-40题

精选微软等公司,数据结构+算法,经典面试100题                            --------之前40题 -------------------------- 算法面试:精选微软等公司经典的算法面试100题 第1-40题如下: --------------- --------------1.把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向.      10  / \ 6 14 

微软等数据结构+算法面试100题全部答案集锦

1.把二元查找树转变成排序的双向链表. 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. 要求不能创建任何新的结点,只调整指针的指向. 10  / \  6 14  / \ / \  4 8 12 16 转换成双向链表 4=6=8=10=12=14=16. 首先我们定义的二元查找树节点的数据结构如下: struct BSTreeNode  {  int m_nValue; // value of node  BSTreeNode *m_pLeft; // left child

阿里最全面试100题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案

[阿里天猫.蚂蚁.钉钉面试题目] 1.微信红包怎么实现. 2.海量数据分析. 3.测试职位问的线程安全和非线程安全. 4.HTTP2.0.thrift. 5.面试电话沟通可能先让自我介绍. 6.分布式事务一致性. 7.nio的底层实现. 8.jvm基础是必问的,jvm GC原理,JVM怎么回收内存. 9.Java是什么. 10.API接口与SDI接口的区别(API是提供给别人的接口). 11.dubbo如何一条链接并发多个调用.Dubbo的原理,序列化相关问题. 12.用过哪些中间件. 13.做

【C/C++学院】0831-类与对象的异常/面试100题1-100

类与对象的异常 Cpp异常 #include <iostream> #include <string.h> using namespace std; //标识错误的类型 class wrong { }; int intdiv(int a, int b) { try { if (b==0) { throw 10;//能够是不论什么对象 wrong(); } int c = a / b; return c; } catch (int data )//类型名 { cout <<

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

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

微软面试100题系列算法心得

微软100题系列地址 答案地址 谓之随笔,当是自己在练习此类算法的一些想法,一些心得,一些领悟,一些借鉴,当自引用之时,会附上相应的链接! 题:把二元查找树转变成排序的双向链表(树) 描述:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向. 思维过程[个人思维]: 1. 二元查找树是指在任何结点看来,它的左子树上的值要少于当前结点的值,而它的右子树上的值要大于当前结点的值,对于等于的值那就看自己的原则放左子树还是右子树. 2. 关于树的算法必

微软面试100题系列:字符串匹配算法,查找包含字符集的子串

觉得这题挺有意思,看了别的博客,找到了一种目前看来还不错的算法,为强化理解,就写了下来. 题目意思: 实现一个挺高级的字符匹配算法: 给一串字符串,要求找到符合要求的字符串,例如对于目的串:123,那么给定字符串中诸如1******3*****2,12******3这些形式的子串都要找出来,即子串中含有目的串的所有字符,输出所有符合条件的字符串,并求出最短子串 .类似于和谐系统. 例如:假如目的串为:"423",输入长字符串为:"4fsdfk2jfl3fd2jfksd3j4d

有效的括号序列——算法面试刷题4(for google),考察stack

给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列. 括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]" 则是无效的括号. 您在真实的面试中是否遇到过这个题? 样例 样例 1: 输入:"([)]" 输出:False 样例 2: 输入:"()[]{}" 输出:True 挑战 O(n)的时间

有效单词词广场——算法面试刷题5(for google),考察数学

给定一个单词序列,检查它是否构成一个有效单词广场.一个有效的单词广场应满足以下条件:对于满足0≤k<max(numRows numColumns)的k,第k行和第k列对应的字符串应该相同,. 给定的单词数量至少为1,且不超过500.单词长度至少为1,不超过500.每个单词只包含小写英文字母a-z. 您在真实的面试中是否遇到过这个题?  是 题目纠错 样例 样例1 输入: [ "abcd", "bnrt", "crmy", "dty