[toc]
1.简单介绍
双非重点本科,毕业后一直在一个中型厂工作(杭州准独角兽,研发200人,阿里系风格),技术算不上拔尖,做的基建也比较粗糙,但是该有的东西基本都有。自己在里面也确实学到了点东西,最多的就是流程规范以及一些业务实践。
小公司虽然技术不是很好,但是有一点挺好,就是能够试错,自己有啥想法或者新东西,基本都可以在线上业务中进行实践,约束没有大厂那么严格。
本次就分享下几个大厂的面试经验。面试了滴滴、阿里、头条、恒生,除了滴滴脸黑两次一面挂起他都过了。
2.面试内容
- 阿里-淘特后端开发
- 字节-电商
- 恒生-金融软件
- 滴滴-营销、供应链
滴滴【一面,视频】*2-60分钟
记不大清了,总之都是基础:缓存、GC、数据库索引、MQ、分布式等等。
问的问题很深入很刁钻(估计面试官自己都不会,猜测应该是不缺人)。找内部人帮忙看了结果面评比较差,说基础太差、没有分布式系统经验之类的。面试官水准不太行不会引导,一个问题回答错了就不提示直接过,然后说基础差,和阿里面试官比起来体验差了很多。
总结:不缺人的部门面试比较难,也可能自己比较菜,两次一面挂,面试官水准和一线大厂有些差距。
PS:第二次面试时接了两次阿里hr电话,约交叉面,然后对面试官不尊重给G了。自己想想也确实不应该,但是阿里最后一面了2333。
恒生【一二面,视频】-高级开发工程师
恒生这面试感觉比较随意,也挺基础挺简单。应该是挺缺人的,问的都比较接地气。
一面-项目小主管:主要问一些很基础的东西(30分钟)
- redis有啥存储结构、使用场景是啥?
- Springboot用过吗?怎么配置redis、mq等等(我说直接starter不就行了?)
- 几种数据结构,安全的不安全的,使用场景等等。
- 自己公司做过的业务,用到的技术栈,团队情况。
二面-项目总负责人:主要问些工程方面的(40分钟)
- 公司做啥业务的,自己负责哪块,团队有多少的业务是自己负责?
- 说说你们公司的开发流程,哪个环节是开发参与的,参与度如何?
- 系统分析、流程分析、单元测试都有做吗?说说他们之间的区别,举个实际的例子。
- 自己有没有带过项目,人员配比如何,有什么需要注意的?
- MQ怎么保证一定发送成功,怎么保证不会重复消费?
- 聊聊怎么看待恒生,有没有啥想问的?
三面-hr:主要是聊薪资(估计对我比较满意)(30分钟)
比较常规,就是个人性格、优缺点、期望薪资等等
最终:offer下来了,最后婉拒了,因为那时阿里已经稳了
阿里【一面,电话,纯技术】(老p7-90分钟)
- 多线程相关。
- CAS是什么,有啥应用的地方。
- 悲观所和CAS有啥不同,性能如何,为什么?
- 对象锁与类锁有何区别?(没答好,其实没多大区别,如果类锁是外部声明的传进去,某种意义上说和类锁一样。不过再深入点如果写过工具就能理解它的不同之处,比如我做一个异步并发加载数据的操作,多个线程同时获取一个数据,每个线程都生成一个对象CAS操作放入队列准备加载,保证只有一个人能放进去其他人都获得这同一个对象,对象包含一个锁和加载函数,此时多个线程都持有当前对象,然后调用起get方法,如果数据没准备好就wait,等待起加载好就唤醒所有线程。类锁比较适合于全局性质的,比如单例加载)
- volatile使用场景,什么时候可以不加?
- 集合问题
- ArrayList为啥随机查找比LinkedList快?(没答好,面试官想问操作系统底层,为啥连续内存寻址更快,怎么寻址的让举例子)
- 并发安全包简单介绍下
- MySQL
- 常见索引,失效问题,怎么排查和优化
- 为啥要分库分表,分了之后为啥就快?怎么分库分表,举个例子
- 水平切分和垂直切分有啥区别,各自都有什么好处?
- 水平分表,分在多个实例和分在一个实例有啥区别?
- MQ
- 使用场景,为啥要用?举例子,然后根据你的回答再追问
- MQ是解决最终一致性的常见方案,但是无法保证最终一致性。
- 分布式
- 一致性hash是啥?与普通分片有啥区别?(没答好)
- 应用场景是什么?
- Redis
- 基础结构,使用场景
- 知道底层结构吗?--不知道
- 缓存穿透、击穿、热点、雪崩分别什么意思,都是怎么解决的?
- 布隆过滤器可以用在解决什么问题上?
- 反射
- 反射基本介绍,有啥功能?
- 自己用反射做过什么东西。这个我正好做过几个工具,把反射代理什么的都用全了,面试官比较满意。
- 后续
- 对你比较满意,有俩算法题,你能把简单的做出来基本就给过了,如果都能做出来我立马给约2面。
- 第一题:单生产者多消费者问题,保证顺序消费。其实就是考察ReentrantLock和Condition
- 第二题:多级地址列表解析、存储、查找、打印。考察B树的构建和查找。
阿里【一面-续,电话】(30分钟)
- 介绍下你做这两个算法题的思路和设计细节,然后随机问几个代码细节。
- 给我说了下二面注意事项。(说稳着点发挥基本能过。给了四个词和两句话:聪明、乐观、皮实、自省,介绍项目用数据和结果说话,所有回答要多想想怎么表现前面四个词)
阿里【二面,电话,偏技术】(p8-60分钟)
- 项目经验以及个人软实力
- 工作经历简单聊聊,以后有何打算?
- 是否关注开源项目,对那几个比较感兴趣觉得设计很不错,举几个例子?扯了下Spring和dubbo
- 除了工作怎么学习,说说你的实际情况。
- 讲下你这所有项目中最出色的一个,有何难度,有啥亮点。(答非所问,最后我想起来要用数据说话,就说性能提升几倍,之前怎么样,现在怎么样,立马就满意了)
- 技术
- 说说集合中的并发安全容器有哪些,都是怎么实现的,自己用过哪些?
- ThreadLoca是干嘛的,自己有用过吗,举个例子说说。ThreadLocal底层实现和数据结构是啥?为啥会内存溢出,怎么避免?
- ThreadLocal用了弱引用,那说说引用都有哪几种,分别有啥区别?
- 开源框架有啥看过的?--回答说JDK和Spring,然后就不问了
- Redis为啥快?--估计想问底层实现,我说io多路复用(epoll),然后不会了,过了
- Redis怎么解决热点缓存问题?hash分片、本地缓存、命中率和热点监控提前预热
- 你说熟悉dubbo,那你觉得哪块设计比较不错?--过滤器实现很不错,比如自带的限流模块、泛化调用等
- 问题排查
- 问题排查有啥手段?自己都遇到过哪些问题,怎么排查的?
- 日志告警、rt监控、pinpoint监控、arthas监控等
- cpu问题怎么排查。top、jstack、arthas
- GC问题怎么排查。看GC日志、频率。--具体分析没做过不会,就不问了
- 实际例子。多线程下使用线程池超时问题排查...
- GC相关懂多少?--回答只会原理,没机会也不会实操
- 问题排查有啥手段?自己都遇到过哪些问题,怎么排查的?
- 觉得不错,直接当场约3面
阿里【三面,电话,偏综合素质】(p9-60分钟)
- 业务相关,主要是考察自己对公司整体业务的一个认知
- 自己负责什么业务,技术架构是啥,自己主要做了什么?自己做的东西有何价值,可量化 。
- 公司是做啥的,核心做哪块?
- 公司发展如何,竞争对手是谁,有什么优势?
- 在供应商那边是否有自己的后续规划?
- 技术
- 个人成长
- 其他
- 为啥离职,自己优缺点?
- 有其他offer,自己如何看待?
- 住哪,期望薪资多少?
- 有啥想问的?
- 自己的面试评价。缺少对复杂系统的思考和设计,分布式和高并发的经验缺乏,表达和总结能力待提高。优点基础扎实,业务大盘了解清晰。面评不错,一个小时后就给约了四面。
阿里【四面,视频,交叉面】(p9和hr-70分钟 40+30)
- p9
- 自我介绍
- 说说项目,怎么做的,有啥优缺点?数据说话
- 自己项目的延伸。--我说的是抽象设计,就一直追问我抽象,md都差点放弃面试了
- 缓存
- mysql如果有性能问题怎么优化?--考察全面思维,硬件升级、冷热分离、主从、分库分表、参数设置、缓存等。没答好,硬件和参数设置方面没想到。
- hr
- 自身优缺点
- 对c2m有啥了解?知道核心是啥吗?自己入职后要做啥清楚吗?
- 平时有主动推动产品优化取得了业务成果的案例吗,说一说。
- 有其他面试吗?offer有啥?都拿了怎么选?
- 单身吗?如果offer啥时候入职?
阿里面试总结
- 全面。技术、业务、设计、软实力等全面评估。
- 面试体验良好,面试官水平很高,面试流程一周结束。
- 更看重潜力而非现状,这个比较玄学,如果12面面试官对你评价很高基本就稳了。
字节【一面,大头兵】(60分钟)
- 介绍项目,自己怎么做的有啥结果。
- 技术
- HashMap介绍,怎么保证安全?
- Synchornized和ReentrantLock区别,什么时候用哪个?都是可重入锁吗?
- 什么是OOM?原理是啥?手写一个OOM的代码
- JVM都介绍,JVM各个模块介绍,都是干嘛的。给个场景,然后怎么排查GC问题,怎么调整GC参数。
- 算法。链表排序
字节【二面,虚线主管】(60分钟)
- 介绍项目,说一个你觉得不错的设计。
- 技术
- HashMap、CurrentHashMap
- Object有哪些方法,都是干嘛的
- 说说锁,公平与非公平是啥,实现细节有何区别?
- Spring IOC、DI、AOP讲一讲,BeanFactory和FactoryBean区别
- MySQL InnoDB介绍下,B+树和B树区别
- 问题场景
- 有俩文件,找到俩文件里相同的行
- 文件按hash分成小文件,然后小文件处理最后合并结果
- IO次数过多有啥优化?没答出来,给了提示布隆过滤器还是没答出来
- 有俩文件,找到俩文件里相同的行
- 算法。括号对比配,找到符合配对的最长长度。--需要动态规划,不会,只做出来一半
字节【三面,大主管】(60分钟)
- 自我介绍
- 写个算法,KMP。--不会
- 写个算法,列出所有子集。--开始想了个全排列,没写出来,经过提示用递归写出来了
- 写个SQL,求每个部门工资大于该省平均工资的人及部门信息
- 线程池有何好处,底层实现是啥?各个参数都有啥意思?
- 其他.....
字节【四面,HR】(80分钟)
- 面试评价,对面试官评价、对自己评价、面试感觉如何,题目、算法等
- 自己优缺点
- 有没有带过项目,人员配比如何?遇到过什么问题,怎么解决的?
- 有啥offer了,自己期望薪资多少?
字节面试总结:
- 面试官水平感觉和阿里还有一点差距,但是面试体验还不错,每面都有邮件提示,比较正式。
- 问的东西有点少,比较注重算法,占了一半面试时间。
- hr问的优点刁钻,问的问题不像一般公司那样走形式,还是比较难回答的。
PS:去了阿里两周,然后去字节了。主要感觉自己享受不了福报,坑位还是得给更优秀的人。