2年经验,2021 阿里、头条、美团,滴滴,京东面经
作者:月伴飞鱼
最近一段时间面试了几家互联网公司,陆续通过了阿里、头条、美团,滴滴,京东的面试,基本上面试的公司都通过了,所以在这里想分享一些自己面试的经验给大家,希望能帮助大家拿到心仪的 offer
我的基本情况:19 届本科,现在在一 家小公司,毕业一年半,后端开发
面试准备
简历
重点放在专业技能和项目经验两块
- 你的简历就是你给面试官提供的考点,简历上的东西必须自己 Hold 住,万一自己写的东西被问住了,会很尴尬,给面试官留下的印象也不好,所以就是会啥写啥
- 技术栈最好不要写精通,你敢写面试官就敢问,被问倒了很尴尬的,写熟悉,了解就行
怎么投简历
我这里强烈建议找人内推,这样简历通过的概率大些,如果找不到,可以试试脉脉,我就是从脉脉投的简历,把状态改成寻找机会就行,会有很多人找你的
推荐一个简历制作模版,我一直用的: https://www.polebrief.com/index 。
算法
这个该刷还是得刷,别偷懒,我个人感觉刷完下面几个已经够了,大家可以根据自己的基础情况选择
- 剑指 Offer:https://www.nowcoder.com/ta/coding-interviews
- 刷 Leetcode,刷 Leetcode,刷 Leetcode!重要的事情说三遍,Leetcode 前 200 道
- 经典排序算法:https://blog.csdn.net/qq_35508033/article/details/109399281
复习
我复习主要以看书为主,推荐一些我看的书籍和资料,有时间的话尽量看的细一点,多看几遍,没时间的话就挑重点看
- 并发编程:Java 并发编程的艺术,Java 发编程实战
- JVM:深入理解 Java 虚拟机
- Redis:Redis 设计与实现,Redis 开发与运维
- MySQL:高性能 MySQL,MySQL 技术内幕
- SpringBoot 和 SpringCloud:https://blog.didispace.com/
- Kafka:Apache Kafka 实战
- 设计模式:大话设计模式,设计模式之禅
- 分布式:从 Paxos 到 Zookeeper 分布式一致性原理与实践
需要书籍的 pdf 文档可以关注我的公众号,月伴飞鱼,回复 666 获取
项目经验
社招面试项目很重要,不光是你项目本身的技术复杂度,还有业务复杂度,你本身在项目中担任的什么角色,遇到过什么问题,瓶颈在哪,怎么解决的,这几个问题是非常重要的,很多公司到最后基本上都是围绕着你的项目在问,给面试官讲明白你的项目是必须具备的能力
总结下社招面试问项目最主要的问题套路:
- 你项目为什么这么设计,你这样设计有什么好处,解决了什么问题,会产生什么问题,还有什么可以优化的
- 这么设计有什么瓶颈吗,遇到了什么问题,有什么改善的方案
- 项目遇到的难点,技术挑战,你是 怎么解决的,为什么用这种方式解决,还有更好的方式么
- 根据你简历上提到的具体功能去扣细节
面试技巧
- 面试得自信且谦虚,声音自信,面试表现谦虚,得给面试官一种你啥都会,很稳的感觉(实际内心很慌),然后语言表达流畅,吐字清晰,回答问题也要有逻辑性,不能支支吾吾半天说不明白,面试官都听不懂,这就很尴尬了,这个可以自己多练习一下
- 面试本质是一个自我优势展示的过程,不要让面试官问一句自己回答一句,主动抛出一些可能的点让面试官来主动问你,还有就是不会的问题就说不会,这个没关系的,千万别瞎说
- 不要眼高手低,不少小伙伴看面经觉得自己啥都会,但是会与面试过程中能清晰有层次的说出来是两回事,费曼学习法可以了解一下,举个例子:比如 sychronized 的原理,能不能说出点面试官眼前一亮的东西,这还是不容易的,其实面试主要是证明你比别人更有技术的深度,广度,不然都是背八股文,那面试官看不出你有什么不一样的,这个面试过的概率就大大降低了
个人建议,面试没准备好,不要随便面试,一些大厂都会有面试评价记录,太多差评影响以后的面试,同时面完之后要多总结,复盘,整理知识点,查漏补缺
面试最后
面试结束时问面试官什么问题
我一般会问:
- 我面试的岗位的具体工作是什么
- 使用的技术栈 有哪些
面试总结
阿里的面试更倾向于实用性,基本是从各种场景出发,来给你一个场景,让你来解决实际的问题,那么在解决问题的过程中,对于各种知识的应用就是亮点了
头条更看重计算机基础,算法,以及对各种中间件的了解
面试也有不少的运气成分的,毕竟每个面试官的侧重点可能不一样,大家放平心态就好
学习建议
学习要形成自己的知识体系,不要天天盯着别人的面经(当然,我的面经可以看,哈哈)做碎片化学习,面经只是辅助作用,查漏补缺的,一旦你的知识体系有了,很多问题都能举一反三,这时候面试就很稳了
下面是热乎乎的面经
注意:有些面试的题目比较少,因为有些面试题因为会被多个公司重复问 ,就不重复写了
美团
一面
- 线程安全的类有哪些,平时有使用么,用来解决什么问题
- mysql 日志文件有哪些,分别介绍下作用
- 你们项目为什么用 redis,快在哪,怎么保证高性能,高并发的
- redis 字典结构,hash 冲突怎么办,rehash,负载因子
- jvm 了解哪些参数,用过哪些指令
- zookeeper 的基本原理,数据模型,znode 类型,应用场景有哪些
- 一个热榜功能怎么设计,怎么设计缓存,如何保证缓存和数据库的一致性
- 容器化技术了解么,主要解决什么问题,原理是什么
- 算法:对于一个字符串,计算其中 最长回文子串的长度
- 项目介绍
美团
因为之前的部门一面通过后,该部门没有 hc 了,就给我推荐到其他部门了,大厂 hc 还是挺紧张的
一面
- redis 集群,为什么是 16384,哨兵模式,选举过程,会有脑裂问题么,raft 算法,优缺点
- jvm 类加载器,自定义类加载器,双亲委派机制,优缺点,tomcat 类加载机制
- tomcat 热部署,热加载了解么,怎么做到的
- cms 收集器过程,g1 收集器原理,怎么实现可预测停顿的,region 的大小,结构
- 内存溢出,内存泄漏遇到过么,什么场景产生的,怎么解决的
- 锁升级过程,轻量锁可以变成偏向锁么,偏向锁可以变成无锁么,自旋锁,对象头结构,锁状态变化过程
- kafka 重平衡,重启服务怎么保证 kafka 不发生重平衡,有什么方案
- 怎么理解分布式和微服务,为什么要拆分服务,会产生什么问题,怎么解决这些问题
- 你们用的什么消息中间件,kafka,为什么用 kafka,高吞吐量,怎么保证高吞吐量的,设计模型,零拷贝
- 算法 1:给定一个长度为 N 的整形数组 arr,其中有 N 个互不相等的自然数 1-N,请实现 arr 的排序,但是不要把下标 0∼N−1 位置上的数通过直接赋值的方式替换成 1∼N
- 算法 2:判断一个树是否是平衡二叉树