字节三面 + 微信四面 +PayPal 四面, 大厂面经分享
本人双非一本非科班,之前在百度和字节实习过,这次其实没抱着什么特别大的希望投递,没想到字节可以再给我一次机会,还是挺开心的。
几场面试下来,面试得自信,声音自信,给面试官一种你啥都会稳如狗的感觉(实际内心慌得不行...),然后表达流畅,吐字清晰,不卑不亢,说话要有逻辑性,不能吞吞吐吐半天说不明白,得总结自己的面经,形成自己的知识体系,别人的面经写的再好也是别人的,自己刷面经总结自己不会的点整理出来才是最有用的,文末我分享了一些我学习的方法和我收集的资源,我都整理成一套资源库了希望能帮到大家
下面是面试经历全部写的是技术面试,hr 面就没写了
1. 字节跳动
整个面试过程,主要围绕算法和实习经历考察,基础知识的话不是很难。每一面的面试官都很 nice,特别是三面的面试官,感觉在讨论的时候没有带着面试的压力,就是朋友之间的对话。
字节跳动一面(60 分钟)
自我介绍
说下 TreeMap 和 LinkedHashMap
TreeMap 怎么按照自己想要的顺序排序
ConcurrentHashMap 怎么取的 size 值
怎么防止恶意请求刷接口
那 ES 怎么切词的呢,有写过切词插件吗
你在项目中用 Redis 的场景
说下 Redis 有哪些数据类型
Redis 怎么分片的
Redis 的删除策略
字节跳动二面(60 分钟)
你希望你处于一个什么样的工作环境
怎么根据 0-5 随机函数得到 0-8 随机函数
缓存和 DB 之间怎么保证数据一致性
延时消息队列怎么设计 Redis 的 zset
zset 做延时队列会有什么问题死循环轮询耗时
说下索引二八原理、提升读性能牺牲写性能的数据结构一个索引对应一颗 B+树哈希、有序数组、二叉树查询的优缺点那为什么不用跳表呢?
火车票区间查询怎么设计数据结构比如上海去武汉,途经南京、合肥现在要快速查询出两点之间票的库存
手撕代码,leetcode54 螺旋矩阵
字节跳动 三面(60 分钟)
手撕代码,模拟微信群随机红包,输入金额、人数,返回金额数组;注意最小单位分;
聊项目,项目中的难点、模块然后还问了一些依赖模块的底层实现
项目的数据量以及 QPS 能达到多少
说下 RPC,与 HTTP 的区别
你来字节最想得到什么我说希望技术能突飞猛进,面试官说你别说的太虚,实实在在的说...
你有什么想问我的吗
2. Paypal
Paypal 一面(60 分钟)
聊项目,说项目中的模块、技术难点
聊下 ES 内部的一些机制
ForkPoolJoin 相对于线程池的优点,及底层实现
详细说下 CMS 和 G1 收集器
CMS 怎么处理垃圾碎片的
GC Root 有哪些
String 的 intern 方法有什么用
说下公平锁、非公平锁,为什么非公平锁性能更高
CAS 的三个问题及解决方案
Paypal 二面(60 分钟)
说下项目中的难点
说下多线程中有哪些锁
volatile 关键字原理
说下 ES 的底层实现
大数据 Spark、Hadoop、MapReduce 有了解吗
100 万的数组怎么求最小的 100 个数字和最大的 100 个数字
手撕代码,leetcode378 有序矩阵中第 K 小的元素
Paypal 三面(60 分钟)
leetcode121 买卖股票的最佳时机
JVM 调优
详细说说偏向锁、轻量级锁、重量级锁问
新生代配合 CMS 收集器用的什么收集器
JVM 里面会有几个栈
为什么 synchronized 演变成重量级锁后性能会下降
kafka 有没有用过
Redis 怎么保证高可用主从机制,哨兵机制
Paypal 四面(60 分钟)
问我机器学习和大数据这块熟不熟悉答不会面试官说那我问你些 java 相关的问题
Spring Boot 内部怎么实现像 tomcat 那样直接把 war 包扔到某个目录然后运行起来整个项目
Spring Boot 很大的 jar 包里面比如说有个 lib 目录,那这个 lib 如果让你去加载,怎么加载
你怎么深入的去学习 JVM 的
你怎么去看的虚拟机的内存
Jconsole 和 VisualVM 会拿到内存占用的一个趋势,那你觉得什么样的趋势才是合理的
Full GC 和 OOM 时,我怎么知道是哪一段代码引起的内存溢出和泄漏
G1 收集器有没有 Full GC 线上服务 GC 日志有没有看过,G1 GC 会有什么关键词
3. 微信支付
微信支付 一面(75 分钟)
自我介绍
哈希和红黑树的特点和应用场景
说下 time wait,出现在哪一端,什么原因会导致 time wait 过多,怎么解决
TCP 和 UDP 的区别
用过什么微服务的框架
项目中怎么实现负载均衡的 NginxF5
为什么一年不到就出来看机会
为什么不用 MySQL 的分库分表,直接用 ES
ES 索引里面都存储了哪些字段
调度平台模块是怎么调度的,什么时间调度,让你设计怎么实现
微信支付 二面(60 分钟)
ES 的倒排索引
了解分布式事务吗
MySQL 的事务隔离级别
MySQL 的主从备份机制
数据库的表结构设计有哪些经验
数据库的分库分表
关键帧提取的原理
限流怎么实现的
DB 和缓存怎么保证数据的一致性
微信支付 三面(40 分钟)
怎么保证缓存和 DB 之间的数据一致性
缓存穿透、缓存击穿、缓存雪崩区别及解决方案
怎么预估热点 key,怎么解决热点 key 问题
缓存的淘汰策略
CPP 会吗
微信支付 四面(170 分钟)
哈希存在的问题
Redis 有序集合底层实现
为什么用跳表不用红黑树
MySQL 索引为什么用 B+树不用红黑树
zset 有什么应用场景
为什么用 ES 不用 MySQL
项目的数据规模
为什么 ES 和 MySQL 都是基于磁盘,ES 的查询性能要高
面试官让我共享屏幕讲项目,边讲边问
面试结束复盘查漏补缺
面试本质是一个自我优势展示的过程,不要把面试变成面试官问一句自己回答一句,主动抛出一些可能的点等面试官来问,比如我基本都被问到了 DB 和缓存之间怎么保证数据的一致性,其实都是我自己刻意往上引的,比如面试官说,你用过 Redis 吗,你可以说,用过,一般用来作为缓存配合 MySQL 提高性能,需要注意它们之间数据的一致性问题(不要太刻意,自己把握分寸),面试官大概率会接着问你是怎么保证的
以下最新总结的阿里 P7 资深 Java 必考题范围和答案,包含最全 MySQL、Redis、Java 并发编程等感兴趣的朋友可以点击这里即可获取到文章中的文档,资料!
刷面试题
2020 大厂面试题 65 份
知识点最全的 java 面试宝典(共 227 页)
Leetcode 算法刷题
刷 leetcode,刷 leetcode,刷 leetcode!重要的事情说三遍,作为一个程序员,代码写的烂就是原罪,面试时前面答得再天花乱坠算法写的捉急也没用,只会让面试官产生你是背面经的感觉,所以写算法题还是要快准狠,快速无 bug 写出最优解在面试官那里是非常亮眼的,这个是没有捷径的,我自己这次面试 leetcode 高频 300 题刷了好几遍,面试算法很顺利,当然最主要的还是刷中等难度的题,hard 题性价比太低,反正我没怎么刷...
Leetcode 算法刷题宝典(共 666 页)
Java 数据结构和算法.(第二版)(共 584 页)
算法刷题 LeetCode 中文版(共 264 页)
算法刷题 100 天
MySQL 调优
微服务
Spring Cloud Alibaba 全解
Redis 核心笔记
2020 备战秋招全套资源库
不要眼高手低,不少小伙伴看面经觉得自己啥都会,但是自己会与面试过程中能清晰有层次的说出来是两回事,并且自己会到什么程度,有个说法很好,判断你是不是真的掌握一个知识的一个点在于你能不能通过通俗易懂的语言教会一个完全没有相关知识背景的人,如果这可以做到,那对知识的掌握一定是融会贯通的,面试过程中一定可以信手拈来。比如 volatile 关键字的原理,能不能说出点面试官眼前一亮的东西,和别的同学蜻蜓点水不一样的感觉,这还是不容易的
有需要小编整理的全套 Java 资源库的小伙伴可以点击这里即可获取到文章中的文档,资料!
评论