双非一本非科班,之前在百度和字节实习过,这次其实没抱着什么特别大的希望投递,没想到字节可以再给我一次机会,还是挺开心的。
几场面试下来,面试得自信,声音自信,给面试官一种你啥都会稳如狗的感觉(实际内心慌得不行...),然后表达流畅,吐字清晰,不卑不亢,说话要有逻辑性,不能吞吞吐吐半天说不明白,得总结自己的面经,形成自己的知识体系,别人的面经写的再好也是别人的,自己刷面经总结自己不会的点整理出来才是最有用的
下面是面试经历全部写的是技术面试,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提高性能,需要注意它们之间数据的一致性问题(不要太刻意,自己把握分寸),面试官大概率会接着问你是怎么保证的
以下我最新总结的大厂Java必考题范围和答案,内容点包含有java集合,jvm,并发编程,spring,mybatis,springMVC,微服务,Dubbo,netty,网络,zookeeper,kafka,rabbitMQ,readis缓存,数据库,设计模式 等一线大厂互联网大厂常问到的面试真题,感兴趣的朋友,可以点击这里,暗号4399!
面试题及答案总结
刷面试题
知识点最全的java面试宝典(共227页)
实战笔记
获取方式:点击这里,暗号4399!
不要眼高手低,不少小伙伴看面经觉得自己啥都会,但是自己会与面试过程中能清晰有层次的说出来是两回事,并且自己会到什么程度,有个说法很好,判断你是不是真的掌握一个知识的一个点在于你能不能通过通俗易懂的语言教会一个完全没有相关知识背景的人,如果这可以做到,那对知识的掌握一定是融会贯通的,面试过程中一定可以信手拈来。比如volatile关键字的原理,能不能说出点面试官眼前一亮的东西,和别的同学蜻蜓点水不一样的感觉,这还是不容易的