前言
周末,天气放晴,玩的还挺开心,过后,我像往常一样坐在窗台,看着电脑“发呆”,就不给大家分享技术干货了。给大家整理一份面试清单总结吧,都是一些基础的题,是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~当复习期末考吧。花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题!
一面问题:MySQL+Redis+Kafka+线程+算法
- mysql知道哪些存储引擎,它们的区别
 - mysql索引在什么情况下会失效
 - mysql在项目中的优化场景,慢查询解决等
 - mysql有什么索引,索引模型是什么
 - B-树与B+树的区别?为什么不用红黑树
 - mysql主从同步怎么做
 - 乐观锁与悲观锁的区别?
 - binlog日志
 - redis 持久化有哪几种方式,怎么选?
 - redis 主从同步是怎样的过程?
 - redis 的 zset 怎么实现的?
 - redis key 的过期策略
 - hashmap 是怎样实现的?为什么要用红黑树,而不用平衡二叉树?为什么在1.8中链表大于8时会转红黑树?HashMap为什么线程不安全的?
 - 如何实现线程安全的hashmap?
 - select 和 epoll的区别
 - http与https的区别,加密怎么加的?
 - raft算法详细讲解
 - Kafka 选主怎么做的?
 - kafka如何保证生产与消费都是同步的?
 - kafka 怎么保证不丢消息的
 - redis如何保证高可用
 - 算法:剪绳子(贪心或递归解决)
 - 算法:给前序和中序遍历,重建二叉树
 
二面(volatile+线程+并发+算法+设计模式)
- 自我介绍
 - 讲讲项目(项目没啥亮点,直接问基础)
 - volatile作用?底层实现?禁止重排序的场景?单例模式中volatile的作用?
 - 如何构造线程池,它的参数,饱和策略?
 - 公平锁和非公平锁区别?为什么公平锁效率低?
 - 线程都有哪些状态?
 - 线程、进程、协程的区别?
 - 同步队列器AQS思想,以及基于AQS实现的lock,。
 - 并发工具类CountDownLatch、CyclicBarrier、Semaphore介绍
 - Execuors类实现的几种线程池类型,最后如何返回?
 - 手写单例模式
 - 手写消费者生产者模式
 - 算法:反转单链表
 - 算法:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。
 
三面
这一面,没问啥东西,主要聊人生,和未来3年的规划。。。。。。
第二个是字节跳动

一面:算法+数据库+事务+网络
- 自我介绍
 - 项目介绍(没亮点,还是问基础)
 - 堆排序的原理及时间复杂度,是否稳定,最坏及最坏场景。
 - Object类都有哪些方法?
 - DNS解析的过程/浏览器输入一个url,敲下回车后网络的全过程
 - HTTP和HTTPS的区别
 - UDP怎么实现可靠传输
 - 介绍下https,是如何加密的,加密算法
 - 数据库索引的优缺点,以及什么时候数据库索引失效
 - 事务的隔离级别?
 - 数据库的脏读,不可重复读,幻读
 - 算法:接雨水:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
 - 算法:N皇后
 
二面:Kafka+redis+算法
- Kafka的特性?
 - Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?
 - 消费者重平衡(高可用性、伸缩性)
 - 哪些情景下会造成消息漏消费?
 - 如何保证消息不被重复消费(幂等性)
 - KafkaConsumer是非线程安全的,那么怎么样实现多线程消费?
 - Kafka生产者客户端中使用了几个线程来处理?分别是什么?
 - 消费者与生产者的工作流程:
 - topic的分区数可不可以增加?
 - 算法:二叉树中的最大路径和
 - 算法:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
 
三面:Redis+Spring+Dubbo+算法
- redis的Zset怎么实现的?
 - sentinel和cluster区别和各自适用场景
 - redis cluster集群同步过程
 - redis单线程为什么快?
 - mybatis一级缓存和二级缓存
 - spring如何解决循环依赖?
 - spring AOP的原理。
 - spring的生命周期。
 - Dubbo服务暴露和引用过程,负载均衡策略,容错机制在哪里实现的源码
 - 项目中遇到了哪些问题。(抱歉,我的工作就是增删改查,没接触过相关问题)
 - 算法:二叉树的镜像
 - 算法:从上到下打印二叉树
 
最后瞄一眼腾讯
腾讯这三面下来问的也不少,自求多福吧。

一面
- 如何设计一个秒杀系统?
 - 一天爬一千万条文章,怎么做设计?怎么并行协调?100 台服务器怎么尽可能负载均衡?
 - 有用过短域名服务吗,能说一下吗?
 - 微服务的特点,如何实现服务发现和负载均衡
 - 如何排查线上问题?(背过,没排过)
 - 贝叶斯的概率学原理
 - 负载均衡的加权轮询算法怎么实现
 - 如果用户量大幅度上涨,如何优化?
 - paxos算法(这个算法太难,学的时候就没太理解)
 - 平时都看什么博客,最近看什么书了
 
二面
- 自我介绍
 - 项目介绍
 - redis的5种类型,及其实现原理
 - 如何使用redis的Zset实现延时队列?
 - redis如何实现高可用?
 - redis缓存穿透、缓存击穿、缓存雪崩
 - 布隆过滤器的实现
 - 如何保证mysql与redis的双写一致性?
 - 负载均衡算法有哪些?
 - 服务发现是怎么实现的?
 - 熔断是怎么实现的?
 - 算法:连续子数组的最大和
 - 讲讲分布式CAP和BASE?
 - 什么是强一致性?
 - 分布式事务的解决方案?
 - TCC(两阶段型、补偿型)
 - id生成器如何实现?
 - 如何判断一个图是否有环?
 - 一致性Hash算法,及其应用
 - 背包问题
 
三面
- 自我介绍
 - 项目介绍
 - redis的zSet如何实现?
 - redis持久化机制。
 - redis的Hash类型讲解,渐进式rehash。
 - HashMap原理,一个put操作,都有什么流程?
 - nginx有自己配置过吗(这个是我唯一手动操作过的,这个不是背的)
 - nginx的使用场景。
 - 什么是分布式,什么是集群,区别是什么?
 - 在基于dubbo的分布式环境中,一般将超时timeout设置在provider还是consumer?
 - dubbo中负载均衡的策略有哪些?
 - 接口的异步调用?如何设置?运行效果?
 - 谈谈基于dubbo的系统中consumer集群的解决方案?
 - mysql是集群还是单节点?最大连接数,最大的表中数据量大约是多少?
 - mysql主从复制主要有哪几种模式?
 - mysql索引,B+树,为什么不用红黑树?
 - 数据库垂直与水平拆分怎么做。
 - 分布式session设置
 - IO、BIO、NIO,阻塞与非阻塞的区别?
 - 分布式接口的幂等性设计(不能重复扣付款)
 - 算法:二叉搜索数与双向链表(这个懵了)
 - 算法:最长不含重复字符的子字符串
 - 算法:手写快速排序、插入排序、冒泡排序,并分析时间复杂度和空间复杂度,它们的稳定性
 
最后
由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。


本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录










