1.倒排索引
2.讲讲 redis 里面的哈希表?
3.happen-before 的规则?
4.volatile 修饰符,synchronize 锁
5.java 单例模式的实现,懒汉、饿汉?
6.进程与线程的区别,多进程和多线程的区别?
7.HashMap 原理,为什么用红黑树,红黑树的特点?
8.快排时间空间复杂度,最好最坏的情况,优化方案?
9.TCP 的拥塞控制,具体过程是怎么样的?UDP 有拥塞控制吗?如何解决?
10.讲讲了解的垃圾回收算法和回收器,什么时候执行 STOP THE WORLD?
11.了解 Go 语言吗?
1.Kylin 的项目架构
2.Paxos 和 ZAB 协议
3.CAP 理论,分区容错性的意义
4.大表 Join 小表优化,如何处理数据倾斜?
讲一下最大堆和最小堆
6.HDFS 的读取、写入,容错处理。(源码)
7.MapReduce 的过程(第一版和第二版的)
8.MR shuffle,Spark shuffle。
9.namenode HA,脑裂,Yarn 的调度机制。
10. Hive 的内部表和外部表区别、数仓建模模型、数仓分层、雪花模型和星型模型。
11.了解 ClickHouse 吗?它与 Kylin 的区别?
1.LRU 算法实现(伪代码)
2.链表倒数第 K 个数(讲思路)
3.一堆螺丝和螺母用最短时间匹配(代码实现)
4.求每天浏览页面的新用户(Hive QL 实现)
5.求抖音小视频每日点击量最高的 10 个(Hash + 最小堆)
栈和队列
链表问题
二叉树问题
递归和动态规划
字符串问题
大数据和空间限制
位运算
数组和矩阵问题
其他题目
一、冒泡排序
二、选择排序
三、插入排序
四、快速排序
五、归并排序
六、希尔排序
七、堆排序
八、基数排序(桶排序)
九、递归
十、链表
十一、栈
十二、队列
十三、二叉树
小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。我有一些面试题、架构、设计类资料可以说是程序员面试必备!所有资料都整理到网盘了,需要的话欢迎下载!私信我回复【000】即可免费获取
这次的笔试里总共有 5 道,我 AC 了 2.5 题,第一题 90%,第二题 90%,第三题 70%,不算好,但勉强通过了。去年的这个时候我可是连题目都看不懂的,看得懂的只知道用嘴怎么说,不会用代码实现。通过这段时间的算法训练,总结了如下几点算法笔试经验:
1.平时刷题一定要总结归纳,最好分类。比如关于树的题型,链表的,数组等等,观察它们的解题思路,总结出解题套路。
2.积累工具类算法。什么叫工具类算法?就是你解一道算法题需要用到另一种算法,这个被调用的算法就是解决这道算法题的工具。比如常见的「深度优先遍历」、「广度优先遍历」、「01 背包」、「KMP 算法」以及常见的选择和排序算法都是经常使用的工具类算法。
3.学会抽象题目。笔试算法题不同于面试算法,不会直白跟你说要使用哪种算法去解答,更多的要自己学会抽象,抛开题目本身,要明白内部讲的是什么,别被题目的糖衣炮弹迷惑了。只有把题目抽象成最原始的算法你才能更好地使用工具类算法进行解答。
头条面试和其他大厂可能大同小异,但就是这个小异才是关键地方,能异于其他人的地方。可以从如下几个方面去做准备:
1.特意准备几个面试题源码。像我在回答一些中规中矩面试题的时候,都会从源码角度出发。比如常见的 HashMap 等集合类,多线程的各种锁以及大数据框架的部分源码。
2.特意准备项目难点。面一些大厂的时候避免不了被问到项目难点,不可能用普通 Bug 含糊过去啊。这边可以从项目用到的技术栈出发,去寻找技术栈在项目中会存在的难点,然后套进自己的项目,找个自己能懂,最好能全懂的。
3.针对性去了解公司的技术栈使用情况。比如头条使用 Go,众人皆知,那为什么我不突击学习一下呢?比如从业内人士得知头条最早使用的是 Kylin 框架,后面慢慢转为 ClickHouse,那我必须了解一下两者的不同啊,而且可以结合头条的业务场景。