百度(三面)
百度一面(现场)
- 自我介绍
- Java中的多态
- 为什么要同时重写hashcode和equals
- Hashmap的原理
- Hashmap如何变线程安全,每种方式的优缺点
- 垃圾回收机制
- Jvm的参数你知道的说一下
- 设计模式了解的说一下
- 手撕一个单例模式
- 算法题目
- 手撕算法:反转单链表
- 手撕算法:实现类似微博子结构的数据结构,输入一系列父子关系,输出一个类似微博评论的父子结构图
- 手写java多线程
- 手写java的soeket编程,服务端和客户端
- 手撕算法:爬楼梯,写出状态转移方程
- 智力题:时针分针什么时候重合
百度二面(现场)
- 自我介绍
- 项目介绍
- 服务器如何负载均衡,有哪些算法,哪个比较好,一致性哈希原理,怎么避免DDOS攻击请求打到少数机器?
- TCP连接中的三次握手和四次挥手,四次挥手的最后一个ack的作用是什么,为什么要time wait,为什么是2msl?
- 数据库的备份和恢复怎么实现的,主从复制怎么做的,什么时候会出现数据不一致,如何解决?
- Linux查看cpu占用率高的进程
- 手撕算法:给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。
- 然后继续在这个问题上扩展
- 求出最短那条的路径
- 递归求出所有的路径
- 设计模式讲一下熟悉的
- 会不会滥用设计模式?
- 多线程条件变量为什么要在while体里?
- 你遇到什么挫折,怎么应对和处理?
百度三面(现场)
- 自我介绍
- 项目介绍
- Redis的特点
- Redis的持久化怎么做,aof和rdb,有什么区别,有什么优缺点?
- Redis使用哨兵部署会有什么问题?【我说需要扩容的话还是得集群部署。】
- 说一下JVM内存模型把,有哪些区,分别干什么的?
- 说一下gc算法,分代回收说下
- MySQL的引擎讲一下,有什么区别,使用场景呢?
- 分布式事务了解么?
- 反爬虫的机制,有哪些方式?
阿里中间件(四面)
Java中间件一面
技术一面考察范围:
- 重点问了Java线程锁:synchronized 和ReentrantLock相关的底层实现
- 线程池的底层实现以及常见的参数
- 数据结构基本都问了一遍,链表、队列等
- Java内存模型:常问的JVM分代模型,以及JDK1.8后的区别,最后还问了JVM相关的调优参数
- 分布式锁的实现比较
技术一面题目:
1:自我介绍
2:擅长哪方面的技术?
3;java有哪些锁中类?(乐观锁&悲观锁、可重入锁&Synchronize等)
4:比较重要的数据结构,如链表,队列,栈的基本原理及大致实现
5:J.U.C下的常见类的使用。Threadpool的深入考察;blockingQueue的使用
6:Java内存分代模型,GC算法,JVM常见的启动参数;CMS算法的过程
7:Volatile关键字有什么用(包括底层原理)?
8:线程池的调优策略
9:Spring cloud的服务注册与发现是怎么设计的?
10:分布式系统的全局id如何实现
11:分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下那个性能更好?
Java中间件二面
技术二面考察范围:
- 问了项目相关的技术实现细节
- 数据库相关:索引、索引底层实现、mysql相关的行锁、表锁等
- redis相关:架构设计、数据一致性问题
- 容器:容器的设计原理等
技术二面题目:
- 参与的项目,选一个,技术难度在哪里?
- Collections.sort底层排序方式
- 负载均衡的原理
- 设计模式与重构,谈谈你对重构的理解
- 谈谈redis相关的集群有哪些成熟方案?
- 再谈谈一致hash算法(redis)
- 数据库索引,B+树的特性和建树过程
- Mysql相关的行锁,表锁、乐观锁、悲观锁
- 谈谈多线程和并发工具的使用
- 谈谈redis的架构和组件
- Redis的数据一致性问题(分布式多节点环境&单机环境)
- Docker容器
Java中间件三面
技术三面考察范围:
- 主要谈到了高并发的实现方案
- 以及中间件:redis、rocketmq、kafka等的架构设计思路
- 最后问了平时怎么提升技术的
技术三面题目:
- 高并发情况下,系统是如何支撑大量的请求的?
- 接着上面的问题,延伸到了中间件,kafka、redis、rocketmq、mycat等设计思路和适用场景等
- 最近上过哪些技术网站?最近再看哪些书?
- 工作和生活中遇见最大的挑战,怎么去克服?
- 未来有怎样的打算
Java中间件四面
最后,你懂的,主要就是HR走流程了,主要问了未来的职业规划。
蚂蚁中间件团队面试题
蚂蚁中间件一面
- 自我介绍
- JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK采用什么算法?
- 新生代和老年代的回收机制
- 讲一下ArrayList和linkedlist的区别,ArrayList与HashMap的扩容方式
- Concurrenthashmap1.8后的改动
- Java中的多线程,以及线程池的增长策略和拒绝策略了解么?
- Tomcat的类加载器了解么?
- Spring的ioc和aop,Springmvc的基本架构,请求流程
- HTTP协议与Tcp有什么区别,http1.0和2.0的区别?
- Java的网络编程,讲讲NIO的实现方式,与BIO的区别,以及介绍常用的NIO框架
- 索引什么时候会失效变成全表扫描?
- 介绍下分布式的paxos和raft算法
蚂蚁中间件二面
- 你在项目中怎么用到并发的?
- 消息队列的使用场景,谈谈Kafka
- 你说了解分布式服务,那么你怎么理解分布式服务?
- Dubbo和Spring Clound的区别,以及使用场景
- 讲一下docker的实现原理,以及与JVM的区别
- MongoDB、Redis和Memcached的应用场景,各自优势
- MongoDB有事务吗?
- Redis说一下sorted set底层原理
- 讲讲Netty为什么并发高,相关的核心组件有哪些?
蚂蚁中间件三面
- 完整的画一个分布式集群部署图,从负载均衡到后端数据库集群
- 分布式锁的方案,Redis和Zookeeper哪个好,如果是集群部署,高并发情况下哪个性能更好?
- 分布式系统的全局id如何实现?
- 数据库万级变成亿级,你如何来解决?
- 常见的服务器雪崩是由什么引起的,如何来防范?
- 异地容灾怎么实现?
- 常用的高并发技术解决方案有哪些,以及对应的解决步骤?
面试答案
这份面试文件涵盖了Java开发1至5年的面试常见技术问题,整体分为当季最新系列、大厂面试真题系列、技术系统分类系列三部分。(纯文字文本占内存46.97MB)
- 2021年最新面试题
- 系统技术分类系列
JVM、MySQL、Mybatis、MongoDB、Redis、Spring、Spring boot、Spring cloud、Kafka、RabbitMQ、Nginx…