众所周知,互联网行业是一个说变就变的行业,随着互联网的飞速发展,涌现了一大批新兴互联网行业,在这个行业里,巨头企业也在不停地更换中。而对于程序员来说,可能一不小心就要面临裁员的危机,毕竟在这个行业里,人才太多,而在疫情之下的今年,我也不幸被裁员,加入到了失业大军。

值得高兴的是,在被裁员的1个月之后,我“碰运气”竟然拿下了阿里P6岗offer

以下附上我这次面试阿里支付宝团队的面试题以及我个人的复习方法和学习心得,包括了一些可以免费分享给大家的文档,需要这些文档的关注后添加VX(MXM9809)即可获得免费领取条件。

 

阿里巴巴支付宝团队面试题(部分题)

答案获取看文末提示哦!

1. 项目相关

2. 为什么要用dynamodb

3. cassandra dynamodb区别

4. 平常业务中的数据都怎么存储的

5. serveless 架构的问题

6. lambda都用来干什么了

7. 对java中锁的理解

8. 悲观锁 乐观锁

9. 如何用redis设计分布式悲观锁

10. Java的多态

11. 类的关系,组合和聚合的区别、哪个关系更紧密

12. 说一下反射,及你在项目中的应用

13. 线程池,线程池参数

14. 线程间的通信

15. 介绍ThreadLocal

16. ConcurrentHashMap,JDK1.7和1.8的不同实现

17. hash算法

18. 什么是时间复杂度

19. 用过数据库索引吗?介绍如何使用,何时使用

20. 介绍B树、B+树、红黑树

21. 数据库分页查询,如何分页,怎么实现

22. 四种隔离级别,虚读和幻读什么意思发生在哪

23. 使用的MySQL版本,和之前版本的区别

24. 使用什么版本的JDK(我答1.8)介绍和之前版本的不同

25. 1.7和1.8的JVM有哪些不同

26. 1.8的垃圾回收算法,介绍你所知道的垃圾回收算法,CMS垃圾回收器简单介绍

27. ConcurrentHashMap的size()函数1.7和1.8的不同,或者介绍一下如果是你如何设计

28. 排序算法,介绍一下快速排序,快速排序时间复杂度,是不是稳定排序,介绍几种你所知道的稳定排序算法

29. UDP,TCP,HTTP介绍一下,OSI七层模型

30. 说几种你说熟悉的微服务架构

31. Redis支持的数据结构

32. 讲一下一致性哈希

33. 问JVM主要是各种垃圾收集器、GC算法,安全点

34. Java内存泄漏如何排查排查

35. 为什么离开XXX公司?(坦白说了被裁,后来问了我感受以后今后的职业规划,面试官给了一个肯定的点头)

36. 最近阅读的书籍?从什么网站学习?

37. 为什么选择来阿里呢?

38. 对这个部门了解吗?了解多少?

我的复习方法

01 复习JAVA基础理论(概念)

因为工作有几年,基本上都是实操,所以在理论方面多少有些欠缺了,但我知道面试时,面试官会着重考察一个人的基础理论,所以刷了《Java从入门到精通》这本电子文档,这份文档囊括「基础知识-核心技术-高级应用-项目实战」4个篇章,非常系统且完整,刷了一遍之后对体系内容就有了完整清晰的思路了,后续的专题训练复习相对来说就容易多了。

 

02 面试核心知识点(面试问什么?)

在还未开始准备之前,面试对于我来说,似乎熟悉又陌生,这主要是因为我几乎不知道现在的面试会问到一些什么,所以对此心里没有底。那么在面试之前,刷题就非常重要了,所以我们需要摸清楚面试会问到哪些知识点。于是在面试前,刷了一遍这套「面试核心知识点」,每个架构知识点在这个文档里都有清晰的详解,让人茅塞顿开。(文档中的知识点解析包括JVM、Java基础、多线程并发、Spring原理、微服务、设计模式、数据库、分布式缓存、RabbitMQ、MongoDB、Kafka等等。)

 

03 准备算法题(不止是LeetCode)

大部分互联网公司还会面算法题,这部分题目主要是来过滤掉那些非计算机专业出身的人,所以算法题是非常重要的,需要提前学习和准备,但大部分人盲目地去刷LeetCode,要知道LeetCode的题实在太多,只刷LeetCode是远远不够的。我的做法是收集并整理各个大厂近5年来最常问的算法题,在学习这些算法题时,学会举一反三,在面试时基本就能自信应对了。(免费分享个人整理的算法题库)

 

我的学习心得

1.好记性不如烂笔头

这句谚语,几乎无人不知无人不晓,但是总被许多初学者抛在脑后。在学习的时候,总是看的代码多,而动手练习的代码少!身为一个程序员都应该很清楚,代码如果不多动手敲它,它永远不会自己跑进脑中,所以多动手才是成功的关键。

2.花更多的时间分析问题

花更多的时间理解和分析问题,然后再设计方案吧。你会发现剩下的事情很容易了。设计不是说要用建模语言和工具,可以是仅仅看看天空在脑子里构思。那些在遇到问题就开始敲代码的人往往会最终偏离需求。作为程序员,当你在编写代码之前,尽量把问题分析透彻一点,这不仅能提高你编码的效率,更重要的是能提高你的分析问题能力。

3.重思考,多总结

一个段好的代码并不是它们越复杂越好,简单的方法,实现复杂的功能,才是我们最需要的。要提高编码速度,更重要的是简化梳理程序流程,以最小的代码量完成功能实现。所以编程最重要的事情是思考和总结。

 

总结

最后,祝愿大家都能够拿到心仪的offer!

以上我个人的复习方法所提及到的文档资料,均可以免费分享,包括阿里面试题的答案也整理成了文档,需要打包带走这些资料的,关注添加VX(MXM9809)获得免费获取方式哦!