---
title: 本科读者小公司一年工作经验社招拿下阿里美团头条京东滴滴等 offer✌️
shortTitle: 本科读者一年经验社招上岸阿里
description: 本科读者小公司一年工作经验社招拿下阿里美团头条京东滴滴等 offer✌️
author: 日常加油站
category:
  - 求职面试
tag:
  - 面试经验
  - 面经
  - 求职
  - offer
  - 春招
  - 秋招
  - 社招
  - 校招
head:
  - - meta
    - name: description
      content: 本科读者小公司一年工作经验社招拿下阿里美团头条京东滴滴等 offer✌️
  - - meta
    - name: keywords
      content: 面试经验,面经,求职,offer,春招,秋招,社招,校招
---

大家好，我是二哥呀！

最近有个读者面试了几家互联网公司，陆续通过了阿里、头条、美团、滴滴、京东的面试，我觉得还是挺牛逼的，于是就邀请他做了个分享。

读者的基本情况：19 届本科，目前在一家小公司，后端开发。

### 面试准备

**1）简历**，重点放在专业技能和项目经验这两块。

第一，你的简历就是你给面试官提供的考点，简历上的东西必须自己得 Hold 住，万一自己写的东西被问住了，会很尴尬，给面试官留下的印象也不好，所以就是会啥写啥。

第二，技术栈最好不要写精通，你敢写面试官就敢问，被问到了答不上来就很尴尬，写熟悉，了解就行。

第三，我建议你找人内推，这样简历通过的概率大些，如果找不到，可以试试脉脉（请打钱来）。我就是从脉脉投的简历，把状态改成寻找机会就行，会有很多人找你的。

推荐一个简历制作模版——极简简历，我一直用的：

> [https://www.polebrief.com/index](https://www.polebrief.com/index)

**2）算法**，这个该刷还是得刷，别偷懒，个人感觉刷完下面一些就够了，大家可以根据自己的情况选择。

*   剑指Offer：[https://www.nowcoder.com/ta/coding-interviews](https://www.nowcoder.com/ta/coding-interviews)
*   刷 Leetcode，前200道即可([二哥的学习圈子](https://tobebetterjavaer.com/zhishixingqiu/)里提供了一份 Java 版的 LeetCode 刷题笔记，可供参考)

**3）复习**，我主要以看书为主，推荐一些我看过的书籍和资料：

*   并发编程：《Java并发编程的艺术》、《Java发编程实战》
*   JVM：《深入理解Java虚拟机》
*   Redis：《Redis设计与实现》、Redis开发与运维》
*   MySQL：《高性能MySQL》、MySQL技术内幕》
*   SpringBoot和SpringCloud：`https://blog.didispace.com/`
*   Kafka：《Apache Kafka实战》
*   设计模式：《大话设计模式》、《设计模式之禅》
*   分布式：《从Paxos到Zookeeper分布式一致性原理与实践》

### 项目经验

社招面试项目经验很重要，不光是你项目本身的技术复杂度，还有业务复杂度，你本身在项目中担任的什么角色，遇到过什么问题，瓶颈在哪，怎么解决的，这几个问题是非常重要的，很多公司到最后基本上都是围绕着你的项目在问，给面试官讲明白你的项目是必须具备的能力。

总结下社招面试中关于项目经验这块的主要问题：

*   你项目为什么这么设计，你这样设计有什么好处，解决了什么问题，会产生什么问题，还有什么可以优化的
*   这么设计有什么瓶颈吗，遇到了什么问题，有什么改善的方案
*   项目遇到的难点，技术挑战，你是怎么解决的，为什么用这种方式解决，还有更好的方式么
*   根据你简历上提到的具体功能去扣细节

**面试技巧**

1.  面试得自信且谦虚，声音自信，面试表现谦虚，得给面试官一种你啥都会，很稳的感觉（实际内心慌的一笔），然后语言表达流畅，吐字清晰，回答问题也要有逻辑性，不能支支吾吾半天说不明白，面试官都听不懂就很尴尬了，这个可以自己多练习一下。
2.  面试本质是一个自我优势展示的过程，不要让面试官问一句自己回答一句，主动抛出一些可能的点让面试官来主动问你，还有就是不会的问题就说不会，这个没关系的，千万别瞎说。
3.  不要眼高手低，不少小伙伴看面经觉得自己啥都会，但是会与面试过程中能清晰有层次的说出来是两回事，费曼学习法可以了解一下，举个例子：

比如sychronized的原理，能不能说出点面试官眼前一亮的东西，这还是不容易的，其实面试主要是证明你比别人更有技术的深度、广度，不然都是背八股文，那面试官看不出你有什么不一样的，这个面试过的概率就大大降低了。

个人建议，面试没准备好，不要随便面试，一些大厂都会有面试评价记录，太多差评影响以后的面试，同时面完之后要多总结，复盘，整理知识点，查漏补缺。

**面试总结**

阿里的面试更倾向于实用性，基本是从各种场景出发，给你一个场景，让你来解决实际的问题，那么在解决问题的过程中，对于各种知识的应用就是亮点了。

头条更看重计算机基础，算法，以及对各种中间件的了解。

面试也有不少的运气成分的，毕竟每个面试官的侧重点可能不一样，大家放平心态就好。

下面是热乎乎的面经，有些面试的题目比较少，因为有些面试题因为会被多个公司重复问 ，就不重复写了。

### 美团

**一面**

1.  线程安全的类有哪些，平时有使用么，用来解决什么问题
2.  mysql日志文件有哪些，分别介绍下作用
3.  你们项目为什么用redis，快在哪，怎么保证高性能，高并发的
4.  redis字典结构，hash冲突怎么办，rehash，负载因子
5.  jvm了解哪些参数，用过哪些指令
6.  zookeeper的基本原理，数据模型，znode类型，应用场景有哪些
7.  一个热榜功能怎么设计，怎么设计缓存，如何保证缓存和数据库的一致性
8.  容器化技术了解么，主要解决什么问题，原理是什么
9.  对于一个字符串，计算其中最长回文子串的长度
10.  项目介绍

一面虽然通过了，但我投的部门没有名额了，就给我推荐到其他部门了，大厂的名额还是挺紧张的。下面是美团另外一个部门的面经。

**一面**

1.  redis集群，为什么是16384，哨兵模式，选举过程，会有脑裂问题么，raft算法，优缺点
2.  jvm类加载器，自定义类加载器，双亲委派机制，优缺点，tomcat类加载机制
3.  tomcat热部署，热加载了解么，怎么做到的
4.  cms收集器过程，g1收集器原理，怎么实现可预测停顿的，region的大小，结构
5.  内存溢出，内存泄漏遇到过么，什么场景产生的，怎么解决的
6.  锁升级过程，轻量锁可以变成偏向锁么，偏向锁可以变成无锁么，自旋锁，对象头结构，锁状态变化过程
7.  kafka重平衡，重启服务怎么保证kafka不发生重平衡，有什么方案
8.  怎么理解分布式和微服务，为什么要拆分服务，会产生什么问题，怎么解决这些问题
9.  你们用的什么消息中间件，kafka，为什么用kafka，高吞吐量，怎么保证高吞吐量的，设计模型，零拷贝
10.  给定一个长度为N的整形数组arr，其中有N个互不相等的自然数1-N，请实现arr的排序，但是不要把下标0∼N−1位置上的数通过直接赋值的方式替换成1∼N
11.  判断一个树是否是平衡二叉树

**二面**

1.  Innodb的结构了解么，磁盘页和缓存区是怎么配合，以及查找的，缓冲区和磁盘数据不一致怎么办，mysql突然宕机了会出现数据丢失么
2.  redis字符串实现，sds和c区别，空间预分配
3.  redis有序集合怎么实现的，跳表是什么，往跳表添加一个元素的过程，添加和获取元素，获取分数的时间复杂度，为什么不用红黑树，红黑树有什么特点，左旋右旋操作
4.  io模型了解么，多路复用，selete，poll，epoll，epoll的结构，怎么注册事件，et和lt模式
5.  怎么理解高可用，如何保证高可用，有什么弊端，熔断机制，怎么实现
6.  对于高并发怎么看，怎么算高并发，你们项目有么，如果有会产生什么问题，怎么解决
7.  项目介绍
8.  给定一个二叉树，请计算节点值之和最大的路径的节点值之和是多少，这个路径的开始节点和结束节点可以是二叉树中的任意节点

**三面**

*   项目介绍
*   算法：求一个float数的立方根，牛顿迭代法
*   什么时候能入职，你对岗位的期望是什么
*   你还在面其他公司么，目前是一个什么流程

### 阿里

**一面**

1.  synchronized原理，怎么保证可重入性，可见性，抛异常怎么办，和lock锁的区别，2个线程同时访问synchronized的静态方法，2个线程同时访问一个synchronized静态方法和非静态方法，分别怎么进行
2.  volatile作用，原理，怎么保证可见性的，内存屏障
3.  你了解那些锁，乐观锁和悲观锁，为什么读要加锁，乐观锁为什么适合读场景，写场景不行么，会有什么问题，cas原理
4.  什么情况下产生死锁，怎么排查，怎么解决
5.  一致性hash原理，解决什么问题，数据倾斜，为什么是2的32次方，20次方可以么
6.  redis缓存穿透，布隆过滤器，怎么使用，有什么问题，怎么解决这个问题
7.  redis分布式锁，过期时间怎么定的，如果一个业务执行时间比较长，锁过期了怎么办，怎么保证释放锁的一个原子性，你们redis是集群的么，讲讲redlock算法
8.  mysql事务，acid，实现原理，脏读，脏写，隔离级别，实现原理，mvcc，幻读，间隙锁原理，什么情况下会使用间隙锁，锁失效怎么办，其他锁了解么，行锁，表锁
9.  mysql索引左前缀原理，怎么优化，哪些字段适合建索引，索引有什么优缺点
10.  线上遇到过慢查询么，怎么定位，优化的，explain，using filesort表示什么意思，产生原因，怎么解决
11.  怎么理解幂等性，有遇到过实际场景么，怎么解决的，为什么用redis，redis过期了或者数据没了怎么办

**二面**

1.  hashmap原理，put和get，为什么是8转红黑树，红黑树节点添加过程，什么时候扩容，为什么是0.75，扩容步骤，为什么分高低位，1.7到1.8有什么优化，hash算法做了哪些优化，头插法有什么问题，为什么线程不安全
2.  arraylist原理，为什么数组加transient，add和get时间复杂度，扩容原理，和linkedlist区别，原理，分别在什么场景下使用，为什么
3.  了解哪些并发工具类
4.  reentrantlock的实现原理，加锁和释放锁的一个过程，aqs，公平和非公平，可重入，可中断怎么实现的
5.  concurrenthashmap原理，put，get，size，扩容，怎么保证线程安全的，1.7和1.8的区别，为什么用synchronized，分段锁有什么问题，hash算法做了哪些优化
6.  threadlocal用过么，什么场景下使用的，原理，hash冲突怎么办，扩容实现，会有线程安全问题么，内存泄漏产生原因，怎么解决
7.  垃圾收集算法，各有什么优缺点，gc roots有哪些，什么情况下会发生full gc
8.  了解哪些设计模式，工厂，策略，装饰者，桥接模式讲讲，单例模式会有什么问题
9.  对spring aop的理解，解决什么问题，实现原理，jdk动态代理，cglib区别，优缺点，怎么实现方法的调用的
10.  mysql中有一个索引(a,b,c)，有一条sql，where a = 1 and b > 1 and c =1;可以用到索引么，为什么没用到，B+树的结构，为什么不用红黑树，B树，一千万的数据大概多少次io
11.  mysql聚簇索引，覆盖索引，底层结构，主键索引，没有主键怎么办，会自己生成主键为什么还要自定义主键，自动生成的主键有什么问题
12.  redis线程模型，单线程有什么优缺点，为什么单线程能保证高性能，什么情况下会出现阻塞，怎么解决
13.  kafka是怎么保证高可用性的，讲讲它的设计架构，为什么读写都在主分区，这样有什么优缺点

*   了解DDD么，不是很了解
*   你平时是怎么学习的
*   项目介绍

**三面**

1.  线程有哪些状态，等待状态怎么产生，死锁状态的变化过程，中止状态，interrupt()方法
2.  你怎么理解线程安全，哪些场景会产生线程安全问题，有什么解决办法
3.  mysql多事务执行会产生哪些问题，怎么解决这些问题
4.  分库分表做过么，怎么做到不停机扩容，双写数据丢失怎么办，跨库事务怎么解决
5.  你们用的redis集群么，扩容的过程，各个节点间怎么通信的
6.  对象一定分配在堆上么，JIT，分层编译，逃逸分析
7.  es的写入，查询过程，底层实现，为什么这么设计
8.  es集群，脑裂问题，怎么产生的，如何解决
9.  while(true)里面一直new thread().start()会有什么问题
10.  socket了解么，tcp和udp的实现区别，不了解，用的不多
11.  设计一个秒杀系统能承受千万级并发，如果redis也扛不住了怎么办
12.  项目介绍

**四面**

1.  讲讲你最熟悉的技术，jvm，mysql，redis，具体哪方面
2.  new Object\[100\]对象大小，它的一个对象引用大小，对象头结构
3.  mysql主从复制，主从延时怎么解决
4.  怎么保证redis和mysql的一致性，redis网络原因执行超时了会执行成功么，那不成功怎么保证数据一致性
5.  redis持久化过程，aof持久化会出现阻塞么，一般什么情况下使用rdb，aof
6.  线上有遇到大流量的情况么，产生了什么问题，为什么数据库2000qps就撑不住了，有想过原因么，你们当时怎么处理的
7.  限流怎么做，如果让你设计一个限流系统，怎么实现
8.  dubbo和spring cloud区别，具体区别，分别什么场景使用
9.  给了几个场景解决分布式事务问题
10.  项目介绍
11.  你觉得你们的业务对公司有什么实际价值，体现在哪，有什么数据指标么

**五面**，hr面完后又来了一面，说是交叉面

1.  怎么理解用户态，内核态，为什么要分级别，有几种转换的方式，怎么转换的，转换失败怎么办
2.  怎么理解异常，它的作用是什么，你们工作中是怎么使用的
3.  你们用redis么，用来做什么，什么场景使用的，遇到过什么问题，怎么解决的
4.  jvm元空间内存结构，永久代有什么问题
5.  你平时开发中怎么解决问题，假如现在线上有一个告警，你的解决思路，过程
6.  你们为什么要用mq，遇到过什么问题么，怎么就解决的

*   你觉得和友商相比，你们的优势在哪
*   聊天：炒股么，为什么买B站，天天用，看好他

### 抖音

不怎么问项目，或许是我项目太low了，比较喜欢问计算机基础和中间件知识。

**一面**

1.  http请求头，expire，cache-control字段，状态码，301，302，401，403
2.  https原理，数字签名，数字证书，非对称加密算法过程，有什么问题
3.  tcp连接client和server有哪些状态，time\_wait状态
4.  虚拟内存，虚拟地址和物理地址怎么转换，内存分段，内存分页，优缺点
5.  linux最多可以建立多少个tcp连接，client端，server端，超过了怎么办
6.  eureka原理，强一致性么，为什么，怎么保证强一致性，多级缓存怎么保证一致性，eureka集群，宕机了服务还能调用么
7.  hystrix原理，半开状态知道么，具体的一个转换过程，它的隔离是怎么实现的
8.  zookeeper一致性保证，zab协议原理，半数原则如果查询到另外一半呢，那zookeeper属于哪种一致性，强一致性么，还是最终一致性
9.  zookeeper选举机制，选举过程有什么问题
10.  最长不重复的连续子串
11.  头条为什么用go，对java和go怎么看，愿意转go么

**二面**

1.  函数a调用函数b的过程，是怎么传参的
2.  java里面的函数调用有哪些，io流里面有函数调用么
3.  fork函数，父子进程的区别，孤儿进程，僵尸进程会有什么问题，进程有哪些状态，进程间怎么同步，通信，消息队列，管道怎么实现的，进程调度算法，各有什么优缺点
4.  dos攻击，ddos攻击，drdos攻击，怎么解决，syn flood
5.  自旋锁，线程上下文切换的开销具体是什么，中断，有哪些中断，用户态和内核态切换过程
6.  一张大表怎么更改表的数据结构，字段，用alter会有什么问题，怎么解决呢，有什么好的方案，双写的话会有什么问题，还有其他方案么
7.  redis管道用过么，用来做什么，它的原理是，保证原子性么，和事务的区别，redis事务保证原子性么
8.  redis强一致性么，怎么保证强一致性，有什么方案
9.  kafka怎么保证消息不丢失的
10.  找出所有相加之和为 n 的 k 个数的组合，组合中只允许含有 1 - 9 的正整数，并且每种组合中不存在重复的数字，输入: k = 3, x = 9 输出: \[\[1,2,6\], \[1,3,5\], \[2,3,4\]\]

**三面**，感觉面试官很忙，就问了几个电商场景的技术解决方案

算法：一个环上有10个点,编号为0-9,从0点出发,每步可以顺时针到下一个点,也可以逆时针到上一个点,求:经过n步又回到0点有多少种不同的走法

举例：

如果n=1，则从0出发只能到1或者9，不可能回到0，共0种走法 如果n=2，则从0出发有4条路径:0->1->2, 0->1->0, 0->9->8, 0->9->0,其中有两条回到了0点，故一共有2种走法

### 滴滴

**一面**

1.  排序算法了解哪些，快排，快排复杂度，优化，堆排序，建堆过程
2.  反射了解么，原理是什么
3.  treemap和linkdedhashmap区别，实现原理
4.  jvm类加载的过程讲讲，符号引用是什么，哪些情况会发生初始化
5.  spring的循环依赖，怎么解决的，为什么需要加个三级缓存，二级不行么
6.  springboot有什么特点，相比与spring，了解springboot的自动装配的一个原理么
7.  kafka支持事务么，你们项目中有使用么，它的原理是什么
8.  怎么统计一亿用户的日活，hyperloglog有什么缺点，bitmap不行么
9.  求一个环形链表的环的长度

**二面**

1.  redis的几种数据类型，你们用过哪些，zset有用来做什么
2.  垃圾收集器，cms垃圾收集过程，为什么停顿时间短，有什么缺点，concurrent mode failure怎么办，内存碎片怎么解决，为什么不用标记整理法
3.  线程池原理，核心参数，线程数设置，参数动态调整后变化过程，Tomcat线程池原理，常用的线程池，你们一般使用哪种，为什么，会有什么问题，线程抛异常怎么办，阻塞队列原理
4.  做过分库分表么，为什么要分库分表，会有什么问题，多少数据适合分库分表，跨库，聚合操作怎么做
5.  项目介绍
6.  给定一个二叉树, 找到该树中两个指定节点的最近公共祖先
7.  你对自己有什么规划，想学习什么技术，最近在看什么书

**三面**

1.  nio讲讲，实现原理，优缺点 2.了解netty么，讲讲netty的设计模型，架构，使用场景
2.  zookeeper读写数据过程
3.  项目介绍

### 京东

**一面**

1.  tcp和udp的区别，tcp怎么保证可靠连接的，出现网络拥塞怎么解决
2.  tcp和udp的报文结构了解么
3.  给了一个业务场景写sql语句
4.  你们建表会定义自增id么，为什么，自增id用完了怎么办
5.  一般你们怎么建mysql索引，基于什么原则，遇到过索引失效的情况么，怎么优化的
6.  jvm内存结构，堆结构，栈结构，a+b操作数栈过程，方法返回地址什么时候回收，程序计数器什么时候为空
7.  redis实现分布式锁，还有其他方式么，zookeeper怎么实现，各有什么有缺点，你们为什么用redis实现
8.  返回一个树的左视图

**二面**

1.  spring你比较了解哪方面，讲讲，生命周期，bean创建过程
2.  使用过事务么，遇到过事务失效的情况么，原因是什么
3.  springboot是怎么加载类的，通过什么方式
4.  什么对象会进入老年代，eden和survivor比例可以调整么，参数是什么，调整后会有什么问题
5.  微信朋友圈设计，点赞，评论功能实现，拉黑呢，redis数据没了怎么办
6.  项目介绍
7.  给你两个非空的链表，表示两个非负的整数。它们每位数字都是按照逆序的方式存储的，并且每个节点只能存储一位数字。
8.  请你将两个数相加，并以相同形式返回一个表示和的链表

**三面**，感觉面试官对es很熟悉，一直问es问题

1.  es倒排索引，原理，lucene，分词，分片，副本
2.  es写数据原理，数据实时么，为什么不实时，会丢数据么，segment，cache，buffer，translog关系
3.  es深度分页，优化
4.  项目介绍
5.  验证二叉搜索树

* * *

分享的最后，二哥简单说两句哈。

如果想社招进大厂，就必须得做到以下四点：

1）夯实基础，基础不牢地动山摇，这一年的准备，基础知识通过查漏补缺提升了很多。但也发现了诸多不足，未来还需继续积累。

2）坚持学习，开发这行内卷太严重了，年轻的时候一定要养成学习的习惯。如果在小公司做的是没挑战的事情，还忙得没时间学习，建议趁早换一份能带来成长的工作。

3）确定目标，做事情一定要定一个目标，只要你信念够强，它就会一直指引着你前进。不然经历过一天疲惫的工作后，下班再继续学习这件事是坚持不下来的。

4）制定计划，两个月啃下一个主流技术栈，1 年下来差不多也能啃完 6 块硬骨头，这将是你未来面试的兵器库，十八般武艺不说样样精通，随便挑几个跟面试官捞一个小时应该不在话下！

我是二哥呀，希望大家都能拿到心仪的 offer！

>转载链接：[https://mp.weixin.qq.com/s/h2tV6v5Rh6jHdO9x0p63-g](https://mp.weixin.qq.com/s/h2tV6v5Rh6jHdO9x0p63-g)，出处：月伴飞鱼，整理：沉默王二

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png)