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