秋招结束,回馈牛客,大厂面经总结
秋招结束,回馈牛客,大厂面经总结
秋招拿了阿里、腾讯、美团、滴滴、京东、快手、小米的offer,如今回馈牛客,分享一下当时的面经。有些面试由于比较晚,所以没有记录。比如快手,当时已经有了几个意向,就比较懈怠,没有总结。
楼主还写过一篇秋招经验分享帖,可以配合此帖使用:回馈牛客,秋招总结分享
阿里巴巴
参加了阿里的暑期实习,所以秋招获得了绿色通道,面试流程较短,一轮GM面,一轮直属Leader面。
GM面
- CAP理论与BASE理论
- thrift的负载均衡
- dubbo的序列化方式
- 一个rpc框架,生产者提供了枚举类型,但是后来修改了枚举,客户端没有更新,会产生什么问题?
- 一些性格方面的闲聊问题
直属Leader面
- 实习,聊各种实习项目
- 所有项目中,你遇到最大的困难是什么,收获了什么
- 如何学习新技术
- MySQL和Redis主从复制
- rpc调用原理
- 注册中心原理
- 注册中心挂了怎么办,一直深入这个问题
- dubbo和thrift区别
- 数据库慢查询如何处理
- 线上问题排查
- 不用arthas
- 最近在学什么
- 对jvm调优的理解
- 项目中用的哪个gc
- 毕设题目
- c语言和java语言的内存模型区别
- 为什么不留在阿里健康
- g1如何并发清除
腾讯
腾讯是秋招第一家面试的公司,一面二面现场面,三面GM面隔了很久电话面。
2020年8月13日腾讯一面(1h左右)
- 自我介绍
- 了解阿里健康的业务么
- 你觉得阿里医院这个项目前景如何?
- 在滴滴,redis用了什么数据结构
- MySQL用的是什么存储引擎
- Innodb如何设置事务,你了解Innodb的事务机制是什么样
- 在滴滴,是如何使用RocketMQ解耦的
- 算法1:给定有序数组,求两个和为n的数
- 算法2:给定无序数组,求两个和为n的数
- 算法3:给定一个数组,数组内数字代表柱体高度,此时如果下雨,整个范围可以采集雨水多少?
2020年8月13日腾讯二面(1h左右)
- 自我介绍
- Blink是阿里基于Flink开发的还是封装了一下?
- 在字节的项目你参与推荐算法了么,你们是什么推荐逻辑?(规则引擎、定时筛选)
- 筛选后的车系信息存储在redis里,使用什么数据结构?
- set和zset的区别?
- 这些信息如何读取?
- 如果在读取的同时正在插入信息怎么办?(redis事务)
- 介绍redis事务
- 不使用事务如何解决?(备份内存,读写分离)
- 如果不用这种办法,你还有其他方法么?(分布式锁)
- 介绍分布式锁
- innodb如何实现事务(mvcc、间隙锁)
- B+树只有叶子节点存放数据,那会产生什么变化?为什么要这样的结构?
- 算法1:链表中删除重复节点(思路比较简单,但是考验链表coding能力,手写,面试官会裸眼编译。。)
- 设计题1:实现一个内存拷贝函数(memorycopy,入参是一个任意类型的指针,返回拷贝后的内存地址)
- 设计题2:邮箱验证中的链接,如果实现仅一次有效,如何实现有效期30分钟,要完整设计思路,并给出url样例
总结:问题均发散问题,很少知识点的固定考核,更多知识点的应用结合,临场发挥因素较大,算法难度不高,但是所有都需要手撕coding。
2020年9月3日腾讯三面(30min左右)
- 自我介绍
- 详细聊了聊项目,实习的,实验室的都问了,追问不多,对数据开发很感兴趣
- 两个大文件,每行一个字符串,A文件1T大小,B文件2T大小,求两个文件的交集
- 晚饭时间到了,你如何给一个人推荐饭店?
- 反问
2020年9月4日腾讯HR面(30min左右)
- 自我介绍
- 优势劣势
- 之前实习的体验
- 阿里滴滴字节的公司文化
- 拿了哪些offer,在面哪些公司
- 阿里腾讯怎么选
- 选择工作的依据是什么
HR面试的具体问题记不清了,主要是聊人生,和问公司选择
美团
美团全程牛客视频面试,三轮面试,第三轮面试后有事没有整理面经,所以只有一二轮的面经。
2020年8月26日美团一面(50min左右)
- 重写和重载的区别
- 返回值可以作为重载的区分标志么
- ==和equals的区别
- Long a = 1000L 和 long b = 1000L,a == b返回什么?
- Long a = 1000L 和 Long b = 1000L,a == b返回什么?
- Java数据结构了解哪些
- 如果需要保存放入Map中的顺序,使用什么数据结构
- HashMap的底层数据结构,如何扩容
- ConcurrentHashMap如何保证线程安全
- 会哪些设计模式
- 介绍一下策略模式
- 写一个单例模式(coding,写的双重校验锁,用的synchronized)
- 除了synchronized还有什么锁?
- 换成ReentrantLock写一下
- 写一个死锁(coding)
- 项目中是如何使用MQ的
- mysql的B+树结构讲一下
- 数据库的隔离级别,分别解决了什么
- join的用法
- left join什么效果
- 数据库分页的写法limit
- ACID分别代表什么
- 网络协议分几层
- TCP在哪一层?
- 三次握手四次挥手
- RPC框架了解哪些,用的什么协议?
- HTTP的请求方式常用的哪几种,什么区别?
- 幂等性
- HTTPS是如何实现的
- 有git仓库么?
- 如何学习一项新的语言或者新的技术的?
- 看过什么博客或社区?
- 反问
2020年9月1日美团二面(50min左右)
- 自我介绍
- 觉得最难最有收获的项目、收获在哪
- Redis的数据类型
- 如何解决缓存雪崩(要求说出多种办法)
- TCP三次握手
- 树的前中后序遍历有什么区别
- 排序算法了解哪些
- 最快的排序算法是什么
- 讲一下快排
- 拿了哪些offer、在面哪些公司
- SpringMVC和SpringBoot的区别
- MyBatis中如何防止sql注入
- SQL:表(姓名、科目、成绩),统计每个人的所有科目得分总和(coding)
- 算法:两个字符串,找出最长公共子串(coding、测试点)
- 设计:一个每天100w订单量的系统现在要变成1000w以上,如果你是架构师,你如何考虑这个问题
滴滴
滴滴是网约车部门,面试在周末的一个下午,连续三面,途径是牛客视频。
2020年8月30日滴滴一面
- 自我介绍
- 滴滴的项目
- 字节的项目
- redis怎么用的
- 分布式锁
- 滴滴中是什么场景用到了分布式锁
- 可以优化不用么?
- 算法:n+1长度数组,内是1~n的数,找出重复的数(要求:时间复杂度O(n),空间复杂度O(1),并且不可以修改原数组,将数组转成链表,用链表求环入口的方式解,需要coding、测试点)
- 反问
2020年8月30日滴滴二面
- 自我介绍
- 字节项目
- 为什么数据存redis不存mysql
- 阿里项目
- 大数据价值理解,一些实时计算场景的问题
- Blink和Redis(迷惑的问题,这俩有关系么)
- 批处理和流处理
- 多线程的使用方式
- Thread、Runnable、Callable的区别
- 线程安全的数据结构
- HashTable和ConcurrentHashMap的线程安全方式
- JavaNIO
- IO多路复用
- 为什么epoll比select快,优化哪些地方
- Redis中zset的底层
- 跳表的时间复杂度?为什么?
- Redis的分布式架构
- 哨兵模式下的选举算法
- Redis节点间通信协议
- 数据库Innodb了解
- mvcc
- 算法1:数组的最大连续子数组和(coding、测试点)
- 算法2:判断二叉树是否是搜索二叉树(coding、测试点)
2020年8月30日滴滴三面
- 自我介绍
- 实验室项目、你负责什么
- 具体讲一下各个状态
- 如果同时两个管理员进行团标进行审批会不会发生并发不安全
- 怎么解决?
- 你觉得项目中最重要的,或者最难的问题是什么?
- 字节项目,详细讲讲
- 规则引擎相关
- 关于项目中redis数据存储和cron的一些问题
- 项目带来最大的提升
- 上线后遇到什么问题没有,怎么解决
- 滴滴项目详细讲讲
- 各种活动、规则具体怎么配置
- 奖励计划、奖励实施、奖励追回具体逻辑
- 为什么春招不选择来滴滴继续实习?
- 介意换技术栈么(Golang、PHP)?
- 算法1:打印0~9,用递归和迭代两种方式实现(福利coding)
- SQL:流水明细表t(流水号、用户姓名、商品名称、单价、数量、日期)统计:8月份消费金额总和最高的前三名用户的姓名(coding)
京东
京东一面是电话+在线代码,二面纯电话面,HR面试没有做记录,时间比较靠后了,有些怠慢。
2020年9月2日京东一面
- 自我介绍
- 简单聊了下简历的内容
- 做个算法题:判断两个字符串是否存在映射关系(1对1映射即可)
- 代码健壮性
- 为何抛出异常而不是返回false
- HashMap的数据结构
- 解决哈希冲突的办法
- 最坏的哈希表时间复杂度
- 红黑树结构的最差哈希表时间复杂度
- 红黑树为什么可以查找是logn
- 普通搜索树最差时间复杂度,形状什么样
- 算法题:给定一个集合,求集合的所有子集
- 对流处理有什么理解?
- 反问
2020年9月2日京东二面
- 自我介绍
- 实习相关内容
- 讲一个你觉得最有难度的项目,为什么
- 规则引擎
- 实验室项目,状态模式,反射
- 给一个字符串,怎么反射到类
- 如何调用方法
- 获得的构造器对象和直接newInstance有什么区别
- 多线程用过哪些
- Callable怎么用
- 线程池有哪些,如果执行任务,如何获取执行返回值
- 数据库事务的理解,acid
- 详细说原子性和隔离性
- 不可重复读和幻读区别
- 输入www.baidu.com发生什么
- 物理层是怎么发送数据到指定mac地址设备的?
- 载波监听多路访问
- 让你设计一个抢票系统你需要哪些设计?
- 限流怎么做?
- 服务降级是降级什么?
- 火车票系统和京东秒杀有什么区别
- 反问
小米
小米一共两面,通过牛客视频面试,没有HR,直接发的意向。
2020年8月19日小米一面(50min左右)
- 自我介绍
- 商业互吹,和我讲大数据未来很有潜力,5G什么的,巴拉巴拉
- 设计一下LRU算法,用什么数据结构,怎么实现?(不用coding)
- 讲一下什么叫索引回表
- volatile和原子锁你了解的讲一下(煎饼果子来一套)
- 公平锁和非公平锁是怎么实现的?
- 线程池说一下你了解的
- SpringMVC处理请求url的过程
- 聊聊Dubbo
- 平常如何学习?
- 算法1:二叉树的序列化与反序列化(coding)
- 算法2:判断二叉树的平衡性(coding)
- 聊天,聊一聊阿里,问我阿里健康是什么部门,是不是属于蚂蚁金服?难道我长着一张财富自由的脸?
- 反问
2020年8月20日小米二面(1h左右)
- 自我介绍
- 平时开发中有用过什么设计模式?
- 讲一下策略模式
- Spring中应该用了很多设计模式吧,说说它们在哪里用了什么模式
- 说一下AOP中是怎么运用动态代理的?
- MySQL的索引结构你了解哪些?
- 为什么用B+树?
- 你了解MySQL的事务隔离级别么?
- 如何解决幻读
- 如何实现可重复读
- 说出一个数据库死锁的场景
- 讲一下你理解的乐观锁和悲观锁
- Java中如何实现乐观锁的?
- Java哪些地方使用了CAS
- GC垃圾回收器你了解哪个
- 讲一下CMS的垃圾回收机制
- CMS怎么解决内存碎片的?
- 如果GC日志中发现频繁fullGC,可能是什么导致的?怎么解决?
- TCP四次挥手为什么,发生了什么?
- Redis如何解决缓存一致性
- 更新数据库后,失效redis的key如果失败了怎么办?
- JVM参数调优(回绝,不会)
- 算法1:一个升序数组,找出其中绝对值最小的数,要求时间复杂度O(logn)(coding,并且过测试点)
- 算法2:给定一个单向链表,向右循环旋转k次,返回新的链表头,要求时间复杂度O(n)(coding,并过测试点)
- 反问
百度
百度提前批面了两面,但是很遗憾挂掉了,虽然面试中自我感觉还可以,莫名其妙死掉了。秋招整体还算顺利,参加面试的公司不多,我是百度得不到的男人。
2020年8月18日百度一面(1h左右)
- 自我介绍
- 说说你的项目中你印象最深刻的一个,是怎么做的
- redis和数据库同步问题,请求之后需要同时更新数据库和缓存,会可能出现什么问题?怎么解决?(先更新数据库,再失效缓存)
- 除了手动删除缓存,还有什么办法删除?(expire)
- redis分布式锁
- setnx和expire是两个操作,可以直接发两个命令么?(不可以,直接用set命令,或者用redis事务)
- 数据库MySQL存储引擎了解么,说说你常用的,他们的区别
- Innodb支持行级锁,但是有的时候会导致全表锁,什么时候?为什么?
- 索引了解么
- 一个表,a、b、c三个字段,ab有联合索引:
- select a from t where b = xxx,走索引么?为什么?
- select a from t where b = xxx and a = xxx,走索引么,为什么?
- 假如有查询 select a from t where b = xxx order by c,你如何建立索引最高效?为什么?
- select、where、orderby的执行顺序是什么?
- 一个salary表,三个字段:p_name(员工姓名), dept(员工部门), salary(员工薪水)
- 查询平均薪水大于2000的部门中的最高工资是多少,写sql
- 不使用子查询,还是刚才的问题,写sql(用 having)
- 现在要多查询一个字段,p_name,怎么做,写sql(没写出来,但是面试官的思路也只是子查询,然后union原表,根据dept和salary相等来判断p_name,我解释说我觉得不能保证唯一性,所以没说,还以为有啥高端操作,但是要知道直接加p_name,会导致聚合报错,但是强行加入聚合字段会导致聚合逻辑出错这一点)
- Java中HashMap底层数据结构
- put操作会发生什么?(捋着源码说一下即可:哈希、哈希冲突、如何插链表、转红黑树条件、扩容)
- 出现什么情况会导致HashMap退化?(频繁hash冲突)
- 什么情况会导致频繁Hash冲突(解释了HashMap中Hash算法的高低异或避免冲突,说了自定义类没有重写HashCode方法,或者HashCode方法重写的不好,会导致频繁冲突)
- HashMap如何遍历?顺序可以保持么?
- LinkedHashMap如何保持插入顺序的?
- TreeMap怎么用?如何自定义排序规则?
- 刚才三个Map线程安全么?如果想用安全的Map怎么办?
- ConcurrentHashMap讲一下你的了解(1.7分段加锁、1.8节点加锁、共享扩容等)
- 说一下了解的java的锁
- synchronized原理
- 锁升级
- ObjectMonitor
- juc的AQS
- volatile内存屏障
- 算法:二分查找(这个福利算法。。。)
- 反问
2020年8月25日百度二面(45min左右)
- 问一下实习经历啥的
- 介绍滴滴项目
- SpringBoot和SpringMVC的区别
- SpringBoot的核心注解?如何实现?
- SpringBoot的配置文件是什么?
- appliction.properties和application.yml的区别
- 聊分哪几个模块,用什么技术栈,我负责哪个模块
- MySQL事务的概念,事务的特性
- 事务的隔离级别
- MySQL建表语句,表名大小写敏感么?
- 除了Innodb还了解什么存储引擎
- count(*),Innodb快还是MyISam快
- SQL:
- 班主任表(班主任信息)、学生表(学生信息、班主任id)、成绩表(学生id、课程类型、成绩)
- 查询每个班主任所带学生数量与班主任信息
- 查询各个班级语文成绩>90的学生人数>10的班主任信息(case then)
- Redis分布式锁
- Redis数据结构
- Redis分布式锁用在项目中的哪些地方?为什么用?
- 字节中用了Redis哪种数据结构?
- 了解什么排序算法?
- 希尔排序和插入排序的区别?
- 如果数据量大,你选择哪种排序;如果数据量小,你选择哪种排序?为什么?
- 线上服务有问题,怎么定位?怎么解决?
- 平时周末有什么爱好?
- 最近看什么书?
- 刚毕业未来三年,对自己的职业有什么规划?