写在前面
大家好,这是一篇超长面经+总结,是对自己上一阶段的梳理,也希望给以后准备找工作/正在找工作的同学们多多少少一点帮助。
基本介绍:普通985本+海外渣硕,大二转到CS专业,大三项目交流3+2,19年10月留学毕业,有工程项目,无实习无额外加分项,主Java研发岗,非battmd级别选手,加一起拿了4个offer,最后准备去星环了。
一,面经集合(按公司划分)
最早是去年的12月开始,中间有几个月在研究室抗压没有面,考虑到读者的阅读喜好所以按公司划分面经,强调一点是时间线很重要,前后自己面试能力也有差距,请留意。一般都是远程视频/电话面,每场面经内问题提问顺序不定。一些过于水的面经没有包括在内(比如8月前的某为,银行)
字节跳动
字节跳动一面12.24(游戏研发 秋招补招)
程序:
1.实现优先队列
2.设计2D游戏功能 输入两个角色位置 输出射击转向角
3.环形buffer设计
提问:
1.二叉树与堆的关系
2.B+树
3.时间复杂度
4.内积点乘叉乘
5.CAS机制
6.重载 重写和多态
字节跳动二面12.28
1.内积点乘叉乘
2.堆
-
排序 各种数据结构
-
时间复杂度空间复杂度分析
-
集合类中为什么不用int(为什么Java集合不能存放基本数据类型,只存放对象的引用)
-
同步和异步
-
多态
-
TCP表头
-
四次挥手
字节跳动一面3.30(服务器研发 春招)
-
链表k次反转
-
DB语句查询比平均分高的学生总数
-
如何查询IP地址是否在国内网段
-
线程池
-
Reentrantlock
-
synchronized
-
组合索引
-
JVM内存结构,类加载信息存储在哪
9.数据库的隔离级别
- cookie在http报文的那个位置
字节跳动二面3.30
-
磁盘文件到JVM的加载过程
-
类存在的意义
-
如何确定session存放值比如用户id
-
手写生产者消费者模式
-
a数组用b数组顺序排序
字节跳动7.17(研发 秋招提前批)
-
查找树中连接两个节点最大路径
-
进程间通信效率最高的方式
3.共享内存怎么实现
- Mysql四种隔离级别
5.Mysql InnoDB和MyISAM区别
-
Mysql profile是做什么的
-
Redis负载均衡 热键和大键的影响
8.Redis主从机制 分片分布式
-
缓存怎么实现
-
LRU和FIFO
-
分页原理
12.tcp拥塞控制
-
http报文头结构
-
http报文长度边界字段
字节跳动8.18(秋招)
-
http和https
-
time-wait和close-wait
-
最左看二叉树第一个节点
-
mysql左前原则
-
innodb索引 b+树子节点一定存表行信息吗
-
redis持久化 主进程和子进程
-
有序集合数据结构怎么实现
-
jvm判断回收
-
minor gc和full gc
-
类加载过程
-
java四种引用
-
方法区
-
项目
-
队列集合怎么实现的,有哪些
-
类加载过程的不足
-
blockingqueue怎么实现阻塞
-
哪些对象可以作为gcRoot
字节跳动8.18二面
-
dns过程
-
dns递归调用和叠代调用
-
tcp可靠性含义
-
tcp可靠性应用
-
拥塞机制
-
长连接短链接
-
http常用首部字段
-
select函数,epoll函数
-
静态链接库和动态链接库
-
进程和线程
-
编译和链接的区别
-
最大连续和dp解法
面试总体体验很好很全面,我基本都是二面挂,每次都是面挂之后总结重新刷新知识库,然后学习很多。
阿里
阿里巴巴7.24(一二面在一天,秋招提前批)
-
项目
-
大数据优化内容
-
口述程序整数反转
-
zk的作用
5.kafka的partition
-
kafka中一个broker故障,会怎么办
-
flink如何实现exactly-once语义
-
flink的实现原理
-
其他流处理框架与flink的区别
-
spark如何处理流处理
-
storm如何处理流处理
-
lambda框架原理
-
如何解决超卖问题
-
如何用算法解决高并发
-
如何大数据快速查询一条数据
-
redis存储数据,在工程中的作用
-
怎么做evaluation验证flink效果
阿里准备的最多,面试官安排了三面,不过和三面面试官商量了下,我10月毕业,他们招11月之后的,为了怕被泡池子(因为能力并不突出)还是放弃了。
腾讯
腾讯 3.7一面(春招实习)
-
Java多态的实现
-
TreeMap和HashMap的区别
3.MySQL索引底层的实现
-
什么是NoSQL,NoSQL的常见应用
-
Redis的数据结构
腾讯3.8二面
-
GC是怎么判断年代的
-
浮点数怎么存储
-
什么是TTL,什么是TraceRoute
腾讯3.20三面
1.项目,大数据框架了解
2.GC回收
-
网络查找命令
-
Linux磁盘命令
5.网络第二层和第三层有什么区别
6.linux的常用指令
面试官说理论还可以,具体操作能力不行。。
腾讯 8.9(秋招提前批)
自己讲:
-
JVM
-
linux内核
-
zookeeper
-
kafka消息队列
-
数据库mysql和redis
-
分布式事务
-
微服务框架
-
网络攻击
-
代码耦合性
-
项目完成背景
-
TCP,UDP
期间提问:
-
Zab协议
-
进程地址存储
-
网络编程IO多路复用
-
网络传输模型
-
IO过程
-
新的微服务框架
王者荣耀项目组。。。我还说我不喜欢玩王者哈哈哈(一个半小时脑子晕掉了)
拼多多
拼多多3.25 一面(春招 java岗)
1.jsp到servlet过程,servlet生命周期
2.http与https区别,传输过程,如何交互
- hashmap结构,concurrenthashmap结构
4.线程池声明与使用
-
JVM内存模型,垃圾回收
-
Tomcat运行原理
-
手撸死锁模型
-
流处理与批处理区别
9.storm和flink的区别
10.怎么学习的
拼多多3.28 二面
-
手撸适配器模式
-
手撸代码并查找边界错误
-
Spring MVC框架
-
BASE原则
-
分布式原理CAP原则
-
Java反射
-
private属性,final类型举例
-
ReadWriteLock
-
数据库-四种隔离级别-脏读/幻读/-索引
微信视频面,最后问了我要不要去大数据研发,我拒绝了,当时比较傻缺
晨星
晨星3.26(一面)
- 网络:tcp udp区别
http协议介绍
- 面向对象 抽象类和接口区别
3.单例模式实现
-
数据库索引
-
Js怎么面向对象
-
装饰器模式原理
7.静态类和单例模式有什么区别
-
设计一个股票推送的设计模式
-
容错分析题:页面加载慢原因
晨星二面(留的作业)
1:请在数据库设计两个表,分别存储股票每天的交易数据表,和上市公司的运营数据表
,画出相应的数据表和对应关系。
- 请用TF-IDF算法计算相关度,并采用适当的机器学习训练模型来进行训练,找到更高的筛选文档准确率
3.聊人生
然后就是hr面了
总结
感谢你看到这里,文章有什么不足还请指正,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!
欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!