首页 > 【社招】蚂蚁、字节、快手、滴滴、携程、酷家乐、货拉拉面经
头像
11122222222222222
编辑于 2021-02-05 12:29
+ 关注

【社招】蚂蚁、字节、快手、滴滴、携程、酷家乐、货拉拉面经

一、前言

楼主的基本情况

19年7月份毕业。在美团的某部门做java后台开发工作。7月份找了一次工作,基本一面挂,12月份又开始找,这次面了蚂蚁、字节、快手、滴滴、携程、酷家乐、货拉拉、叽里呱啦、比心、得物等公司。拿到了字节、快手、携程、酷家乐、货拉拉、叽里呱啦的offer。蚂蚁也面到3面(面试都过了,但是还是把我挂了),滴滴面完hr面。在此分享下面经。

为什么要换工作

业务相关性,从进入部门到现在基本没有写过什么代码。产生的一个问题就是:2020年的每天都过的非常不安。
因为自己当初选择美团,就是觉得美团技术强,可以学到很多东西,但现实好像跟我想的差别过大。作为一个程序员,在毕业一年多的时间里尽然没有写过什么代码。同时由于部门环境复杂,各种领导,导致做事很不容易,每天都觉得心累。

找工作经历

楼主2020年8月份找过一次。2020年12月又找过一次。如果说没写什么代码只是让我自己心里感觉不安的话,7月份找工作失败的经历,则让这种不安完全爆发。楼主8月份大概投了百度、快手、字节、小红书以及远景智能这些公司。几乎都是一面挂。找了大概一个月后,9月份的时候几乎崩溃。因为校招的时候找工作特别轻松,当时的感受就是:我这工作一年到底经历了什么为什么这么菜。

自我反省

9月的时候,在经过一个多月的极度崩溃后,开始自我反省。确实由于自己工作业务关系,写不了什么代码。所以自己业余时间就做个完整的项目来写代码。同时发现自己的基础知识太过薄弱,数据库、java、mq、算法、场景设计等方方面面都不太好。既然现状无法改变,那自己只能在基础上多下功夫。

行动

  • 项目:10月开始,自己找了个项目,将市面上主要框架dubbo、zookeeper、redis。项目中使用到的Rabbitmq,数据库都用上。通过项目来了解基础中间件。
  • 算法:刷题:LeetCode hot100,hot200等。基本每天保障能做2-3道题。

二、面经

由于面试的公司太多了,大部分具体面经都忘记了,但是总结下来也就那么几类吧。如果有想要找工作的同学,可以在投简历前,试着问问自己,能否回答上来,再去投简历吧。

数据库mysql:

1、数据库用过哪些?
2、mysql引擎有哪些?
3、这些引擎有什么区别?
4、InnoDB用什么存储的?为什么要这么存储
5、B+树有什么特点?
6、索引有用过吗?如何进行索引优化?
7、回表、索引下推、覆盖索引等概念?如何应用。(有可能基于此,给你出个实际题目,让你建立索引,并问你为什么?)
8、mysql事务,ACID,事务隔离级别?
9、RR级别下是否会出现幻读?为什么?通过什么机制来实现的?MVCC?行锁,表锁,间隙锁,next-key lock? MDL,DDL?
10、@Transactional 注解在什么情况下会失效

基本如果把这些问题都搞懂的话,数据库的问题就问不到你了。在此推荐极客时间上,丁奇的Mysql45讲。我在找工作前基本看了两遍。

MQ:

现在互联网基本都用kafka或rocketmq。但是由于我们业务的特殊性,用的是Rabbitmq。但是mq的原理都是通的,只是支持的特性不一样。在使用mq的时候,几乎都会遇到相同的问题,所以需要根据你熟悉的mq,把这些问题想清楚,搞明白。推荐一个好用的github地址:https://github.com/doocs/advanced-java
1、mq是什么
2、为什么要用mq
3、mq如何保证消息不丢失
4、mq如何保证高可用
5、mq如何保证消息的顺序
6、mq如何保证消息不重复消费

Redis:

基本面试redis是必问的。之前我只是用过,但是对于redis的原理还是没有系统了解过。在此推荐极客时间上,蒋德钧的《Redis核心技术与实践》
1、项目中redis怎么用的?
2、redis如何保证高可用?
3、缓存击穿、穿透、雪崩的解决办法
4、redis的底层数据结构有哪些?时间复杂度怎么样?
5、redis为什么快?为什么是单线程?
6、String的底层如何实现,set呢?redis如何扩容。RDB,AOF。各有什么特点?

java基础:

java基础基本都是些八股文了,所以需要好好复习下,基本其他所有的面经,都会涉及一点。
1、synchronized和lock的区别,实现原理、锁升级场景、AQS如何抢占?
2、Object中的方法有哪些?equal和hashcode的区别,为什么会有这两个方法。wait,notify,notifyall锁住的是什么?
3、java的泛型擦除了解过吗?(字节特别喜欢问这个)
4、hashmap,concurrenthashmap,hashtable,arraylist等实现
5、线程的状态有哪些?有哪些方法可以让线程变成这些状态?
6、线程池,如何使用(基本回答都是指定队列,避免OOM)?核心参数有哪些?(必问)
7、类加载器,双亲委派模型有什么好处?可以不用吗?

jvm:

jvm基本也是都会问的,所以推荐把周志华的《深入理解java虚拟机》好好看看。
1、jvm都有哪些部分构成?哪些是线程私有的哪些是公有的。
2、jvm的内存模型,内存屏障
3、垃圾回收算法?垃圾回收器。
4、类加载过程。
5、volatile关键字。

大数据题:

一般一二面都是问些项目难点、以及技术基础。三面都会涉及一些大数据题,看你有没有真正掌握。还是推荐刚才的那个https://github.com/doocs/advanced-java地址。上面有常见的大数据问题。
1、1Gb数据,如何找出其中的top10.
2、1Tb数据排序。
3、1TB数据找出其中出现频率最高的词。
等等。但是万变不离其宗。基本就是归并,hash,排序加bitmap来解决。

项目相关:

其实社招大部分的公司都不面算法的,大多看项目,所以项目这块需要同学们好好准备。把项目的难点、项目的架构项目解决了什么问题在心里要整理清楚。好的面试官会根据你的项目难点要点,穿插着对上面一些基础组件对你发问。所以项目这块一定要好好准备。而我自己基本没有写什么代码,所以项目这块比较吃亏。还有一点需要强调的:不要觉得自己做的项目没什么技术含量,好好思考,好好总结总能想到那么一两个难点。然后面试的时候特意强调这。让面试官基于此对你发问。

场景题:

社招比较喜欢问这个,特别是字节的。通过一些场景来考察你的设计能力。一般需要对一些常用的中间件比较熟悉,确实有过一些实际经验,这样的题目才能回答的比较好,或者多看看他人的面经,对涉及到的场景题好好思考研究。
1、设计一个限流工具会如何设计?
2、实现一个mq如何实现
3、设计一个aop实现如何做

spring相关:

基本业界做业务系统的,spring已经统一天下了。spring的实现也基本是考察基础的一个重要方面。在此推荐一个博客:上面的文章都写的很好:https://javadoop.com/
1、spring的ioc和aop是什么,如何实现
2、bean的生命周期
3、循环依赖如何解决
4、springboot如何启动的?为什么不需要spring那么多的配置。

设计模式:

设计模式主要考察下你平时写代码的有没有思考过一些代码的优化。常见的模式很多想,像:单例,工厂、简单工厂、模板、观察者等。这个找其中的一两个好好了解就好了
然后平时的时候,思考下如何在项目中应用的。一般面试管的问题就是:设计模式有了解过吗?如何使用的。由此可能还会问问:面向对象的设计原则,有哪些?各是什么含义等。

三、工作感受

楼主能想到的问题大概就这么多了。如果上面提到的东西你都能回答个***不离十,基本基础这块是没啥问题了。写这个面经的目的主要是想帮助大家建立一些信息,不要因为一时的工作不顺,或者挫折,就丧失了信息。去年9月份的时候我确实很崩溃。工作后和在学校的反差真的大的让我有点受不了。不过最后结果还是好的。
总结下工作一年多的感受吧。工作中确实要有明确的目标感:我自己感觉过的不如意,除了跟工作环境业务的关系外,确实感觉一年多时间里自己不知道想要什么,目标是什么。所以在工作中很被动吧。

更多模拟面试

全部评论

(15) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐