金九银十:搞定这两个 GitHub 标星 50K 开源项目,拿个 30k 轻松吧?
又到了金九银十的招聘黄金季了,显然今年行情不怎么样,僧多粥少,而且招聘门槛也是越来越高,面试深度也越来越偏底层。动辄就是几道 mid、hard 级别的算法题,做出来了说你 Leetcode 没少刷,没做出来就说你不行。
就像我之前面试的时候,问我的我都答上来了,面试官给我来一句:“没少刷题吧?”
很无奈。。。面试不应该刷题么?
你问的都是八股文,难道我还不能刷八股文?
但这并不是一件坏事,为了那份拧螺丝的活,咱们还是好好学习怎么造航母吧。 我在今年金三银四的时候也推荐给大家两个项目,一个是 LeetCodeAnimation,很有意思的一个项目,下面我还会提到,另外一个就是干货满满的 advanced-java 项目了。
本期继续给大家推荐两个 github 高星项目
LeetcodeTop—star:2.9k:字节、阿里巴巴、百度、猿辅导、快手等一线互联网大厂面试 leetcode 真题
advanced-java——star:47k:互联网 Java 工程师进阶知识完全扫盲,涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。
我之前推荐的 LeetCodeAnimation 项目,推荐的时候还是 48.1k,现在已经 58.8k 了,新增了不少 Leetcode 题目的动画演示,并且还在持续维护。 示例图:leetcode 第 20 题——有效的括号
![](https://static001.geekbang.org/infoq/d7/d73a226d8329befb1f16533545257b33.gif)
leetcode 第 20 题——有效的括号
大学的时候,我们进实验室搞 ACM,也是刷题,一开始刷杭电的题,刷 100 多道以后觉得自己有所提升了,就开始刷清华的题,然后参加校内赛,然后再去参加省赛。
我一直认为大家有空应该多刷刷 Leetcode 的,虽然大家平时都说业务开发就是 CRUD,但是你去观察,那些优秀的程序员或多或少的都在刷题。刷多了,你的逻辑思维会更加缜密,思考问题也更加全面,最终体现的就是你的代码质量会极大的提升,bug 也就自然少了,我觉得这才是刷题的最大好处。
下面我们就来具体看看本期推荐的两个项目。【项目地址文末有获取途径】
1、LeetcodeTop
![](https://static001.geekbang.org/infoq/5d/5d6a922f25d95961e23d49c285ef759b.webp?x-oss-process=image/resize,p_80/format,jpg)
![](https://static001.geekbang.org/infoq/5d/5d6a922f25d95961e23d49c285ef759b.webp?x-oss-process=image/resize,p_80/format,jpg)
![](https://static001.geekbang.org/infoq/c4/c4cc0ee27438a50bdbdaa0b2edf26786.webp?x-oss-process=image/resize,p_80/format,jpg)
汇总了阿里巴巴、百度、字节跳动、快手、猿辅导等一线互联网大厂技术岗面试过程中遇到的 Leetcode 题目,涵盖:后端、算法、客户端、前端、测试、数据开发等多岗位:
![](https://static001.geekbang.org/infoq/96/96a0fe37c217b7d67d32f4dcc085b4c3.webp?x-oss-process=image/resize,p_80/format,jpg)
我们看看猿辅导 8 月 1 日至 8 月 31 日的后端面试都有哪些 leetcode 原题:
![](https://static001.geekbang.org/infoq/1a/1a78327d801e957acaf08a1a15433118.webp?x-oss-process=image/resize,p_80/format,jpg)
高频词汇:数组、二叉树、链表,面试必知必会的数据结构,开始刷题之前,一定要先学习这些数据结构哦~。
大家在刷这些题的时候,如果没有好的思路也可以先去文中推荐的 LeetCodeAnimation 项目里找到相关的动画演示,然后根据思路再实现自己的代码,一定要自己亲自 code,看懂到自己能说出来再到能写出来之间有很大的差距,一定要实操。
比如第 94 题:二叉树的中序遍历,题目难度为 Medium,目前通过率为 35.8% 。 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 是不是有种题都读不懂的感觉? 什么是二叉树的中序遍历?什么是递归?什么是迭代? 那就先看看动画演示:
![](https://static001.geekbang.org/infoq/61/61c78e8d574efce6be7fb073b93b918b.gif)
![](https://static001.geekbang.org/infoq/61/61c78e8d574efce6be7fb073b93b918b.gif)
94 题:二叉树的中序遍历
项目推荐:如果大家想在金九银十出去看看,那么现在就可以突击 leetcode 刷题了,但是总不能一题一题的刷,根据这份 leetcodeTop 来刷,至少他的命中率会很高,非常适合临时抱佛脚。
2、advance-java
![](https://static001.geekbang.org/infoq/a9/a9c2adc5f050017a8caebc32bc33bb97.webp?x-oss-process=image/resize,p_80/format,jpg)
项目主页:在文末有获取的途径
这个开源项目是多篇优质文章的汇总,我已经忍不住推荐第二次了,不仅仅面试时候突击各个方面的知识点,平时也值得大家持续学习,细细推敲。
第一部分推荐大家刷题,是因为面试时候真的就给你来两道 Medium 难度甚至 Hard 难度的题目,做不出来没办法进行下一步。大厂都认为这些是基础,你应该会,如果不会,大概率他不关心你的项目,除非你的项目非常有亮点。
如果我们能通过算法题考核,接下来就开始深入拆解你所做过的项目了:
1、你做过的项目最大的量级是多大?有没有遇到过什么困难?
2、分布式事务如何处理?如何保证最终一致性?这个过程中的每个节点出现问题了怎么办?
3、你用过哪些 MQ?都有什么区别?
4、分布式锁实现的方式有几种?锁到期了业务还没处理完怎么办?
5、甚至现场来一个比较难的场景,看你设计的思路和思考问题的逻辑是否连续且缜密。
那这个时候,你不仅仅需要对你曾经做过的项目有所总结、沉淀,并且你需要充分的理论知识、方法论来支撑你这个项目为什么这么设计。
如何让方法论能够实际落地到你的业务项目中去,比如为了保证数据的最终一致性,我们项目中如何如何做的,我们用到的是一个二阶段提交的思想,另外我们的业务场景满足 CAP 中的 CP,等等。
面试就是要吹牛,吹牛前一定要打好草稿。
高并发架构
![](https://static001.geekbang.org/infoq/ed/edbb0d9bb1bbb4a0e138dce4f4c01d9c.webp?x-oss-process=image/resize,p_80/format,jpg)
这年头,是个技术岗就要求有高并发经验,问题是哪来那么多的高并发项目呢?我一直有这个疑问。
缓存
![](https://static001.geekbang.org/infoq/cc/cc7870f2d84aff5b0ec8c879955aecdc.webp?x-oss-process=image/resize,p_80/format,jpg)
其实说高并发,大多数公司其实就是靠 redis 来顶流量的,没有什么业务是不能水平扩展的,十台机器不够就二十台,二十台不够就一百台。
数据库
![](https://static001.geekbang.org/infoq/02/02e3615be86f3dd9b8847deb29858dc2.webp?x-oss-process=image/resize,p_80/format,jpg)
丁奇的 MySQL 实战 45 讲不错,推荐大家阅读。
分布式系统
![](https://static001.geekbang.org/infoq/e1/e10ac6c2372002e74385173df4248e94.webp?x-oss-process=image/resize,p_80/format,jpg)
如果花时间把上面这些东西都系统的学习一下,月薪 30K 轻松吧
两个开源项目:
1.LeetcodeTop—star:2.9k:字节、阿里巴巴、百度、猿辅导、快手等一线互联网大厂面试 leetcode 真题;
2.advanced-java——star:47k:互联网 Java 工程师进阶知识完全扫盲,涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。
为了更好地提升大家的学习效率,以上这两个开源项目地址见下图获取
![](https://static001.geekbang.org/infoq/b7/b7acca95dc6b0ce99911244c2b7b235a.png)
评论