“lz”是非科班自学的java,毕业后进入卡中心,现在是2年开发经验。20年年初先后面了头条、拼多多和阿里(淘宝和支付宝),并成功拿到阿里和头条两家的offer。
面试前我主要是不断的刷题且看了很多大牛的面经进行查漏补缺,所以面试完后也想记录下来,权当给大家提供点信息吧。(面试过了一周了,记忆也有点混乱,争取想到多少就记下来多少)。
顺便提一下面试体验:头条 > 阿里 > pdd
拼多多最垃圾的面试体验,没有之一。我约的视频面,结果面试官说有事给我打电话面,然后给我一个文档,是一个算法。我在写算法的时候没察觉到电话信号不好断掉了。然后我回拨过去,面试官来了一句:你不要故意挂断电话去查答案。我%@#¥@#%@5,保持微笑解释信号不好。后来为了信号好一点我去阳台面试,冻的瑟瑟发抖,这个时候心态已经炸了,又冷又紧张,算法题有思路但是一直被这个人否定,最后挂了。
头条
最开始面的头条游戏中台,当时是第一次面试,没有经验,导致算法题虽然有思路,但是没有写出最优解,直接挂了。后来又被捞起来,因为此时已有阿里的offer,所以胆子也大起来了,收拾心情开始面头条。
头条的面试特点基本就是一个套路:【自我介绍】->【项目介绍】->【手撕算法】->【基础知识】,屡试不爽。
- 自我介绍:我是xxx,来自xxx,毕业后在xxx几年,期间负责xxx。
- 项目介绍:xxxxx。项目的时候面试官会问你难点和解决方案,同时会给你提出场景,问你更优化的思路。
- 手撕算法:多刷题,也可以看看别人面过的算法题,可能会重复。
- 基础知识:针对简历写的东西问,我被问的较多的是一些中间价,Redis、MySQL、Kafka、ElasticSearch,Java基本没问,因为头条这边使用Go。
一面
- Two Sum
- 给定m个不重复的字符 [a, b, c, d],以及一个长度为n的字符串tbcacbdata,问能否在这个字符串中找到一个长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面这个例子,acbd,3。给定m个可能重复的字符[a, b, d, d]呢?
- 提供一个整型数组以及一个整数s,如果该数组中存在n个连续元素,且元素相加之和大于等于s,则返回满足该条件的连续元素的最小长度;否则返回0
- MySQL集群。假如集群出现延迟怎么处理。
- Redis的zset实现延时任务
- 设计题:如何设计tiny url
- 为什么要四次挥手
- HTTPS
第二天收到hr小姐姐的电话,约了面试时间。
二面
- 自我介绍
- 项目介绍
- K Group反转链表。写了栈和迭代两种实现方式,链表的题写起来很痛苦,很容易边界出错。
- Redis的持久化机制
- MySQL的隔离级别
- MySQL索引,聚簇索引和二级索引
- Redis高可用方案
- 介绍一些Kafka的一些概念
- Kafka如何保证消息有序
…忘了
过了一天又收到hr小姐姐的电话,开心。
三面
- 自我介绍
- 项目介绍
- 第K大的数
- 设计题:秒杀系统
- MySql的索引优化
- HTTPS
…忘了
三面完了正好是周五,忐忑的等到了周一,以为挂了。结果下午收到hr加微信,约了hr面。
hr面
- 为啥离职,怎么想的
- 介绍项目
- 怎么和团队的人沟通,和成员出现冲突时怎么解决。
- 期望薪资,你现在的薪资
三个工作日收到了offer,头条面试体验还是很棒的。
找朋友内推的蚂蚁金融核心,结果第二天就被拒了,杭州淘宝给我来电话,说我被捞起来了。确认了一下,确实如此,那就面吧。
阿里
还是很想去阿里的,所以也很忐忑,淘宝一共经历了4轮技术+1轮笔试+hr面,流程很长,面的我压力山大。
阿里的面试特点:【自我介绍】->【项目介绍】->【场景解决】->【基础知识】,阿里面试除了基础以外,也很看重候选人的解决问题的思维。还是需要候选人有点积累的,假如你写的项目不是自己的,很容易就被问出来。
一面
- 自我介绍
- 项目难度介绍
- 如何实现延时任务
- 如何实现限流
- 线程池的参数
- 能不能自己实现一个java.lang.String并加载
- Redis为什么这么快
- epoll和poll的区别
- 进程同步的方式
二面
- MySQL的索引机制
- 如何自己实现内存分配和管理?不太懂,然后说了jvm的垃圾回收机制
- 你们公司内部的RPC框架,介绍一下
- Redis的key过期策略
- 缓存穿透和缓存雪崩
- 分布式锁
- 如何实现全局的id生成策略
- 悲观锁和乐观锁
- 红黑树了解么
三面
- 如何实现群消息已读
- 消息推送如何保证不重复
- Kafka如何保证消息的可靠性
- RPC是什么,和http调用有什么区别
- 说一说你项目的架构
- GC
- MySQL的索引原理,给了一个场景,如何优化
…忘了
面完3面后居然又来了一个笔试题
笔试
- producer-consumer
- 两线程交替打印
- 多线程模拟100分钱随机分给20个人,每个人最少分配到2分钱
四面
- 写个producer-consumer吧,我说上次写过了。。傻了。。不该说的,然后面试官换了一道题,还好比较简单,写个二分查找,2分钟写完完事。
- 项目难点
- MVCC
- HTTPS
- ElasticSearch的查询过程
- Kafka如何保证高可用
- Reids的集群和选主
- 知道什么分布式一致性算法
- 如何实现定时关单
…忘了
HR面
阿里的hr面真是让我难忘。
- 说说看,假如你是部门技术经理,线上商户数据丢失怎么办
- 怎么将一个产品推荐给其他的团队,怎么界定边界
- 怎么样协调关系
(我才2年啊喂,到这里我已经快冒汗了,生怕最后一关毙掉了) - 你和同事相处的情况怎么样,说说你帮助同事的一次经历
- 薪资
阿里的面试流程很长,而且一个部门挂了以后,会被另一个部门捞起来,不停的面。总之来说,阿里的面试体验也还不错,就是经常被放鸽子。
支付宝的面试经验其实也大同小异,我就不贴了。
复盘经历
1、众所周知,面试这些大厂算法和底层是必不可少的一部分、所以刷题也是围绕着这方面进行,押题大神左程云的《程序员算法面试指南》对我帮助特别大,学习起算法来也是通俗易懂。(532页,几百道算法题)
2、刷题终究是必不可少的,筹备了好几本面试宝典和一份Java核心知识宝典,共计有上千道面试题,抽空就刷题复查,其中技术点概况了:java基础、jvm、多线程、高并发、分布式、Redis、spring全家桶系列、dobbo、mysql、网络协议、mybatis、ZK、nginx、kafka等等
3、Java面经,总结他人之长处弥补自身的不足,来自一群大牛的面试经历亲述,有面试美团、腾讯、阿里等等。
整理分享不易,对个人复盘面试资料、面经等等感兴趣的朋友们可以点赞+关注,点击这里免费领取
祝大家在今年金九银十能拿到心仪的offer!